Hey guys,
i'm working with the ECSPI1:
ecspi1: spi@30820000 {
compatible = "fsl,imx8mm-ecspi", "fsl,imx51-ecspi";
#address-cells = <1>;
#size-cells = <0>;
reg = <0x30820000 0x10000>;
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_ECSPI1_ROOT>,
<&clk IMX8MM_CLK_ECSPI1_ROOT>;
clock-names = "ipg", "per";
dmas = <&sdma2 10 24 0>, <&sdma2 11 24 0>;
dma-names = "rx", "tx";
status = "disabled";
};
sdma2: dma-controller@302c0000 {
compatible = "fsl,imx8mm-sdma", "fsl,imx8mq-sdma";
reg = <0x302c0000 0x10000>;
interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk IMX8MM_CLK_SDMA2_ROOT>,
<&clk IMX8MM_CLK_SDMA2_ROOT>;
clock-names = "ipg", "ahb";
#dma-cells = <3>;
fsl,sdma-ram-script-name = "imx/sdma/sdma-imx7d.bin";
};
(Source: imx8mm.dtsi)
The init looks okay (or not?):
14.336944] imx-sdma 30bd0000.dma-controller: external firmware not found, using ROM firmware
[ 14.337188] imx-sdma 302b0000.dma-controller: external firmware not found, using ROM firmware
[ 14.544537] imx-sdma 302c0000.dma-controller: loaded firmware 4.5
[ 16.637457] dmaengine: __dma_request_channel: success (dma0chan0)
[ 16.637475] imx-sdma 302c0000.dma-controller: private_candidate: dma0chan0 busy
[ 16.637480] dmaengine: __dma_request_channel: success (dma0chan1)
[ 17.037288] dmaengine: __dma_request_channel: success (dma2chan0)
[ 17.037306] imx-sdma 30bd0000.dma-controller: private_candidate: dma2chan0 busy
[ 17.037311] dmaengine: __dma_request_channel: success (dma2chan1)
But when i try to send more than 63 bytes, the spi-imx module switches to DMA mode and failed:
[ 1110.091034] imx-sdma 302c0000.dma-controller: load_address = 685
[ 1110.091045] imx-sdma 302c0000.dma-controller: wml = 0x00000020
[ 1110.091050] imx-sdma 302c0000.dma-controller: shp_addr = 0x30820000
[ 1110.091055] imx-sdma 302c0000.dma-controller: per_addr = 0x00000000
[ 1110.091059] imx-sdma 302c0000.dma-controller: event_mask0 = 0x00000400
[ 1110.091064] imx-sdma 302c0000.dma-controller: event_mask1 = 0x00000000
[ 1110.091073] imx-sdma 302c0000.dma-controller: setting up 1 entries for channel 2.
[ 1110.091078] imx-sdma 302c0000.dma-controller: entry 0: count: 128 dma: 0x69ce8000 intr
[ 1110.091086] imx-sdma 302c0000.dma-controller: vchan 0000000029ea9014: txd 0000000096283d2e[2]: submitted
[ 1110.091102] imx-sdma 302c0000.dma-controller: load_address = 749
[ 1110.091106] imx-sdma 302c0000.dma-controller: wml = 0x00000020
[ 1110.091111] imx-sdma 302c0000.dma-controller: shp_addr = 0x30820004
[ 1110.091115] imx-sdma 302c0000.dma-controller: per_addr = 0x00000000
[ 1110.091119] imx-sdma 302c0000.dma-controller: event_mask0 = 0x00000800
[ 1110.091123] imx-sdma 302c0000.dma-controller: event_mask1 = 0x00000000
[ 1110.091132] imx-sdma 302c0000.dma-controller: setting up 1 entries for channel 1.
[ 1110.091136] imx-sdma 302c0000.dma-controller: entry 0: count: 128 dma: 0x69cea000 intr
[ 1110.091143] imx-sdma 302c0000.dma-controller: vchan 00000000903699c1: txd 00000000e90c4730[2]: submitted
[ 1112.115453] spi_imx 30820000.spi: I/O Error in DMA TX
[ 1112.115478] spidev spi0.0: SPI transfer failed: -110
[ 1112.115527] spi_master spi0: failed to transfer one message from queue
I have no clue whats wrong, please can you help me?