On Friday 19 June 2009 10:00:52 Lada Podivin wrote: > I'm writing a linux driver that uses an external interrupt (ppc 405ex). I'm > using GPIO pin 30 (external IRQ 1) connected to UIC1. I'm aware of the > virtual interrupt stuff, so I added a new node to my device tree in order > to get proper virtual IRQ number. This node describes an external event and > its connection to UIC via the mentioned ext. int. Here is a sample of the > divce-tree:
<snip> > EXTEVENT: external_event { > device_type = "external"; > #address-cells = <0>; > #size-cells = <0>; > #interrupt-cells = <2>; > interrupts = <0x1e 0x1>; > interrupt-parent = <&UIC1>; > }; > ... > > Then I use function "irq_of_parse_and_map()" which returns the virtual IRQ > number 22. So, "request_irq()" seems to be satisfied with this number. I > can see this interrupt in the /proc/interrupts. But! When I connect a > signal source to the pin 30, nothing happens - the interrupt service > routine isn't called. > > Am I suppose to configure anything else? (e. g. pin multiplexing, further > device-tree tuning...) Thank you! Yes, this could very well be a problem of pin multiplexing. From looking at the Kilauea GPIO/Pin mux configuration in U-Boot, GPIO30 is configured as GPIO input and not as IRQ1. So this can't work. The easiest way to change this is in U-Boot (include/configs/kilauea.h). BTW: Are you using Kilauea or a custom 405EX board? Best regards, Stefan _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev