ARM: 7238/1: integrator: only hardcode AP PrimeCell IDs
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 20 Dec 2011 10:55:19 +0000 (11:55 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 23 Dec 2011 22:58:09 +0000 (22:58 +0000)
We don't need to hardcode the peripheral IDs for the Integrator/CP,
the numbers found in the hardware are correct anyway.

Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mach-integrator/core.c

index 4b38e13667acf0f316e8881305c065f939c5d2cb..18584beda5367aa25f2ab8d41aeb5800fc60a4d0 100644 (file)
@@ -29,6 +29,7 @@
 #include <mach/cm.h>
 #include <asm/system.h>
 #include <asm/leds.h>
+#include <asm/mach-types.h>
 #include <asm/mach/time.h>
 #include <asm/pgtable.h>
 
@@ -44,7 +45,6 @@ static struct amba_device rtc_device = {
                .flags  = IORESOURCE_MEM,
        },
        .irq            = { IRQ_RTCINT, NO_IRQ },
-       .periphid       = 0x00041030,
 };
 
 static struct amba_device uart0_device = {
@@ -58,7 +58,6 @@ static struct amba_device uart0_device = {
                .flags  = IORESOURCE_MEM,
        },
        .irq            = { IRQ_UARTINT0, NO_IRQ },
-       .periphid       = 0x0041010,
 };
 
 static struct amba_device uart1_device = {
@@ -72,7 +71,6 @@ static struct amba_device uart1_device = {
                .flags  = IORESOURCE_MEM,
        },
        .irq            = { IRQ_UARTINT1, NO_IRQ },
-       .periphid       = 0x0041010,
 };
 
 static struct amba_device kmi0_device = {
@@ -85,7 +83,6 @@ static struct amba_device kmi0_device = {
                .flags  = IORESOURCE_MEM,
        },
        .irq            = { IRQ_KMIINT0, NO_IRQ },
-       .periphid       = 0x00041050,
 };
 
 static struct amba_device kmi1_device = {
@@ -98,7 +95,6 @@ static struct amba_device kmi1_device = {
                .flags  = IORESOURCE_MEM,
        },
        .irq            = { IRQ_KMIINT1, NO_IRQ },
-       .periphid       = 0x00041050,
 };
 
 static struct amba_device *amba_devs[] __initdata = {
@@ -157,6 +153,19 @@ static int __init integrator_init(void)
 {
        int i;
 
+       /*
+        * The Integrator/AP lacks necessary AMBA PrimeCell IDs, so we need to
+        * hard-code them. The Integator/CP and forward have proper cell IDs.
+        * Else we leave them undefined to the bus driver can autoprobe them.
+        */
+       if (machine_is_integrator()) {
+               rtc_device.periphid     = 0x00041030;
+               uart0_device.periphid   = 0x00041010;
+               uart1_device.periphid   = 0x00041010;
+               kmi0_device.periphid    = 0x00041050;
+               kmi1_device.periphid    = 0x00041050;
+       }
+
        for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
                struct amba_device *d = amba_devs[i];
                amba_device_register(d, &iomem_resource);