<?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 Accessing PCI via UIO on T1020/T1040 in T-Series</title>
    <link>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894483#M3076</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am currently using a device based on the T10xx reference design (T1022 processor). I have previously been building the Linux kernel using the v1.7 QoriQ SDK (QorIQ-SDK-V1.7-SOURCE-20141218-yocto.iso). however I am looking to upgrade to a recent mainline Linux kernel (In this example, 4.20).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have successfully built and booted the 4.20 mainline kernel on my device and can access most of the basic devices (ie MTD, GPIO, i2C...) without major issue. However, on the mainline kernel the PCI bus is not being exposed via UIO. Previously on the 3.1x kernel provided with v1.7 QoriQ SDK the following related kernel options were enabled:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE&gt;# Freescale specific options # CONFIG_FSL_DPA=y CONFIG_FSL_ERRATUM_A_008007=y CONFIG_FSL_IFC=y CONFIG_FSL_MPIC_TIMER_WAKEUP=y CONFIG_FSL_USDPAA=y CONFIG_UIO_FSL_DMA=y&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;These options appear not to exist in the mainline kernel - I assume they have been renamed or modified since merging back. I have instead enabled what I assume are the equivalent options:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE&gt;# DMA Devices # CONFIG_FSL_DPA=y CONFIG_FSL_EDMA=y CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_UIO=y
