Ni Hao

Imx6ul使用两条SPI DMA同时传输时,传输失败

Discussion created by Ni Hao on Apr 10, 2020
Latest reply on Apr 15, 2020 by jimmychan

Hi:

 

Phytec Imx6ul单板在使用两条SPI同时传输时,出现

[09:42:02][ 684.646483] spi_imx 2010000.ecspi: I/O Error in DMA TX
[09:42:02][ 684.654434] spidev spi2.0: SPI transfer failed: -110
[09:42:02][ 684.660489] spi_master spi2: failed to transfer one message from queue

 

测试指令:

./spidev_test -D /dev/spidev2.0  -s 30000000 -b 32 -S 1000 &

./spidev_test -D /dev/spidev3.0  -s 30000000 -b 32 -S 1000 &

内核版本:4.14.93+;
SPI配置30M时钟,32bit;

DTS配置:

ecspi2: ecspi@0200c000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
reg = <0x0200c000 0x4000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_ECSPI2>,
<&clks IMX6UL_CLK_ECSPI2>;
clock-names = "ipg", "per";
dmas = <&sdma 5 7 1>, <&sdma 6 7 2>;
dma-names = "rx", "tx";
status = "disabled";
};

ecspi3: ecspi@02010000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "fsl,imx6ul-ecspi", "fsl,imx51-ecspi";
reg = <0x02010000 0x4000>;
interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6UL_CLK_ECSPI3>,
<&clks IMX6UL_CLK_ECSPI3>;
clock-names = "ipg", "per";
dmas = <&sdma 7 7 1>, <&sdma 8 7 2>;
dma-names = "rx", "tx";
status = "disabled";
};

Outcomes