kilauea/405ex external interrupts

Stefan Roese sr at denx.de
Mon Jun 22 19:23:11 EST 2009


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



More information about the Linuxppc-dev mailing list