diff options
author | Sugar Zhang <sugar.zhang@rock-chips.com> | 2015-10-08 08:40:09 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-10-22 12:51:00 -0400 |
commit | b3f2dcddd576a2a6e59c407109610206c4062c8f (patch) | |
tree | b4a15f759376b601695f0f2c30c0c9629310e861 | |
parent | d307e01e41e830adac15e91d8cea38d8a53060a5 (diff) |
ASoC: rockchip: i2s: share tx/rx lrck when symmetric_rates enabled
share lrck_tx to lrck_rx when symmetric_rates enabled.
Signed-off-by: Sugar Zhang <sugar.zhang@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/rockchip/rockchip_i2s.c | 8 | ||||
-rw-r--r-- | sound/soc/rockchip/rockchip_i2s.h | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c index f07833b42edd..58ee64594f07 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c | |||
@@ -226,6 +226,7 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream, | |||
226 | struct snd_soc_dai *dai) | 226 | struct snd_soc_dai *dai) |
227 | { | 227 | { |
228 | struct rk_i2s_dev *i2s = to_info(dai); | 228 | struct rk_i2s_dev *i2s = to_info(dai); |
229 | struct snd_soc_pcm_runtime *rtd = substream->private_data; | ||
229 | unsigned int val = 0; | 230 | unsigned int val = 0; |
230 | 231 | ||
231 | switch (params_format(params)) { | 232 | switch (params_format(params)) { |
@@ -278,6 +279,13 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream, | |||
278 | regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK, | 279 | regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK, |
279 | I2S_DMACR_RDL(16)); | 280 | I2S_DMACR_RDL(16)); |
280 | 281 | ||
282 | val = I2S_CKR_TRCM_TXRX; | ||
283 | if (dai->driver->symmetric_rates || rtd->dai_link->symmetric_rates) | ||
284 | val = I2S_CKR_TRCM_TXSHARE; | ||
285 | |||
286 | regmap_update_bits(i2s->regmap, I2S_CKR, | ||
287 | I2S_CKR_TRCM_MASK, | ||
288 | val); | ||
281 | return 0; | 289 | return 0; |
282 | } | 290 | } |
283 | 291 | ||
diff --git a/sound/soc/rockchip/rockchip_i2s.h b/sound/soc/rockchip/rockchip_i2s.h index a54ee35e1e5c..dc6e2c74d088 100644 --- a/sound/soc/rockchip/rockchip_i2s.h +++ b/sound/soc/rockchip/rockchip_i2s.h | |||
@@ -78,6 +78,12 @@ | |||
78 | * CKR | 78 | * CKR |
79 | * clock generation register | 79 | * clock generation register |
80 | */ | 80 | */ |
81 | #define I2S_CKR_TRCM_SHIFT 28 | ||
82 | #define I2S_CKR_TRCM(x) (x << I2S_CKR_TRCM_SHIFT) | ||
83 | #define I2S_CKR_TRCM_TXRX (0 << I2S_CKR_TRCM_SHIFT) | ||
84 | #define I2S_CKR_TRCM_TXSHARE (1 << I2S_CKR_TRCM_SHIFT) | ||
85 | #define I2S_CKR_TRCM_RXSHARE (2 << I2S_CKR_TRCM_SHIFT) | ||
86 | #define I2S_CKR_TRCM_MASK (3 << I2S_CKR_TRCM_SHIFT) | ||
81 | #define I2S_CKR_MSS_SHIFT 27 | 87 | #define I2S_CKR_MSS_SHIFT 27 |
82 | #define I2S_CKR_MSS_MASTER (0 << I2S_CKR_MSS_SHIFT) | 88 | #define I2S_CKR_MSS_MASTER (0 << I2S_CKR_MSS_SHIFT) |
83 | #define I2S_CKR_MSS_SLAVE (1 << I2S_CKR_MSS_SHIFT) | 89 | #define I2S_CKR_MSS_SLAVE (1 << I2S_CKR_MSS_SHIFT) |