> On Tue, 21 Sep 2010 17:37:15 -0400 > The MPIC interrupt numberspace in the device tree (which is not > virtual; it is a private numberspace to MPIC) is based on the offset of > the registers for that interrupt source. External interrupts start at > zero (which is valid), internal at 16, and special things like MSIs at > higher numbers (I don't think it's quite 256).
OK, so I'm slowly wrapping my head around this (OT: Has anybody considered sending this information to the folks doing the Linux Device Drivers books? They are just a bit x86 centric right now...). As I understand, what I have to do is somehow get a device_node *, then make a call to irq_of_parse_and_map() to convert that into a system IRQ. What I am doing right now is: device_node *mpic = of_find_node_by_type(0,"open-pic"); irq = irq_of_parse_and_map(mpic,256); While I get a pointer from of_find_node_by_type, when I try to map IRQ #256 via the irq_of_parse_and_map function, I get a zero back from it. So I guess my questions would be: 1) should I be frobbing the PIC for this, or should I be looking up some other device? 2) How do I know for certain that 256 is the right value for the first MSI signaled via MSIR0? _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev