SDMA driver stall using as Bluetooth UART imx8m

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

SDMA driver stall using as Bluetooth UART imx8m

1,128 Views
injaneer1
Contributor II

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

0 Kudos
5 Replies

1,098 Views
igorpadykov
NXP Employee
NXP Employee

Hi Chris

 

from team:

----------

Two quick suggestions on this issue:

1. Try other BSPs to verify this issue? For example, Linux Linux 5.10.52_2.1.0;

2. Checked the related pinmux.

By the way, does UART1 have the issue at the begining? Or it work at the begining then have the stall issue?

----------

Best regards
igor

0 Kudos

1,089 Views
injaneer1
Contributor II

Is there a place I can view the drivers online of the other BSP's without having to sync to the repo ?

 

I have made improvements by increasing the buffer descriptors in the imx.c file from 4 to 16.  Also found this link which seems to be an attempt to fix this issue.

 

https://lore.kernel.org/linux-arm-kernel/20190911144943.21554-3-philipp.puschmann@emlix.com/

 

 

0 Kudos

1,084 Views
igorpadykov
NXP Employee
NXP Employee

from team:

--------------------

you can check it online:

https://source.codeaurora.org/external/imx/linux-imx/

--------------------

 

attached is Linux Manual with description of all drivers.

 

Best regards
igor

0 Kudos

1,063 Views
injaneer1
Contributor II

Can you provide the same link for the most recent Android OS (since we are using that and not the Linux.)

 

Thanks.

0 Kudos

1,056 Views
igorpadykov
NXP Employee
NXP Employee

for Android it is the same as it is based on Linux, for example for Android 10 2.5.0 it is L5.4.47_2.2.0 :

 

1.jpg

 

Best regards
igor

0 Kudos