From: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> To: Robin Gong <yibin.gong@nxp.com> Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-spi@vger.kernel.org, linux-imx@nxp.com, kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org, mark.rutland@arm.com, broonie@kernel.org, robh+dt@kernel.org, catalin.marinas@arm.com, vkoul@kernel.org, will.deacon@arm.com, shawnguo@kernel.org, festevam@gmail.com, s.hauer@pengutronix.de, martin.fuzzey@flowbird.group, u.kleine-koenig@pengutronix.de, dan.j.williams@intel.com, Markus Niebel <Markus.Niebel@tq-group.com> Subject: Re: (EXT) [PATCH v8 00/13] add ecspi ERR009165 for i.mx6/7 soc family Date: Wed, 03 Jun 2020 10:31:25 +0200 [thread overview] Message-ID: <5d246dd81607bb6e5cb9af86ad4e53f7a7a99c50.camel@ew.tq-group.com> (raw) In-Reply-To: <1590006865-20900-1-git-send-email-yibin.gong@nxp.com> On Thu, 2020-05-21 at 04:34 +0800, Robin Gong wrote: > There is ecspi ERR009165 on i.mx6/7 soc family, which cause FIFO > transfer to be send twice in DMA mode. Please get more information > from: > https://www.nxp.com/docs/en/errata/IMX6DQCE.pdf. The workaround is > adding > new sdma ram script which works in XCH mode as PIO inside sdma > instead > of SMC mode, meanwhile, 'TX_THRESHOLD' should be 0. The issue should > be > exist on all legacy i.mx6/7 soc family before i.mx6ul. > NXP fix this design issue from i.mx6ul, so newer chips including > i.mx6ul/ > 6ull/6sll do not need this workaroud anymore. All other i.mx6/7/8 > chips > still need this workaroud. This patch set add new 'fsl,imx6ul-ecspi' > for ecspi driver and 'ecspi_fixed' in sdma driver to choose if need > errata > or not. > The first two reverted patches should be the same issue, though, it > seems 'fixed' by changing to other shp script. Hope Sean or Sascha > could > have the chance to test this patch set if could fix their issues. > Besides, enable sdma support for i.mx8mm/8mq and fix ecspi1 not work > on i.mx8mm because the event id is zero. > > PS: > Please get sdma firmware from below linux-firmware and copy it to > your > local rootfs /lib/firmware/imx/sdma. Hello Robin, we have tried out this series, and there seems to be an issue with the PIO fallback. We are testing on an i.MX6Q board, and our kernel is a mostly-unmodified 5.4, on which we backported all SDMA patches from next-20200602 (imx-sdma.c is identical to next-20200602 version), and then applied this whole series. We build the SDMA driver as a kernel module, which is loaded by udev, so the root filesystem is ready and the SDMA firmware can be loaded. The behaviour we're seeing is the following: 1. As long as the SDMA driver is not loaded, initializing spi_imx will be deferred 2. imx_sdma is loaded. The SDMA firmware is not yet loaded at this point 3. spi_imx is initialized and an SPI-NOR flash is probed. To load the BFPT, the driver will attempt to use DMA; this will fail with EINVAL as long as the SDMA firmware is not ready, so the fallback to PIO happens (4. SDMA firmware is ready, subsequent SPI transfers use DMA) The problem happens in step 3: Whenever the driver falls back to PIO, the received data is corrupt. The behaviour is specific to the fallback: When I disable DMA completely via spi_imx.use_dma, or when the timing is lucky and the SDMA firmware gets loaded before the flash is probed, no corruption can be observed. Kind regards, Matthias > https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/imx/sdma > > v2: > 1.Add commit log for reverted patches. > 2.Add comment for 'ecspi_fixed' in sdma driver. > 3.Add 'fsl,imx6sll-ecspi' compatible instead of 'fsl,imx6ul-ecspi' > rather than remove. > v3: > 1.Confirm with design team make sure ERR009165 fixed on > i.mx6ul/i.mx6ull > /i.mx6sll, not fixed on i.mx8m/8mm and other i.mx6/7 legacy > chips. > Correct dts related dts patch in v2. > 2.Clean eratta information in binding doc and new 'tx_glitch_fixed' > flag > in spi-imx driver to state ERR009165 fixed or not. > 3.Enlarge burst size to fifo size for tx since tx_wml set to 0 in > the > errata workaroud, thus improve performance as possible. > v4: > 1.Add Ack tag from Mark and Vinod > 2.Remove checking 'event_id1' zero as 'event_id0'. > v5: > 1.Add the last patch for compatible with the current uart driver > which > using rom script, so both uart ram script and rom script > supported > in latest firmware, by default uart rom script used. UART driver > will be broken without this patch. > v6: > 1.Resend after rebase the latest next branch. > 2.Remove below No.13~No.15 patches of v5 because they were > mergered. > ARM: dts: imx6ul: add dma support on ecspi > ARM: dts: imx6sll: correct sdma compatible > arm64: defconfig: Enable SDMA on i.mx8mq/8mm > 3.Revert "dmaengine: imx-sdma: fix context cache" since > 'context_loaded' removed. > v7: > 1.Put the last patch 13/13 'Revert "dmaengine: imx-sdma: fix > context > cache"' to the ahead of 03/13 'Revert "dmaengine: imx-sdma: > refine > to load context only once" so that no building waring during > comes out > during bisect. > 2.Address Sascha's comments, including eliminating any i.mx6sx in > this > series, adding new 'is_imx6ul_ecspi()' instead imx in imx51 and > taking > care SMC bit for PIO. > 3.Add back missing 'Reviewed-by' tag on 08/15(v5):09/13(v7) > 'spi: imx: add new i.mx6ul compatible name in binding doc' > v8: > 1.remove 0003-Revert-dmaengine-imx-sdma-fix-context-cache.patch and > merge > it into 04/13 of v7 > 2.add 0005-spi-imx-fallback-to-PIO-if-dma-setup-failure.patch for > no any > ecspi function broken even if sdma firmware not updated. > 3.merge 'tx.dst_maxburst' changes in the two continous patches into > one > patch to avoid confusion. > 4.fix typo 'duplicated'. > > Robin Gong (13): > Revert "ARM: dts: imx6q: Use correct SDMA script for SPI5 core" > Revert "ARM: dts: imx6: Use correct SDMA script for SPI cores" > Revert "dmaengine: imx-sdma: refine to load context only once" > dmaengine: imx-sdma: remove duplicated sdma_load_context > spi: imx: fallback to PIO if dma setup failure > dmaengine: imx-sdma: add mcu_2_ecspi script > spi: imx: fix ERR009165 > spi: imx: remove ERR009165 workaround on i.mx6ul > spi: imx: add new i.mx6ul compatible name in binding doc > dmaengine: imx-sdma: remove ERR009165 on i.mx6ul > dma: imx-sdma: add i.mx6ul compatible name > dmaengine: imx-sdma: fix ecspi1 rx dma not work on i.mx8mm > dmaengine: imx-sdma: add uart rom script > > .../devicetree/bindings/dma/fsl-imx-sdma.txt | 1 + > .../devicetree/bindings/spi/fsl-imx-cspi.txt | 1 + > arch/arm/boot/dts/imx6q.dtsi | 2 +- > arch/arm/boot/dts/imx6qdl.dtsi | 8 +- > drivers/dma/imx-sdma.c | 67 ++++++++++ > ------ > drivers/spi/spi-imx.c | 92 > +++++++++++++++++++--- > include/linux/platform_data/dma-imx-sdma.h | 8 +- > 7 files changed, 135 insertions(+), 44 deletions(-) >
WARNING: multiple messages have this Message-ID (diff)
From: Matthias Schiffer <matthias.schiffer@ew.tq-group.com> To: Robin Gong <yibin.gong@nxp.com> Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, festevam@gmail.com, martin.fuzzey@flowbird.group, Markus Niebel <Markus.Niebel@tq-group.com>, catalin.marinas@arm.com, s.hauer@pengutronix.de, will.deacon@arm.com, linux-kernel@vger.kernel.org, robh+dt@kernel.org, linux-spi@vger.kernel.org, vkoul@kernel.org, broonie@kernel.org, linux-imx@nxp.com, kernel@pengutronix.de, u.kleine-koenig@pengutronix.de, dan.j.williams@intel.com, shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org Subject: Re: (EXT) [PATCH v8 00/13] add ecspi ERR009165 for i.mx6/7 soc family Date: Wed, 03 Jun 2020 10:31:25 +0200 [thread overview] Message-ID: <5d246dd81607bb6e5cb9af86ad4e53f7a7a99c50.camel@ew.tq-group.com> (raw) In-Reply-To: <1590006865-20900-1-git-send-email-yibin.gong@nxp.com> On Thu, 2020-05-21 at 04:34 +0800, Robin Gong wrote: > There is ecspi ERR009165 on i.mx6/7 soc family, which cause FIFO > transfer to be send twice in DMA mode. Please get more information > from: > https://www.nxp.com/docs/en/errata/IMX6DQCE.pdf. The workaround is > adding > new sdma ram script which works in XCH mode as PIO inside sdma > instead > of SMC mode, meanwhile, 'TX_THRESHOLD' should be 0. The issue should > be > exist on all legacy i.mx6/7 soc family before i.mx6ul. > NXP fix this design issue from i.mx6ul, so newer chips including > i.mx6ul/ > 6ull/6sll do not need this workaroud anymore. All other i.mx6/7/8 > chips > still need this workaroud. This patch set add new 'fsl,imx6ul-ecspi' > for ecspi driver and 'ecspi_fixed' in sdma driver to choose if need > errata > or not. > The first two reverted patches should be the same issue, though, it > seems 'fixed' by changing to other shp script. Hope Sean or Sascha > could > have the chance to test this patch set if could fix their issues. > Besides, enable sdma support for i.mx8mm/8mq and fix ecspi1 not work > on i.mx8mm because the event id is zero. > > PS: > Please get sdma firmware from below linux-firmware and copy it to > your > local rootfs /lib/firmware/imx/sdma. Hello Robin, we have tried out this series, and there seems to be an issue with the PIO fallback. We are testing on an i.MX6Q board, and our kernel is a mostly-unmodified 5.4, on which we backported all SDMA patches from next-20200602 (imx-sdma.c is identical to next-20200602 version), and then applied this whole series. We build the SDMA driver as a kernel module, which is loaded by udev, so the root filesystem is ready and the SDMA firmware can be loaded. The behaviour we're seeing is the following: 1. As long as the SDMA driver is not loaded, initializing spi_imx will be deferred 2. imx_sdma is loaded. The SDMA firmware is not yet loaded at this point 3. spi_imx is initialized and an SPI-NOR flash is probed. To load the BFPT, the driver will attempt to use DMA; this will fail with EINVAL as long as the SDMA firmware is not ready, so the fallback to PIO happens (4. SDMA firmware is ready, subsequent SPI transfers use DMA) The problem happens in step 3: Whenever the driver falls back to PIO, the received data is corrupt. The behaviour is specific to the fallback: When I disable DMA completely via spi_imx.use_dma, or when the timing is lucky and the SDMA firmware gets loaded before the flash is probed, no corruption can be observed. Kind regards, Matthias > https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/imx/sdma > > v2: > 1.Add commit log for reverted patches. > 2.Add comment for 'ecspi_fixed' in sdma driver. > 3.Add 'fsl,imx6sll-ecspi' compatible instead of 'fsl,imx6ul-ecspi' > rather than remove. > v3: > 1.Confirm with design team make sure ERR009165 fixed on > i.mx6ul/i.mx6ull > /i.mx6sll, not fixed on i.mx8m/8mm and other i.mx6/7 legacy > chips. > Correct dts related dts patch in v2. > 2.Clean eratta information in binding doc and new 'tx_glitch_fixed' > flag > in spi-imx driver to state ERR009165 fixed or not. > 3.Enlarge burst size to fifo size for tx since tx_wml set to 0 in > the > errata workaroud, thus improve performance as possible. > v4: > 1.Add Ack tag from Mark and Vinod > 2.Remove checking 'event_id1' zero as 'event_id0'. > v5: > 1.Add the last patch for compatible with the current uart driver > which > using rom script, so both uart ram script and rom script > supported > in latest firmware, by default uart rom script used. UART driver > will be broken without this patch. > v6: > 1.Resend after rebase the latest next branch. > 2.Remove below No.13~No.15 patches of v5 because they were > mergered. > ARM: dts: imx6ul: add dma support on ecspi > ARM: dts: imx6sll: correct sdma compatible > arm64: defconfig: Enable SDMA on i.mx8mq/8mm > 3.Revert "dmaengine: imx-sdma: fix context cache" since > 'context_loaded' removed. > v7: > 1.Put the last patch 13/13 'Revert "dmaengine: imx-sdma: fix > context > cache"' to the ahead of 03/13 'Revert "dmaengine: imx-sdma: > refine > to load context only once" so that no building waring during > comes out > during bisect. > 2.Address Sascha's comments, including eliminating any i.mx6sx in > this > series, adding new 'is_imx6ul_ecspi()' instead imx in imx51 and > taking > care SMC bit for PIO. > 3.Add back missing 'Reviewed-by' tag on 08/15(v5):09/13(v7) > 'spi: imx: add new i.mx6ul compatible name in binding doc' > v8: > 1.remove 0003-Revert-dmaengine-imx-sdma-fix-context-cache.patch and > merge > it into 04/13 of v7 > 2.add 0005-spi-imx-fallback-to-PIO-if-dma-setup-failure.patch for > no any > ecspi function broken even if sdma firmware not updated. > 3.merge 'tx.dst_maxburst' changes in the two continous patches into > one > patch to avoid confusion. > 4.fix typo 'duplicated'. > > Robin Gong (13): > Revert "ARM: dts: imx6q: Use correct SDMA script for SPI5 core" > Revert "ARM: dts: imx6: Use correct SDMA script for SPI cores" > Revert "dmaengine: imx-sdma: refine to load context only once" > dmaengine: imx-sdma: remove duplicated sdma_load_context > spi: imx: fallback to PIO if dma setup failure > dmaengine: imx-sdma: add mcu_2_ecspi script > spi: imx: fix ERR009165 > spi: imx: remove ERR009165 workaround on i.mx6ul > spi: imx: add new i.mx6ul compatible name in binding doc > dmaengine: imx-sdma: remove ERR009165 on i.mx6ul > dma: imx-sdma: add i.mx6ul compatible name > dmaengine: imx-sdma: fix ecspi1 rx dma not work on i.mx8mm > dmaengine: imx-sdma: add uart rom script > > .../devicetree/bindings/dma/fsl-imx-sdma.txt | 1 + > .../devicetree/bindings/spi/fsl-imx-cspi.txt | 1 + > arch/arm/boot/dts/imx6q.dtsi | 2 +- > arch/arm/boot/dts/imx6qdl.dtsi | 8 +- > drivers/dma/imx-sdma.c | 67 ++++++++++ > ------ > drivers/spi/spi-imx.c | 92 > +++++++++++++++++++--- > include/linux/platform_data/dma-imx-sdma.h | 8 +- > 7 files changed, 135 insertions(+), 44 deletions(-) > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-06-03 8:31 UTC|newest] Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-05-20 20:34 [PATCH v8 00/13] add ecspi ERR009165 for i.mx6/7 soc family Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 01/13] Revert "ARM: dts: imx6q: Use correct SDMA script for SPI5 core" Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 02/13] Revert "ARM: dts: imx6: Use correct SDMA script for SPI cores" Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 03/13] Revert "dmaengine: imx-sdma: refine to load context only once" Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 04/13] dmaengine: imx-sdma: remove duplicated sdma_load_context Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 05/13] spi: imx: fallback to PIO if dma setup failure Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 06/13] dmaengine: imx-sdma: add mcu_2_ecspi script Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 07/13] spi: imx: fix ERR009165 Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 08/13] spi: imx: remove ERR009165 workaround on i.mx6ul Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 09/13] spi: imx: add new i.mx6ul compatible name in binding doc Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 10/13] dmaengine: imx-sdma: remove ERR009165 on i.mx6ul Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 11/13] dma: imx-sdma: add i.mx6ul compatible name Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 12/13] dmaengine: imx-sdma: fix ecspi1 rx dma not work on i.mx8mm Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-20 20:34 ` [PATCH v8 13/13] dmaengine: imx-sdma: add uart rom script Robin Gong 2020-05-20 20:34 ` Robin Gong 2020-05-27 5:03 ` [PATCH v8 00/13] add ecspi ERR009165 for i.mx6/7 soc family Sascha Hauer 2020-05-27 5:03 ` Sascha Hauer 2020-05-28 13:07 ` Mark Brown 2020-05-28 13:07 ` Mark Brown 2020-06-03 8:31 ` Matthias Schiffer [this message] 2020-06-03 8:31 ` (EXT) " Matthias Schiffer 2020-06-03 9:50 ` Robin Gong 2020-06-03 9:50 ` Robin Gong 2020-06-03 11:50 ` Matthias Schiffer 2020-06-05 2:45 ` Robin Gong 2020-06-05 2:45 ` Robin Gong 2020-06-05 7:57 ` (EXT) " Matthias Schiffer 2020-06-05 7:57 ` Matthias Schiffer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=5d246dd81607bb6e5cb9af86ad4e53f7a7a99c50.camel@ew.tq-group.com \ --to=matthias.schiffer@ew.tq-group.com \ --cc=Markus.Niebel@tq-group.com \ --cc=broonie@kernel.org \ --cc=catalin.marinas@arm.com \ --cc=dan.j.williams@intel.com \ --cc=devicetree@vger.kernel.org \ --cc=festevam@gmail.com \ --cc=kernel@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=martin.fuzzey@flowbird.group \ --cc=robh+dt@kernel.org \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@kernel.org \ --cc=u.kleine-koenig@pengutronix.de \ --cc=vkoul@kernel.org \ --cc=will.deacon@arm.com \ --cc=yibin.gong@nxp.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.