ASoC: core: Allow topology to override machine driver FE DAI link config.
[sfrench/cifs-2.6.git] / sound / soc / soc-pcm.c
index c2a31b51da4fe524bd45f5299060f74ac6b18f4c..b7e67b871c0ca2959314e24c700aeb74753fe637 100644 (file)
@@ -859,8 +859,20 @@ int soc_dai_hw_params(struct snd_pcm_substream *substream,
                      struct snd_pcm_hw_params *params,
                      struct snd_soc_dai *dai)
 {
+       struct snd_soc_pcm_runtime *rtd = substream->private_data;
        int ret;
 
+       /* perform any topology hw_params fixups before DAI  */
+       if (rtd->dai_link->be_hw_params_fixup) {
+               ret = rtd->dai_link->be_hw_params_fixup(rtd, params);
+               if (ret < 0) {
+                       dev_err(rtd->dev,
+                               "ASoC: hw_params topology fixup failed %d\n",
+                               ret);
+                       return ret;
+               }
+       }
+
        if (dai->driver->ops->hw_params) {
                ret = dai->driver->ops->hw_params(substream, params, dai);
                if (ret < 0) {