<?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: External IRQ with mpc8xxx in linux in QorIQ</title>
    <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426349#M2021</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;So it make sense now.&lt;/P&gt;&lt;P&gt;I got the following printings in code&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;intc_init&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe078&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 20&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;Which says that virq is 20, which fits the external irq number 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the assistance,&lt;/P&gt;&lt;P&gt;Ran&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 13 Aug 2015 21:09:36 GMT</pubDate>
    <dc:creator>rans</dc:creator>
    <dc:date>2015-08-13T21:09:36Z</dc:date>
    <item>
      <title>External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426345#M2017</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 have some difficulties and using interrupt handler with powerpc, mpc8349, on linux.&lt;/P&gt;&lt;P&gt;In datasheet is shows that there are 8 external interrupts, named irq0-7. We need to use IRQ4.&lt;/P&gt;&lt;P&gt;I don't see the interrupt listed in /proc/interrupts&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; CPU0&lt;/P&gt;&lt;P&gt; 16:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 93&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPIC&amp;nbsp;&amp;nbsp; 9 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; serial&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; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPIC&amp;nbsp; 14 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c-mpc&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; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPIC&amp;nbsp; 15 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c-mpc&lt;/P&gt;&lt;P&gt; 21:&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; IPIC&amp;nbsp; 18 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; phy_interrupt&lt;/P&gt;&lt;P&gt; 32:&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; IPIC&amp;nbsp; 32 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth0_g0_tx&lt;/P&gt;&lt;P&gt; 33:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPIC&amp;nbsp; 33 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth0_g0_rx&lt;/P&gt;&lt;P&gt; 34:&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; IPIC&amp;nbsp; 34 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth0_g0_er&lt;/P&gt;&lt;P&gt; 35:&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; IPIC&amp;nbsp; 35 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth1_g0_tx&lt;/P&gt;&lt;P&gt; 36:&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; IPIC&amp;nbsp; 36 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth1_g0_rx&lt;/P&gt;&lt;P&gt; 37:&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; IPIC&amp;nbsp; 37 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eth1_g0_er&lt;/P&gt;&lt;P&gt;LOC:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 60756&amp;nbsp;&amp;nbsp; Local timer interrupts for timer event device&lt;/P&gt;&lt;P&gt;LOC:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; Local timer interrupts for others&lt;/P&gt;&lt;P&gt;SPU:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; Spurious interrupts&lt;/P&gt;&lt;P&gt;PMI:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; Performance monitoring interrupts&lt;/P&gt;&lt;P&gt;MCE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp; Machine check exceptions&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried to add it in dts (Is that required?), but I still don't see any change in /proc/interrupts:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;&amp;nbsp; intc@0{&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt; compatible = "intc";&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt; #address-cells = &amp;lt;1&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt; #size-cells = &amp;lt;0&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt; interrupts = &amp;lt;4 0x8&amp;gt;; &amp;lt;- is this the way to define IRQ4 ?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;&amp;nbsp; };&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;I've then added the following in the driver, but I also fails:&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;np = of_find_node_by_name(NULL,"hello");&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; if (np == NULL)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("Error node not found\n");&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np); &amp;lt;-- Node np = 0xdfffe2f0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0); &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;//&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; printk(" VIRQ: %d \n" , virq); &amp;lt;-- virq = 0 !!??&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;hello_IRQHandler, IRQF_SHARED, "hello", &amp;amp;value))) {&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING"hello_IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1; &amp;lt;-- request_irq return -22 ....&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; }&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Thank you for any idea,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Ran&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Aug 2015 11:23:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426345#M2017</guid>
      <dc:creator>rans</dc:creator>
      <dc:date>2015-08-10T11:23:59Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426346#M2018</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There are several problems:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. The node name of_find_node_by_name() searches for&amp;nbsp; ("hello"),&amp;nbsp; does not match the name of the node defined above ("intc"), so &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; the function finds some another node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. There is no 'interrupt-parent' property in the 'intc@0' node, so it is not clear to what interrupt controller it connects.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. The interrupt number in the 'interrupts' property is invalid. Refer to MPC8349EARM, Table 8-6 for interrupt numbers coding.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Platon&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Aug 2015 11:07:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426346#M2018</guid>
      <dc:creator>bpe</dc:creator>
      <dc:date>2015-08-13T11:07:41Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426347#M2019</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Platon,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are correct, I've made the relevant changes.&lt;/P&gt;&lt;P&gt;And the request_irq return success now.&lt;/P&gt;&lt;P&gt;But I only did not understand&amp;nbsp; your comment about the invalid number:&lt;/P&gt;&lt;P&gt;We are using external IRQ #4.&lt;/P&gt;&lt;P&gt;What is the problem with the following:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;intc4@0{&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt; compatible = "intc4";&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; interrupts = &amp;lt;4 0x8&amp;gt; ;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;&lt;/TD&gt;&lt;TD&gt;};&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #222222; font-family: arial, sans-serif; font-size: 12.8000001907349px;"&gt;Ran&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Aug 2015 13:16:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426347#M2019</guid>
      <dc:creator>rans</dc:creator>
      <dc:date>2015-08-13T13:16:02Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426348#M2020</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Look at table 8-6 as was suggested.&amp;nbsp; External IRQ4 is IPIC interrupt 20.&amp;nbsp; Also check that you have the right level/sense -- is this interrupt level triggered and active low?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Aug 2015 19:20:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426348#M2020</guid>
      <dc:creator>scottwood</dc:creator>
      <dc:date>2015-08-13T19:20:58Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426349#M2021</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;So it make sense now.&lt;/P&gt;&lt;P&gt;I got the following printings in code&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;intc_init&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe078&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 20&lt;/P&gt;&lt;P&gt;....&lt;/P&gt;&lt;P&gt;Which says that virq is 20, which fits the external irq number 4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks for the assistance,&lt;/P&gt;&lt;P&gt;Ran&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 13 Aug 2015 21:09:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426349#M2021</guid>
      <dc:creator>rans</dc:creator>
      <dc:date>2015-08-13T21:09:36Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426350#M2022</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 still have some issue with the IRQ.&lt;/P&gt;&lt;P&gt;Though it seemed that the registration is successful, I still don't get any of the external interrupt handler called.&lt;/P&gt;&lt;P&gt;After forcing interrupt and checking SEMSR register I see that I have a pending IRQ #2, but the handler was not called.&lt;/P&gt;&lt;P&gt;This are the steps:&lt;/P&gt;&lt;P&gt;1. in DTS (using all external IRQ #0-7):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;intc0@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc0";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;0 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc1@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc1";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;1 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc2@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc2";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;2 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc3@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc3";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;3 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc4@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc4";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;4 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc5@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc5";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;5 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc6@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc6";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;6 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; intc7@0{&lt;/P&gt;&lt;P&gt;&amp;nbsp; compatible = "intc7";&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #address-cells = &amp;lt;1&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; #size-cells = &amp;lt;0&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; reg = &amp;lt;0 0x1000&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupts = &amp;lt;7 0x8&amp;gt; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;ipic&amp;gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp; };&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. registration in kernel for all interrupts:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;np = of_find_node_by_name(NULL,"intc0");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc0", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc1");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc1", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc2");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc2", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc3");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc3", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc4");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc4", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc5");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc5", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc6");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc6", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; np = of_find_node_by_name(NULL,"intc7");&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (np == NULL)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk("Error node not found\n");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&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;/P&gt;&lt;P&gt;&amp;nbsp; printk("Node np = 0x%0x\n",np);&lt;/P&gt;&lt;P&gt;&amp;nbsp; virq = irq_of_parse_and_map(np,0);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_INFO"IRQHandler: ISR Setup VIRQ: %d \n" , virq);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (0 &amp;gt; (error=request_irq(virq, &amp;amp;IRQHandler, 0, "intc7", &amp;amp;value))) {&lt;/P&gt;&lt;P&gt;&amp;nbsp; printk(KERN_WARNING"IRQHandler: Init: Unable to allocate IRQ error = %d\n\n", error);&lt;/P&gt;&lt;P&gt;&amp;nbsp; return -1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. interrupt handler code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;int newval = 0;&lt;/P&gt;&lt;P&gt;static irqreturn_t hello_IRQHandler(int irq, void *dev_id)&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned int status;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; struct timespec curr_tm;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printk("key_irq!!!!!\n");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return IRQ_HANDLED;&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;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;4. in boot I get print which show success with request_irq():&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;intc_init&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe078&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 20&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe180&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 21&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe288&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 22&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe390&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 23&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe498&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 24&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe5a0&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 25&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe6a8&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 26&lt;/P&gt;&lt;P&gt;Node np = 0xdfffe7b0&lt;/P&gt;&lt;P&gt;IRQHandler: ISR Setup VIRQ: 27&lt;/P&gt;&lt;P&gt;TCP: cubic registered&lt;/P&gt;&lt;P&gt;NET: Registered protocol family 17&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;5. forcing interrupt in IRQ #2, or #4 result in SEPNR change, but there is no printing from interrupt handler&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;6. validation in SEPNR register that interrupt was received:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;# devmem2 0xe000072c&lt;/P&gt;&lt;P&gt;/dev/mem opened.&lt;/P&gt;&lt;P&gt;Memory mapped at address 0xb7b80000.&lt;/P&gt;&lt;P&gt;Value at address 0xE000072C (0xb7b8072c): 0x20000000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for any suggestion,&lt;/P&gt;&lt;P&gt;Ran&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 16 Aug 2015 08:26:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426350#M2022</guid>
      <dc:creator>rans</dc:creator>
      <dc:date>2015-08-16T08:26:06Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426351#M2023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Again, you are using invalid interrupt numbers in the device tree.&amp;nbsp; Look at table 8-6 in the SoC reference manual.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Aug 2015 16:02:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426351#M2023</guid>
      <dc:creator>scottwood</dc:creator>
      <dc:date>2015-08-17T16:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: External IRQ with mpc8xxx in linux</title>
      <link>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426352#M2024</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Platon, Scott,&lt;/P&gt;&lt;P&gt;Thank you very much!!&lt;/P&gt;&lt;P&gt;Finally the interrupt handler is called. Table 8-6 information was essential.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Ran&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Aug 2015 05:22:30 GMT</pubDate>
      <guid>https://community.nxp.com/t5/QorIQ/External-IRQ-with-mpc8xxx-in-linux/m-p/426352#M2024</guid>
      <dc:creator>rans</dc:creator>
      <dc:date>2015-08-18T05:22:30Z</dc:date>
    </item>
  </channel>
</rss>

