gma500: Prevent endless loop in panel power up sequence
Some devices don't have a panel connected to LVDS and thus will never power up. This patch checks the power sequence progress bits in PP_STATUS to prevent an endless loop on such devices. Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
This commit is contained in:
Родитель
3299de9558
Коммит
ac0a5dd6ae
|
@ -40,10 +40,16 @@ static void psb_lid_timer_func(unsigned long data)
|
||||||
REG_WRITE(PP_CONTROL, REG_READ(PP_CONTROL) | POWER_TARGET_ON);
|
REG_WRITE(PP_CONTROL, REG_READ(PP_CONTROL) | POWER_TARGET_ON);
|
||||||
do {
|
do {
|
||||||
pp_status = REG_READ(PP_STATUS);
|
pp_status = REG_READ(PP_STATUS);
|
||||||
} while ((pp_status & PP_ON) == 0);
|
} while ((pp_status & PP_ON) == 0 &&
|
||||||
|
(pp_status & PP_SEQUENCE_MASK) != 0);
|
||||||
|
|
||||||
/*FIXME: should be backlight level before*/
|
if (REG_READ(PP_STATUS) & PP_ON) {
|
||||||
psb_intel_lvds_set_brightness(dev, 100);
|
/*FIXME: should be backlight level before*/
|
||||||
|
psb_intel_lvds_set_brightness(dev, 100);
|
||||||
|
} else {
|
||||||
|
DRM_DEBUG("LVDS panel never powered up");
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
psb_intel_lvds_set_brightness(dev, 0);
|
psb_intel_lvds_set_brightness(dev, 0);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче