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 _______________________________________________ Linuxppc-embedded mailing list [email protected] https://ozlabs.org/mailman/listinfo/linuxppc-embedded
