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