ARM: kirkwood: ioremap memory control register
authorAndrew Lunn <andrew@lunn.ch>
Sat, 22 Feb 2014 19:14:49 +0000 (20:14 +0100)
committerJason Cooper <jason@lakedaemon.net>
Sat, 22 Feb 2014 20:41:53 +0000 (20:41 +0000)
To allow removal of the global map of registers, make the pm code
ioremap the registers it needs.

Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Tested-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
arch/arm/mach-kirkwood/include/mach/bridge-regs.h
arch/arm/mach-kirkwood/pm.c

index 2bd12fd..6e5077e 100644 (file)
@@ -80,5 +80,6 @@
 #define CGC_RESERVED           (0x6 << 21)
 
 #define MEMORY_PM_CTRL         (BRIDGE_VIRT_BASE + 0x118)
+#define MEMORY_PM_CTRL_PHYS    (BRIDGE_PHYS_BASE + 0x118)
 
 #endif
index c6ab8d9..8e5e032 100644 (file)
 #include "common.h"
 
 static void __iomem *ddr_operation_base;
+static void __iomem *memory_pm_ctrl;
 
 static void kirkwood_low_power(void)
 {
        u32 mem_pm_ctrl;
 
-       mem_pm_ctrl = readl(MEMORY_PM_CTRL);
+       mem_pm_ctrl = readl(memory_pm_ctrl);
 
        /* Set peripherals to low-power mode */
-       writel_relaxed(~0, MEMORY_PM_CTRL);
+       writel_relaxed(~0, memory_pm_ctrl);
 
        /* Set DDR in self-refresh */
        writel_relaxed(0x7, ddr_operation_base);
@@ -41,7 +42,7 @@ static void kirkwood_low_power(void)
         */
        cpu_do_idle();
 
-       writel_relaxed(mem_pm_ctrl, MEMORY_PM_CTRL);
+       writel_relaxed(mem_pm_ctrl, memory_pm_ctrl);
 }
 
 static int kirkwood_suspend_enter(suspend_state_t state)
@@ -69,5 +70,7 @@ static const struct platform_suspend_ops kirkwood_suspend_ops = {
 void __init kirkwood_pm_init(void)
 {
        ddr_operation_base = ioremap(DDR_OPERATION_BASE, 4);
+       memory_pm_ctrl = ioremap(MEMORY_PM_CTRL_PHYS, 4);
+
        suspend_set_ops(&kirkwood_suspend_ops);
 }