ASoC: rockchip: i2s-tdm: Fix config for stage set_fmt on ALWAYS-ON

Enable the xfer in the last card init stage to fix the config
failed on set_tdm_slot/set_fmt.

Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Change-Id: Ie456b08d11eef5356036a431f5fd6117e0df3823
This commit is contained in:
Sugar Zhang
2024-03-22 18:56:46 +08:00
committed by Tao Huang
parent 75d401b731
commit bcbbd20069

View File

@@ -1285,6 +1285,14 @@ static int rockchip_i2s_tdm_set_fmt(struct snd_soc_dai *cpu_dai,
}
}
/* Enable the xfer in the last card init stage. */
if (i2s_tdm->quirks & QUIRK_ALWAYS_ON) {
if (i2s_tdm->clk_trcm)
rockchip_i2s_tdm_xfer_trcm_start(i2s_tdm, SNDRV_PCM_STREAM_PLAYBACK);
else
rockchip_i2s_tdm_xfer_start(i2s_tdm, SNDRV_PCM_STREAM_PLAYBACK);
}
err_pm_put:
pm_runtime_put(cpu_dai->dev);
@@ -2818,11 +2826,6 @@ static int rockchip_i2s_tdm_keep_clk_always_on(struct rk_i2s_tdm_dev *i2s_tdm)
I2S_CKR_RSD_MASK | I2S_CKR_TSD_MASK,
I2S_CKR_RSD(div_lrck) | I2S_CKR_TSD(div_lrck));
if (i2s_tdm->clk_trcm)
rockchip_i2s_tdm_xfer_trcm_start(i2s_tdm, SNDRV_PCM_STREAM_PLAYBACK);
else
rockchip_i2s_tdm_xfer_start(i2s_tdm, SNDRV_PCM_STREAM_PLAYBACK);
dev_info(i2s_tdm->dev, "CLK-ALWAYS-ON: mclk: %d, bclk: %d, fsync: %d\n",
mclk_rate, bclk_rate, DEFAULT_FS);