From: Jamie Iles <jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org> To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> Subject: [PATCH 1/3] vic: add device tree bindings Date: Mon, 25 Jul 2011 17:09:58 +0100 [thread overview] Message-ID: <1311610200-12408-2-git-send-email-jamie@jamieiles.com> (raw) In-Reply-To: <1311610200-12408-1-git-send-email-jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org> Allow the VIC to be used from device tree. This adds vic_of_init() that finds all compatible controllers in the device tree creating irq domains and initialising the VIC. We use of_iomap() for the IO mapping, but allow the entry functions in arch/arm/include/asm/entry-macro-vic2.S to be used, this requires that a static mapping is configured on the platform. Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org> Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Signed-off-by: Jamie Iles <jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org> --- Documentation/devicetree/bindings/arm/vic.txt | 21 +++++++++++++++ arch/arm/common/vic.c | 35 +++++++++++++++++++++++++ arch/arm/include/asm/hardware/vic.h | 5 +++ 3 files changed, 61 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/vic.txt diff --git a/Documentation/devicetree/bindings/arm/vic.txt b/Documentation/devicetree/bindings/arm/vic.txt new file mode 100644 index 0000000..be5abc9 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/vic.txt @@ -0,0 +1,21 @@ +ARM Vectored Interrupt Controller + +Some ARM cores may contain a vectored interrupt controller (VIC). This +controller is represented in the device tree with: + +Required properties: + - #interrupt-cells : <1> (32 interrupt sources supported) + - compatible : "arm,pl190-vic", "arm,pl192-vic", "arm-vic" + - reg : Offset and length of the register set for this device + - interrupt-controller + - irq-start : The first interrupt number that the VIC services + +Example ARM VIC node: + +vic0@60000 { + compatible = "arm,pl192-vic"; + interrupt-controller; + reg = <0x60000 0x1000>; + irq-start = <32>; + #interrupt-cells = <1>; +}; diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index 7aa4262..5838b9f 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c @@ -25,6 +25,9 @@ #include <linux/syscore_ops.h> #include <linux/device.h> #include <linux/amba/bus.h> +#include <linux/of.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> #include <asm/mach/irq.h> #include <asm/hardware/vic.h> @@ -377,3 +380,35 @@ void __init vic_init(void __iomem *base, unsigned int irq_start, vic_pm_register(base, irq_start, resume_sources); } + +#ifdef CONFIG_OF +static const struct of_device_id arm_vic_ids[] __initconst = { + { .compatible = "arm,pl190-vic" }, + { .compatible = "arm,pl192-vic" }, + { .compatible = "arm,vic" }, + {}, +}; + +void __init vic_of_init(void) +{ + struct device_node *np; + + for_each_matching_node(np, arm_vic_ids) { + void __iomem *iobase; + u32 base_irq; + + iobase = of_iomap(np, 0); + + if (!iobase) + panic("Unable to map VIC"); + + if (of_property_read_u32(np, "irq-start", &base_irq)) + panic("No irq-start property defined"); + + of_node_put(np); + + vic_init(iobase, base_irq, ~0, 0); + irq_domain_add_simple(np, base_irq); + } +} +#endif /* CONFIG_OF */ diff --git a/arch/arm/include/asm/hardware/vic.h b/arch/arm/include/asm/hardware/vic.h index 5d72550..dbda2d1 100644 --- a/arch/arm/include/asm/hardware/vic.h +++ b/arch/arm/include/asm/hardware/vic.h @@ -42,6 +42,11 @@ #ifndef __ASSEMBLY__ void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources); +#ifdef CONFIG_OF +void vic_of_init(void); +#else /* CONFIG_OF */ +static inline void vic_of_init(void) {} +#endif /* CONFIG_OF */ #endif #endif -- 1.7.4.1
WARNING: multiple messages have this Message-ID (diff)
From: jamie@jamieiles.com (Jamie Iles) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/3] vic: add device tree bindings Date: Mon, 25 Jul 2011 17:09:58 +0100 [thread overview] Message-ID: <1311610200-12408-2-git-send-email-jamie@jamieiles.com> (raw) In-Reply-To: <1311610200-12408-1-git-send-email-jamie@jamieiles.com> Allow the VIC to be used from device tree. This adds vic_of_init() that finds all compatible controllers in the device tree creating irq domains and initialising the VIC. We use of_iomap() for the IO mapping, but allow the entry functions in arch/arm/include/asm/entry-macro-vic2.S to be used, this requires that a static mapping is configured on the platform. Cc: Russell King <linux@arm.linux.org.uk> Cc: devicetree-discuss at lists.ozlabs.org Signed-off-by: Jamie Iles <jamie@jamieiles.com> --- Documentation/devicetree/bindings/arm/vic.txt | 21 +++++++++++++++ arch/arm/common/vic.c | 35 +++++++++++++++++++++++++ arch/arm/include/asm/hardware/vic.h | 5 +++ 3 files changed, 61 insertions(+), 0 deletions(-) create mode 100644 Documentation/devicetree/bindings/arm/vic.txt diff --git a/Documentation/devicetree/bindings/arm/vic.txt b/Documentation/devicetree/bindings/arm/vic.txt new file mode 100644 index 0000000..be5abc9 --- /dev/null +++ b/Documentation/devicetree/bindings/arm/vic.txt @@ -0,0 +1,21 @@ +ARM Vectored Interrupt Controller + +Some ARM cores may contain a vectored interrupt controller (VIC). This +controller is represented in the device tree with: + +Required properties: + - #interrupt-cells : <1> (32 interrupt sources supported) + - compatible : "arm,pl190-vic", "arm,pl192-vic", "arm-vic" + - reg : Offset and length of the register set for this device + - interrupt-controller + - irq-start : The first interrupt number that the VIC services + +Example ARM VIC node: + +vic0 at 60000 { + compatible = "arm,pl192-vic"; + interrupt-controller; + reg = <0x60000 0x1000>; + irq-start = <32>; + #interrupt-cells = <1>; +}; diff --git a/arch/arm/common/vic.c b/arch/arm/common/vic.c index 7aa4262..5838b9f 100644 --- a/arch/arm/common/vic.c +++ b/arch/arm/common/vic.c @@ -25,6 +25,9 @@ #include <linux/syscore_ops.h> #include <linux/device.h> #include <linux/amba/bus.h> +#include <linux/of.h> +#include <linux/of_address.h> +#include <linux/of_irq.h> #include <asm/mach/irq.h> #include <asm/hardware/vic.h> @@ -377,3 +380,35 @@ void __init vic_init(void __iomem *base, unsigned int irq_start, vic_pm_register(base, irq_start, resume_sources); } + +#ifdef CONFIG_OF +static const struct of_device_id arm_vic_ids[] __initconst = { + { .compatible = "arm,pl190-vic" }, + { .compatible = "arm,pl192-vic" }, + { .compatible = "arm,vic" }, + {}, +}; + +void __init vic_of_init(void) +{ + struct device_node *np; + + for_each_matching_node(np, arm_vic_ids) { + void __iomem *iobase; + u32 base_irq; + + iobase = of_iomap(np, 0); + + if (!iobase) + panic("Unable to map VIC"); + + if (of_property_read_u32(np, "irq-start", &base_irq)) + panic("No irq-start property defined"); + + of_node_put(np); + + vic_init(iobase, base_irq, ~0, 0); + irq_domain_add_simple(np, base_irq); + } +} +#endif /* CONFIG_OF */ diff --git a/arch/arm/include/asm/hardware/vic.h b/arch/arm/include/asm/hardware/vic.h index 5d72550..dbda2d1 100644 --- a/arch/arm/include/asm/hardware/vic.h +++ b/arch/arm/include/asm/hardware/vic.h @@ -42,6 +42,11 @@ #ifndef __ASSEMBLY__ void vic_init(void __iomem *base, unsigned int irq_start, u32 vic_sources, u32 resume_sources); +#ifdef CONFIG_OF +void vic_of_init(void); +#else /* CONFIG_OF */ +static inline void vic_of_init(void) {} +#endif /* CONFIG_OF */ #endif #endif -- 1.7.4.1
next prev parent reply other threads:[~2011-07-25 16:09 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-07-25 16:09 [PATCH 0/3] Add device tree based initialisation for VIC Jamie Iles 2011-07-25 16:09 ` Jamie Iles [not found] ` <1311610200-12408-1-git-send-email-jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org> 2011-07-25 16:09 ` Jamie Iles [this message] 2011-07-25 16:09 ` [PATCH 1/3] vic: add device tree bindings Jamie Iles [not found] ` <1311610200-12408-2-git-send-email-jamie-wmLquQDDieKakBO8gow8eQ@public.gmane.org> 2011-07-25 20:04 ` Grant Likely 2011-07-25 20:04 ` Grant Likely [not found] ` <20110725200434.GB26735-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org> 2011-07-25 22:31 ` Jamie Iles 2011-07-25 22:31 ` Jamie Iles 2011-07-31 4:11 ` Grant Likely 2011-07-31 4:11 ` Grant Likely [not found] ` <20110731041107.GN24334-e0URQFbLeQY2iJbIjFUEsiwD8/FfD2ys@public.gmane.org> 2011-07-31 15:27 ` Jamie Iles 2011-07-31 15:27 ` Jamie Iles 2011-07-25 16:09 ` [PATCH 2/3] versatile dt: set the irq-start property for the vic Jamie Iles 2011-07-25 16:09 ` Jamie Iles 2011-07-25 16:10 ` [PATCH 3/3] versatile: convert to common VIC DT probing Jamie Iles 2011-07-25 16:10 ` Jamie Iles 2011-07-25 19:54 ` [PATCH 0/3] Add device tree based initialisation for VIC Grant Likely 2011-07-25 19:54 ` Grant Likely 2011-07-25 22:20 ` Jamie Iles 2011-07-25 22:20 ` Jamie Iles
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1311610200-12408-2-git-send-email-jamie@jamieiles.com \ --to=jamie-wmlquqddiekakbo8gow8eq@public.gmane.org \ --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.