|
@@ -233,6 +233,12 @@ static void mcasp_stop_rx(struct davinci_mcasp *mcasp)
|
|
|
|
|
|
mcasp_set_reg(mcasp, DAVINCI_MCASP_GBLCTLR_REG, 0);
|
|
|
mcasp_set_reg(mcasp, DAVINCI_MCASP_RXSTAT_REG, 0xFFFFFFFF);
|
|
|
+
|
|
|
+ if (mcasp->rxnumevt) { /* disable FIFO */
|
|
|
+ u32 reg = mcasp->fifo_base + MCASP_RFIFOCTL_OFFSET;
|
|
|
+
|
|
|
+ mcasp_clr_bits(mcasp, reg, FIFO_ENABLE);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void mcasp_stop_tx(struct davinci_mcasp *mcasp)
|
|
@@ -248,27 +254,22 @@ static void mcasp_stop_tx(struct davinci_mcasp *mcasp)
|
|
|
|
|
|
mcasp_set_reg(mcasp, DAVINCI_MCASP_GBLCTLX_REG, val);
|
|
|
mcasp_set_reg(mcasp, DAVINCI_MCASP_TXSTAT_REG, 0xFFFFFFFF);
|
|
|
+
|
|
|
+ if (mcasp->txnumevt) { /* disable FIFO */
|
|
|
+ u32 reg = mcasp->fifo_base + MCASP_WFIFOCTL_OFFSET;
|
|
|
+
|
|
|
+ mcasp_clr_bits(mcasp, reg, FIFO_ENABLE);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void davinci_mcasp_stop(struct davinci_mcasp *mcasp, int stream)
|
|
|
{
|
|
|
- u32 reg;
|
|
|
-
|
|
|
mcasp->streams--;
|
|
|
|
|
|
- if (stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
|
|
- if (mcasp->txnumevt) { /* disable FIFO */
|
|
|
- reg = mcasp->fifo_base + MCASP_WFIFOCTL_OFFSET;
|
|
|
- mcasp_clr_bits(mcasp, reg, FIFO_ENABLE);
|
|
|
- }
|
|
|
+ if (stream == SNDRV_PCM_STREAM_PLAYBACK)
|
|
|
mcasp_stop_tx(mcasp);
|
|
|
- } else {
|
|
|
- if (mcasp->rxnumevt) { /* disable FIFO */
|
|
|
- reg = mcasp->fifo_base + MCASP_RFIFOCTL_OFFSET;
|
|
|
- mcasp_clr_bits(mcasp, reg, FIFO_ENABLE);
|
|
|
- }
|
|
|
+ else
|
|
|
mcasp_stop_rx(mcasp);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
|