Getting the IRQ number (Was: Basic driver devel questions ?)
Scott Wood
scottwood at freescale.com
Thu Dec 2 05:41:42 EST 2010
On Wed, 1 Dec 2010 17:35:58 +0100
Guillaume Dargaud <dargaud at lpsc.in2p3.fr> wrote:
> OK, here goes then: how do I get the IRQ number so that I can install an
> interrupt handler on it ?
>
> In my dts file I have:
> xps_acqui_data_0: xps-acqui-data at c9800000 {
> compatible = "xlnx,xps-acqui-data-3.00.a";
> interrupt-parent = <&xps_intc_0>;
> interrupts = < 0 2 >;
> reg = < 0xc9800000 0x10000 >;
> xlnx,family = "virtex4";
> xlnx,include-dphase-timer = <0x1>;
> xlnx,mplb-awidth = <0x20>;
> xlnx,mplb-clk-period-ps = <0x2710>;
> xlnx,mplb-dwidth = <0x40>;
> xlnx,mplb-native-dwidth = <0x40>;
> xlnx,mplb-p2p = <0x0>;
> xlnx,mplb-smallest-slave = <0x20>;
> } ;
>
> In my minimal driver init, I have:
> first = MKDEV (my_major, my_minor);
> register_chrdev_region(first, count, NAME);
> cdev_init(my_cdev, &fops);
> cdev_add (my_cdev, first, count);
> So far so good.
>
> Now how do I connect the dots between the hardware definitions from the dts and
> my driver ?
How was your driver probed? If you can get a pointer to the device
node, use irq_of_parse_and_map() to get a virtual irq that you can pass
to request_irq().
> But first I'm not sure where to find the IRQ in there, and also I'm not sure if
> reading the filesystem from a module is allowed.
There's no need; there are much easier ways to access the device tree
from within the kernel.
> How do I know if this interrupt is shared or not (is it important ?)
Can your driver tolerate it being shared? If so, request it as shared.
-Scott
More information about the Linuxppc-dev
mailing list