diff options
author | Vaibhav Bedia <vaibhav.bedia@ti.com> | 2012-08-08 11:10:31 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2012-08-09 09:05:47 -0400 |
commit | 0d624275720a4b01217693eb80d967a0d5f1f3a3 (patch) | |
tree | 1e3233645b1cb23bfca4e5b4c81359535679c3a3 | |
parent | 0865a75d4166bddc533fd50831829ceefb94f9b0 (diff) |
ASoC: Davinci: McASP: Flush the FIFO before enabling
FIFO should be flushed before it is enabled for the first time.
This fixes the I/O errors reported by the ASoC core on a fresh boot
Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>
Signed-off-by: Hebbar, Gururaja <gururaja.hebbar@ti.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r-- | sound/soc/davinci/davinci-mcasp.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sound/soc/davinci/davinci-mcasp.c b/sound/soc/davinci/davinci-mcasp.c index 95441bfc8190..ce5e5cd254dd 100644 --- a/sound/soc/davinci/davinci-mcasp.c +++ b/sound/soc/davinci/davinci-mcasp.c | |||
@@ -380,14 +380,20 @@ static void mcasp_start_tx(struct davinci_audio_dev *dev) | |||
380 | static void davinci_mcasp_start(struct davinci_audio_dev *dev, int stream) | 380 | static void davinci_mcasp_start(struct davinci_audio_dev *dev, int stream) |
381 | { | 381 | { |
382 | if (stream == SNDRV_PCM_STREAM_PLAYBACK) { | 382 | if (stream == SNDRV_PCM_STREAM_PLAYBACK) { |
383 | if (dev->txnumevt) /* enable FIFO */ | 383 | if (dev->txnumevt) { /* enable FIFO */ |
384 | mcasp_clr_bits(dev->base + DAVINCI_MCASP_WFIFOCTL, | ||
385 | FIFO_ENABLE); | ||
384 | mcasp_set_bits(dev->base + DAVINCI_MCASP_WFIFOCTL, | 386 | mcasp_set_bits(dev->base + DAVINCI_MCASP_WFIFOCTL, |
385 | FIFO_ENABLE); | 387 | FIFO_ENABLE); |
388 | } | ||
386 | mcasp_start_tx(dev); | 389 | mcasp_start_tx(dev); |
387 | } else { | 390 | } else { |
388 | if (dev->rxnumevt) /* enable FIFO */ | 391 | if (dev->rxnumevt) { /* enable FIFO */ |
392 | mcasp_clr_bits(dev->base + DAVINCI_MCASP_RFIFOCTL, | ||
393 | FIFO_ENABLE); | ||
389 | mcasp_set_bits(dev->base + DAVINCI_MCASP_RFIFOCTL, | 394 | mcasp_set_bits(dev->base + DAVINCI_MCASP_RFIFOCTL, |
390 | FIFO_ENABLE); | 395 | FIFO_ENABLE); |
396 | } | ||
391 | mcasp_start_rx(dev); | 397 | mcasp_start_rx(dev); |
392 | } | 398 | } |
393 | } | 399 | } |