From 9e751dda2e90cae1f5c96a89116ddd675d161d4b Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Thu, 23 Jan 2014 08:23:37 +0100 Subject: [PATCH] Let the PLL lockup before using it. * The PLL need some time to stabilize and generate a reliable pixel clock * Enabling the display pipe before that happens leads to some frames with bad timing. This may confuse some VGA displays into entering "unsupported mode" error. Fixes #10271. Thanks for investigating this! --- src/add-ons/accelerants/intel_extreme/mode.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/add-ons/accelerants/intel_extreme/mode.cpp b/src/add-ons/accelerants/intel_extreme/mode.cpp index 130a56c29d..6fbd2c9f6d 100644 --- a/src/add-ons/accelerants/intel_extreme/mode.cpp +++ b/src/add-ons/accelerants/intel_extreme/mode.cpp @@ -1126,7 +1126,9 @@ if (first) { pll |= DISPLAY_PLL_POST1_DIVIDE_2; } - write32(INTEL_DISPLAY_A_PLL, pll); + // Programmer's Ref says we must allow the DPLL to "warm up" before starting the plane + // so mask its bit, wait, enable its bit + write32(INTEL_DISPLAY_A_PLL, pll & ~DISPLAY_PLL_NO_VGA_CONTROL); read32(INTEL_DISPLAY_A_PLL); spin(150); write32(INTEL_DISPLAY_A_PLL, pll);