CONFIG_UIO_PCI_GENERIC=y&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Booting with these options appears to enumerate the devices. Below is a truncated copy of the V1.7 QoriQ SDK kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class="" title="Hint: double-click to select code"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-0 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-1 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-2 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-3 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-4 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-5 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-6 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-7 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-0 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-1 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-2 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-3 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-4 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-5 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-6 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-7 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And for comparison, this is the equivalent for the mainline kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class="" title="Hint: double-click to select code"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;Freescale Elo series DMA driver&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#0 (fsl,eloplus-dma-channel), irq 28&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#1 (fsl,eloplus-dma-channel), irq 29&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#2 (fsl,eloplus-dma-channel), irq 30&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#3 (fsl,eloplus-dma-channel), irq 31&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#4 (fsl,eloplus-dma-channel), irq 76&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#5 (fsl,eloplus-dma-channel), irq 77&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#6 (fsl,eloplus-dma-channel), irq 78&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#7 (fsl,eloplus-dma-channel), irq 79&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#0 (fsl,eloplus-dma-channel), irq 32&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#1 (fsl,eloplus-dma-channel), irq 33&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#2 (fsl,eloplus-dma-channel), irq 34&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#3 (fsl,eloplus-dma-channel), irq 35&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#4 (fsl,eloplus-dma-channel), irq 80&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#5 (fsl,eloplus-dma-channel), irq 81&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#6 (fsl,eloplus-dma-channel), irq 82&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#7 (fsl,eloplus-dma-channel), irq 83&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;At this point, I can bind the devices to the &lt;CODE class=""&gt;uio_pci_generic&lt;/CODE&gt; driver and they appear to be exposed correctly:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # ls /dev/uio*&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;ls: /dev/uio*: No such file or directory&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # echo "1957 082C" &amp;gt; /sys/bus/pci/drivers/uio_pci_generic/new_id&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # ls /dev/uio*&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;/dev/uio0&lt;/CODE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This appears to work correctly, I can check the values in&amp;nbsp;&lt;CODE class=""&gt;/sys/class/uio/uio0/&lt;/CODE&gt; (ie "dev", "version", "uevent") which are identical to that of the V1.7 QoriQ SDK kernel, with the exception of "name" which was "dma-uio0-0" on the V1.7 QoriQ SDK kernel and is "uio-pci-generic" on the mainline kernel.&lt;/P&gt;&lt;P&gt;The main issue for me is that the mainline kernel is missing the &lt;CODE class=""&gt;/sys/class/uio/uio0/maps/&lt;/CODE&gt; directory. As a comparison, on the V1.7 QoriQ SDK:&lt;/P&gt;&lt;DIV class=""&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;~ # ls -R /sys/class/uio/uio0&lt;BR /&gt;/sys/class/uio/uio0:&lt;BR /&gt;dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uevent&lt;BR /&gt;device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maps&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subsystem&amp;nbsp; version&lt;BR /&gt;&lt;BR /&gt;/sys/class/uio/uio0/maps:&lt;BR /&gt;map0&lt;BR /&gt;&lt;BR /&gt;/sys/class/uio/uio0/maps/map0:&lt;BR /&gt;addr&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp; offset&amp;nbsp; size&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And on the mainline kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;~ # ls -R /sys/class/uio/uio0&lt;BR /&gt;/sys/class/uio/uio0:&lt;BR /&gt;dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subsystem&amp;nbsp; uevent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I look under&amp;nbsp;&lt;CODE class=""&gt;/sys/class/dma&lt;/CODE&gt; it appears all the DMa channels are available, but in a different format:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;/sys/class/dma # ls -la&lt;BR /&gt;total 0&lt;BR /&gt;drwxr-xr-x&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 .&lt;BR /&gt;drwxr-xr-x&amp;nbsp;&amp;nbsp; 41 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 ..&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan0 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan0&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan1 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan1&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan2 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan2&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan3 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan3&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan4 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan4&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan5 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan5&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan6 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan6&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan7 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan7&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan0 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan0&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan1 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan1&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan2 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan2&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan3 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan3&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan4 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan4&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan5 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan5&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan6 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan6&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan7 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan7&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;We currently use the Freescale source file "dma_driver.c" which exposes the following functions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;int fsl_dma_chan_init(struct dma_ch **dma_ch, uint8_t dma_id, uint8_t ch_id)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_finish(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_basic_direct_init(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_bwc(struct dma_ch *dma_ch, uint8_t bwc)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_wait_blocking(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_direct_start(struct dma_ch *dma_ch, dma_addr_t src_phys, dma_addr_t dest_phys, uint32_t len)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chain_link_build(struct dma_link_setup_data *link_data, struct dma_link_dsc *link_dsc, uint64_t link_dsc_phys, uint32_t link_count)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chain_basic_start(struct dma_ch *dma_ch, struct dma_link_setup_data *link_data, uint64_t link_dsc_phys)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This source file is copyright dated 2011-2012 Freescale Semiconductor, Inc. If there is a newer version of this file, please let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My main questions from this are:&lt;/P&gt;&lt;P&gt;- Am I using the correct driver to access the PCI device? We have software that accesses PCI via UIO so we would like to maintain this compatibility. I assume this related to the "map" directory not being exposed.&lt;/P&gt;&lt;P&gt;- Can I expose the DMA-UIO in the same format as on the v1.7 QoriQ SDK kernel? I assume this was previously done with the Freescale kernel driver - Is it possible to use this on the mainline kernel?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If any more details are required please let me know so that I can provide them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 May 2019 09:15:36 GMT</pubDate>
    <dc:creator>bradley_gamble</dc:creator>
    <dc:date>2019-05-15T09:15:36Z</dc:date>
    <item>
      <title>Accessing PCI via UIO on T1020/T1040</title>
      <link>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894483#M3076</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am currently using a device based on the T10xx reference design (T1022 processor). I have previously been building the Linux kernel using the v1.7 QoriQ SDK (QorIQ-SDK-V1.7-SOURCE-20141218-yocto.iso). however I am looking to upgrade to a recent mainline Linux kernel (In this example, 4.20).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have successfully built and booted the 4.20 mainline kernel on my device and can access most of the basic devices (ie MTD, GPIO, i2C...) without major issue. However, on the mainline kernel the PCI bus is not being exposed via UIO. Previously on the 3.1x kernel provided with v1.7 QoriQ SDK the following related kernel options were enabled:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE&gt;# Freescale specific options # CONFIG_FSL_DPA=y CONFIG_FSL_ERRATUM_A_008007=y CONFIG_FSL_IFC=y CONFIG_FSL_MPIC_TIMER_WAKEUP=y CONFIG_FSL_USDPAA=y CONFIG_UIO_FSL_DMA=y&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;These options appear not to exist in the mainline kernel - I assume they have been renamed or modified since merging back. I have instead enabled what I assume are the equivalent options:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;PRE&gt;# DMA Devices # CONFIG_FSL_DPA=y CONFIG_FSL_EDMA=y CONFIG_DMA_ENGINE=y
