<?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: Howto access IRQ2 on a LS1046a in Layerscape</title>
    <link>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666360#M2454</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Pavel, it is working now with IRQ2 (no GPIO workaround needed). Device tree entry is&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="color: #51626f; background-color: #f6f6f6;"&gt; interrupts = &amp;lt;GIC_SPI 133 IRQ_TYPE_LEVEL_LOW&amp;gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;and linux reports:&lt;/P&gt;&lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU0 CPU1 CPU2 CPU3
 12:&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC 165 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFC CPLD Hack Driver&lt;/PRE&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;Edelhard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 31 May 2017 08:31:56 GMT</pubDate>
    <dc:creator>edelhardbecker</dc:creator>
    <dc:date>2017-05-31T08:31:56Z</dc:date>
    <item>
      <title>Howto access IRQ2 on a LS1046a</title>
      <link>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666357#M2451</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;we're running a LS1046A-RDB and have to use (so far) external IRQ2 that should, according to the ref manual, be accessible at 165 of the GIC. We have the following entry in&amp;nbsp;fsl-ls1046a-rdb.dts (inside the existing "&amp;amp;ifc { ... };" &amp;nbsp;section):&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;cpld: board-control@2,0 {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; compatible = "fsl,ls1046ardb-cpld";&lt;BR /&gt;&amp;nbsp; &amp;nbsp; reg = &amp;lt;0x2 0x0 0x0010000&amp;gt;;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; interrupts = &amp;lt;GIC_SPI 165 IRQ_TYPE_LEVEL_LOW&amp;gt;;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; interrupt-parent = &amp;lt;&amp;amp;gic&amp;gt;;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; status = "okay";&lt;BR /&gt; };&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;In our "probe(struct platform_device *dev)" function, the dev-&amp;gt;dev.of_node is filled with the entry "board-control" from the device tree. But&amp;nbsp;the following call always fails (despite we can see the entries from the device tree in /proc/device-tree/soc/ifc@1530000/board-control@2,0/ ! ):&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;struct device_node *node = of_find_node_by_name(NULL, "fsl,ls1046ardb-cpld");&lt;BR /&gt; if (node == NULL) {&lt;BR /&gt;&amp;nbsp; &amp;nbsp; printk("Error node not found\n");&lt;BR /&gt; }&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;When i nevertheless try to map the IRQ hardcoded,&amp;nbsp;of_irq_to_resource(dev-&amp;gt;dev.of_node, 0, &amp;lt;MyIRQ&amp;gt;) always fails (tried for MyIRQ 165, (165 - 32) and 2).&lt;/P&gt;&lt;P&gt;Interestingly in the resource of the platform_device there is a IRQ: at&amp;nbsp;dev-&amp;gt;resource[1] we find IRQ 12. With 12 filled in for MyIRQ calling of_irq_to_resource() succeeds, we can request the IRQ and see&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;root@ls1046ardb:~# cat /proc/interrupts &lt;BR /&gt; CPU0 CPU1 CPU2 CPU3 &lt;BR /&gt;[ ... ]&lt;BR /&gt; 11: 0 0 0 0 GIC 75 Level fsl-ifc&lt;BR /&gt; 12: 0 0 0 0 GIC 197 Edge fsl,ls1046ardb-cpld, IFC CPLD Hack Driver&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I.e. it is mapped by the kernel to 197, which is 165+32?!&lt;/P&gt;&lt;P&gt;What is missing for IRQ2?&lt;/P&gt;&lt;P&gt;Thanks and greetings,&lt;BR /&gt;Edelhard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 28 May 2017 17:03:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666357#M2451</guid>
      <dc:creator>edelhardbecker</dc:creator>
      <dc:date>2017-05-28T17:03:44Z</dc:date>
    </item>
    <item>
      <title>Re: Howto access IRQ2 on a LS1046a</title>
      <link>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666358#M2452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Addendum: however we try to &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;request_irq()&lt;/SPAN&gt; (or &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;devm_request_irq()&lt;/SPAN&gt;), it always fails in &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;irq_to_desc()&lt;/SPAN&gt;. It seems the kernel does not have 165 (and 133) in its &lt;SPAN style="font-family: 'courier new', courier, monospace;"&gt;irq_desc&lt;/SPAN&gt; list. Isn't this created by the device tree?&lt;/P&gt;&lt;P&gt;Thanks again,&lt;BR /&gt;Edelhard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 May 2017 20:19:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666358#M2452</guid>
      <dc:creator>edelhardbecker</dc:creator>
      <dc:date>2017-05-29T20:19:03Z</dc:date>
    </item>
    <item>
      <title>Re: Howto access IRQ2 on a LS1046a</title>
      <link>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666359#M2453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;NXP SDK for LS1046a does not declare IRQ2 interrupt in DTS file. This SDK supports sysfs for GPIO using as interrupt source. Perhaps this possibility can be used for your task.&amp;nbsp;If IRQ2 is needed, see attached files.&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt; Declare the IRQ properly in the DTS. See the fsl-ls1046a-qds.dts file as example. Find the "IRQ10_B" in this file. The value of the "interrupt" &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;It looks like that &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&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;&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;&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;&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;&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;&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;&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;&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; interrupts = &amp;lt;GIC_SPI 165 IRQ_TYPE_LEVEL_LOW&amp;gt;;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;property should be added.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;property is calculated as "&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt;"&gt;Internal interrupt ID"&lt;/SPAN&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt; - 32&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;OL start="2"&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt; Request the interrupt property from the Open Firmware in the driver.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;OL start="3"&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt; Map the interrupt to the resource ID. This can be done by of_irq_to_resource() or by irq_of_parse_and_map().&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;&lt;OL start="4"&gt;&lt;LI&gt;&lt;SPAN style="font-size: 10.0pt; background: white;"&gt; Request the interrupt by the resource number.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Pavel Chubakov&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>Tue, 30 May 2017 01:28:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666359#M2453</guid>
      <dc:creator>Pavel</dc:creator>
      <dc:date>2017-05-30T01:28:02Z</dc:date>
    </item>
    <item>
      <title>Re: Howto access IRQ2 on a LS1046a</title>
      <link>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666360#M2454</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Pavel, it is working now with IRQ2 (no GPIO workaround needed). Device tree entry is&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN style="color: #51626f; background-color: #f6f6f6;"&gt; interrupts = &amp;lt;GIC_SPI 133 IRQ_TYPE_LEVEL_LOW&amp;gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;and linux reports:&lt;/P&gt;&lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU0 CPU1 CPU2 CPU3
 12:&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp; GIC 165 Level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IFC CPLD Hack Driver&lt;/PRE&gt;&lt;P&gt;Greetings,&lt;/P&gt;&lt;P&gt;Edelhard&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 May 2017 08:31:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/Howto-access-IRQ2-on-a-LS1046a/m-p/666360#M2454</guid>
      <dc:creator>edelhardbecker</dc:creator>
      <dc:date>2017-05-31T08:31:56Z</dc:date>
    </item>
  </channel>
</rss>

