Freerunner sometimes doesn't wake up

Sean McNeil sean at mcneil.com
Mon Jun 2 07:38:43 CEST 2008


Michael Shiloh wrote:
>
>
> matt_hsu wrote:
>> 於 五,2008-05-23 於 01:38 -0700,Sean McNeil 提到:
>>> It seems power management is much worse this week than last.
>>>
>
>>> 5) Sometimes doesn't wake up at all and I have to pull USB and 
>>> battery to recover. No other way works.
>>     I notice this problem couple times on other GTA02s. The bad thing is
>> that I could not reproduce this all the time. I'll keep traking this
>> issue. 
>
> I just had this problem yesterday, and one of my other Early Access 
> users last week reported something that now sounds like the same issue.
>
> I will try to reproduce or at least more closely identify, but it 
> sounds like there might be an issue here.
>
> Better file a bug report and bring it to Will's attention, just in 
> case it's serious.
>
> Michael
Michael, have you still been experiencing this problem? I've found that 
the ordering of the resume isn't correct and it ends up blanking the 
display on resume. The unit appears to be functioning but just that the 
display is turned off. The following change fixed the problem for me:

--- a/drivers/i2c/chips/pcf50633.c
+++ b/drivers/i2c/chips/pcf50633.c

@@ -2026,8 +2037,8 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state)
 void pcf50633_backlight_resume(struct pcf50633_data *pcf)
 {
 	/* we force the backlight on in fact */
-	__reg_write(pcf, PCF50633_REG_LEDOUT, 0x3f);
-	__reg_write(pcf, PCF50633_REG_LEDENA, 0x21);
+	__reg_write(pcf, PCF50633_REG_LEDOUT, pcf->standby_regs.ledout);
+	__reg_write(pcf, PCF50633_REG_LEDENA, pcf->standby_regs.ledena);
 	__reg_write(pcf, PCF50633_REG_LEDDIM, pcf->standby_regs.leddim);
 }
 EXPORT_SYMBOL_GPL(pcf50633_backlight_resume);
@@ -2041,8 +2052,6 @@ static int pcf50633_resume(struct device *dev)
 
 	/* mutex_lock(&pcf->lock); */  /* resume in atomic context */
 
-	__reg_write(pcf, PCF50633_REG_LEDENA, 0x01);
-
 	/* Resume all saved registers that don't "survive" standby state */
 	__reg_write(pcf, PCF50633_REG_INT1M, pcf->standby_regs.int1m);
 	__reg_write(pcf, PCF50633_REG_INT2M, pcf->standby_regs.int2m);
@@ -2065,10 +2074,6 @@ static int pcf50633_resume(struct device *dev)
 		__reg_write(pcf, PCF50633_REG_LEDOUT, pcf->standby_regs.ledout);
 		__reg_write(pcf, PCF50633_REG_LEDENA, pcf->standby_regs.ledena);
 		__reg_write(pcf, PCF50633_REG_LEDDIM, pcf->standby_regs.leddim);
-	} else { /* force backlight down, platform will restore later */
-		__reg_write(pcf, PCF50633_REG_LEDOUT, 2);
-		__reg_write(pcf, PCF50633_REG_LEDENA, 0x20);
-		__reg_write(pcf, PCF50633_REG_LEDDIM, 1);
 	}
 
 	/* FIXME: one big read? */






More information about the openmoko-kernel mailing list