On 2020/02/06 Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote: > > Hi, > On 27.09.19 03:55, Robin Gong wrote: > > On 2019-9-25 22:53 Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> wrote: > >> On 25.09.19 13:26, Robin Gong wrote: > >>> On 2019-9-24 21:28 Schrempf Frieder <frieder.schrempf@xxxxxxxxxx> > >> wrote: > >>>> > >>>> Hi Robin, > >>>> > >>>>> 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: > >>>> > >>>> 1. Removing 'dmas' and 'dma-names' from the ecspi1 node in > >> imx8mm.dtsi, > >>>> 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: > >>>> > >>>> 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? > >> > >>> 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. > >>> 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. > > 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.