@@ -34,6 +34,9 @@
#define TRCM_TX 1
#define TRCM_RX 2
+/* Clock indexes as enforced by the DT bindings */
+enum { CLK_IDX_MCLK_TX, CLK_IDX_MCLK_RX };
+
struct txrx_config {
u32 addr;
u32 reg;
@@ -969,7 +972,7 @@ static int rockchip_i2s_tdm_trigger(struct snd_pcm_substream *substream,
return 0;
}
-static int rockchip_i2s_tdm_set_sysclk(struct snd_soc_dai *cpu_dai, int stream,
+static int rockchip_i2s_tdm_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id,
unsigned int freq, int dir)
{
struct rk_i2s_tdm_dev *i2s_tdm = to_info(cpu_dai);
@@ -978,15 +981,18 @@ static int rockchip_i2s_tdm_set_sysclk(struct snd_soc_dai *cpu_dai, int stream,
if (i2s_tdm->clk_trcm) {
i2s_tdm->mclk_tx_freq = freq;
i2s_tdm->mclk_rx_freq = freq;
+
+ dev_dbg(i2s_tdm->dev, "mclk freq: %u", freq);
} else {
- if (stream == SNDRV_PCM_STREAM_PLAYBACK)
+ if (clk_id == CLK_IDX_MCLK_TX)
i2s_tdm->mclk_tx_freq = freq;
- else
+ else if (clk_id == CLK_IDX_MCLK_RX)
i2s_tdm->mclk_rx_freq = freq;
- }
+ else
+ return -ENOTSUPP;
- dev_dbg(i2s_tdm->dev, "The target mclk_%s freq is: %d\n",
- stream ? "rx" : "tx", freq);
+ dev_dbg(i2s_tdm->dev, "mclk[%d] freq: %u", clk_id, freq);
+ }
return 0;
}