On Tue, Aug 16, 2022 at 11:29 PM Shengjiu Wang shengjiu.wang@gmail.com wrote:
The FIFO reset drops the words in the FIFO, which may cause channel swap when SAI module is running, especially when the DMA speed is low. So it is not good to do FIFO reset in ISR, then remove the operation.
I don't recall the details of adding this many years ago, but leaving underrun/overrun errors unhandled does not sound right to me either. Would it result in a channel swap also? Perhaps there needs to be a reset routine that stops and restarts the DMA as well?
Remove the reset, the channel swap is gone.
I have no doubt about that :)
IMO, no need to handle the underrun/overrun in driver, the SAI hardware can handle the read/write pointer itself when xrun happen, and we don't need reset routine.
That'd be okay then.