[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