diff options
-rw-r--r-- | drivers/misc/i2s/msp_i2s.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/misc/i2s/msp_i2s.c b/drivers/misc/i2s/msp_i2s.c index 9974991e1e8..c69ee708265 100644 --- a/drivers/misc/i2s/msp_i2s.c +++ b/drivers/misc/i2s/msp_i2s.c @@ -1018,18 +1018,11 @@ static int stm_msp_configure_enable(struct i2s_controller *i2s_cont, } if (config->loopback_enable & 0x80) msp->loopback_enable = 1; - /*Sometimes FIFO doesn't gets empty hence limit is provided */ + + /* Flush MSP-FIFOs */ flush_tx_fifo(msp); - /*This has been added in order to fix fifo flush problem - When last xfer occurs some data remains in fifo. In order to - flush that data delay is needed */ - msleep(10); - /* wait for fifo to flush */ flush_rx_fifo(msp); - /* RX_BUSY take a while to clear */ - msleep(10); - msp->msp_state = MSP_STATE_CONFIGURED; up(&msp->lock); return 0; @@ -1695,10 +1688,7 @@ static int stm_msp_disable(struct msp *msp, int direction, i2s_flag flag) stm_msp_write((stm_msp_read(msp->registers + MSP_GCR) & (~(RX_ENABLE | LOOPBACK_MASK))), msp->registers + MSP_GCR); - /*This has been added in order to fix fifo flush problem - When last xfer occurs some data remains in fifo. In order to - flush that data delay is needed */ - msleep(10); + msp_disable_transmit(msp); msp_disable_receive(msp); |