Hello
I am trying to use a DMA inside the i.MX 8M to perform write transactions to a PCIe endpoint. We haven’t fully decided yet between the i.MX 8M Mini and i.MX 8M Plus, I would appreciate if both of those processors could be considered in the answer.
I understand from the Processor Reference Manuals and forum posts that the SDMA cannot be used for this, but the manual refers to an "Embedded DMA" (IMX8MPRM chapter 11.4.2.4). I can't see any such DMA engine registered within the Linux subsystem. dma_request_channel() only returns SDMA channels, same in the sysfs. I can't see any reference to a DMA in pci-imx6.c (driver used for i.MX 8 as well).
The “AN13164 - iMX8MP PCIe Bandwidth Analysis” calls out that a DMA transfer is used, but no source code is provided. There is also a community thread about this: https://community.nxp.com/t5/i-MX-Processors/iMX8M-Plus-PCIe-DMA-Feature/td-p/1529555. Linux v5.4.70 (version used for AN13164) doesn't have any reference to DMA in pcitest.c or pci-epf-test.c. Also, I can't find any function called imx6_pcie_local_dma_start() as indicated in the community thread above in any version of mainline Linux.
A post about a similar test on the i.MX6 (https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX6Q-PCIe-EP-RC-Validation-System/ta-p...) refers that the IPU was used for the DMA transfer, but the i.MX 8M doesn't have any such IPU.
I also can't find any reference to a DMA for PCIe in the Linux Reference Manual.
My questions:
@joanxie please continue with the follow-up.
I already replied to the customer via mail, because I couldn't access the community last week
Please check your support ticket #0062962
You did reply answering 1 of my 4 questions on June 28, 7:23am via the NXP support ticketing system. I replied to this on June 28, 9:13am with a follow-up question and the the re-iteration of the un-answered questions.
I haven't heard since (neither publicly on the forum nor via the support ticket).
I just mailed to you attach my previous reply, as I mentioned, I couldn't access the community last week, I mailed to you, maybe the system issue, I screen shot it, you can check, I'm waiting for you cable and test result
I replied to your email on Friday, please check. Haven't heard back yet.
mail to you, pls check
I'm also trying to get a DMA reading the data off of the pcie bus. Can you post here or message me on how you got it working? Or can someone from nxp give me info on the solution?
Some driver support got added in mainline Kernel v6.3. You can use the pcitest tool (part of the Kernel) as example.
one quick question: I'm assuming there is no "generic pci-e DMA" driver and that I need to write my own kernel module to do the DMA stuff on the PCIe interface? Or is there a kernel module already in existence that handles the DMA?
You'll likely have to write some Kernel driver by yourself.