On 06/10/2012 05:31 AM, Andrew Lunn wrote: > Signed-off-by: Andrew Lunn <[email protected]> > --- > .../devicetree/bindings/arm/mrvl/intc.txt | 20 ++++++++++++++++++ > arch/arm/boot/dts/kirkwood.dtsi | 9 ++++++++ > arch/arm/mach-kirkwood/board-dt.c | 22 > +++++++++++++++++++- > 3 files changed, 50 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/arm/mrvl/intc.txt > b/Documentation/devicetree/bindings/arm/mrvl/intc.txt > index 80b9a94..612536e 100644 > --- a/Documentation/devicetree/bindings/arm/mrvl/intc.txt > +++ b/Documentation/devicetree/bindings/arm/mrvl/intc.txt > @@ -38,3 +38,23 @@ Example: > reg-names = "mux status", "mux mask"; > mrvl,intc-nr-irqs = <2>; > }; > + > +* Marvell Orion Interrupt controller > + > +Required properties > +- compatible : Should be "marvell,orion-intc" > +- #interrupt-cells: Specifies the number of cells needed to encode an > + interrupt source. Supported value is <1> > +- interrupt-controller : So that its clear its an interrupt controller. > +Optional properties > +- reg : Not used yet, but will contain the interrupt mask address > + > +Example: > + > + intc: interrupt-controller { > + compatible = "marvell,orion-intc", "marvell,intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + reg = <0xfed20204 0x04>, > + <0xfed20214 0x04>; > + }; > diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi > index 926528b..8eab7c4 100644 > --- a/arch/arm/boot/dts/kirkwood.dtsi > +++ b/arch/arm/boot/dts/kirkwood.dtsi > @@ -2,6 +2,15 @@ > > / { > compatible = "mrvl,kirkwood"; > + interrupt-parent = <&intc>; > + > + intc: interrupt-controller { > + compatible = "marvell,orion-intc", "marvell,intc"; > + interrupt-controller; > + #interrupt-cells = <1>; > + reg = <0xfed20204 0x04>, > + <0xfed20214 0x04>; > + }; > > ocp@f1000000 { > compatible = "simple-bus"; > diff --git a/arch/arm/mach-kirkwood/board-dt.c > b/arch/arm/mach-kirkwood/board-dt.c > index edc3f8a..fa51586 100644 > --- a/arch/arm/mach-kirkwood/board-dt.c > +++ b/arch/arm/mach-kirkwood/board-dt.c > @@ -14,6 +14,7 @@ > #include <linux/init.h> > #include <linux/of.h> > #include <linux/of_platform.h> > +#include <linux/of_irq.h> > #include <linux/kexec.h> > #include <asm/mach/arch.h> > #include <asm/mach/map.h> > @@ -80,11 +81,30 @@ static const char *kirkwood_dt_board_compat[] = { > NULL > }; > > +static int __init kirkwood_add_irq_domain(struct device_node *np, > + struct device_node *interrupt_parent) > +{ > + kirkwood_init_irq(); > + irq_domain_add_legacy(np, 64, 0, 0, &irq_domain_simple_ops, NULL);
The irqdomain should really be integrated into the interrupt controller itself rather than bolted on top and doesn't need to be DT only. In the process, use irq_data.hwirq rather than fixed Linux virq to hwirq conversion. Once all interrupts are bound using DT, a linear domain should be used. But that may take some time. Rob > + return 0; > +}[email protected] > + > +static const struct of_device_id kirkwood_irq_match[] = { > + { .compatible = "marvell,orion-intc", > + .data = kirkwood_add_irq_domain, }, > + {}, > +}; > + > +static void __init kirkwood_dt_init_irq(void) > +{ > + of_irq_init(kirkwood_irq_match); > +} > + > DT_MACHINE_START(KIRKWOOD_DT, "Marvell Kirkwood (Flattened Device Tree)") > /* Maintainer: Jason Cooper <[email protected]> */ > .map_io = kirkwood_map_io, > .init_early = kirkwood_init_early, > - .init_irq = kirkwood_init_irq, > + .init_irq = kirkwood_dt_init_irq, > .timer = &kirkwood_timer, > .init_machine = kirkwood_dt_init, > .restart = kirkwood_restart, ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ spi-devel-general mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/spi-devel-general
