LF-3724-9: ASoC: imx-ak4497: set tdm slot for DSD
authorShengjiu Wang <shengjiu.wang@nxp.com>
Thu, 22 Apr 2021 09:41:49 +0000 (17:41 +0800)
committerShengjiu Wang <shengjiu.wang@nxp.com>
Thu, 22 Apr 2021 10:18:26 +0000 (18:18 +0800)
set tdm slot for DSD

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Robin Gong <yibin.gong@nxp.com>
sound/soc/fsl/imx-ak4497.c

index ad3e4bb..574e511 100644 (file)
@@ -120,17 +120,38 @@ static int imx_aif_hw_params(struct snd_pcm_substream *substream,
                return ret;
        }
 
-       if (is_dsd)
+       if (is_dsd) {
                ret = snd_soc_dai_set_tdm_slot(cpu_dai,
                                       0x1, 0x1,
                                       1, params_width(params));
-       else
+               if (ret) {
+                       dev_err(dev, "failed to set cpu dai tdm slot: %d\n", ret);
+                       return ret;
+               }
+
+               ret = snd_soc_dai_set_tdm_slot(codec_dai,
+                                      0x1, 0x1,
+                                      1, params_width(params));
+               if (ret) {
+                       dev_err(dev, "failed to set codec dai tdm slot: %d\n", ret);
+                       return ret;
+               }
+       } else {
                ret = snd_soc_dai_set_tdm_slot(cpu_dai,
                                       BIT(channels) - 1, BIT(channels) - 1,
                                       2, params_physical_width(params));
-       if (ret) {
-               dev_err(dev, "failed to set cpu dai tdm slot: %d\n", ret);
-               return ret;
+               if (ret) {
+                       dev_err(dev, "failed to set cpu dai tdm slot: %d\n", ret);
+                       return ret;
+               }
+
+               ret = snd_soc_dai_set_tdm_slot(codec_dai,
+                                      BIT(channels) - 1, BIT(channels) - 1,
+                                      2, params_physical_width(params));
+               if (ret) {
+                       dev_err(dev, "failed to set codec dai tdm slot: %d\n", ret);
+                       return ret;
+               }
        }
 
        return ret;