aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-09-06 04:06:52 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2012-09-16 19:25:39 -0400
commit9bf26a180578b92890ed77890d4e9e9807adcda3 (patch)
treee058ed7dc3f31ddad7eac6c0e271ff66913faba3
parent55d512e245bc7699a8800e23df1a24195dd08217 (diff)
ARM: 7514/1: integrator: call common init function from machine
There is currently a common integrator_init() function set up to be called from an arch_initcall(). The problem is that it is using machine_is_integrator() which is not working with device tree, let's call this from respective machine initilization function and add a parameter to tell whether it's the Integrator/AP or Integrator/CP instead. There are still machine_is*() calls in the Integrator machines directory, but this one needs to be fixed lest we don't even get a UART console on the Integrator/AP after a Device Tree boot. Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-integrator/common.h1
-rw-r--r--arch/arm/mach-integrator/core.c6
-rw-r--r--arch/arm/mach-integrator/integrator_ap.c2
-rw-r--r--arch/arm/mach-integrator/integrator_cp.c1
4 files changed, 6 insertions, 4 deletions
diff --git a/arch/arm/mach-integrator/common.h b/arch/arm/mach-integrator/common.h
index 899561d8db28..c4338e2fc631 100644
--- a/arch/arm/mach-integrator/common.h
+++ b/arch/arm/mach-integrator/common.h
@@ -1,3 +1,4 @@
1void integrator_init_early(void); 1void integrator_init_early(void);
2int integrator_init(bool is_cp);
2void integrator_reserve(void); 3void integrator_reserve(void);
3void integrator_restart(char, const char *); 4void integrator_restart(char, const char *);
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c
index 3fa6c51390da..5ba4bc8c0aa3 100644
--- a/arch/arm/mach-integrator/core.c
+++ b/arch/arm/mach-integrator/core.c
@@ -61,7 +61,7 @@ static struct amba_device *amba_devs[] __initdata = {
61 &kmi1_device, 61 &kmi1_device,
62}; 62};
63 63
64static int __init integrator_init(void) 64int __init integrator_init(bool is_cp)
65{ 65{
66 int i; 66 int i;
67 67
@@ -70,7 +70,7 @@ static int __init integrator_init(void)
70 * hard-code them. The Integator/CP and forward have proper cell IDs. 70 * hard-code them. The Integator/CP and forward have proper cell IDs.
71 * Else we leave them undefined to the bus driver can autoprobe them. 71 * Else we leave them undefined to the bus driver can autoprobe them.
72 */ 72 */
73 if (machine_is_integrator()) { 73 if (!is_cp) {
74 rtc_device.periphid = 0x00041030; 74 rtc_device.periphid = 0x00041030;
75 uart0_device.periphid = 0x00041010; 75 uart0_device.periphid = 0x00041010;
76 uart1_device.periphid = 0x00041010; 76 uart1_device.periphid = 0x00041010;
@@ -86,8 +86,6 @@ static int __init integrator_init(void)
86 return 0; 86 return 0;
87} 87}
88 88
89arch_initcall(integrator_init);
90
91/* 89/*
92 * On the Integrator platform, the port RTS and DTR are provided by 90 * On the Integrator platform, the port RTS and DTR are provided by
93 * bits in the following SC_CTRLS register bits: 91 * bits in the following SC_CTRLS register bits:
diff --git a/arch/arm/mach-integrator/integrator_ap.c b/arch/arm/mach-integrator/integrator_ap.c
index 3b2267529f5e..ff966d83281c 100644
--- a/arch/arm/mach-integrator/integrator_ap.c
+++ b/arch/arm/mach-integrator/integrator_ap.c
@@ -312,6 +312,8 @@ static void __init ap_init(void)
312 312
313 lm_device_register(lmdev); 313 lm_device_register(lmdev);
314 } 314 }
315
316 integrator_init(false);
315} 317}
316 318
317/* 319/*
diff --git a/arch/arm/mach-integrator/integrator_cp.c b/arch/arm/mach-integrator/integrator_cp.c
index 82d5c837cc74..2b40bc10b388 100644
--- a/arch/arm/mach-integrator/integrator_cp.c
+++ b/arch/arm/mach-integrator/integrator_cp.c
@@ -366,6 +366,7 @@ static void __init intcp_init(void)
366 struct amba_device *d = amba_devs[i]; 366 struct amba_device *d = amba_devs[i];
367 amba_device_register(d, &iomem_resource); 367 amba_device_register(d, &iomem_resource);
368 } 368 }
369 integrator_init(true);
369} 370}
370 371
371#define TIMER0_VA_BASE __io_address(INTEGRATOR_TIMER0_BASE) 372#define TIMER0_VA_BASE __io_address(INTEGRATOR_TIMER0_BASE)