diff options
| -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, |
