Hi there,
I am trying to use spi3 of this device to send data to a spi slave. When I send date byte less than 64 bytes it is OK. But when I send more than 64 byte I got error:
[ 115.830065] spi_master spi2: I/O Error in DMA RX:400
[ 115.841541] spi_master spi2: failed to transfer one message from queue
cos I need a fast speed I want to send one message(transfer) bigger than 64B. Is there anyway to do this?
other questions:
1. what is the largest number of DMA transfer? is it max_dma_len = 32768?
2. I am using spi3 but I saw the error report spi2. Is there anything related to this failure?
following is the dts I am using.
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";
};
pinctrl_ecspi3: cps {
fsl,pins = <
MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO 0x100b1 /* MISO*/
MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI 0x100b1 /* MOSI*/
MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK 0x100b1 /* CLK*/
MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20 0x100b0 /* CS*/
>;
};
&ecspi3 {
fsl,spi-num-chipselects = <1>;
cs-gpio = <&gpio1 20 GPIO_ACTIVE_LOW>; /* cant't use cs-gpios! */
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_ecspi3>;
status = "okay";
spidev: cps@0 {
compatible = "aure,cps";
spi-max-frequency = <40000000>;
reg = <0>;
};
};