Re: [PATCH] [sound] hdac-codec runtime suspended at PM:Suspend.

From: Subhransu S. Prusty
Date: Thu Mar 15 2018 - 06:59:50 EST


On Wed, Mar 14, 2018 at 09:07:14PM +0530, Anshuman Gupta wrote:
> On Wed, Mar 14, 2018 at 11:53:58AM +0100, Rafael J. Wysocki wrote:
> > On Wed, Mar 14, 2018 at 11:38 AM, Anshuman Gupta
> > <anshuman.gupta@xxxxxxxxx> wrote:
> > > On Mon, Mar 12, 2018 at 12:26:53PM +0100, Rafael J. Wysocki wrote:
> > >> On Mon, Mar 12, 2018 at 12:17 PM, Anshuman Gupta
> > >> <anshuman.gupta@xxxxxxxxx> wrote:
> > >> >
> > >> > + if (pm_runtime_status_suspended(dev))
> > >> > + return;
> > >>
> > >> That, again, is somewhat fragile from the concurrency perspective.
> > >>
> >
> > And here you want to avoid the below if the device is still suspended.
> Yes, if we do not avoid the code below, complete callback takes about
> 3 seconds due to snd_hdac_codec_read timed out because hdac controller
> would be in runtime suspend state.
> >
> > Why is the below code located in the ->complete callback anyway?
> > Shouldn't it be there in the ->resume one?
> >
> Yes even i am also having same doubt, why these power down and power up
> sequences are part of prepare and complete callback.
> Adding driver author "Subhransu S. Prusty" to provide more inputs on this.

This driver needs a late resume as it receives a jack notification from the
i915 driver and the skl controller driver resume may not have happened and
in turn hda controller may not ready. This ensures a synchronization for
jack event during resume from S3.

I think this patch defeats the purpose.

Regards,
Subhransu

> > >> > /* Power up afg */
> > >> > snd_hdac_codec_read(hdac, hdac->afg, 0, AC_VERB_SET_POWER_STATE,
> > >> > AC_PWRST_D0);
> > >> > --
> > >> > 2.7.4
>
> --
> Thanks,
> Anshuman

--