Hi,<br><br>I have a custom board that's using powerpc 8544. I am trying to setup the external interrupts using the device tree and I am having no luck getting the interrupt. I think my problem is that I don't have the hwirq to virq mapping correctly. We are using the freescale 8544ds as our base. We have a PCI bus but we are not using PCIE. In my kernel configuration, I have CONFIG_PCIEPORTBUS disabled. The PCI interrupt is connected to IRQ0 and it is working fine. But, my FPGA has three interrupts, IRQ1, IRQ2 and IRQ3. I configure this in the device tree and I've tried many different numbers for the interrupt. <br>
<br>In the KConfig for ppc85xx, the configuration is the following<br><br>config MPC85xx_DS<br> bool "Freescale MPC8544 DS"<br> #select PPC_I8259<br> select DEFAULT_UIMAGE<br> select FSL_PCIE<br><br>
config MPC85xx<br> bool<br> select PPC_UDBG_16550<br> select PPC_INDIRECT_PCI<br> select FSL_PCIE<br> select SERIAL_8250_SHARE_IRQ if SERIAL_8250<br> default y if MPC8540_ADS || MPC85xx_CDS || MPC8560_ADS \<br>
|| MPC85xx_MDS || MPC85xx_DS<br><br>My .config has the following configuration for PCI ( I am showing the PCI configuration b/c 8544 seems to have different interrupt setup when PCIE is configured)<br><br>CONFIG_ZONE_DMA=y<br>
# CONFIG_MPIC_WEIRD is not set<br># CONFIG_PPC_I8259 is not set<br>CONFIG_PPC_INDIRECT_PCI=y<br>CONFIG_FSL_SOC=y<br>CONFIG_FSL_PCIE=y<br>CONFIG_PCI=y<br>CONFIG_PCI_DOMAINS=y<br># CONFIG_PCIEPORTBUS is not set<br>CONFIG_PCI_DEBUG=y<br>
<br>My device tree has the following entry for my fpga:<br><br>CpuCpld\@f0000000{<br> compatible = "MPC8544DS";<br> device_type = "CpuCpld";<br> reg = <f0000000 00000040>;<br>
interrupts = <41 2 42 2 43 2>;<br> interrupt-parent = <&mpic>;<br>};<br><br>My driver does the mapping to the virq:<br><br> np = of_find_node_by_type(NULL, "CpuCpld");<br>
if (!np) {<br> ret = -ENODEV;<br> }<br> cpldCpuDrv->MateIntIrq = irq_of_parse_and_map(np, 0);<br> cpldCpuDrv->FtaIrq = irq_of_parse_and_map(np, 1);<br> cpldCpuDrv->ExtractIrq = irq_of_parse_and_map(np, 2);<br>
cpldCpuDrv->XauiIrq = irq_of_parse_and_map(np, 0);<br><br> of_node_put(np);<br><br>Does anyone know what the virq should be for these external interrupts?<br>I've tried specifying the actual irq numbers 1,2 and 3 and that doesn't work either.<br>
Is there some PCI configuration that's getting in the way? I've tried disabling the FSL_PCIE and I get the same behavior.<br><br>Any help or pointers will be appreciated.<br><br>Thanks<br>Nancy<br><br><br>