[PATCH] pcf50633 IRQ handler
Balaji Rao
balajirrao at openmoko.org
Wed Jan 14 09:14:19 CET 2009
On Wed, Jan 14, 2009 at 08:45:13AM +0100, Michael Trimarchi wrote:
> Hi all,
>
> I have sometimes a panic using the android and this seems to fix the
> issue. I verified the panic
> with the red light :( and now I can't reproduce.
>
> Michael
> Avoid the call of the irq funtion until the system is not resumed. The
> call is done by the resume handler.
>
Hi Michael,
IN pcf50633_suspend, we do a disable_irq and enable it only during the
first pcf50633_irq_worker call we make in resume, which means that the
interrupt handler is never hit until we resume.
This convinces me that this patch tries to fix only a symptom. Or,
wait, there is one more possibility -
Could you please verify if this patch solves your problem ?
Thanks for pointing out the issue.
Balaji
---
diff --git a/drivers/mfd/pcf50633-core.c b/drivers/mfd/pcf50633-core.c
index f668b9a..a565542 100644
--- a/drivers/mfd/pcf50633-core.c
+++ b/drivers/mfd/pcf50633-core.c
@@ -428,6 +428,10 @@ static int pcf50633_suspend(struct device *dev, pm_message_t state)
/* Make sure that an IRQ worker has quit */
cancel_work_sync(&pcf->irq_work);
+ /* Disable irq again, because it could be re-enabled by the exiting
+ * worker we synced above */
+ disable_irq(pcf->irq);
+
/* Save the masks */
ret = pcf50633_read_block(pcf, PCF50633_REG_INT1M,
ARRAY_SIZE(pcf->suspend_irq_masks),
More information about the openmoko-kernel
mailing list