<?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 LS1021A / LS1043A ARM Distributor Register in Layerscape</title>
    <link>https://community.nxp.com/t5/Layerscape/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860757#M3944</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have written a kernel driver that reads the ARM distributor register for both LS1021a and LS1043a.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What i am trying to do is put my phase on a different cpu other then cpu0 of LS1043a.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE:&lt;/STRONG&gt; I know that the &lt;STRONG&gt;IRQ's for LS1021a&lt;/STRONG&gt; and &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; are different.&lt;/P&gt;&lt;P&gt;Please see below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;pgic = (unsigned char *) ioremap_nocache(0x01401000,0x00001000);&lt;/P&gt;&lt;P&gt;printk(KERN_ALERT "pgic[0x800 + 164] = %0x\n", pgic[0x800 + 164]);&lt;BR /&gt;printk(KERN_ALERT "pgic[0x400 + 164] = %0x\n", pgic[0x400 + 164]);&lt;BR /&gt;irq = irq_of_parse_and_map(np, 0);&lt;/P&gt;&lt;P&gt;ret = request_irq(irq, int27_phase_interrupt, irqflags, "phase", 0);&lt;/P&gt;&lt;P&gt;irq_set_affinity_hint(irq, get_cpu_mask(1));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod this driver in LS1021a i get the following output which &lt;STRONG&gt;works&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic[0x800 + 164] = 1&lt;BR /&gt;pgic[0x400 + 164] = 10&lt;BR /&gt;pgic[0x800 + 164] = 2&lt;BR /&gt;pgic[0x400 + 164] = 10&lt;BR /&gt;Phase IRQ = 24&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod the same driver on LS1043a I get the following output which &lt;STRONG&gt;does not work&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic[0x800 + 164] = 0&lt;BR /&gt;pgic[0x400 + 164] = 0&lt;BR /&gt;pgic[0x800 + 164] = 0&lt;BR /&gt;pgic[0x400 + 164] = 0&lt;BR /&gt;Phase IRQ = 27&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My question is that is the below register address correct to for &lt;STRONG&gt;LS1043a&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic = (unsigned char *) ioremap_nocache(&lt;STRONG&gt;0x01401000,0x00001000&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;If not than please let me know what the CCSR address Map should be. and if the offset is wrong please let me know that too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And what would be the &lt;STRONG&gt;GICD_IPRIORITYRn and GICD_ITARGETSRn&lt;/STRONG&gt; register address for &lt;STRONG&gt;LS1043a&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also i tried to read other address on the &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; with the above &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt;, and this is what i got&lt;/P&gt;&lt;P&gt;pgic[0x008 + 0] = 0&lt;BR /&gt;pgic[0x008 + 1] = 0&lt;BR /&gt;pgic[0x008 + 2] = 0&lt;BR /&gt;pgic[0x008 + 3] = 0&lt;BR /&gt;pgic[0x008 + 4] = 0&lt;BR /&gt;pgic[0x008 + 5] = 0&lt;BR /&gt;pgic[0x008 + 6] = 0&lt;BR /&gt;pgic[0x008 + 7] = 0&lt;BR /&gt;pgic[0x008 + 8] = 0&lt;BR /&gt;pgic[0x008 + 9] = 0&lt;BR /&gt;pgic[0x008 + 10] = 0&lt;BR /&gt;pgic[0x008 + 11] = 0&lt;BR /&gt;pgic[0x008 + 12] = 0&lt;BR /&gt;pgic[0x008 + 13] = 0&lt;BR /&gt;pgic[0x008 + 14] = 0&lt;BR /&gt;pgic[0x008 + 15] = 0&lt;BR /&gt;pgic[0x008 + 16] = 0&lt;BR /&gt;pgic[0x008 + 17] = 0&lt;BR /&gt;pgic[0x008 + 18] = 0&lt;BR /&gt;pgic[0x008 + 19] = 0&lt;BR /&gt;pgic[0x008 + 20] = 0&lt;BR /&gt;pgic[0x008 + 21] = 0&lt;BR /&gt;pgic[0x008 + 22] = 0&lt;BR /&gt;pgic[0x008 + 23] = 0&lt;BR /&gt;pgic[0x008 + 24] = 0&lt;BR /&gt;pgic[0x008 + 25] = 0&lt;BR /&gt;pgic[0x008 + 26] = 0&lt;BR /&gt;pgic[0x008 + 27] = 0&lt;BR /&gt;pgic[0x008 + 28] = 0&lt;BR /&gt;pgic[0x008 + 29] = 0&lt;BR /&gt;pgic[0x008 + 30] = 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It looks like I am reading the wrong &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt;, but that's the address I found from the &lt;STRONG&gt;CoreLink GIC-400 Generic Interrupt Controller Revision:r0p0 manual.&lt;/STRONG&gt; This is the link to that manual&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf"&gt;http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf &lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Any help or advice would greatly be appreciated&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Thank you&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nihar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Jan 2019 22:59:25 GMT</pubDate>
    <dc:creator>niharunadkat</dc:creator>
    <dc:date>2019-01-24T22:59:25Z</dc:date>
    <item>
      <title>LS1021A / LS1043A ARM Distributor Register</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860757#M3944</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have written a kernel driver that reads the ARM distributor register for both LS1021a and LS1043a.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What i am trying to do is put my phase on a different cpu other then cpu0 of LS1043a.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;NOTE:&lt;/STRONG&gt; I know that the &lt;STRONG&gt;IRQ's for LS1021a&lt;/STRONG&gt; and &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; are different.&lt;/P&gt;&lt;P&gt;Please see below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;pgic = (unsigned char *) ioremap_nocache(0x01401000,0x00001000);&lt;/P&gt;&lt;P&gt;printk(KERN_ALERT "pgic[0x800 + 164] = %0x\n", pgic[0x800 + 164]);&lt;BR /&gt;printk(KERN_ALERT "pgic[0x400 + 164] = %0x\n", pgic[0x400 + 164]);&lt;BR /&gt;irq = irq_of_parse_and_map(np, 0);&lt;/P&gt;&lt;P&gt;ret = request_irq(irq, int27_phase_interrupt, irqflags, "phase", 0);&lt;/P&gt;&lt;P&gt;irq_set_affinity_hint(irq, get_cpu_mask(1));&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod this driver in LS1021a i get the following output which &lt;STRONG&gt;works&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic[0x800 + 164] = 1&lt;BR /&gt;pgic[0x400 + 164] = 10&lt;BR /&gt;pgic[0x800 + 164] = 2&lt;BR /&gt;pgic[0x400 + 164] = 10&lt;BR /&gt;Phase IRQ = 24&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod the same driver on LS1043a I get the following output which &lt;STRONG&gt;does not work&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic[0x800 + 164] = 0&lt;BR /&gt;pgic[0x400 + 164] = 0&lt;BR /&gt;pgic[0x800 + 164] = 0&lt;BR /&gt;pgic[0x400 + 164] = 0&lt;BR /&gt;Phase IRQ = 27&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My question is that is the below register address correct to for &lt;STRONG&gt;LS1043a&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;pgic = (unsigned char *) ioremap_nocache(&lt;STRONG&gt;0x01401000,0x00001000&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;If not than please let me know what the CCSR address Map should be. and if the offset is wrong please let me know that too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And what would be the &lt;STRONG&gt;GICD_IPRIORITYRn and GICD_ITARGETSRn&lt;/STRONG&gt; register address for &lt;STRONG&gt;LS1043a&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Also i tried to read other address on the &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; with the above &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt;, and this is what i got&lt;/P&gt;&lt;P&gt;pgic[0x008 + 0] = 0&lt;BR /&gt;pgic[0x008 + 1] = 0&lt;BR /&gt;pgic[0x008 + 2] = 0&lt;BR /&gt;pgic[0x008 + 3] = 0&lt;BR /&gt;pgic[0x008 + 4] = 0&lt;BR /&gt;pgic[0x008 + 5] = 0&lt;BR /&gt;pgic[0x008 + 6] = 0&lt;BR /&gt;pgic[0x008 + 7] = 0&lt;BR /&gt;pgic[0x008 + 8] = 0&lt;BR /&gt;pgic[0x008 + 9] = 0&lt;BR /&gt;pgic[0x008 + 10] = 0&lt;BR /&gt;pgic[0x008 + 11] = 0&lt;BR /&gt;pgic[0x008 + 12] = 0&lt;BR /&gt;pgic[0x008 + 13] = 0&lt;BR /&gt;pgic[0x008 + 14] = 0&lt;BR /&gt;pgic[0x008 + 15] = 0&lt;BR /&gt;pgic[0x008 + 16] = 0&lt;BR /&gt;pgic[0x008 + 17] = 0&lt;BR /&gt;pgic[0x008 + 18] = 0&lt;BR /&gt;pgic[0x008 + 19] = 0&lt;BR /&gt;pgic[0x008 + 20] = 0&lt;BR /&gt;pgic[0x008 + 21] = 0&lt;BR /&gt;pgic[0x008 + 22] = 0&lt;BR /&gt;pgic[0x008 + 23] = 0&lt;BR /&gt;pgic[0x008 + 24] = 0&lt;BR /&gt;pgic[0x008 + 25] = 0&lt;BR /&gt;pgic[0x008 + 26] = 0&lt;BR /&gt;pgic[0x008 + 27] = 0&lt;BR /&gt;pgic[0x008 + 28] = 0&lt;BR /&gt;pgic[0x008 + 29] = 0&lt;BR /&gt;pgic[0x008 + 30] = 0&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It looks like I am reading the wrong &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt;, but that's the address I found from the &lt;STRONG&gt;CoreLink GIC-400 Generic Interrupt Controller Revision:r0p0 manual.&lt;/STRONG&gt; This is the link to that manual&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf"&gt;http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf &lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Any help or advice would greatly be appreciated&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Thank you&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nihar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2019 22:59:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860757#M3944</guid>
      <dc:creator>niharunadkat</dc:creator>
      <dc:date>2019-01-24T22:59:25Z</dc:date>
    </item>
    <item>
      <title>Re: LS1021A / LS1043A ARM Distributor Register</title>
      <link>https://community.nxp.com/t5/Layerscape/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860758#M3945</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; pgic = (unsigned char *) ioremap_nocache(&lt;STRONG&gt;0x01401000,0x00001000&lt;/STRONG&gt;);&lt;/P&gt;&lt;P&gt;The register supports only 32-bit access size.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Jan 2019 12:55:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Layerscape/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860758#M3945</guid>
      <dc:creator>ufedor</dc:creator>
      <dc:date>2019-01-28T12:55:36Z</dc:date>
    </item>
  </channel>
</rss>

