<?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 Processor Expert Software</title>
    <link>https://community.nxp.com/t5/Processor-Expert-Software/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860751#M4274</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: I know that the IRQ's for LS1021a and LS1043a are different.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please see below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic = (unsigned char *) ioremap_nocache(&lt;STRONG&gt;0x01401000,0x00001000&lt;/STRONG&gt;);&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;printk(KERN_ALERT "pgic[0x800 + 164] = %0x\n", pgic[0x800 + 164]);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;printk(KERN_ALERT "pgic[0x400 + 164] = %0x\n", pgic[0x400 + 164]);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;irq = irq_of_parse_and_map(np, 0);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;ret = request_irq(irq, int27_phase_interrupt, irqflags, "phase", 0);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;irq_set_affinity_hint(irq, get_cpu_mask(1));&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod this driver in &lt;STRONG&gt;LS1021a&lt;/STRONG&gt; i get the following output which &lt;STRONG&gt;works&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x800 + 164] = 1&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 10&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x800 + 164] = 2&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 10&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Phase IRQ = 24&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod the same driver on &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; I get the following output which &lt;STRONG&gt;does not work&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x800 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x800 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Phase IRQ = 27&lt;/EM&gt;&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;);&amp;nbsp;&lt;/P&gt;&lt;P&gt;If not than please let me know what the &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt; should be. and if the &lt;STRONG&gt;offset&lt;/STRONG&gt; is wrong please let me know that too.&lt;/P&gt;&lt;P&gt;And what would be the &lt;STRONG&gt;GICD_IPRIORITYRn&lt;/STRONG&gt; and &lt;STRONG&gt;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 LS1043a with the above CCSR address Map, and this is what i got&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x008 + 0] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 1] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 2] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 3] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 4] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 5] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 6] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 7] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 8] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 9] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 10] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 11] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 12] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 13] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 14] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 15] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 16] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 17] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 18] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 19] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 20] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 21] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 22] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 23] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 24] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 25] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 26] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 27] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 28] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 29] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 30] = 0&lt;/EM&gt;&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;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf" title="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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help or advice would greatly be appreciated&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Nihar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 24 Jan 2019 22:43:33 GMT</pubDate>
    <dc:creator>niharunadkat</dc:creator>
    <dc:date>2019-01-24T22:43:33Z</dc:date>
    <item>
      <title>LS1021A / LS1043A ARM Distributor Register</title>
      <link>https://community.nxp.com/t5/Processor-Expert-Software/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860751#M4274</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: I know that the IRQ's for LS1021a and LS1043a are different.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please see below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic = (unsigned char *) ioremap_nocache(&lt;STRONG&gt;0x01401000,0x00001000&lt;/STRONG&gt;);&amp;nbsp; &lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;printk(KERN_ALERT "pgic[0x800 + 164] = %0x\n", pgic[0x800 + 164]);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;printk(KERN_ALERT "pgic[0x400 + 164] = %0x\n", pgic[0x400 + 164]);&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;irq = irq_of_parse_and_map(np, 0);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;ret = request_irq(irq, int27_phase_interrupt, irqflags, "phase", 0);&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;irq_set_affinity_hint(irq, get_cpu_mask(1));&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod this driver in &lt;STRONG&gt;LS1021a&lt;/STRONG&gt; i get the following output which &lt;STRONG&gt;works&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x800 + 164] = 1&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 10&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x800 + 164] = 2&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 10&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Phase IRQ = 24&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;When i insmod the same driver on &lt;STRONG&gt;LS1043a&lt;/STRONG&gt; I get the following output which &lt;STRONG&gt;does not work&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x800 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x800 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x400 + 164] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Phase IRQ = 27&lt;/EM&gt;&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;);&amp;nbsp;&lt;/P&gt;&lt;P&gt;If not than please let me know what the &lt;STRONG&gt;CCSR address Map&lt;/STRONG&gt; should be. and if the &lt;STRONG&gt;offset&lt;/STRONG&gt; is wrong please let me know that too.&lt;/P&gt;&lt;P&gt;And what would be the &lt;STRONG&gt;GICD_IPRIORITYRn&lt;/STRONG&gt; and &lt;STRONG&gt;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 LS1043a with the above CCSR address Map, and this is what i got&lt;/P&gt;&lt;P&gt;&lt;EM&gt;pgic[0x008 + 0] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 1] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 2] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 3] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 4] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 5] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 6] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 7] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 8] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 9] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 10] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 11] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 12] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 13] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 14] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 15] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 16] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 17] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 18] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 19] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 20] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 21] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 22] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 23] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 24] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 25] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 26] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 27] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 28] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 29] = 0&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;pgic[0x008 + 30] = 0&lt;/EM&gt;&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;STRONG&gt;&lt;BR /&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://docs-api-peg.northeurope.cloudapp.azure.com/assets/ihi0048/b/IHI0048B_b_gic_architecture_specification.pdf" title="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;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help or advice would greatly be appreciated&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;P&gt;Nihar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 24 Jan 2019 22:43:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Processor-Expert-Software/LS1021A-LS1043A-ARM-Distributor-Register/m-p/860751#M4274</guid>
      <dc:creator>niharunadkat</dc:creator>
      <dc:date>2019-01-24T22:43:33Z</dc:date>
    </item>
  </channel>
</rss>

