On Wed, Aug 17, 2022 at 2:21 PM Nicolin Chen nicoleotsuka@gmail.com wrote:
On Tue, Aug 16, 2022 at 10:41 PM Shengjiu Wang shengjiu.wang@nxp.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.
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.
For ESAI, because it can't handle read/write pointer correctly when xrun happen, so we need reset routine.
Best regards Wang shengjiu