<?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 to Configure a PCIe FPGA Endpoint for the i.MX8MP in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2322371#M244172</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After changing the PCIe Endpoint class code from 0x060000 to 0x058000, the device is successfully enabled and the PCIe link comes up correctly.&lt;/P&gt;&lt;P&gt;Now I am trying to write data from the Root Complex (RC) to the Endpoint (EP) using PIO / MMIO access.&lt;BR /&gt;Write Operation from RC&lt;/P&gt;&lt;P&gt;I am using devmem2 on the RC side:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$ devmem2 0x18100004 w 0xDEADBEEF&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Output:&lt;BR /&gt;/dev/mem opened.&lt;BR /&gt;Memory mapped at address 0xffff84e9b000.&lt;BR /&gt;Read at address 0x18100004 (0xffff84e9b004): 0xFFFFFFFF&lt;BR /&gt;Write at address 0x18100004 (0xffff84e9b004): 0xDEADBEEF, readback 0xDEADBEEF&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;Observation on EP Side&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Using ILA in Vivado, I can see the AXI write data (WDATA = 0xDEADBEEF) reaching the PCIe IP.&lt;/P&gt;&lt;P&gt;However, when I try to read the data from the EP register logic, I only get dummy values (0xFFFFFFFF).&lt;/P&gt;&lt;P&gt;Additionally:&lt;/P&gt;&lt;P&gt;A register shows the value 0xDEC0DE1C&lt;/P&gt;&lt;P&gt;RVALID remains 0&lt;/P&gt;&lt;P&gt;Read response never completes&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Questions&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1. Is additional configuration required on the EP side to properly handle PIO/MMIO writes?&lt;/P&gt;&lt;P&gt;2.Could this be related to BAR configuration, address decoding, or AXI slave response handling?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for your support.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 25 Feb 2026 08:24:20 GMT</pubDate>
    <dc:creator>NXP_USER_05</dc:creator>
    <dc:date>2026-02-25T08:24:20Z</dc:date>
    <item>
      <title>How to Configure a PCIe FPGA Endpoint for the i.MX8MP</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2319194#M244068</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;I am working with the PCIe Root Complex on the i.MX8MP and a custom FPGA(Artix 7) configured as a PCIe endpoint. The PCIe link comes up successfully and the endpoint is enumerated during boot. Below is the relevant boot log:&lt;/P&gt;&lt;P&gt;2.500513] imx6q-pcie 33800000.pcie: host bridge /soc@0/pcie@33800000 ranges:&lt;BR /&gt;[ 2.507832] imx6q-pcie 33800000.pcie: IO 0x001ff80000..0x001ff8ffff -&amp;gt; 0x0000000000&lt;BR /&gt;[ 2.508459] pps pps0: new PPS source ptp0&lt;BR /&gt;[ 2.516088] imx6q-pcie 33800000.pcie: MEM 0x0018000000..0x001fefffff -&amp;gt; 0x0018000000&lt;BR /&gt;[ 2.529393] fec 30be0000.ethernet: Invalid MAC address: 00:00:00:00:00:00&lt;BR /&gt;[ 2.536303] fec 30be0000.ethernet: Using random MAC address: 4e:ba:b3:4a:a3:b9&lt;BR /&gt;[ 2.745496] imx6q-pcie 33800000.pcie: iATU: unroll T, 4 ob, 4 ib, align 64K, limit 16G&lt;BR /&gt;[ 2.853903] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up&lt;BR /&gt;[ 2.859611] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up&lt;BR /&gt;[ 2.865214] imx6q-pcie 33800000.pcie: &lt;STRONG&gt;Link up, Gen1&lt;/STRONG&gt;&lt;BR /&gt;[ 2.870114] imx6q-pcie 33800000.pcie: PCIe Gen.1 x1 link up&lt;BR /&gt;[ 2.875881] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00&lt;BR /&gt;[ 2.882281] pci_bus 0000:00: root bus resource [bus 00-ff]&lt;BR /&gt;[ 2.887795] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]&lt;BR /&gt;[ 2.893995] pci_bus 0000:00: root bus resource [mem 0x18000000-0x1fefffff]&lt;BR /&gt;[ 2.900922] pci 0000:00:00.0: [16c3:abcd] type 01 class 0x060400&lt;BR /&gt;[ 2.906964] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x000fffff]&lt;BR /&gt;[ 2.913262] pci 0000:00:00.0: reg 0x38: [mem 0x00000000-0x0000ffff pref]&lt;BR /&gt;[ 2.920046] pci 0000:00:00.0: supports D1&lt;BR /&gt;[ 2.924084] pci 0000:00:00.0: PME# supported from D0 D1 D3hot D3cold&lt;BR /&gt;[ 2.933735] pci 0000:01:00.0: [10ee:7011] type 00 class 0x060000&lt;BR /&gt;[ 2.939854] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00007fff]&lt;BR /&gt;[ 2.946320] pci 0000:01:00.0: enabling Extended Tags&lt;BR /&gt;[ 2.961365] pci 0000:00:00.0: BAR 0: assigned [mem 0x18000000-0x180fffff]&lt;BR /&gt;[ 2.968226] pci 0000:00:00.0: BAR 14: assigned [mem 0x18100000-0x181fffff]&lt;BR /&gt;[ 2.975141] pci 0000:00:00.0: BAR 6: assigned [mem 0x18200000-0x1820ffff pref]&lt;BR /&gt;[ 2.982396] pci 0000:00:00.0: PCI bridge to [bus 01-ff]&lt;BR /&gt;[ 2.987647] pci 0000:00:00.0: bridge window [mem 0x18100000-0x181fffff]&lt;BR /&gt;[ 2.994923] pcieport 0000:00:00.0: PME: Signaling with IRQ 221&lt;/P&gt;&lt;P&gt;The PCIe endpoint (Vendor ID 10ee, Device ID 7011) is detected correctly, and BAR0 is reported with a size of 16 KB.&lt;/P&gt;&lt;P&gt;However, when loading a custom out-of-tree PCIe driver, the probe fails with the following error:&lt;/P&gt;&lt;P&gt;[ 9.517480] pcie_example: loading out-of-tree module taints kernel.&lt;BR /&gt;[ 9.533840] pcie_example: probing &lt;STRONG&gt;10ee:7011&lt;/STRONG&gt;&lt;BR /&gt;[ 9.539507] pcie_example 0000:01:00.0: &lt;STRONG&gt;can't enable device:&lt;/STRONG&gt;&lt;BR /&gt;BAR 0 [mem 0x00000000-0x00007fff] not claimed&lt;BR /&gt;[ 9.567806] pcie_example: &lt;STRONG&gt;pci_enable_device failed&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;It appears that BAR0 is not being assigned a system memory address, causing pci_enable_device() to fail in the driver.&lt;/P&gt;&lt;P&gt;Also attached the dts file for your refrence.&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could you please advise:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Why the endpoint BAR is not being claimed/assigned by the i.MX8MP PCIe Root Complex?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Whether any specific device tree, kernel configuration, or PCIe controller settings are required to ensure proper BAR allocation for PCIe endpoints on i.MX8MP?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Any guidance would be greatly appreciated.&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 17 Feb 2026 18:55:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2319194#M244068</guid>
      <dc:creator>NXP_USER_05</dc:creator>
      <dc:date>2026-02-17T18:55:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to Configure a PCIe FPGA Endpoint for the i.MX8MP</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2320413#M244097</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;The issue seems to be caused by the class code of the EP.&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;Your FPGA endpoint is currently reporting a PCI Class Code of 0x060000, which identifies the device as a Host Bridge. This classification is not valid for a Type‑0 PCIe endpoint function. Because the Linux PCI subsystem interprets the device as a bridge rather than a standard endpoint, it does not assign or claim BAR resources for it. As a result, the call to pci_enable_device() fails with the message “BAR 0 not claimed.”, please take a look on the link below:&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;&lt;A href="https://stackoverflow.com/questions/46476844/pci-enable-device-fails-after-remove-rescan" target="_blank"&gt;https://stackoverflow.com/questions/46476844/pci-enable-device-fails-after-remove-rescan&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV&gt;Also, p&lt;SPAN&gt;lease refer to the below U-boot source code from NXP for the supported PCI drivers.&lt;/SPAN&gt;
