ASoC: soc-pcm: check DAI's activity more simply
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Fri, 6 Mar 2020 01:10:04 +0000 (10:10 +0900)
committerMark Brown <broonie@kernel.org>
Fri, 6 Mar 2020 14:47:24 +0000 (14:47 +0000)
soc_pcm_hw_free() want to call snd_soc_dai_digital_mute()
if it was last user of Playback or Capture.

bool playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
int playback_active = dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK];
int capture_active  = dai->stream_active[SNDRV_PCM_STREAM_CAPTURE];

if ((playback  && playback_active == 1) ||
    (!playback && capture_active  == 1))
snd_soc_dai_digital_mute(...)

But it is same as

int active = dai->stream_active[substream->stream];

if (active == 1)
snd_soc_dai_digital_mute(...)

This patch simplify the code.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87k13yp9ub.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-pcm.c

index 7d787e0966f33529fb9e60da1d4f797941900ed6..af0e17bfeeab4b949623dd242455f562f7bf63e5 100644 (file)
@@ -1202,7 +1202,6 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_dai *cpu_dai;
        struct snd_soc_dai *codec_dai;
-       bool playback = substream->stream == SNDRV_PCM_STREAM_PLAYBACK;
        int i;
 
        mutex_lock_nested(&rtd->card->pcm_mutex, rtd->card->pcm_subclass);
@@ -1226,11 +1225,9 @@ static int soc_pcm_hw_free(struct snd_pcm_substream *substream)
 
        /* apply codec digital mute */
        for_each_rtd_codec_dai(rtd, i, codec_dai) {
-               int playback_active = codec_dai->stream_active[SNDRV_PCM_STREAM_PLAYBACK];
-               int capture_active  = codec_dai->stream_active[SNDRV_PCM_STREAM_CAPTURE];
+               int active = codec_dai->stream_active[substream->stream];
 
-               if ((playback && playback_active == 1) ||
-                   (!playback && capture_active == 1))
+               if (active == 1)
                        snd_soc_dai_digital_mute(codec_dai, 1,
                                                 substream->stream);
        }