[alsa-devel] [PATCH] ASoC: soc-pcm: Use valid condition for snd_soc_dai_digital_mute() in hw_free()

Takashi Iwai tiwai at suse.de
Mon Dec 2 11:05:31 CET 2013


At Mon, 2 Dec 2013 17:34:34 +0800,
Nicolin Chen wrote:
> 
> The snd_soc_dai_digital_mute() here will be never executed because we only
> decrease codec->active in snd_soc_close(). Thus correct it.

A couple of minor problems by this approach:

- snd_soc_dai_digital_mute() will be called twice in the normal PCM
  close path.

- In full duplex mode where both playback/capture streams share the
  same codec, one of the directions won't be handled correctly because
  codec->active is incremented/decremented twice (once for each
  direction).


Takashi

> 
> Signed-off-by: Nicolin Chen <b42378 at freescale.com>
> ---
>  sound/soc/soc-pcm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
> index 22af038..7d19117 100644
> --- a/sound/soc/soc-pcm.c
> +++ b/sound/soc/soc-pcm.c
> @@ -689,7 +689,7 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
>  	}
>  
>  	/* apply codec digital mute */
> -	if (!codec->active)
> +	if (codec->active == 1)
>  		snd_soc_dai_digital_mute(codec_dai, 1, substream->stream);
>  
>  	/* free any machine hw params */
> -- 
> 1.8.4
> 
> 


More information about the Alsa-devel mailing list