CONFIG_DMA_OF=y
CONFIG_UIO=y
CONFIG_UIO_PCI_GENERIC=y&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Booting with these options appears to enumerate the devices. Below is a truncated copy of the V1.7 QoriQ SDK kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class="" title="Hint: double-click to select code"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-0 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-1 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-2 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-3 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-4 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-5 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-6 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe100300.dma: dma channel dma-uio0-7 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-0 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-1 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-2 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-3 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-4 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-5 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-6 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-of-dma ffe101300.dma: dma channel dma-uio1-7 initialized&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And for comparison, this is the equivalent for the mainline kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class="" title="Hint: double-click to select code"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;Freescale Elo series DMA driver&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#0 (fsl,eloplus-dma-channel), irq 28&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#1 (fsl,eloplus-dma-channel), irq 29&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#2 (fsl,eloplus-dma-channel), irq 30&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#3 (fsl,eloplus-dma-channel), irq 31&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#4 (fsl,eloplus-dma-channel), irq 76&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#5 (fsl,eloplus-dma-channel), irq 77&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#6 (fsl,eloplus-dma-channel), irq 78&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe100300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#7 (fsl,eloplus-dma-channel), irq 79&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#0 (fsl,eloplus-dma-channel), irq 32&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#1 (fsl,eloplus-dma-channel), irq 33&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#2 (fsl,eloplus-dma-channel), irq 34&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#3 (fsl,eloplus-dma-channel), irq 35&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#4 (fsl,eloplus-dma-channel), irq 80&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#5 (fsl,eloplus-dma-channel), irq 81&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#6 (fsl,eloplus-dma-channel), irq 82&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;fsl-elo-dma ffe101300.dma: &lt;/CODE&gt;&lt;CODE class=""&gt;#7 (fsl,eloplus-dma-channel), irq 83&lt;/CODE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;At this point, I can bind the devices to the &lt;CODE class=""&gt;uio_pci_generic&lt;/CODE&gt; driver and they appear to be exposed correctly:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # ls /dev/uio*&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;ls: /dev/uio*: No such file or directory&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # echo "1957 082C" &amp;gt; /sys/bus/pci/drivers/uio_pci_generic/new_id&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;~ # ls /dev/uio*&lt;/CODE&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;CODE class=""&gt;/dev/uio0&lt;/CODE&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This appears to work correctly, I can check the values in&amp;nbsp;&lt;CODE class=""&gt;/sys/class/uio/uio0/&lt;/CODE&gt; (ie "dev", "version", "uevent") which are identical to that of the V1.7 QoriQ SDK kernel, with the exception of "name" which was "dma-uio0-0" on the V1.7 QoriQ SDK kernel and is "uio-pci-generic" on the mainline kernel.&lt;/P&gt;&lt;P&gt;The main issue for me is that the mainline kernel is missing the &lt;CODE class=""&gt;/sys/class/uio/uio0/maps/&lt;/CODE&gt; directory. As a comparison, on the V1.7 QoriQ SDK:&lt;/P&gt;&lt;DIV class=""&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;~ # ls -R /sys/class/uio/uio0&lt;BR /&gt;/sys/class/uio/uio0:&lt;BR /&gt;dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uevent&lt;BR /&gt;device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; maps&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subsystem&amp;nbsp; version&lt;BR /&gt;&lt;BR /&gt;/sys/class/uio/uio0/maps:&lt;BR /&gt;map0&lt;BR /&gt;&lt;BR /&gt;/sys/class/uio/uio0/maps/map0:&lt;BR /&gt;addr&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp; offset&amp;nbsp; size&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And on the mainline kernel:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;~ # ls -R /sys/class/uio/uio0&lt;BR /&gt;/sys/class/uio/uio0:&lt;BR /&gt;dev&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; event&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; subsystem&amp;nbsp; uevent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I look under&amp;nbsp;&lt;CODE class=""&gt;/sys/class/dma&lt;/CODE&gt; it appears all the DMa channels are available, but in a different format:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;CODE class=""&gt;/sys/class/dma # ls -la&lt;BR /&gt;total 0&lt;BR /&gt;drwxr-xr-x&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 .&lt;BR /&gt;drwxr-xr-x&amp;nbsp;&amp;nbsp; 41 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 ..&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan0 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan0&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan1 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan1&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan2 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan2&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan3 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan3&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan4 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan4&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan5 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan5&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan6 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan6&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma0chan7 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe100300.dma/dma/dma0chan7&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan0 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan0&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan1 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan1&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan2 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan2&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan3 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan3&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan4 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan4&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan5 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan5&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan6 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan6&lt;BR /&gt;lrwxrwxrwx&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 Jan&amp;nbsp; 1&amp;nbsp; 1970 dma1chan7 -&amp;gt; ../../devices/platform/ffe000000.soc/ffe101300.dma/dma/dma1chan7&lt;/CODE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;We currently use the Freescale source file "dma_driver.c" which exposes the following functions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;int fsl_dma_chan_init(struct dma_ch **dma_ch, uint8_t dma_id, uint8_t ch_id)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_finish(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_basic_direct_init(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chan_bwc(struct dma_ch *dma_ch, uint8_t bwc)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_wait_blocking(struct dma_ch *dma_ch)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_direct_start(struct dma_ch *dma_ch, dma_addr_t src_phys, dma_addr_t dest_phys, uint32_t len)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chain_link_build(struct dma_link_setup_data *link_data, struct dma_link_dsc *link_dsc, uint64_t link_dsc_phys, uint32_t link_count)&lt;/LI&gt;&lt;LI&gt;int fsl_dma_chain_basic_start(struct dma_ch *dma_ch, struct dma_link_setup_data *link_data, uint64_t link_dsc_phys)&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This source file is copyright dated 2011-2012 Freescale Semiconductor, Inc. If there is a newer version of this file, please let me know.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My main questions from this are:&lt;/P&gt;&lt;P&gt;- Am I using the correct driver to access the PCI device? We have software that accesses PCI via UIO so we would like to maintain this compatibility. I assume this related to the "map" directory not being exposed.&lt;/P&gt;&lt;P&gt;- Can I expose the DMA-UIO in the same format as on the v1.7 QoriQ SDK kernel? I assume this was previously done with the Freescale kernel driver - Is it possible to use this on the mainline kernel?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If any more details are required please let me know so that I can provide them.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 May 2019 09:15:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894483#M3076</guid>
      <dc:creator>bradley_gamble</dc:creator>
      <dc:date>2019-05-15T09:15:36Z</dc:date>
    </item>
    <item>
      <title>Re: Accessing PCI via UIO on T1020/T1040</title>
      <link>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894484#M3077</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello &lt;A _jive_internal="true" data-content-finding="Community" data-userid="341429" data-username="bradley.gamble@ncipher.com" href="https://community.nxp.com/people/bradley.gamble@ncipher.com"&gt;Bradley Gamble&lt;/A&gt;,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I checked Yocto 2.6 Linux Kernel 4.14 release, DMA UIO driver have been removed from Linux Kernel.&lt;/P&gt;&lt;P&gt;You could add the attached DMA UIO driver file fsl_dma_uio.c in Kernel source folder drivers/uio.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please add the following in drivers/uio/Makefile.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;obj-$(CONFIG_UIO_FSL_DMA)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; += fsl_dma_uio.o&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please add the following in drivers/uio/Kconfig.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;config UIO_FSL_DMA&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tristate "Freescale DMA support"&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; depends on FSL_DMA=n&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default n&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; help&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIO driver for the Freescale DMA controller.&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; This driver will obtain the DMA nodes from DTB structure, and&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; expose the DMA regiter space to user space.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you don't know what to do here, say N.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please configure the following in Kernel configuration file, then rebuild Linux Kernel image.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;CONFIG_UIO_FSL_DMA=y&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please refer to the following verification log on T2080RDB.&lt;/P&gt;&lt;P&gt;&lt;EM&gt;QorIQ SDK (FSL Reference Distro) 2.6 t2080rdb /dev/ttyS0&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;t2080rdb login: root&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:~# ls /sys/class/uio/uio0/maps/map0/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;addr&amp;nbsp; name&amp;nbsp; offset&amp;nbsp; size&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:~# ls /sys/class/uio/uio0/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;dev&amp;nbsp; device&amp;nbsp; event&amp;nbsp; maps&amp;nbsp; name&amp;nbsp; power&amp;nbsp; subsystem&amp;nbsp; uevent&amp;nbsp;&amp;nbsp;&amp;nbsp; version&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:~# ls /sys/class/uio/uio0/maps/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;map0&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:~# ls /sys/class/uio/uio0/maps/map0/&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;addr&amp;nbsp; name&amp;nbsp; offset&amp;nbsp; size&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:/sys/class/dma# dmesg | grep fsl-of-dma&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.554241] fsl-of-dma ffe100300.dma: dma channel dma-uio0-0 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.559749] fsl-of-dma ffe100300.dma: dma channel dma-uio0-1 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.578141] fsl-of-dma ffe100300.dma: dma channel dma-uio0-2 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.583643] fsl-of-dma ffe100300.dma: dma channel dma-uio0-3 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.589147] fsl-of-dma ffe100300.dma: dma channel dma-uio0-4 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.594657] fsl-of-dma ffe100300.dma: dma channel dma-uio0-5 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.600162] fsl-of-dma ffe100300.dma: dma channel dma-uio0-6 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.605667] fsl-of-dma ffe100300.dma: dma channel dma-uio0-7 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.611206] fsl-of-dma ffe101300.dma: dma channel dma-uio1-0 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.616709] fsl-of-dma ffe101300.dma: dma channel dma-uio1-1 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.622214] fsl-of-dma ffe101300.dma: dma channel dma-uio1-2 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.627726] fsl-of-dma ffe101300.dma: dma channel dma-uio1-3 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.633234] fsl-of-dma ffe101300.dma: dma channel dma-uio1-4 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.638736] fsl-of-dma ffe101300.dma: dma channel dma-uio1-5 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.644240] fsl-of-dma ffe101300.dma: dma channel dma-uio1-6 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.649741] fsl-of-dma ffe101300.dma: dma channel dma-uio1-7 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.655280] fsl-of-dma ffe102300.dma: dma channel dma-uio2-0 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.660783] fsl-of-dma ffe102300.dma: dma channel dma-uio2-1 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.666294] fsl-of-dma ffe102300.dma: dma channel dma-uio2-2 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.671796] fsl-of-dma ffe102300.dma: dma channel dma-uio2-3 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.677300] fsl-of-dma ffe102300.dma: dma channel dma-uio2-4 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.682802] fsl-of-dma ffe102300.dma: dma channel dma-uio2-5 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.688306] fsl-of-dma ffe102300.dma: dma channel dma-uio2-6 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;[&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.693809] fsl-of-dma ffe102300.dma: dma channel dma-uio2-7 initialized&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:/sys/class/dma# uname -a&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Linux t2080rdb 4.14.67+gf2f35bbfc16b #1 SMP Tue Jun 4 09:40:37 UTC 2019 ppc64 ppc64 ppc64 GNU/Linux&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;root@t2080rdb:/sys/class/dma#&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Yiping&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 08 Jun 2019 06:55:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894484#M3077</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2019-06-08T06:55:46Z</dc:date>
    </item>
    <item>
      <title>Re: Accessing PCI via UIO on T1020/T1040</title>
      <link>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894485#M3078</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi &lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/yipingwang"&gt;yipingwang&lt;/A&gt;‌,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your support. I can confirm your suggestion has exposed the "/dev/uio*" paths as required.&lt;/P&gt;&lt;P&gt;The Freescale userspace driver code I am using also requires access to the path "/dev/fsl-usdpaa". This appears to come from the kernel option `FSL_USDPAA` in the Freescale kernel. This driver does not appear to be simple to copy across to the manline kernel.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have cloned the `usdpaa` repo from Freescale Git, however this code is identical to the userspace code that I am currently using in my application. Is it possible to enable the `fs-usdpaa` driver on the mainline kernel, or have it been superseded by a different interface?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Jun 2019 12:58:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894485#M3078</guid>
      <dc:creator>bradley_gamble</dc:creator>
      <dc:date>2019-06-11T12:58:44Z</dc:date>
    </item>
    <item>
      <title>Re: Accessing PCI via UIO on T1020/T1040</title>
      <link>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894486#M3079</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;USDPAA is not supported in the recent released upstream Kernel.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;Kernel configuration options to enable upstream version of DPAA driver for PowerPC as the following.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONFIG_FSL_DPAA,&amp;nbsp; CONFIG_FSL_FMAN and CONFIG_FSL_DPAA_ETH need to be enabled in kernel menuconfig as below:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Device Drivers&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SOC (System On Chip) specific Drivers&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [*] Freescale DPAA 1.x support&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Device Drivers&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [*] Network device support&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [*]&amp;nbsp;&amp;nbsp; Ethernet driver support&amp;nbsp; ---&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;*&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FMan support&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;*&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DPAA Ethernet&amp;nbsp; ----&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;Thanks,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;Yiping&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 23 Jun 2019 08:43:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/T-Series/Accessing-PCI-via-UIO-on-T1020-T1040/m-p/894486#M3079</guid>
      <dc:creator>yipingwang</dc:creator>
      <dc:date>2019-06-23T08:43:56Z</dc:date>
    </item>
  </channel>
</rss>

