diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c index 080fbe053fc5..4df1aae8abf3 100644 --- a/sound/soc/soc-dai.c +++ b/sound/soc/soc-dai.c @@ -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)