[alsa-devel] [PATCH] ALSA: HDA - Check return value to reduce useless delay
Takashi Iwai
tiwai at suse.de
Thu Oct 25 13:08:08 CEST 2012
At Thu, 25 Oct 2012 10:30:35 +0000,
Wang, Xingchao wrote:
>
>
>
> > -----Original Message-----
> > From: Takashi Iwai [mailto:tiwai at suse.de]
> > Sent: Thursday, October 25, 2012 6:01 AM
> > To: Wang, Xingchao
> > Cc: alsa-devel at alsa-project.org
> > Subject: Re: [PATCH] ALSA: HDA - Check return value to reduce useless delay
> >
> > At Wed, 24 Oct 2012 14:53:23 +0800,
> > Wang Xingchao wrote:
> > >
> > > For verb 705h, it's useless to read response, so use *write api would
> > > be better. If there's error after sending cmd, just try again without
> > > continue after wrong operation.Otherwise there's long time delay.
> >
> > Well, this is a bit sensitive part. Did you do the good test coverage for
> > different hardware controllers and codecs, including the non-Intel ones?
> >
>
> Well I only tested the patch on Haswell/Ivybridge platform.
Both are too new :)
> For Haswell I meet an issue about codec suspend/resume.
> There's no response from codec when there's power state transition from D3 to D0, and the patch could reduced delay time.
But does it fix the issue itself?
> For ivybridge the codec works well, so this patch has no active behavior.
> I assume the verb 705h will not work for subnodes if it failed at first for "function group".
> Is there such case when set power state for the "Audio Function Group" fail but the sub-nodes could keep on setting power?
Not sure. But we need more testing obviously before breaking
anything.
thanks,
Takashi
>
> Thanks
> --xingchao
>
> >
> > Takashi
> >
> > > Signed-off-by: Wang Xingchao <xingchao.wang at intel.com>
> > > ---
> > > sound/pci/hda/hda_codec.c | 5 ++++-
> > > 1 file changed, 4 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
> > > index 960800b..0946eca 100644
> > > --- a/sound/pci/hda/hda_codec.c
> > > +++ b/sound/pci/hda/hda_codec.c
> > > @@ -3569,6 +3569,7 @@ static unsigned int hda_set_power_state(struct
> > hda_codec *codec,
> > > hda_nid_t fg = codec->afg ? codec->afg : codec->mfg;
> > > int count;
> > > unsigned int state;
> > > + int err;
> > >
> > > /* this delay seems necessary to avoid click noise at power-down */
> > > if (power_state == AC_PWRST_D3) {
> > > @@ -3582,9 +3583,11 @@ static unsigned int hda_set_power_state(struct
> > hda_codec *codec,
> > > codec->patch_ops.set_power_state(codec, fg,
> > > power_state);
> > > else {
> > > - snd_hda_codec_read(codec, fg, 0,
> > > + err = snd_hda_codec_write(codec, fg, 0,
> > > AC_VERB_SET_POWER_STATE,
> > > power_state);
> > > + if (err < 0)
> > > + continue;
> > > snd_hda_codec_set_power_to_all(codec, fg, power_state,
> > > true);
> > > }
> > > --
> > > 1.7.9.5
> > >
>
More information about the Alsa-devel
mailing list