Our system is based off the imx8mm and I am currently using the Android 10 2.5.0 build tree.
I have an issue with our Bluetooth UART. It uses UART1 with the CTS/RTS lines on UART3. The UART will stall at some point, and no more HCI/Bluetooth traffic will be sent from the controller to the host. I have tracked it down to the fact that the UART FIFO will hit the float level and assert CTS. the float level is set to 16, in the imx.c UART driver. This UART is configured to use SDMA (imx-sdma.c) to move the data to/from the UART RX and TX FIFO's. What appears to be happening is that we have some SDMA overrun/error that causes the SDMA driver to leave 16 bytes in the RX FIFO which forces the UART to assert CTS and halts all data flow. This stall does not self-correct.
Has this been seen by anyone else, and or an update in one of the newer Android or Linux builds ? I can I detect and self-correct this stall ?
Thanks,
Chris