kilauea/405ex external interrupts

Lada Podivin lada.podivin at
Fri Jun 19 18:00:52 EST 2009

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

UIC1: interrupt-controller1 {
        compatible = "ibm,uic-405ex","ibm,uic";
        cell-index = <1>;
        dcr-reg = <0x0d0 0x009>;
        #address-cells = <0>;
        #size-cells = <0>;
        #interrupt-cells = <2>;
        interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
        interrupt-parent = <&UIC0>;

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

Am I suppose to configure anything else? (e. g. pin multiplexing, further
device-tree tuning...) Thank you!

Best regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>
-------------- next part --------------
Linuxppc-dev mailing list
Linuxppc-dev at

More information about the Linuxppc-dev mailing list