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),

Reply via email to