* kilauea/405ex external interrupts
@ 2009-06-19 8:00 Lada Podivin
2009-06-19 18:51 ` Tirumala Reddy Marri
2009-06-22 9:23 ` Stefan Roese
0 siblings, 2 replies; 4+ messages in thread
From: Lada Podivin @ 2009-06-19 8:00 UTC (permalink / raw)
To: linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 1409 bytes --]
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
[-- Attachment #2: Type: text/html, Size: 1664 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* RE: kilauea/405ex external interrupts
2009-06-19 8:00 kilauea/405ex external interrupts Lada Podivin
@ 2009-06-19 18:51 ` Tirumala Reddy Marri
2009-06-22 9:23 ` Stefan Roese
1 sibling, 0 replies; 4+ messages in thread
From: Tirumala Reddy Marri @ 2009-06-19 18:51 UTC (permalink / raw)
To: Lada Podivin, linuxppc-dev
[-- Attachment #1: Type: text/plain, Size: 1825 bytes --]
You will have to program GPIO's to select appropriate external IRQ as
they are shared .
From: linuxppc-dev-bounces+tmarri=amcc.com@lists.ozlabs.org
[mailto:linuxppc-dev-bounces+tmarri=amcc.com@lists.ozlabs.org] On Behalf
Of Lada Podivin
Sent: Friday, June 19, 2009 1:01 AM
To: linuxppc-dev@lists.ozlabs.org
Subject: kilauea/405ex external interrupts
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
[-- Attachment #2: Type: text/html, Size: 7379 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: kilauea/405ex external interrupts
2009-06-19 8:00 kilauea/405ex external interrupts Lada Podivin
2009-06-19 18:51 ` Tirumala Reddy Marri
@ 2009-06-22 9:23 ` Stefan Roese
2009-06-22 11:31 ` Lada Podivin
1 sibling, 1 reply; 4+ messages in thread
From: Stefan Roese @ 2009-06-22 9:23 UTC (permalink / raw)
To: linuxppc-dev
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-06-22 11:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-19 8:00 kilauea/405ex external interrupts Lada Podivin
2009-06-19 18:51 ` Tirumala Reddy Marri
2009-06-22 9:23 ` Stefan Roese
2009-06-22 11:31 ` Lada Podivin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).