intel_extreme: Make sure we power up the panel after modesetting
This commit is contained in:
@@ -196,11 +196,11 @@ DisplayPipe::ConfigureTimings(const pll_divisors& divisors, uint32 pixelClock,
|
|||||||
<< DISPLAY_PLL_IGD_POST1_DIVISOR_SHIFT)
|
<< DISPLAY_PLL_IGD_POST1_DIVISOR_SHIFT)
|
||||||
& DISPLAY_PLL_IGD_POST1_DIVISOR_MASK;
|
& DISPLAY_PLL_IGD_POST1_DIVISOR_MASK;
|
||||||
} else {
|
} else {
|
||||||
pll |= ((1 << (divisors.post1 - 1))
|
// pll |= ((1 << (divisors.post1 - 1))
|
||||||
<< DISPLAY_PLL_POST1_DIVISOR_SHIFT)
|
// << DISPLAY_PLL_POST1_DIVISOR_SHIFT)
|
||||||
& DISPLAY_PLL_9xx_POST1_DIVISOR_MASK;
|
|
||||||
// pll |= ((divisors.post1 - 1) << DISPLAY_PLL_POST1_DIVISOR_SHIFT)
|
|
||||||
// & DISPLAY_PLL_9xx_POST1_DIVISOR_MASK;
|
// & DISPLAY_PLL_9xx_POST1_DIVISOR_MASK;
|
||||||
|
pll |= ((divisors.post1 - 1) << DISPLAY_PLL_POST1_DIVISOR_SHIFT)
|
||||||
|
& DISPLAY_PLL_9xx_POST1_DIVISOR_MASK;
|
||||||
}
|
}
|
||||||
if (divisors.post2_high)
|
if (divisors.post2_high)
|
||||||
pll |= DISPLAY_PLL_DIVIDE_HIGH;
|
pll |= DISPLAY_PLL_DIVIDE_HIGH;
|
||||||
@@ -220,7 +220,6 @@ DisplayPipe::ConfigureTimings(const pll_divisors& divisors, uint32 pixelClock,
|
|||||||
pll |= DISPLAY_PLL_POST1_DIVIDE_2;
|
pll |= DISPLAY_PLL_POST1_DIVIDE_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
write32(pllControl, pll);
|
write32(pllControl, pll);
|
||||||
read32(pllControl);
|
read32(pllControl);
|
||||||
spin(150);
|
spin(150);
|
||||||
|
|||||||
@@ -468,6 +468,20 @@ LVDSPort::SetDisplayMode(display_mode* target, uint32 colorMode)
|
|||||||
fDisplayPipe->ConfigureTimings(divisors, target->timing.pixel_clock,
|
fDisplayPipe->ConfigureTimings(divisors, target->timing.pixel_clock,
|
||||||
extraPLLFlags);
|
extraPLLFlags);
|
||||||
|
|
||||||
|
// Power on Panel
|
||||||
|
addr_t panelControl = INTEL_PANEL_CONTROL;
|
||||||
|
addr_t panelStatus = INTEL_PANEL_STATUS;
|
||||||
|
if (gInfo->shared_info->device_type.HasPlatformControlHub()) {
|
||||||
|
panelControl = PCH_PANEL_CONTROL;
|
||||||
|
panelStatus = PCH_PANEL_STATUS;
|
||||||
|
}
|
||||||
|
write32(panelControl, read32(panelControl) | PANEL_CONTROL_POWER_TARGET_ON);
|
||||||
|
|
||||||
|
// TODO: A wait_for power on status to be set would be better here
|
||||||
|
spin(1000);
|
||||||
|
if ((read32(panelStatus) & PANEL_STATUS_POWER_ON) == 0)
|
||||||
|
ERROR("%s: %s didn't power on in 250ms!\n", __func__, PortName());
|
||||||
|
|
||||||
// Program target display mode
|
// Program target display mode
|
||||||
fDisplayPipe->Enable(target, _PortRegister());
|
fDisplayPipe->Enable(target, _PortRegister());
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user