From mboxrd@z Thu Jan 1 00:00:00 1970 From: Linus Walleij Subject: [PATCH 5/6 v2] ARM: integrator: convert AMBA devices to device tree Date: Sat, 1 Sep 2012 05:55:57 +0200 Message-ID: <1346471760-23993-5-git-send-email-linus.walleij@linaro.org> References: <1346471760-23993-1-git-send-email-linus.walleij@linaro.org> <1346471760-23993-2-git-send-email-linus.walleij@linaro.org> <1346471760-23993-3-git-send-email-linus.walleij@linaro.org> <1346471760-23993-4-git-send-email-linus.walleij@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1346471760-23993-4-git-send-email-linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: devicetree-discuss-bounces+gldd-devicetree-discuss=m.gmane.org-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Sender: "devicetree-discuss" To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org Cc: Will Deacon , arm-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, Russell King , Pawel Moll List-Id: devicetree@vger.kernel.org This converts the AMBA (PrimeCell) devices on the Integrator/AP and Integrator/CP over to probing from the Device Tree if the kernel is compiled for Device Tree support. We continue to #ifdef out all non-DT code and vice versa on respective boot type to get a clean cut. We need to add a bunch of auxdata (compare to the Versatile) to handle bus names and callbacks alike. Signed-off-by: Linus Walleij --- ChangeLog v1->v2: - Move interrupt-parent up one step to the fpga bus for the PrimeCell devices. (Suggestion from Arnd Bergmann) --- arch/arm/boot/dts/integratorap.dts | 43 ++++++++++++ arch/arm/boot/dts/integratorcp.dts | 57 ++++++++++++++++ arch/arm/mach-integrator/common.h | 2 + arch/arm/mach-integrator/core.c | 8 ++- arch/arm/mach-integrator/integrator_ap.c | 109 ++++++++++++++++++++++--------- arch/arm/mach-integrator/integrator_cp.c | 84 ++++++++++++++++++------ 6 files changed, 250 insertions(+), 53 deletions(-) diff --git a/arch/arm/boot/dts/integratorap.dts b/arch/arm/boot/dts/integratorap.dts index 928a7be..de51bcf 100644 --- a/arch/arm/boot/dts/integratorap.dts +++ b/arch/arm/boot/dts/integratorap.dts @@ -48,4 +48,47 @@ clear-mask = <0xffffffff>; valid-mask = <0x003fffff>; }; + + fpga { + compatible = "arm,amba-bus", "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + interrupt-parent = <&pic>; + + rtc: rtc@15000000 { + compatible = "arm,pl031", "arm,primecell"; + reg = <0x15000000 0x1000>; + interrupts = <8>; + arm,primecell-periphid = <0x00041030>; + }; + + uart0: uart@16000000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x16000000 0x1000>; + interrupts = <1>; + arm,primecell-periphid = <0x00041010>; + }; + + uart1: uart@17000000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x17000000 0x1000>; + interrupts = <2>; + arm,primecell-periphid = <0x00041010>; + }; + + kmi0: kmi@18000000 { + compatible = "arm,pl050", "arm,primecell"; + reg = <0x18000000 0x1000>; + interrupts = <3>; + arm,primecell-periphid = <0x00041050>; + }; + + kmi1: kmi@19000000 { + compatible = "arm,pl050", "arm,primecell"; + reg = <0x19000000 0x1000>; + interrupts = <4>; + arm,primecell-periphid = <0x00041050>; + }; + }; }; diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts index 8fad5a1..3265b25 100644 --- a/arch/arm/boot/dts/integratorcp.dts +++ b/arch/arm/boot/dts/integratorcp.dts @@ -66,4 +66,61 @@ clear-mask = <0x00000fff>; valid-mask = <0x00000fff>; }; + + fpga { + compatible = "arm,amba-bus", "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges; + interrupt-parent = <&pic>; + + rtc: rtc@15000000 { + compatible = "arm,pl031", "arm,primecell"; + reg = <0x15000000 0x1000>; + interrupts = <8>; + }; + + uart0: uart@16000000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x16000000 0x1000>; + interrupts = <1>; + }; + + uart1: uart@17000000 { + compatible = "arm,pl011", "arm,primecell"; + reg = <0x17000000 0x1000>; + interrupts = <2>; + }; + + kmi0: kmi@18000000 { + compatible = "arm,pl050", "arm,primecell"; + reg = <0x18000000 0x1000>; + interrupts = <3>; + }; + + kmi1: kmi@19000000 { + compatible = "arm,pl050", "arm,primecell"; + reg = <0x19000000 0x1000>; + interrupts = <4>; + }; + + mmci: mmc@1C000000 { + compatible = "arm,pl180", "arm,primecell"; + reg = <0x1C000000 0x1000>; + interrupts = <23 24>; + max-frequency = <515633>; + }; + + aaci: aaci@1D000000 { + compatible = "arm,pl041", "arm,primecell"; + reg = <0x1D000000 0x1000>; + interrupts = <25>; + }; + + clcd: clcd@c0000000 { + compatible = "arm,pl110", "arm,primecell"; + reg = <0xC0000000 0x1000>; + interrupts = <22>; + }; + }; }; diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h index c4338e2..c3ff21b 100644 --- a/arch/arm/mach-integrator/common.h +++ b/arch/arm/mach-integrator/common.h @@ -1,3 +1,5 @@ +#include +extern struct amba_pl010_data integrator_uart_data; void integrator_init_early(void); int integrator_init(bool is_cp); void integrator_reserve(void); diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index 67ea181..42890c8 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c @@ -33,7 +33,9 @@ #include #include -static struct amba_pl010_data integrator_uart_data; +#include "common.h" + +#ifndef CONFIG_OF #define INTEGRATOR_RTC_IRQ { IRQ_RTCINT } #define INTEGRATOR_UART0_IRQ { IRQ_UARTINT0 } @@ -86,6 +88,8 @@ int __init integrator_init(bool is_cp) return 0; } +#endif + /* * On the Integrator platform, the port RTS and DTR are provided by * bits in the following SC_CTRLS register bits: @@ -122,7 +126,7 @@ static void integrator_uart_set_mctrl(struct amba_device *dev, void __iomem *bas __raw_writel(ctrlc, SC_CTRLC); } -static struct amba_pl010_data integrator_uart_data = { +struct amba_pl010_data integrator_uart_data = { .set_mctrl = integrator_uart_set_mctrl, }; diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c index 26d4d8c..990ce85 100644 --- a/arch/arm/mach-integrator/integrator_ap.c +++ b/arch/arm/mach-integrator/integrator_ap.c @@ -36,6 +36,7 @@ #include #include #include +#include #include