<?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>topic Re: How does the IMX6 SPI use DMA to transfer data? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887146#M134350</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;A _jive_internal="true" data-avatarid="-1" data-content-finding="Community" data-userid="327081" data-username="radhika.somaiya@volansystech.com" href="https://community.nxp.com/people/radhika.somaiya@volansystech.com"&gt;Radhika Somaiya&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;First of all, thank you very much for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I mainly modified the following places：&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1、 ECSPIx_DMAREG&amp;nbsp;&amp;nbsp; &amp;nbsp;(RX_THRESHOLD&amp;nbsp; TX_THRESHOLD)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 2、spi_imx-&amp;gt;tx_config.dst_maxburst&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 3、spi_imx-&amp;gt;rx_config.src_maxburst&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 4、The return value of the spi_imx_can_dma() function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;first：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When I set RX_THRESHOLD to 0x00&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TX_THRESHOLD is set to 0x3f&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses PIO for data transmission and the transmission is successful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the kernel prints the following information:：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;can't send spi message: Connectiospi_master spi1: failed to transfer one message from queue&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;n timed out&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aborted&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;next：Next, I modified it again in the spi_imx_sdma_init function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spi_imx-&amp;gt;tx_config.dst_maxburst = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; spi_imx-&amp;gt;rx_config.src_maxburst = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses PIO for data transmission and the transmission is successful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the dma transmission is used and the transmission is successful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Next, I made changes in the spi_imx_can_dma function. I forced the spi_imx_can_dma() function to return true even if transfer-&amp;gt;len &amp;lt; spi_imx_get_fifosize(spi_imx)&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses dma for data transmission and the transmission is successful.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the dma transmission is used and the transmission is successful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I think it might be a problem with spi_imx-&amp;gt;tx_config.dst_maxburst and spi_imx-&amp;gt;rx_config.src_maxburst. But in the file dmaengine.h it says:&lt;/P&gt;&lt;P&gt;* @src_maxburst: the maximum number of words (note: words, as in&lt;BR /&gt;&amp;nbsp;* units of the src_addr_width member, not bytes) that can be sent&lt;BR /&gt;&amp;nbsp;* in one burst to the device. Typically something like half the&lt;BR /&gt;&amp;nbsp;* FIFO depth on I/O peripherals so you don't overflow it. This&lt;BR /&gt;&amp;nbsp;* may or may not be applicable on memory sources.&lt;BR /&gt;&amp;nbsp;* @dst_maxburst: same as src_maxburst but for destination target&lt;BR /&gt;&amp;nbsp;* mutatis mutandis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to ask, why is there such a problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attachment is my spi-imx.c source code。&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 21 Feb 2019 06:32:50 GMT</pubDate>
    <dc:creator>864535720</dc:creator>
    <dc:date>2019-02-21T06:32:50Z</dc:date>
    <item>
      <title>How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887140#M134344</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everyone&lt;BR /&gt;I am using the IMX6Q development board of NXP official website. When I was using SPI for communication, I found that the SPI only uses DMA transfers when the bytes I transfer are larger than 64 bytes. When my data volume is less than 64 bytes, the SPI uses GPIO transmission. In my actual project, every byte I transfer is less than 64 bytes. However, because of the large amount of data, it is desirable to use DMA for transmission. Do you have any good suggestions?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 21 Jan 2019 09:25:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887140#M134344</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2019-01-21T09:25:32Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887141#M134345</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Anthony,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The Linux driver does not use the DMA feature for SPI. You would need to modify the driver located in drivers/spi/spi_imx.c&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps!&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2019 20:25:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887141#M134345</guid>
      <dc:creator>gusarambula</dc:creator>
      <dc:date>2019-01-23T20:25:55Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887142#M134346</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From the Reference manual chapter 21:&lt;/P&gt;&lt;P style="text-align: justify;"&gt;&lt;/P&gt;&lt;P style="text-align: justify;"&gt;User need to configure ECSPI.DMAREG register to enable the data transfer of ECSPI via DMA when the appropriate conditions are matched, the block will send out a DMA request. ECSPI.DMAREG register's field 7 is responsible for enables/disables the TXFIFO Empty DMA Request and &lt;STRONG&gt;field 0-5&lt;/STRONG&gt; (TX THRESHOLD shown in attached picture) is responsible to defines the FIFO threshold that triggers a &lt;STRONG&gt;TX DMA/INT request&lt;/STRONG&gt; and a TX DMA/INT request is issued when the number of data entries in the TXFIFO is not greater than &lt;STRONG&gt;TX_THRESHOLD&lt;/STRONG&gt;.&lt;/P&gt;&lt;P style="text-align: justify;"&gt;Here from the reference manual, i didn't found the default value but it is configurable using ECSPI.DMAREG.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For your reference page no. 990 (i.MX 6Dual/6Quad Applications Processor Reference Manual)&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/77106iD32CA7F21D2F3E47/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt; &lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/77144i3FEC8C0CCC90E5F6/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope this helps!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2019 06:40:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887142#M134346</guid>
      <dc:creator>radhikasomaiya</dc:creator>
      <dc:date>2019-01-24T06:40:26Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887143#M134347</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hello &lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="207647" data-username="gusarambula" href="https://community.nxp.com/people/gusarambula"&gt;gusarambula&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I want to use dma. And I think all my data is transmitted via dma. But in the spi-imx.c file. Inside the spi_imx_transfer function. Dma is only used when transfer-&amp;gt;len &amp;gt; spi_imx_get_fifosize(spi_imx). I would like to ask, why is there a limit here?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Feb 2019 07:51:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887143#M134347</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2019-02-18T07:51:13Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887144#M134348</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi，&lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-userid="327081" data-username="radhika.somaiya@volansystech.com" href="https://community.nxp.com/people/radhika.somaiya@volansystech.com"&gt;Radhika Somaiya&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I modified the dma register based on the information you provided. At the same time I forced the change of&lt;/P&gt;&lt;P&gt;transfer-&amp;gt;len &amp;gt; spi_imx_get_fifosize(spi_imx). Let all the data be transmitted via dma. Although my data was finally transmitted via dma, the data received was confusing and erroneous.&lt;BR /&gt;I would like to ask why there is a restriction of transfer-&amp;gt;len &amp;gt; spi_imx_get_fifosize(spi_imx). Also want to know how to change this limit.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Feb 2019 07:55:52 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887144#M134348</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2019-02-18T07:55:52Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887145#M134349</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;@&lt;SPAN class=""&gt;&lt;A _jive_internal="true" data-content-finding="Community" data-userid="323842" data-username="864535720@qq.com" href="https://community.nxp.com/people/864535720@qq.com"&gt;其东 刘&lt;/A&gt;&lt;/SPAN&gt;:&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please find my answers &lt;SPAN style="color: #008000;"&gt;inline&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to ask why there is a restriction of transfer-&amp;gt;len &amp;gt; spi_imx_get_fifosize(spi_imx). Also want to know how to change this limit. -&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008000;"&gt;[Radhika] This is the kernel optimization that decides when to use DMA and when to use GPIO.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you please provide below mentioned information for more clarification of your issue and changes you done?&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Are you setting both the fields &lt;STRONG&gt;TX_THRESHOLD&lt;/STRONG&gt; and &lt;STRONG&gt;RX_THRESHOLD&lt;/STRONG&gt; of ECSPI.DMAREG&amp;nbsp; register? If yes then what values are you setting up? What is the behavior by changing this values only( No other changes in code ).&lt;/LI&gt;&lt;LI&gt;What are you changing in spi_imx_get_fifosize API? As per my understanding, it is not good idea to remove check for spi_imx_get_fifosize API. Instead, change values or logic accordingly.&amp;nbsp; What is the behavior by changes in the code only (spi_imx_get_fifosize)(Assuming there are no other changes).&lt;/LI&gt;&lt;LI&gt;Can you provide your sample application for DMA with steps to test it at our end?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Radhika Somaiya&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 20 Feb 2019 10:23:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887145#M134349</guid>
      <dc:creator>radhikasomaiya</dc:creator>
      <dc:date>2019-02-20T10:23:05Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887146#M134350</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi,&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;A _jive_internal="true" data-avatarid="-1" data-content-finding="Community" data-userid="327081" data-username="radhika.somaiya@volansystech.com" href="https://community.nxp.com/people/radhika.somaiya@volansystech.com"&gt;Radhika Somaiya&lt;/A&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;First of all, thank you very much for your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;I mainly modified the following places：&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; 1、 ECSPIx_DMAREG&amp;nbsp;&amp;nbsp; &amp;nbsp;(RX_THRESHOLD&amp;nbsp; TX_THRESHOLD)&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 2、spi_imx-&amp;gt;tx_config.dst_maxburst&lt;BR /&gt;&amp;nbsp;&amp;nbsp; 3、spi_imx-&amp;gt;rx_config.src_maxburst&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; 4、The return value of the spi_imx_can_dma() function&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;first：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When I set RX_THRESHOLD to 0x00&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TX_THRESHOLD is set to 0x3f&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses PIO for data transmission and the transmission is successful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the kernel prints the following information:：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;can't send spi message: Connectiospi_master spi1: failed to transfer one message from queue&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;n timed out&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Aborted&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;next：Next, I modified it again in the spi_imx_sdma_init function.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spi_imx-&amp;gt;tx_config.dst_maxburst = 1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; spi_imx-&amp;gt;rx_config.src_maxburst = 1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses PIO for data transmission and the transmission is successful.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the dma transmission is used and the transmission is successful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Next, I made changes in the spi_imx_can_dma function. I forced the spi_imx_can_dma() function to return true even if transfer-&amp;gt;len &amp;lt; spi_imx_get_fifosize(spi_imx)&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class="" title=""&gt;result&lt;/SPAN&gt;&lt;/SPAN&gt;：&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is less than 64 bytes, spi uses dma for data transmission and the transmission is successful.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;When the transmitted data is larger than 64 bytes, the dma transmission is used and the transmission is successful.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I think it might be a problem with spi_imx-&amp;gt;tx_config.dst_maxburst and spi_imx-&amp;gt;rx_config.src_maxburst. But in the file dmaengine.h it says:&lt;/P&gt;&lt;P&gt;* @src_maxburst: the maximum number of words (note: words, as in&lt;BR /&gt;&amp;nbsp;* units of the src_addr_width member, not bytes) that can be sent&lt;BR /&gt;&amp;nbsp;* in one burst to the device. Typically something like half the&lt;BR /&gt;&amp;nbsp;* FIFO depth on I/O peripherals so you don't overflow it. This&lt;BR /&gt;&amp;nbsp;* may or may not be applicable on memory sources.&lt;BR /&gt;&amp;nbsp;* @dst_maxburst: same as src_maxburst but for destination target&lt;BR /&gt;&amp;nbsp;* mutatis mutandis.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I want to ask, why is there such a problem?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Attachment is my spi-imx.c source code。&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2019 06:32:50 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887146#M134350</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2019-02-21T06:32:50Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887147#M134351</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;SPAN class=""&gt;&lt;A _jive_internal="true" class="" data-content-finding="Community" data-userid="323842" data-username="864535720@qq.com" href="https://community.nxp.com/people/864535720@qq.com"&gt;其东 刘&lt;/A&gt;&lt;/SPAN&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I just want to confirm here that you are talking about transmitting and receiving of data both by the word transmission here. Am I understanding correctly here as you were facing the issue in reception only? Are able to receive the data properly now?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Radhika Somaiya&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2019 07:05:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887147#M134351</guid>
      <dc:creator>radhikasomaiya</dc:creator>
      <dc:date>2019-02-21T07:05:57Z</dc:date>
    </item>
    <item>
      <title>Re: How does the IMX6 SPI use DMA to transfer data?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887148#M134352</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Data can now be received normally.&lt;BR /&gt;But for the configuration involved in the program, I still feel a little problem. For example: when I set this up: spi_imx-&amp;gt;tx_config.dst_maxburst = 32;&lt;BR /&gt;Spi_imx-&amp;gt;rx_config.src_maxburst = 32;&lt;BR /&gt;The kernel will print: spi_master spi1: I/O Error in RX tail&lt;BR /&gt;Problems arise during the transfer of data.&lt;BR /&gt;Can you provide some other information for me to refer to?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Feb 2019 07:39:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-does-the-IMX6-SPI-use-DMA-to-transfer-data/m-p/887148#M134352</guid>
      <dc:creator>864535720</dc:creator>
      <dc:date>2019-02-21T07:39:58Z</dc:date>
    </item>
  </channel>
</rss>