&lt;DIV&gt;&lt;A href="https://github.com/nxp-imx/uboot-imx/tree/lf_v2025.04/drivers/pci" target="_blank" rel="nofollow noopener noreferrer" data-saferedirecturl="https://www.google.com/url?q=https://github.com/nxp-imx/uboot-imx/tree/lf_v2022.04/drivers/pci&amp;amp;source=gmail&amp;amp;ust=1689340224856000&amp;amp;usg=AOvVaw0o4ShFN03Eb82BSIyYTg_9"&gt;uboot-imx/drivers /pci/&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;</description>
      <pubDate>Thu, 19 Feb 2026 19:40:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2320413#M244097</guid>
      <dc:creator>Oswalag</dc:creator>
      <dc:date>2026-02-19T19:40:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to Configure a PCIe FPGA Endpoint for the i.MX8MP</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2322371#M244172</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After changing the PCIe Endpoint class code from 0x060000 to 0x058000, the device is successfully enabled and the PCIe link comes up correctly.&lt;/P&gt;&lt;P&gt;Now I am trying to write data from the Root Complex (RC) to the Endpoint (EP) using PIO / MMIO access.&lt;BR /&gt;Write Operation from RC&lt;/P&gt;&lt;P&gt;I am using devmem2 on the RC side:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;$ devmem2 0x18100004 w 0xDEADBEEF&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Output:&lt;BR /&gt;/dev/mem opened.&lt;BR /&gt;Memory mapped at address 0xffff84e9b000.&lt;BR /&gt;Read at address 0x18100004 (0xffff84e9b004): 0xFFFFFFFF&lt;BR /&gt;Write at address 0x18100004 (0xffff84e9b004): 0xDEADBEEF, readback 0xDEADBEEF&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;Observation on EP Side&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Using ILA in Vivado, I can see the AXI write data (WDATA = 0xDEADBEEF) reaching the PCIe IP.&lt;/P&gt;&lt;P&gt;However, when I try to read the data from the EP register logic, I only get dummy values (0xFFFFFFFF).&lt;/P&gt;&lt;P&gt;Additionally:&lt;/P&gt;&lt;P&gt;A register shows the value 0xDEC0DE1C&lt;/P&gt;&lt;P&gt;RVALID remains 0&lt;/P&gt;&lt;P&gt;Read response never completes&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Questions&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1. Is additional configuration required on the EP side to properly handle PIO/MMIO writes?&lt;/P&gt;&lt;P&gt;2.Could this be related to BAR configuration, address decoding, or AXI slave response handling?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance for your support.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Feb 2026 08:24:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/How-to-Configure-a-PCIe-FPGA-Endpoint-for-the-i-MX8MP/m-p/2322371#M244172</guid>
      <dc:creator>NXP_USER_05</dc:creator>
      <dc:date>2026-02-25T08:24:20Z</dc:date>
    </item>
  </channel>
</rss>

