[alsa-devel] [PATCH] ALSA: HDA - Check return value to reduce useless delay

Takashi Iwai tiwai at suse.de
Thu Oct 25 00:00:36 CEST 2012


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?


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