diff options
author | Jianqun <jay.xu@rock-chips.com> | 2014-09-12 20:41:38 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-09-13 12:38:16 -0400 |
commit | 3b40a80216e941c518426f7b86705e52acbd413f (patch) | |
tree | a27ac2821ba197b00cbd8493e3def355acc2d4b8 /sound/soc/rockchip/rockchip_i2s.c | |
parent | 38306afc107c53c379757e7f3146a6418328ebc9 (diff) |
ASoC: rockchip-i2s: add dma data to snd_soc_dai
Add playback/capture dma data to snd_soc_dai.
Test on RK3288 with max98090.
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound/soc/rockchip/rockchip_i2s.c')
-rw-r--r-- | sound/soc/rockchip/rockchip_i2s.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/sound/soc/rockchip/rockchip_i2s.c b/sound/soc/rockchip/rockchip_i2s.c index dd423c611d96..c8172dda8c7d 100644 --- a/sound/soc/rockchip/rockchip_i2s.c +++ b/sound/soc/rockchip/rockchip_i2s.c | |||
@@ -243,16 +243,6 @@ static int rockchip_i2s_hw_params(struct snd_pcm_substream *substream, | |||
243 | regmap_update_bits(i2s->regmap, I2S_TXCR, I2S_TXCR_VDW_MASK, val); | 243 | regmap_update_bits(i2s->regmap, I2S_TXCR, I2S_TXCR_VDW_MASK, val); |
244 | regmap_update_bits(i2s->regmap, I2S_RXCR, I2S_RXCR_VDW_MASK, val); | 244 | regmap_update_bits(i2s->regmap, I2S_RXCR, I2S_RXCR_VDW_MASK, val); |
245 | 245 | ||
246 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { | ||
247 | dai->playback_dma_data = &i2s->playback_dma_data; | ||
248 | regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_TDL_MASK, | ||
249 | I2S_DMACR_TDL(1) | I2S_DMACR_TDE_ENABLE); | ||
250 | } else { | ||
251 | dai->capture_dma_data = &i2s->capture_dma_data; | ||
252 | regmap_update_bits(i2s->regmap, I2S_DMACR, I2S_DMACR_RDL_MASK, | ||
253 | I2S_DMACR_RDL(1) | I2S_DMACR_RDE_ENABLE); | ||
254 | } | ||
255 | |||
256 | return 0; | 246 | return 0; |
257 | } | 247 | } |
258 | 248 | ||
@@ -300,6 +290,16 @@ static int rockchip_i2s_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id, | |||
300 | return ret; | 290 | return ret; |
301 | } | 291 | } |
302 | 292 | ||
293 | static int rockchip_i2s_dai_probe(struct snd_soc_dai *dai) | ||
294 | { | ||
295 | struct rk_i2s_dev *i2s = snd_soc_dai_get_drvdata(dai); | ||
296 | |||
297 | dai->capture_dma_data = &i2s->capture_dma_data; | ||
298 | dai->playback_dma_data = &i2s->playback_dma_data; | ||
299 | |||
300 | return 0; | ||
301 | } | ||
302 | |||
303 | static const struct snd_soc_dai_ops rockchip_i2s_dai_ops = { | 303 | static const struct snd_soc_dai_ops rockchip_i2s_dai_ops = { |
304 | .hw_params = rockchip_i2s_hw_params, | 304 | .hw_params = rockchip_i2s_hw_params, |
305 | .set_sysclk = rockchip_i2s_set_sysclk, | 305 | .set_sysclk = rockchip_i2s_set_sysclk, |
@@ -308,7 +308,9 @@ static const struct snd_soc_dai_ops rockchip_i2s_dai_ops = { | |||
308 | }; | 308 | }; |
309 | 309 | ||
310 | static struct snd_soc_dai_driver rockchip_i2s_dai = { | 310 | static struct snd_soc_dai_driver rockchip_i2s_dai = { |
311 | .probe = rockchip_i2s_dai_probe, | ||
311 | .playback = { | 312 | .playback = { |
313 | .stream_name = "Playback", | ||
312 | .channels_min = 2, | 314 | .channels_min = 2, |
313 | .channels_max = 8, | 315 | .channels_max = 8, |
314 | .rates = SNDRV_PCM_RATE_8000_192000, | 316 | .rates = SNDRV_PCM_RATE_8000_192000, |
@@ -318,6 +320,7 @@ static struct snd_soc_dai_driver rockchip_i2s_dai = { | |||
318 | SNDRV_PCM_FMTBIT_S24_LE), | 320 | SNDRV_PCM_FMTBIT_S24_LE), |
319 | }, | 321 | }, |
320 | .capture = { | 322 | .capture = { |
323 | .stream_name = "Capture", | ||
321 | .channels_min = 2, | 324 | .channels_min = 2, |
322 | .channels_max = 2, | 325 | .channels_max = 2, |
323 | .rates = SNDRV_PCM_RATE_8000_192000, | 326 | .rates = SNDRV_PCM_RATE_8000_192000, |