<?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: Interrupts with GPIO1 INT0-7 in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221519#M14664</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;is there any APIs to use?like set_irq_type?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 28 Aug 2013 01:53:33 GMT</pubDate>
    <dc:creator>9crkzhou</dc:creator>
    <dc:date>2013-08-28T01:53:33Z</dc:date>
    <item>
      <title>Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221515#M14660</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;I am then stuck with needing a gpio that I can use as an interrupt that can also have its cpu affinity changed.&amp;nbsp; From the freescale imx6 documentation it list several gpio interrupts within the 255 limit.&amp;nbsp;&amp;nbsp; See this previous post for info on why I want a interrupt below 255: &lt;A _jive_internal="true" href="https://community.nxp.com/thread/301130"&gt;https://community.freescale.com/thread/301130&lt;/A&gt;.&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;*** In the below I am referencing Rev. 0, 11/2012 of the&amp;nbsp; i.MX 6Dual/6Quad Applications Processor Reference Manual.&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;I can not find any indication in either the interrupt or the GPIO chapter how the GPIO1 is configured to deliver these interrupts.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a table for the reference manual that shows the IRQ number and source.&amp;nbsp; However it lists the source as just GPIO1.&amp;nbsp; I am not sure what GPIO in GPIO1 maps to which INT0-7.&amp;nbsp; For example does GPIO1_1 map to INT1?&amp;nbsp;&amp;nbsp; It is also possible I just don't understand how the gpio's work with the interrupts in general.&amp;nbsp; There seems very little information about this subject in the documentation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Table 3-1. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;90 GPIO1 INT7 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;91 GPIO1 INT6 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;92 GPIO1 INT5 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;93 GPIO1 INT4 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;94 GPIO1 INT3 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;95 GPIO1 INT2 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;96 GPIO1 INT1 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;97 GPIO1 INT0 interrupt request. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;I also see that in mx6.h I have the following.&amp;nbsp; Which matches up with documentation.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TBODY style="font-style: inherit; font-family: inherit;"&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT7_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;90&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT6_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;91&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT5_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;92&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT4_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;93&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT3_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;94&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT2_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;95&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT1_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;96&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;97&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;98&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO1_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;99&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO2_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;100&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO2_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;101&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO3_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;102&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO3_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;103&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO4_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;104&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO4_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;105&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO5_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;106&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO5_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;107&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO6_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;108&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO6_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;109&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO7_INT15_0_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;110&lt;/TD&gt;&lt;/TR&gt;&lt;TR style="border: 0px; font-style: inherit; font-family: inherit;"&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;#define MXC_INT_GPIO7_INT31_16_NUM&lt;/TD&gt;&lt;TD style="padding-right: 4px; padding-left: 4px; border: 0px; font-style: inherit; font-family: inherit;"&gt;111&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P&gt;The manual also has this tidbit about how the GPIO's and Interrupts work.&amp;nbsp; However I not sure I gain any more insight.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;EM&gt;28.2 General Overview &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;. &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;Each GPIO input has a dedicated edge-detect circuit which can be configured through &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;software to detect rising edges, falling edges, logic low-levels or logic high-levels on the &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;input signals. The outputs of the edge detect circuits are optionally masked by setting the &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;corresponding bit in the interrupt mask register (GPIO_IMR). These qualified outputs are &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;OR'ed together to generate two one-bit interrupt lines: &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;• Combined interrupt indication for GPIOx signals 0 - 15 &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;• Combined interrupt indication for GPIOx signals 16 - 31 &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;In addition, GPIO1 provides visibility to each of its 8 low order interrupt sources (i.e. &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;GPIO1 interrupt n, for n = 0 – 7). However, individual interrupt indications from other &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;GPIOx are not available. &lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The last paragraph is the most helpful (in &lt;STRONG&gt;bold&lt;/STRONG&gt;) but it doesn't seem to say anything different then table 3-1 except that it kinda seems to indicate a 0-0, 1-1 mapping but not sure.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a driver with a "normal" interrupt working already.&amp;nbsp; The problem is that these interrupts are registered outside of the irq 255 limit for moving to different cores.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a driver registering irq 92 (GPIO1 INT5) but the system does not ever raise this interrupt when I trigger GPIO1_5.&amp;nbsp; I also tried registering both irq 92 and the "normal" GPIO1_5 interrupt (irq number 292) with the same result.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;Is there somewhere I can get more information or does someone have examples on how to use these gpio irqs?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;thanks,&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;Ben Anderson&lt;/P&gt;&lt;P style="font-style: inherit; font-family: inherit;"&gt;&lt;/P&gt;&lt;P class="jive-thread-reply-btn" style="margin: 26px 0px -10px; font-size: 0.9em; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/301130" style="margin: 0 20px 0 0; padding: 2px 14px 4px 28px; font-weight: bold; font-style: inherit; font-family: inherit; color: #3778c7; background-color: #f3f3f3;"&gt;i.mx6 Linux CPU IRQ affinity&lt;/A&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 07 Jan 2013 22:55:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221515#M14660</guid>
      <dc:creator>benanderson</dc:creator>
      <dc:date>2013-01-07T22:55:13Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221516#M14661</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ben,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kevin Anderle has asked me to take a look at this question. We are very sorry for the delay!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This is my understanding of how the MX6Q GPIO interrupts work:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;a) GPIO1 (32 pins) through GPIO7 (32 pins) can be configured to generate interrupts when the pins are set to inputs&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;b) GPIO2 through GPIO7 do not have an "ARM interrupt" for each pin, but rather for the OR'ed results of 16 pins&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; e.g. GPIO2 will cause an "ARM IRQ 100" if there is a valid interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp; on any pin within 0-15&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; e.g. GPIO2 will cause an "ARM IRQ 101" if there is a valid interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp; on any pin within 16-31&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; So even though GPIO2 can monitor 32 pins for activity, the ARM Core will only see 1 of 2 IRQs happen (#100 or #101)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;c) GPIO1 has the same functionality as described in b), but also some further granularity: its bottom 8 pins (0-7) will cause 8 specific "ARM interrupts"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; GPIO1_0 will cause an "ARM IRQ 97", and so on for pins 1,2,3,4,5,6; GPIO1_7 will cause an "ARM IRQ 90"&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ==&amp;gt; for GPIO1_8 through GPIO1_31, these can only be seen through "ARM IRQ98" for pins 0-15, or "ARM IRQ99" for pins 16-31&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;d) In addition, all the 8 registers for the specific GPIOx need to be configured correctly:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_IMR: the appropriate bits need to be set to 1 to enable those interrupts&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_ISR: the interrupt routine must write a 1 to the appropriate bit to clear the interrupt flag&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_ICR1 and GPIOx_ICR2: these allow you to select between level (low or high) or edge (rising or falling) for the given interrupt pin&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_EDGE_SEL: this allows you to override GPIOx_ICR1 and GPIOx_ICR2 for historical reasons&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_GDIR: the appropriate pin must be set to an input (bit=0) to allow for interrupts&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; - GPIOx_DR and GPIO_PSR: not relevant here&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;e) Finally, you need to use the IOMUX Controller to set the specific pins to be in GPIO mode&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Now, based on what you say (you do not see GPIO1_5 create IRQ 92), I have a few questions:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1) Can you see if GPIO1_5 generates interrupt IRQ 98 (pins 0-7)? If that works, I would try IRQ 95 (in case the list was input backwards)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2) If 1) does not work, I would check to see that all the configurations in d) here above are correct&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please let us know how it goes, or if you have further questions.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Rod.&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 23 Jan 2013 17:29:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221516#M14661</guid>
      <dc:creator>RodBorras</dc:creator>
      <dc:date>2013-01-23T17:29:02Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221517#M14662</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks for reply!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is working now! &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I went over everything above and determined that the interrupt was not being enabled.&amp;nbsp; I had thought I had checked it several times before but I think it was a combinations of errors on my part that caused the interrupt not to work.&amp;nbsp; I had assumed from the start that requesting irq92 would not in itself enable the interrupt in the GPIO module.&amp;nbsp; So I had also requested another interrupt from the GPIO interrupt controller knowing that it does enable the interrupt because I had gotten it to work in that mode before.&amp;nbsp; However I requested the wrong GPIO interrupt and somehow when I had check the IMR it looked fine.&amp;nbsp; I am guessing I double checked the wrong IMR.&amp;nbsp; I also found that my hardware to test the interrupt was not as dependable as well.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Results:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I have determined that indeed gpio1_5 maps to interrupt 92 which is the gpio1 INT5.&amp;nbsp; I am assuming the other gpio pin 0-7 map directly as well.&amp;nbsp; I am also assuming that only gpio1_5 causes an interrupt 92.&amp;nbsp; I didn't test the combined interrupts as that is not what is needed and I have the single pin interrupt working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For completeness I am posting the salient code I used to get it to work.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;///*** Assume that the board file does the correct muxing for gpio1_5&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Request gpio1_5 and set as input&lt;/P&gt;&lt;P&gt;gpio_request(IMX_GPIO_NR(1, 5), "itest");&lt;/P&gt;&lt;P&gt;gpio_direction_input(IMX_GPIO_NR(1, 5));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Request irq92&lt;/P&gt;&lt;P&gt;request_irq(MXC_INT_GPIO1_INT5_NUM, itest_irq_handler,0 ,"itest", &amp;amp;itest_device);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//write directly to gpio1 imr reg&lt;/P&gt;&lt;P&gt;//Test only! normally don't do this way as it clears all the other irqs that may have been enabled)&lt;/P&gt;&lt;P&gt;__raw_writel(0x20,MX6_IO_ADDRESS(GPIO1_BASE_ADDR+0x14))&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;---------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From userspace after loading driver I can see that it has requested irq.&amp;nbsp; I can also trigger the interrupt and see the count go up on the cpu. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;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; CPU0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU3&lt;/P&gt;&lt;P&gt;92:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 107826&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; 0&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; GIC&amp;nbsp; itest&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I can also switch the affinity to cpu1 and the count goes up on that cpu.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ben&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 25 Jan 2013 18:26:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221517#M14662</guid>
      <dc:creator>benanderson</dc:creator>
      <dc:date>2013-01-25T18:26:02Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221518#M14663</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Ben !&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am very interesting in your work since I have to do approximately the same thing. But I don't know anything in GPIO so I am requesting some help. My board is an imx6q sabrelite.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;You said "Assume that the board file does the correct muxing for gpio1_5". How can I do it ? &lt;/LI&gt;&lt;LI&gt;How can I physically find the GPIO1_5 ?&lt;/LI&gt;&lt;LI&gt;In what file should I include the code you pasted here ?&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 25 Jun 2013 14:10:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221518#M14663</guid>
      <dc:creator>AlbertT</dc:creator>
      <dc:date>2013-06-25T14:10:07Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221519#M14664</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;is there any APIs to use?like set_irq_type?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Aug 2013 01:53:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221519#M14664</guid>
      <dc:creator>9crkzhou</dc:creator>
      <dc:date>2013-08-28T01:53:33Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221520#M14665</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;I read your repply about "Interrupts with GPIO1 INT0-7", I am having a problem with GPIO1_5, I am using it as interrupt, IRQ 92. It work fine if I set the following registers inside the driver (dm9000) :&lt;/P&gt;&lt;P&gt;0x209C00C = 0x0400;&amp;nbsp; // Active High&lt;/P&gt;&lt;P&gt;0x209C014 = 0x20 // INT5 on&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My problem is I did not find how to do that from the device tree.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;From the bellow device tree line&lt;/P&gt;&lt;P&gt;"interrupts = &amp;lt;0 60 4&amp;gt;; "&lt;/P&gt;&lt;P&gt;driver dm900 can get irq 92 (60) but not active high level-sensitive (4)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and I canot find how to setup GPIO1 as intterupt for dm9000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help is welcome, I am a beginner with device tree&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Jean-marc&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Jun 2015 09:57:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221520#M14665</guid>
      <dc:creator>Jean_Marc</dc:creator>
      <dc:date>2015-06-05T09:57:33Z</dc:date>
    </item>
    <item>
      <title>Re: Interrupts with GPIO1 INT0-7</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221521#M14666</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sorry for the thread jack.&lt;/P&gt;&lt;P&gt;Where can the interrupt and register values be found for a given gpio?&lt;/P&gt;&lt;P&gt;I'm trying to update the linux dtsi file for the imx6 SabreLite board to enable gpio9 (which is exposed on jumper 7 of the SabreLite board).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;BR /&gt;Michael Richmond&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 08 Oct 2019 20:43:12 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/Interrupts-with-GPIO1-INT0-7/m-p/221521#M14666</guid>
      <dc:creator>michael_richmon</dc:creator>
      <dc:date>2019-10-08T20:43:12Z</dc:date>
    </item>
  </channel>
</rss>

