On Sat, Apr 04, 2015 at 10:40:13PM +0100, Stefan Wahren wrote: > Hi, Hi, > i'm currently working on drivers (regulator and power switch) for a power > subsystem of a ARM9 processor (Freescale i.MX28). There are interrupts for the > power subsystem which share the same interrupt line. This interrupt line is > needed by both drivers (regulator and power switch). > > Now the question what is the right way (tm) to specify the interrupt in the > devicetree and fetch the irq number during driver probe? If the interrupts are generated by the subsystem as a whole, then A would be more correct. If you can read some shared register to determine the particular sub-block which generated the interrupt, A would certainly be the right way of describing the HW. If the subsystem is just a logical grouping, and the two units generate separate interrupts which simply get muxed together (with nothing special done at the subsystem level), then B would seem more correct, as the two units are effectively independent. It really depends on way the HW is organised, and how the HW _could_ be organised if reused, so this is a grey area generally. It looks like it would be possible to support both styles if we need to (by checking the node first, then its parent), if we go for one option and later discover we need the other. Thanks, Mark. > > Option A (define interrupt in parent node): > > power: power@80044000 { > compatible = "fsl,imx28-power", "syscon"; > reg = <0x80044000 0x2000>; > interrupts = <6>; > > reg_vddd: regulator@1 { > compatible = "fsl,imx28-vddd"; > }; > > pswitch: pswitch@5 { > compatible = "fsl,mxs-pswitch"; > linux,code = <116>; > }; > } > > int irq = irq_of_parse_and_map(parent, 0); > > Option B (define interrupt for each child node): > > power: power@80044000 { > compatible = "fsl,imx28-power", "syscon"; > reg = <0x80044000 0x2000>; > > reg_vddd: regulator@1 { > compatible = "fsl,imx28-vddd"; > interrupts = <6>; > }; > > pswitch: pswitch@5 { > compatible = "fsl,mxs-pswitch"; > linux,code = <116>; > interrupts = <6>; > }; > } > > int irq = platform_get_irq(pdev, 0); > > Best regards > Stefan > -- > To unsubscribe from this list: send the line "unsubscribe devicetree" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html