<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>i.MX Processors中的主题 IMX6ULL ECSPI4 DMA TX Error</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/IMX6ULL-ECSPI4-DMA-TX-Error/m-p/1162074#M162833</link>
    <description>&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;Having some IMX6ULL based custom hardware. It communicates with SPI device using ECSPI2. Here is working dts:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;amp;ecspi2 {
	fsl,spi-num-chipselects = &amp;lt;1&amp;gt;;
	cs-gpios = &amp;lt;&amp;amp;gpio4 22 0&amp;gt;;
	pinctrl-names = "default";
	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_ecspi2_0&amp;gt;;
	status = "okay"; 

	dma-names = "rx", "tx";
	dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;

	spidev0: spidev@1 {
		status = "okay";
		compatible = "semtech,sx1301";
		spi-max-frequency = &amp;lt;1000000&amp;gt;;
		reg = &amp;lt;0&amp;gt;;
	};
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;		pinctrl_ecspi2_0: ecspi2grp-0 {
			fsl,pins = &amp;lt;
				MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI 0x110b1
				MX6UL_PAD_CSI_DATA03__ECSPI2_MISO 0x110b1
				MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK 0x110b1
				MX6UL_PAD_CSI_DATA01__GPIO4_IO22 0x10b0
			&amp;gt;;
		};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Everything works like a charm.&lt;/P&gt;&lt;P&gt;Now I am trying to move this hardware to ECSPI4:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;amp;ecspi4 {
        fsl,spi-num-chipselects = &amp;lt;1&amp;gt;;
        cs-gpios = &amp;lt;&amp;amp;gpio4 9 0&amp;gt;;
        pinctrl-names = "default";
        pinctrl-0 = &amp;lt;&amp;amp;pinctrl_ecspi4_0&amp;gt;;
        status = "okay";

        dma-names = "rx", "tx";
        dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;

        spidev0: spidev@1 {
                status = "okay";
                compatible = "semtech,sx1301";
                spi-max-frequency = &amp;lt;1000000&amp;gt;;
                reg = &amp;lt;0&amp;gt;;
        };
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;                pinctrl_ecspi4_0: ecspi4grp-0 {
                        fsl,pins = &amp;lt;
                                MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI 0x110b1
                                MX6UL_PAD_NAND_DATA06__ECSPI4_MISO 0x110b1
                                MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK 0x110b1
                                MX6UL_PAD_NAND_DATA07__GPIO4_IO09  0x10b0
                        &amp;gt;;
                };&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now trying to test it:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@OpenWrt:/# spidev_test -D /dev/spidev3.0
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
[  167.763338] spi_imx 2014000.ecspi: I/O Error in DMA TX
[  167.770578] spidev spi3.0: SPI transfer failed: -110
[  167.775678] spi_master spi3: failed to transfer one message from queue
can't send spi message: Operation timed out
Aborted&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So probably something wrong with this field:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;        dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I copied it as is from working ECSPI2 based dts. What are the magic numbers must be used here?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;EDIT:&lt;/P&gt;&lt;P&gt;Seems that first digit in each sdma element is SDMA event number from Table 3-2 IMX6ULLRM. What is rest two digits?&lt;/P&gt;</description>
    <pubDate>Thu, 01 Oct 2020 23:48:10 GMT</pubDate>
    <dc:creator>almaz1c</dc:creator>
    <dc:date>2020-10-01T23:48:10Z</dc:date>
    <item>
      <title>IMX6ULL ECSPI4 DMA TX Error</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/IMX6ULL-ECSPI4-DMA-TX-Error/m-p/1162074#M162833</link>
      <description>&lt;P&gt;Hello.&lt;/P&gt;&lt;P&gt;Having some IMX6ULL based custom hardware. It communicates with SPI device using ECSPI2. Here is working dts:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;amp;ecspi2 {
	fsl,spi-num-chipselects = &amp;lt;1&amp;gt;;
	cs-gpios = &amp;lt;&amp;amp;gpio4 22 0&amp;gt;;
	pinctrl-names = "default";
	pinctrl-0 = &amp;lt;&amp;amp;pinctrl_ecspi2_0&amp;gt;;
	status = "okay"; 

	dma-names = "rx", "tx";
	dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;

	spidev0: spidev@1 {
		status = "okay";
		compatible = "semtech,sx1301";
		spi-max-frequency = &amp;lt;1000000&amp;gt;;
		reg = &amp;lt;0&amp;gt;;
	};
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;		pinctrl_ecspi2_0: ecspi2grp-0 {
			fsl,pins = &amp;lt;
				MX6UL_PAD_CSI_DATA02__ECSPI2_MOSI 0x110b1
				MX6UL_PAD_CSI_DATA03__ECSPI2_MISO 0x110b1
				MX6UL_PAD_CSI_DATA00__ECSPI2_SCLK 0x110b1
				MX6UL_PAD_CSI_DATA01__GPIO4_IO22 0x10b0
			&amp;gt;;
		};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Everything works like a charm.&lt;/P&gt;&lt;P&gt;Now I am trying to move this hardware to ECSPI4:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;&amp;amp;ecspi4 {
        fsl,spi-num-chipselects = &amp;lt;1&amp;gt;;
        cs-gpios = &amp;lt;&amp;amp;gpio4 9 0&amp;gt;;
        pinctrl-names = "default";
        pinctrl-0 = &amp;lt;&amp;amp;pinctrl_ecspi4_0&amp;gt;;
        status = "okay";

        dma-names = "rx", "tx";
        dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;

        spidev0: spidev@1 {
                status = "okay";
                compatible = "semtech,sx1301";
                spi-max-frequency = &amp;lt;1000000&amp;gt;;
                reg = &amp;lt;0&amp;gt;;
        };
};&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;                pinctrl_ecspi4_0: ecspi4grp-0 {
                        fsl,pins = &amp;lt;
                                MX6UL_PAD_NAND_DATA05__ECSPI4_MOSI 0x110b1
                                MX6UL_PAD_NAND_DATA06__ECSPI4_MISO 0x110b1
                                MX6UL_PAD_NAND_DATA04__ECSPI4_SCLK 0x110b1
                                MX6UL_PAD_NAND_DATA07__GPIO4_IO09  0x10b0
                        &amp;gt;;
                };&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now trying to test it:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;root@OpenWrt:/# spidev_test -D /dev/spidev3.0
spi mode: 0x0
bits per word: 8
max speed: 500000 Hz (500 KHz)
[  167.763338] spi_imx 2014000.ecspi: I/O Error in DMA TX
[  167.770578] spidev spi3.0: SPI transfer failed: -110
[  167.775678] spi_master spi3: failed to transfer one message from queue
can't send spi message: Operation timed out
Aborted&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So probably something wrong with this field:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;        dmas = &amp;lt;&amp;amp;sdma 5 7 1&amp;gt;, &amp;lt;&amp;amp;sdma 6 7 2&amp;gt;;&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I copied it as is from working ECSPI2 based dts. What are the magic numbers must be used here?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;EDIT:&lt;/P&gt;&lt;P&gt;Seems that first digit in each sdma element is SDMA event number from Table 3-2 IMX6ULLRM. What is rest two digits?&lt;/P&gt;</description>
      <pubDate>Thu, 01 Oct 2020 23:48:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/IMX6ULL-ECSPI4-DMA-TX-Error/m-p/1162074#M162833</guid>
      <dc:creator>almaz1c</dc:creator>
      <dc:date>2020-10-01T23:48:10Z</dc:date>
    </item>
  </channel>
</rss>

