Suspend and Resume traces
Sean McNeil
sean at mcneil.com
Thu Jun 12 23:12:57 CEST 2008
Am I missing something in pcf50633.c as I can't see where the interrupt
mask is restored on resume. I only see the resumers gettting set in suspend:
__reg_write(pcf, PCF50633_REG_INT1M, ~pcf->pdata->resumers[0]);
__reg_write(pcf, PCF50633_REG_INT2M, ~pcf->pdata->resumers[1]);
__reg_write(pcf, PCF50633_REG_INT3M, ~pcf->pdata->resumers[2]);
__reg_write(pcf, PCF50633_REG_INT4M, ~pcf->pdata->resumers[3]);
__reg_write(pcf, PCF50633_REG_INT5M, ~pcf->pdata->resumers[4]);
Andy Green wrote:
> Somebody in the thread at some point said:
> | How about this:
> |
> | diff --git a/drivers/i2c/chips/pcf50633.c b/drivers/i2c/chips/pcf50633.c
> | index 90edce0..fa39463 100644
> | --- a/drivers/i2c/chips/pcf50633.c
> | +++ b/drivers/i2c/chips/pcf50633.c
> | @@ -687,7 +687,7 @@ static void pcf50633_work(struct work_struct *work)
> |
> | /* hey did we just resume? */
> |
> | - if (pcf->have_been_suspended) {
> | + if (pcf->have_been_suspended == 2) {
> | pcf->have_been_suspended = 0;
> | /*
> | * grab a copy of resume interrupt reasons
> |
> |
>
> Huh. This gave me the "crashing on resume" disease when I tried to
> amend it to require an == 3 "resume completion" concept in the work
> function, and likewise it continued to crash with any such qualification
> in it, which makes no actual sense unless some hidden tiger-dragon is in
> there (no doubt same as causes apparent double execution of suspends and
> so on). That's the first time in a long while I have seen this kind of
> behaviour and there is no normal explanation for it.
>
> So it's the same as the "printk's make me crash" reports.
>
> -Andy
More information about the openmoko-kernel
mailing list