ASoC: soc-dai: fix up hw params only if it is needed
authorGyeongtaek Lee <gt82.lee@samsung.com>
Fri, 14 May 2021 12:30:51 +0000 (21:30 +0900)
committerMark Brown <broonie@kernel.org>
Wed, 19 May 2021 13:19:08 +0000 (14:19 +0100)
If fixed hw params won't be used, fixing up isn't needed also.

Signed-off-by: Gyeongtaek Lee <gt82.lee@samsung.com>
Link: https://lore.kernel.org/r/000401d748bc$fa466d50$eed347f0$@samsung.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-dai.c

index 080fbe0..4df1aae 100644 (file)
@@ -327,14 +327,15 @@ int snd_soc_dai_hw_params(struct snd_soc_dai *dai,
        struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
        int ret = 0;
 
-       /* perform any topology hw_params fixups before DAI  */
-       ret = snd_soc_link_be_hw_params_fixup(rtd, params);
-       if (ret < 0)
-               goto end;
-
        if (dai->driver->ops &&
-           dai->driver->ops->hw_params)
+           dai->driver->ops->hw_params) {
+               /* perform any topology hw_params fixups before DAI  */
+               ret = snd_soc_link_be_hw_params_fixup(rtd, params);
+               if (ret < 0)
+                       goto end;
+
                ret = dai->driver->ops->hw_params(substream, params, dai);
+       }
 
        /* mark substream if succeeded */
        if (ret == 0)