Thank you for your response. My responses below.<br><br><div class="gmail_quote">On Thu, May 28, 2009 at 1:02 PM, Scott Wood <span dir="ltr"><<a href="mailto:scottwood@freescale.com">scottwood@freescale.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im">On Thu, May 28, 2009 at 12:05:52PM -0700, Nancy Isaac wrote:<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>
</div>Where did you get those interrupt numbers from? External interrupt<br>
numbers start at zero on MPIC.</blockquote><div><br><NI> I tried several things and this is the last set I tried. These numbers start at the end of the internal interrupts. <br><br>I also tried specifying 1, 2 and 3 because it looks like there is just an array of these interrupts and the interrupts are just added to this array as they are registered with the hwirq and the virq is the index into the array where the hwirq was added. I get slightly different results but still not accurate. <br>
<br>For example, in the device tree, I had setup interrupts = <1 2 2 2 3 2>; for irq1, 2 and 3 which are all level sensitive interrupts. These map to virq 0x12, 0x13 and 0x14 . I verify that there is no interrupt present by looking at the registers in the FPGA and also by connecting a scope to the signal. Immediately after I finish registering the irqs listed above, I get an interrupt and my print statement in the do_IRQ function returns irq number 0x12. This happens even if I've disabled the interrupt at the FPGA. Then I forced an interrupt to occur at the FPGA on irq2 and the do_irq function still reports that the irq occured for 0x12.<br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
Is the level/sense information correct?</blockquote><div><br>[NI] Yes, these interrupts are supposed to be active low, level sensitive interrupts.<br></div><div><br>
</div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="im"><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>
</div>Looks good (other than that you should be using compatible (with a more<br>
specific name) rather than device_type).<br>
<div class="im"><br>
> Does anyone know what the virq should be for these external interrupts?<br>
<br>
</div>They're dynamically assigned.<br>
<div class="im"><br>
> I've tried specifying the actual irq numbers 1,2 and 3 and that doesn't work<br>
> either.<br>
<br>
</div>Specifying them where? In the device tree or as virq numbers? Never<br>
hard-code virq numbers.</blockquote><div><br>[NI] I specify this in the device tree. <br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
<div class="im"><br>
> Is there some PCI configuration that's getting in the way? I've tried<br>
> disabling the FSL_PCIE and I get the same behavior.<br>
<br>
</div>Barring an unusual bug, PCI should have nothing to do with the interrupt<br>
routing of things that aren't on the PCI bus.</blockquote><div> </div><div>[NI]. For 8544, the external interrupts can be shared with PCI Express. I thought that if I am somehow enabling PCI Express, maybe it would explain this behavior.<br>
</div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><br>
<font color="#888888"><br>
-Scott<br>
</font></blockquote></div><br>Thanks<br>Nancy<br>