Hello all,
I have a question related to SPI transfer errors caused by DMA TX timeouts.
Our custom board has an i.MX8 Nano SOM which we ran our application on Kirkstone kernel (Linux 5.15.71). Our board (SPI Master) communicates with another device (SPI Slave) over ecspi2 and receives periodic SPI message of ~4KB length. We use SPI native CS and utilize DMA to improve data transfer efficiency.
Recently we switched to Mickledore kernel (Linux 6.1.86) and SPI comm doesn't work anymore. I'm consistently getting the following errors.
[ 282.393044] spi_imx 30830000.spi: I/O Error in DMA TX
[ 282.393094] spidev spi1.0: SPI transfer failed: -110
[ 282.393116] spi_master spi1: failed to transfer one message from queue
[ 282.393122] spi_master spi1: noqueue transfer failed
If I disable DMA in the device tree and just use PIO transfer, the errors go away and SPI comm does work, but we need DMA transfer to support our high data throughput. Otherwise overall system performance is impacted.
Are there recent updates in spi-imx and imx-sdma drivers that might have affected SPI DMA tranfers? Is there a solution or workaround to resolve the issue? Any help is much appreciated!
- jpsk
Hello,
Could you share more logs including the information of spi and dma initialization? it would be better if you could share the complete log.
Thanks.
Best regards,
Jimmy