External interrupts in 2.6.19
Kumar Gala
galak at kernel.crashing.org
Thu Jan 11 15:42:46 EST 2007
On Jan 10, 2007, at 4:25 PM, Ben Warren wrote:
> Hello,
>
> I'm porting my board from 2.6.17 to 2.6.19 kernel, and
> now external interrupts aren't working any more. I'm
> using ARCH=powerpc on an MPC8349-based custom board.
> With the old code, we called ipic_init() from board
> init code with a table of IRQ senses. In the newer
> kernel, ipic_init() takes only an OF node as a
> parameter. Looking at the PIC registers, the external
> IRQs are all being set to level-triggered, when they
> used to be edge-triggered.
>
> I guess I haven't been following all of the
> discussions on changes to the IPIC code, and my little
> brain can't figure out the right way to do this. Can
> somebody please give a quick dump of how the new
> methodology is supposed to work?
I think what you want is something like the following:
struct device_node *np = of_find_node_by_type(NULL, "ipic");
struct irq_host *host = irq_find_host(np);
unsigned int virq = irq_find_mapping(host, HW_IRQ);
set_irq_type(virq, IRQ_TYPE_EDGE_FALLING);
where HW_IRQ is the IRQ # of the external IRQ. Let me know if this
works out. I need to do the same update at some point and this is
one thing I know I'd have to see if it worked out properly.
(we should also have ipic_init return the struct ipic*) so you can
get irq_host directly right after you call ipic_init().
- k
More information about the Linuxppc-embedded
mailing list