|
@@ -226,6 +226,7 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
|
|
|
struct snd_soc_dai *dai)
|
|
|
{
|
|
|
struct rk_i2s_dev *i2s = to_info(dai);
|
|
|
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
|
|
unsigned int val = 0;
|
|
|
|
|
|
switch (params_format(params)) {
|
|
@@ -278,6 +279,13 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream,
|
|
|
regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK,
|
|
|
I2S_DMACR_RDL(16));
|
|
|
|
|
|
+ val = I2S_CKR_TRCM_TXRX;
|
|
|
+ if (dai->driver->symmetric_rates || rtd->dai_link->symmetric_rates)
|
|
|
+ val = I2S_CKR_TRCM_TXSHARE;
|
|
|
+
|
|
|
+ regmap_update_bits(i2s->regmap, I2S_CKR,
|
|
|
+ I2S_CKR_TRCM_MASK,
|
|
|
+ val);
|
|
|
return 0;
|
|
|
}
|
|
|
|