[alsa-devel] [PATCH 1/2] ASoC: Check for exact register match in wm97xx_reset()

Takashi Iwai tiwai at suse.de
Fri Jun 13 17:11:06 CEST 2008


At Fri, 13 Jun 2008 15:39:12 +0100,
Mark Brown wrote:
> 
> To provide added robustness in case an AC97 controller reads back all
> zeros in error cases check for an exact match when testing to see if
> resets have brought the codec back.
> 
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
>  sound/soc/codecs/wm9712.c |    4 ++--
>  sound/soc/codecs/wm9713.c |    4 ++--
>  2 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/sound/soc/codecs/wm9712.c b/sound/soc/codecs/wm9712.c
> index 28ac66f..09e2985 100644
> --- a/sound/soc/codecs/wm9712.c
> +++ b/sound/soc/codecs/wm9712.c
> @@ -589,12 +589,12 @@ static int wm9712_reset(struct snd_soc_codec *codec, int try_warm)
>  {
>  	if (try_warm && soc_ac97_ops.warm_reset) {
>  		soc_ac97_ops.warm_reset(codec->ac97);
> -		if (!(ac97_read(codec, 0) & 0x8000))
> +		if (ac97_read(codec, 0) == 0x6174)
>  			return 1;
>  	}
>  
>  	soc_ac97_ops.reset(codec->ac97);
> -	if (ac97_read(codec, 0) & 0x8000)
> +	if (ac97_read(codec, 0) != 0x6174)

Can we define this magic value more understandable?

>  		goto err;
>  	return 0;
>  
> diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
> index aba3301..131bb5b 100644
> --- a/sound/soc/codecs/wm9713.c
> +++ b/sound/soc/codecs/wm9713.c
> @@ -1076,12 +1076,12 @@ int wm9713_reset(struct snd_soc_codec *codec, int try_warm)
>  {
>  	if (try_warm && soc_ac97_ops.warm_reset) {
>  		soc_ac97_ops.warm_reset(codec->ac97);
> -		if (!(ac97_read(codec, 0) & 0x8000))
> +		if (ac97_read(codec, 0) == 0x6174)
>  			return 1;
>  	}
>  
>  	soc_ac97_ops.reset(codec->ac97);
> -	if (ac97_read(codec, 0) & 0x8000)
> +	if (ac97_read(codec, 0) != 0x6174)

Ditto.


thanks,

Takashi


More information about the Alsa-devel mailing list