<?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 UIO to handle GPIO interrupts? in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076288#M158012</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I am hoping that you can provide advice on using UIO to handle an interrupt from user space.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I found an excellent summary at &lt;A data-auth="NotApplicable" data-cke-saved-href="https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html" href="https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html" rel="noopener noreferrer" target="_blank"&gt;https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html&lt;/A&gt; and have tried to follow it as well as I can, being a newcomer to &lt;SPAN&gt;Yocto&lt;/SPAN&gt; and embedded Linux.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;We are using a Variscite DART-MX8M-MINI development kit.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I have enabled &lt;SPAN&gt;spidev&lt;/SPAN&gt;, which I am using to communicate with an ADS1299 EEG analog front end from TI.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It generates a “data ready” interrupt DRDY# (active low).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I’d like to be able to handle this falling-edge interrupt by connecting it to a GPIO (GPIO1_0) and either read() or poll() to wait for an interrupt, and can then read the acquired data using /dev/spidev0.0.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;In my device tree, I have added the following under my &amp;amp;ecspi1 node.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I am not certain this is the correct place to add this information, or if I can simply add it within the device tree “root” node “/ {“.&amp;nbsp; I would appreciate your advice on the best place add this information.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Added for DRDY# interrupt on GPIO1_0 from user space&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;user_io@0 {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;compatible = "&lt;SPAN&gt;mydevice,generic-uio,ui_pdrv&lt;/SPAN&gt;";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;status = "okay";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;interrupt-parent = &amp;lt;&amp;amp;gpio1&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;interrupts = &amp;lt;0 IRQ_TYPE_EDGE_FALLING&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;pinctrl&lt;/SPAN&gt;-names = "default";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;pinctrl-0 = &amp;lt;&amp;amp;&lt;SPAN&gt;pinctrl_user_io&lt;/SPAN&gt;&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;Under my &lt;SPAN&gt;dts&lt;/SPAN&gt; &amp;amp;&lt;SPAN&gt;iomuxc&lt;/SPAN&gt; node, the various &lt;SPAN&gt;pinctrl&lt;/SPAN&gt; groups are defined.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I added the following for GPIO1_0:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;// Added for DRDY# interrupt on GPIO1_0 from user space&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;pinctrl_user_io&lt;/SPAN&gt;: user_io-0 {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;fsl,pins&lt;/SPAN&gt; = &amp;lt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;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; &lt;/SPAN&gt;MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;0x1c0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;This _should_ configure the pin to enable a pull-up.&amp;nbsp; Can you confirm this?&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I have modified my kernel .config file via &lt;SPAN&gt;menuconfig&lt;/SPAN&gt;, and it contains the following entries:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;CONFIG_UIO=y&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;CONFIG_UIO_PDRV_GENIRQ=m&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="ES"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;The “y” setting for CONFIG_UIO was evidently due to other dependencies in the provided configuration.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;However, when I boot the board up, I cannot see /dev/uio0 or run the &lt;SPAN&gt;modprobe&lt;/SPAN&gt; command as specified in the description at the link provided:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:~# &lt;SPAN&gt;ls&lt;/SPAN&gt; /&lt;SPAN&gt;dev&lt;/SPAN&gt;/u*&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;ubi_ctrl&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;udev_network_queue&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;uhid&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;uinput&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;urandom&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:~# &lt;SPAN&gt;modprobe&lt;/SPAN&gt; &lt;SPAN&gt;uio_pdrv_genirq&lt;/SPAN&gt; &lt;SPAN&gt;of_id&lt;/SPAN&gt;="&lt;SPAN&gt;mydevice,generic-uio,ui_pdrv&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: courier new; "&gt;modprobe&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;: FATAL: Module &lt;SPAN&gt;uio_pdrv_genirq&lt;/SPAN&gt; not found in directory /lib/modules/4.19.35-imx8mm+ge6d3e3fefe4e&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I used grep to look for “&lt;SPAN&gt;uio&lt;/SPAN&gt;” in the /lib/modules directory, and only found the following:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:/lib/modules/4.19.35-imx8mm+ge6d3e3fefe4e# grep -&lt;SPAN&gt;RnI&lt;/SPAN&gt; &lt;SPAN&gt;uio&lt;/SPAN&gt; .&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;./modules.builtin:270:kernel/drivers/&lt;SPAN&gt;uio&lt;/SPAN&gt;/&lt;SPAN&gt;uio.ko&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I am stumped, and think I must have something wrong in my .&lt;SPAN&gt;dts&lt;/SPAN&gt; file, my .config file, or in the packages/libraries added to the Yocto image.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Do you have any suggestions for how to diagnose/fix this problem. My .&lt;SPAN&gt;dts&lt;/SPAN&gt; file and .config file is attached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help.&amp;nbsp; UIO apparently is a "preferred" way to handle writing simple device drivers from user space.&amp;nbsp; Do I need to add something to Yocto to enable UIO and UIO_PDRV_GENIRQ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 07 Jul 2020 21:31:03 GMT</pubDate>
    <dc:creator>surrealist14</dc:creator>
    <dc:date>2020-07-07T21:31:03Z</dc:date>
    <item>
      <title>UIO to handle GPIO interrupts?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076288#M158012</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I am hoping that you can provide advice on using UIO to handle an interrupt from user space.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I found an excellent summary at &lt;A data-auth="NotApplicable" data-cke-saved-href="https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html" href="https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html" rel="noopener noreferrer" target="_blank"&gt;https://yurovsky.github.io/2014/10/10/linux-uio-gpio-interrupt.html&lt;/A&gt; and have tried to follow it as well as I can, being a newcomer to &lt;SPAN&gt;Yocto&lt;/SPAN&gt; and embedded Linux.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;We are using a Variscite DART-MX8M-MINI development kit.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I have enabled &lt;SPAN&gt;spidev&lt;/SPAN&gt;, which I am using to communicate with an ADS1299 EEG analog front end from TI.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;It generates a “data ready” interrupt DRDY# (active low).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I’d like to be able to handle this falling-edge interrupt by connecting it to a GPIO (GPIO1_0) and either read() or poll() to wait for an interrupt, and can then read the acquired data using /dev/spidev0.0.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;In my device tree, I have added the following under my &amp;amp;ecspi1 node.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I am not certain this is the correct place to add this information, or if I can simply add it within the device tree “root” node “/ {“.&amp;nbsp; I would appreciate your advice on the best place add this information.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Added for DRDY# interrupt on GPIO1_0 from user space&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;user_io@0 {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;compatible = "&lt;SPAN&gt;mydevice,generic-uio,ui_pdrv&lt;/SPAN&gt;";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="FR" style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;status = "okay";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;interrupt-parent = &amp;lt;&amp;amp;gpio1&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;interrupts = &amp;lt;0 IRQ_TYPE_EDGE_FALLING&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;pinctrl&lt;/SPAN&gt;-names = "default";&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;pinctrl-0 = &amp;lt;&amp;amp;&lt;SPAN&gt;pinctrl_user_io&lt;/SPAN&gt;&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;Under my &lt;SPAN&gt;dts&lt;/SPAN&gt; &amp;amp;&lt;SPAN&gt;iomuxc&lt;/SPAN&gt; node, the various &lt;SPAN&gt;pinctrl&lt;/SPAN&gt; groups are defined.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;I added the following for GPIO1_0:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;// Added for DRDY# interrupt on GPIO1_0 from user space&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;pinctrl_user_io&lt;/SPAN&gt;: user_io-0 {&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;fsl,pins&lt;/SPAN&gt; = &amp;lt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;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; &lt;/SPAN&gt;MX8MM_IOMUXC_GPIO1_IO00_GPIO1_IO0&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;0x1c0&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;&lt;SPAN&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; &lt;/SPAN&gt;};&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;This _should_ configure the pin to enable a pull-up.&amp;nbsp; Can you confirm this?&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I have modified my kernel .config file via &lt;SPAN&gt;menuconfig&lt;/SPAN&gt;, and it contains the following entries:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;CONFIG_UIO=y&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;CONFIG_UIO_PDRV_GENIRQ=m&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN lang="ES"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;The “y” setting for CONFIG_UIO was evidently due to other dependencies in the provided configuration.&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;However, when I boot the board up, I cannot see /dev/uio0 or run the &lt;SPAN&gt;modprobe&lt;/SPAN&gt; command as specified in the description at the link provided:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:~# &lt;SPAN&gt;ls&lt;/SPAN&gt; /&lt;SPAN&gt;dev&lt;/SPAN&gt;/u*&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;ubi_ctrl&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;udev_network_queue&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;uhid&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;uinput&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;/&lt;SPAN&gt;dev&lt;/SPAN&gt;/&lt;SPAN&gt;urandom&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:~# &lt;SPAN&gt;modprobe&lt;/SPAN&gt; &lt;SPAN&gt;uio_pdrv_genirq&lt;/SPAN&gt; &lt;SPAN&gt;of_id&lt;/SPAN&gt;="&lt;SPAN&gt;mydevice,generic-uio,ui_pdrv&lt;/SPAN&gt;"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-size: 8.0pt; font-family: courier new; "&gt;modprobe&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;: FATAL: Module &lt;SPAN&gt;uio_pdrv_genirq&lt;/SPAN&gt; not found in directory /lib/modules/4.19.35-imx8mm+ge6d3e3fefe4e&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I used grep to look for “&lt;SPAN&gt;uio&lt;/SPAN&gt;” in the /lib/modules directory, and only found the following:&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;root@imx8mm-var-dart:/lib/modules/4.19.35-imx8mm+ge6d3e3fefe4e# grep -&lt;SPAN&gt;RnI&lt;/SPAN&gt; &lt;SPAN&gt;uio&lt;/SPAN&gt; .&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;SPAN style="font-family: courier new; font-size: 8.0pt;"&gt;./modules.builtin:270:kernel/drivers/&lt;SPAN&gt;uio&lt;/SPAN&gt;/&lt;SPAN&gt;uio.ko&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;&lt;/P&gt;&lt;P style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: 'Calibri',sans-serif;"&gt;I am stumped, and think I must have something wrong in my .&lt;SPAN&gt;dts&lt;/SPAN&gt; file, my .config file, or in the packages/libraries added to the Yocto image.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Do you have any suggestions for how to diagnose/fix this problem. My .&lt;SPAN&gt;dts&lt;/SPAN&gt; file and .config file is attached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for your help.&amp;nbsp; UIO apparently is a "preferred" way to handle writing simple device drivers from user space.&amp;nbsp; Do I need to add something to Yocto to enable UIO and UIO_PDRV_GENIRQ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 07 Jul 2020 21:31:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076288#M158012</guid>
      <dc:creator>surrealist14</dc:creator>
      <dc:date>2020-07-07T21:31:03Z</dc:date>
    </item>
    <item>
      <title>Re: UIO to handle GPIO interrupts?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076289#M158013</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You can see if the Interrupt it is already set, by&amp;nbsp; using CAT like this :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cat /proc/interrupts&lt;/P&gt;&lt;P&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; CPU0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;16:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2313&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1658&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2361&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 878&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 29&amp;nbsp; twd&lt;/P&gt;&lt;P&gt;17:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 87&amp;nbsp; i.MX Timer Tick&lt;/P&gt;&lt;P&gt;18:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 35&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; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 45&amp;nbsp; mxs-dma&lt;/P&gt;&lt;P&gt;19:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 47&amp;nbsp; bch&lt;/P&gt;&lt;P&gt;22:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 65&amp;nbsp; 2010000.ecspi&lt;/P&gt;&lt;P&gt;23:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 79&amp;nbsp; 202c000.ssi&lt;/P&gt;&lt;P&gt;38:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio-mxc&amp;nbsp;&amp;nbsp; 6&amp;nbsp; 2198000.usdhc cd&lt;/P&gt;&lt;P&gt;75:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 69&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; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio-mxc&amp;nbsp;&amp;nbsp; 9&amp;nbsp; da9063-irq&lt;/P&gt;&lt;P&gt;147:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio-mxc&amp;nbsp; 13&amp;nbsp; PS_irq_handler&lt;/P&gt;&lt;P&gt;150:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 193&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&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&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;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gpio-mxc&amp;nbsp; 16&amp;nbsp; CLK_irq_handler&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;P&gt;And you can apply to linux documentation, like:&lt;/P&gt;&lt;P&gt;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.makelinux.net%2Fbooks%2Flkd2%2Fch06lev1sec3" rel="nofollow" target="_blank"&gt;Registering an Interrupt Handler&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.oreilly.com%2Fopenbook%2Flinuxdrive3%2Fbook%2Fch10.pdf" rel="nofollow" target="_blank"&gt;http://www.oreilly.com/openbook/linuxdrive3/book/ch10.pdf&lt;/A&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 14:50:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076289#M158013</guid>
      <dc:creator>jamesbone</dc:creator>
      <dc:date>2020-07-08T14:50:01Z</dc:date>
    </item>
    <item>
      <title>Re: UIO to handle GPIO interrupts?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076290#M158014</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for your reply.&amp;nbsp; My gpio1_0 line does not seem to appear in cat /proc/interrupts:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;root@imx8mm-var-dart:~# cat /proc/interrupts&lt;BR /&gt; CPU0 CPU1 CPU2 CPU3&lt;BR /&gt; 3: 6583 6523 6361 6633 GICv3 30 Level arch_timer&lt;BR /&gt; 6: 40 81 99 39 GICv3 79 Level iMX system counter timer&lt;BR /&gt; 7: 0 0 0 0 GICv3 23 Level arm-pmu&lt;BR /&gt; 8: 0 0 0 0 GICv3 106 Level ddrc&lt;BR /&gt; 9: 0 0 0 0 GICv3 107 Level ddrc&lt;BR /&gt; 10: 0 0 0 0 GICv3 108 Level ddrc&lt;BR /&gt; 11: 0 0 0 0 GICv3 109 Level ddrc&lt;BR /&gt; 12: 0 0 0 0 GICv3 130 Edge ddr_perf&lt;BR /&gt; 13: 0 0 0 0 GICv3 48 Level csi&lt;BR /&gt; 14: 0 0 0 0 GICv3 49 Level 32e30000.mipi_csi&lt;BR /&gt; 25: 0 0 0 0 GICv3 36 Level 30370000.snvs:snvs-powerkey&lt;BR /&gt; 28: 563 0 0 0 GICv3 58 Level 30860000.serial&lt;BR /&gt; 29: 0 0 0 0 GICv3 60 Level 30880000.serial&lt;BR /&gt; 30: 0 0 0 0 GICv3 59 Level 30890000.serial&lt;BR /&gt; 31: 541 0 0 0 GICv3 67 Level 30a20000.i2c&lt;BR /&gt; 32: 148 0 0 0 GICv3 68 Level 30a30000.i2c&lt;BR /&gt; 33: 62 0 0 0 GICv3 69 Level 30a40000.i2c&lt;BR /&gt; 34: 0 0 0 0 GICv3 70 Level 30a50000.i2c&lt;BR /&gt; 35: 5 0 0 0 GICv3 61 Level 30a60000.serial&lt;BR /&gt; 37: 0 0 0 0 GICv3 72 Level 32e40000.usb&lt;BR /&gt; 38: 79 0 0 0 GICv3 73 Level 32e50000.usb&lt;BR /&gt; 39: 11021 0 0 0 GICv3 54 Level mmc0&lt;BR /&gt; 40: 4439 0 0 0 GICv3 55 Level mmc1&lt;BR /&gt; 41: 536 0 0 0 GICv3 56 Level mmc2&lt;BR /&gt; 42: 0 0 0 0 GICv3 82 Level sai&lt;BR /&gt; 43: 768 0 0 0 GICv3 34 Level sdma&lt;BR /&gt; 44: 0 0 0 0 GICv3 135 Level sdma&lt;BR /&gt; 45: 0 0 0 0 GICv3 66 Level sdma&lt;BR /&gt; 46: 0 0 0 0 GICv3 110 Level 30280000.wdog&lt;BR /&gt; 47: 0 0 0 0 GICv3 63 Level 30820000.ecspi&lt;BR /&gt; 48: 1 0 0 0 GICv3 150 Level 30be0000.ethernet&lt;BR /&gt; 49: 0 0 0 0 GICv3 151 Level 30be0000.ethernet&lt;BR /&gt; 50: 196 0 0 0 GICv3 152 Level 30be0000.ethernet&lt;BR /&gt; 51: 839 0 0 0 GICv3 37 Level imx-lcdif-crtc.0&lt;BR /&gt; 52: 1 0 0 0 GICv3 50 Level 32e10000.mipi_dsi&lt;BR /&gt; 56: 0 0 0 0 GICv3 62 Level hx280enc&lt;BR /&gt; 57: 0 0 0 0 GICv3 39 Level hantrodec&lt;BR /&gt; 58: 0 0 0 0 GICv3 40 Level hantrodec&lt;BR /&gt; 59: 127 0 0 0 GICv3 35 Level galcore:0&lt;BR /&gt; 60: 66 0 0 0 GICv3 57 Level galcore:2d&lt;BR /&gt; 62: 0 0 0 0 GICv3 52 Level caam-snvs&lt;BR /&gt; 78: 0 0 0 0 gpio-mxc 14 Edge edt-ft5x06&lt;BR /&gt; 79: 0 0 0 0 gpio-mxc 15 Edge ds1337&lt;BR /&gt;104: 0 0 0 0 gpio-mxc 8 Edge bd718xx-irq&lt;BR /&gt;108: 0 0 0 0 gpio-mxc 12 Edge 30b50000.mmc cd&lt;BR /&gt;166: 0 0 0 0 gpio-mxc 6 Edge Back&lt;BR /&gt;173: 0 0 0 0 gpio-mxc 13 Edge Home&lt;BR /&gt;175: 0 0 0 0 gpio-mxc 15 Edge Down&lt;BR /&gt;178: 0 0 0 0 gpio-mxc 18 Edge Up&lt;BR /&gt;224: 0 0 0 0 bd718xx-irq 5 Edge gpio_keys&lt;BR /&gt;225: 2 0 0 0 GICv3 137 Level 30901000.jr0&lt;BR /&gt;226: 4 0 0 0 GICv3 138 Level 30902000.jr1&lt;BR /&gt;227: 0 0 0 0 GICv3 146 Level 30903000.jr2&lt;BR /&gt;IPI0: 1470 13013 2654 2594 Rescheduling interrupts&lt;BR /&gt;IPI1: 74 165 163 164 Function call interrupts&lt;BR /&gt;IPI2: 0 0 0 0 CPU stop interrupts&lt;BR /&gt;IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts&lt;BR /&gt;IPI4: 3 14 28 27 Timer broadcast interrupts&lt;BR /&gt;IPI5: 1040 276 307 383 IRQ work interrupts&lt;BR /&gt;IPI6: 0 0 0 0 CPU wake-up interrupts&lt;BR /&gt;Err: 0&lt;BR /&gt;root@imx8mm-var-dart:~#&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The first link you provided brought me to&amp;nbsp; a generic page on makelinux.net.&amp;nbsp; Perhaps it was incorrect?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The second link brought me to a general description of Linux interrupt handlers, but I'm trying to use UIO so that I can handle a GPIO interrupt from user space, not write a Linux kernel module.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you provide any help regarding enabling UIO and the UIO interrupt handling?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Many thanks!&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 Jul 2020 15:08:05 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1076290#M158014</guid>
      <dc:creator>surrealist14</dc:creator>
      <dc:date>2020-07-08T15:08:05Z</dc:date>
    </item>
    <item>
      <title>Re: UIO to handle GPIO interrupts?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1576103#M199381</link>
      <description>Hi, I'm doing the same work on S32G, trying to communicate to a linux slave with spi. May I ask you that is the uio method feasible? I will be very grateful if I can get your answer.</description>
      <pubDate>Mon, 02 Jan 2023 13:10:40 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/1576103#M199381</guid>
      <dc:creator>superyyf</dc:creator>
      <dc:date>2023-01-02T13:10:40Z</dc:date>
    </item>
    <item>
      <title>Re: UIO to handle GPIO interrupts?</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/2065407#M235320</link>
      <description>&lt;P&gt;Have you figured out how to get this working. I am working on something similar and do not see the uio device being created&lt;/P&gt;</description>
      <pubDate>Thu, 20 Mar 2025 08:53:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/UIO-to-handle-GPIO-interrupts/m-p/2065407#M235320</guid>
      <dc:creator>yeshasyesodharan</dc:creator>
      <dc:date>2025-03-20T08:53:54Z</dc:date>
    </item>
  </channel>
</rss>

