[alsa-devel] [PATCH] mfd: arizona: Call the runtime PM function if the state is runtime resumed

Inha Song ideal.song at samsung.com
Mon Sep 21 04:16:42 CEST 2015


Hi, Charles,

I've already tried to change.
If I change to that, we can't enter the suspen during the playback.

-
[   72.538263] arizona spi1.0: Suspend, disabling IRQ
...
[   72.585823] arizona spi1.0: Late suspend, reengabling IRQ
[   72.585904] arizona spi1.0: Early resume, disabling IRQ
...
[   72.646770] PM: noirq suspend of devices failed
		<- because of "spi1.0" pm_wakeup_pending() in suspend_noirq()
...
[   72.663623] s3c64xx_spi_resume
[   72.851089] arizona spi1.0: Late resume, reenabling IRQ


Best Regards,
Inha Song.


On Fri, 18 Sep 2015 09:24:46 +0100
Charles Keepax <ckeepax at opensource.wolfsonmicro.com> wrote:

> On Fri, Sep 18, 2015 at 03:49:03PM +0900, Inha Song wrote:
> > Hi,
> > 
> > I just change dev_err() to dev_info() in arizona-core.
> > 
> > 
> > root at localhost:~# aplay test.wav
> > [   42.731358] arizona spi1.0: Leaving AoD mode
> > ....
> > [   42.823514] s3c64xx_spi_runtime_resume
> > [   42.828270] arizona spi1.0: ASRC underclocked
> > [   42.828281] s3c64xx_spi_runtime_suspend
> > ....
> > -> suspend ()
> > [   72.398152] arizona spi1.0: Suspend, disabling IRQ
> > [   72.410471] s3c64xx_spi_runtime_resume
> > [   72.429045] s3c64xx_spi_suspend
> > -> spi suspended
> > [   72.429905] PM: suspend of devices complete after 67.309 msecs
> > [   72.440084] arizona spi1.0: Late suspend, reenabling IRQ
> > -> try to access spi irq after spi suspend()
> > [   72.440165] arizona spi1.0: Failed to read IRQ status: -108
> > [   72.440174] arizona spi1.0: Failed to read main IRQ status: -108
> > [   72.440242] arizona spi1.0: Failed to read IRQ status: -108
> > [   72.440249] arizona spi1.0: Failed to read main IRQ status: -108
> > [   72.440275] arizona spi1.0: Failed to read IRQ status: -108
> > [   72.440282] arizona spi1.0: Failed to read main IRQ status: -108
> > [   72.440304] arizona spi1.0: Failed to read IRQ status: -108
> 
> Ok so looking at the system PM code I think the problem here is
> there is currently a small window between when we enable this IRQ
> and when the suspend proceedure disables IRQs and this IRQ is
> sneaking in at that point.
> 
> Can you try the following diff and let me know what happens:
> 
> --- a/drivers/mfd/arizona-core.c
> +++ b/drivers/mfd/arizona-core.c
> @@ -727,7 +727,7 @@ const struct dev_pm_ops arizona_pm_ops = {
>                            NULL)
>         SET_SYSTEM_SLEEP_PM_OPS(arizona_suspend, arizona_resume)
>  #ifdef CONFIG_PM_SLEEP
> -       .suspend_late = arizona_suspend_late,
> +       .suspend_noirq = arizona_suspend_late,
>         .resume_noirq = arizona_resume_noirq,
>  #endif
> 
> Thanks,
> Charles


More information about the Alsa-devel mailing list