On Wed, Apr 10, 2013 at 12:46:55PM +0000, Liu, Chuansheng wrote: > Hi Mark,
> > > Here the arizona irq is not NOSUSPEND irq, so when doing device suspend,
> > > we can disable the arizona irq, and enable it until devices resuming
> > > finished.
> > Hrm, well - actually the primary IRQ probably ought to be a nosuspend in
> Could we set the irq as NOSUSPEND directly?
Worth checking, yes.
> > +static int arizona_suspend_late(struct device *dev)
> > +{
> > + struct arizona *arizona = dev_get_drvdata(dev);
> > +
> > + dev_dbg(arizona->dev, "Late suspend, reenabling IRQ\n");
> > + enable_irq(arizona->irq);
> Here, after later suspending, is it possible the irq coming again?
No, by the time late suspend happens all interrupts ought to be off.
> and one more question, why the irq is needed to be enabled even after
> suspended?
We want interrupts to function as wake sources and want to minimise the
risk of confusing things - the enable/disable ought to nest with what
the core is doing.
signature.asc
Description: Digital signature

