Thread (38 messages) 38 messages, 5 authors, 2020-02-10

RE: [PATCH v5 11/15] dmaengine: imx-sdma: fix ecspi1 rx dma not work on i.mx8mm

From: Robin Gong <hidden>
Date: 2020-02-10 12:28:53
Also in: dmaengine, linux-spi, lkml

On 2020/02/06 Schrempf Frieder [off-list ref] wrote:
Hi,
On 27.09.19 03:55, Robin Gong wrote:
quoted
On 2019-9-25 22:53 Schrempf Frieder [off-list ref] wrote:
quoted
On 25.09.19 13:26, Robin Gong wrote:
quoted
On 2019-9-24 21:28 Schrempf Frieder [off-list ref]
wrote:
quoted
quoted
Hi Robin,
quoted
From: Robin Gong <yibin.gong at nxp.com>

Because the number of ecspi1 rx event on i.mx8mm is 0, the
condition check ignore such special case without dma channel
enabled, which caused
ecspi1 rx works failed. Actually, no need to check
event_id0/event_id1 and replace checking 'event_id1' with
'DMA_DEV_TO_DEV', so that configure
event_id1 only in case DEV_TO_DEV.

Signed-off-by: Robin Gong <yibin.gong at nxp.com>
Acked-by: Vinod Koul <vkoul at kernel.org>
I have a custom board with i.MX8MM and SPI flash on ecspi1. I'm
currently testing with v5.3 and as SPI didn't work, I tried two
different
things:
quoted
quoted
1. Removing 'dmas' and 'dma-names' from the ecspi1 node in
imx8mm.dtsi,
quoted
quoted
      to use PIO instead of DMA. This works as expected and the driver
      boots with the following messages:

          spi_imx 30820000.spi: dma setup error -19, use pio
          m25p80 spi0.0: mx25v8035f (1024 Kbytes)
          spi_imx 30820000.spi: probed

2. Applying your patchset and use DMA. In this case, the flash also
      works fine, but there are some error messages printed while
booting:
quoted
quoted
          spi_master spi0: I/O Error in DMA RX
          m25p80 spi0.0: SPI transfer failed: -110
          spi_master spi0: failed to transfer one message from queue
          m25p80 spi0.0: mx25v8035f (1024 Kbytes)
          spi_imx 30820000.spi: probed

It would be great to get your patches merged and fix SPI + DMA, but
for i.MX8MM, we need to get rid of the error messages. Do you have
an idea, what's wrong?
quoted
Could you check if the length of spi message is bigger than
fifo_size during spi_nor probe? If yes, at that time maybe sdma firmware
not loaded.
quoted
quoted
quoted
if (transfer->len < spi_imx->devtype_data->fifo_size)
Indeed, most of the transfers triggered by the SPI NOR dirver are
below fifo_size and work fine, but some are bigger. The transfers
therefore try to use DMA, but the firmware is not loaded yet.

How is this supposed to work? Shouldn't all transfers use PIO as long
as the SDMA firmware is not loaded yet?
Yes, for ecspi should work with ram script, it's better check if sdma
firmware is ready in spi_imx_dma_configure(), need modification in sdma
driver too.
quoted
I'll create another patch after this patch set accepted.
This still seems to be broken upstream. Is anyone working on fixing SPI
+ DMA for i.MX8MM? Otherwise I will send a patch that removes the DMA
from the ecspi nodes in the devicetree.
Sorry, Frieder, my patch set has been blocked for so long time because I revert
some patches and need get commit from patch owner, unfortunately, I didn't
get any feedback from them although I got ACK from maintainer. I'll pick up
them, rebase and resend it these days, then could address your issue later.  
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help