8544 external interrupt configuration problems
Scott Wood
scottwood at freescale.com
Fri May 29 06:02:15 EST 2009
On Thu, May 28, 2009 at 12:05:52PM -0700, Nancy Isaac wrote:
> My device tree has the following entry for my fpga:
>
> CpuCpld\@f0000000{
> compatible = "MPC8544DS";
> device_type = "CpuCpld";
> reg = <f0000000 00000040>;
> interrupts = <41 2 42 2 43 2>;
> interrupt-parent = <&mpic>;
> };
Where did you get those interrupt numbers from? External interrupt
numbers start at zero on MPIC.
Is the level/sense information correct?
> My driver does the mapping to the virq:
>
> np = of_find_node_by_type(NULL, "CpuCpld");
> if (!np) {
> ret = -ENODEV;
> }
> cpldCpuDrv->MateIntIrq = irq_of_parse_and_map(np, 0);
> cpldCpuDrv->FtaIrq = irq_of_parse_and_map(np, 1);
> cpldCpuDrv->ExtractIrq = irq_of_parse_and_map(np, 2);
> cpldCpuDrv->XauiIrq = irq_of_parse_and_map(np, 0);
>
> of_node_put(np);
Looks good (other than that you should be using compatible (with a more
specific name) rather than device_type).
> Does anyone know what the virq should be for these external interrupts?
They're dynamically assigned.
> I've tried specifying the actual irq numbers 1,2 and 3 and that doesn't work
> either.
Specifying them where? In the device tree or as virq numbers? Never
hard-code virq numbers.
> Is there some PCI configuration that's getting in the way? I've tried
> disabling the FSL_PCIE and I get the same behavior.
Barring an unusual bug, PCI should have nothing to do with the interrupt
routing of things that aren't on the PCI bus.
-Scott
More information about the Linuxppc-dev
mailing list