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

Reply via email to