ARM: integrator: ensure ap_syscon_base is initialised when !CONFIG_MMU
authorWill Deacon <will.deacon@arm.com>
Wed, 6 Feb 2013 18:25:12 +0000 (18:25 +0000)
committerOlof Johansson <olof@lixom.net>
Sun, 10 Feb 2013 00:28:47 +0000 (16:28 -0800)
When running on Integrator/AP using atags, ap_syscon_base is initialised
in ->map_io, which isn't called for !MMU platforms.

Instead, initialise the pointer in ->machine_init, as we do when booting
with device-tree.

Cc: stable@vger.kernel.org
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
arch/arm/mach-integrator/integrator_ap.c

index 11e2a4145807876b79883fe4c0a45a76ba42a693..26762bf413089887aaf424dbfb4883a804bcfc13 100644 (file)
@@ -613,7 +613,6 @@ static struct map_desc ap_io_desc_atag[] __initdata = {
 static void __init ap_map_io_atag(void)
 {
        iotable_init(ap_io_desc_atag, ARRAY_SIZE(ap_io_desc_atag));
-       ap_syscon_base = __io_address(INTEGRATOR_SC_BASE);
        ap_map_io();
 }
 
@@ -685,6 +684,7 @@ static void __init ap_init(void)
 
        platform_device_register(&cfi_flash_device);
 
+       ap_syscon_base = __io_address(INTEGRATOR_SC_BASE);
        sc_dec = readl(ap_syscon_base + INTEGRATOR_SC_DEC_OFFSET);
        for (i = 0; i < 4; i++) {
                struct lm_device *lmdev;