|
@@ -40,10 +40,16 @@ static void psb_lid_timer_func(unsigned long data)
|
|
|
REG_WRITE(PP_CONTROL, REG_READ(PP_CONTROL) | POWER_TARGET_ON);
|
|
|
do {
|
|
|
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*/
|
|
|
- psb_intel_lvds_set_brightness(dev, 100);
|
|
|
+ if (REG_READ(PP_STATUS) & PP_ON) {
|
|
|
+ /*FIXME: should be backlight level before*/
|
|
|
+ psb_intel_lvds_set_brightness(dev, 100);
|
|
|
+ } else {
|
|
|
+ DRM_DEBUG("LVDS panel never powered up");
|
|
|
+ return;
|
|
|
+ }
|
|
|
} else {
|
|
|
psb_intel_lvds_set_brightness(dev, 0);
|
|
|
|