Hi,
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:
...

UIC1: interrupt-controller1 {
        compatible = "ibm,uic-405ex","ibm,uic";
        interrupt-controller;
        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
called.

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

Best regards,
Ladi
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to