ARM: OMAP4: PM: Add SAR RAM support
authorSantosh Shilimkar <santosh.shilimkar@ti.com>
Sat, 1 Jan 2011 14:26:04 +0000 (19:56 +0530)
committerKevin Hilman <khilman@ti.com>
Thu, 8 Dec 2011 19:28:59 +0000 (11:28 -0800)
This patch adds SAR RAM support on OMAP4430. SAR RAM used to save
and restore the HW context in low power modes.

Signed-off-by: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Jean Pihet <j-pihet@ti.com>
Reviewed-by: Kevin Hilman <khilman@ti.com>
Tested-by: Vishwanath BS <vishwanath.bs@ti.com>
Signed-off-by: Kevin Hilman <khilman@ti.com>
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/omap4-common.c
arch/arm/mach-omap2/omap4-sar-layout.h [new file with mode: 0644]
arch/arm/plat-omap/include/plat/omap44xx.h

index ca04152..7ebcb6a 100644 (file)
@@ -182,6 +182,7 @@ static inline void __iomem *omap4_get_scu_base(void)
 
 extern void __init gic_init_irq(void);
 extern void omap_smc1(u32 fn, u32 arg);
+extern void __iomem *omap4_get_sar_ram_base(void);
 
 #ifdef CONFIG_SMP
 /* Needed for secondary core boot */
index 4a3d289..2489f5b 100644 (file)
 #include <mach/hardware.h>
 
 #include "common.h"
+#include "omap4-sar-layout.h"
 
 #ifdef CONFIG_CACHE_L2X0
 static void __iomem *l2cache_base;
 #endif
 
+static void __iomem *sar_ram_base;
+
 void __init gic_init_irq(void)
 {
        void __iomem *omap_irq_base;
@@ -118,3 +121,30 @@ static int __init omap_l2_cache_init(void)
 }
 early_initcall(omap_l2_cache_init);
 #endif
+
+void __iomem *omap4_get_sar_ram_base(void)
+{
+       return sar_ram_base;
+}
+
+/*
+ * SAR RAM used to save and restore the HW
+ * context in low power modes
+ */
+static int __init omap4_sar_ram_init(void)
+{
+       /*
+        * To avoid code running on other OMAPs in
+        * multi-omap builds
+        */
+       if (!cpu_is_omap44xx())
+               return -ENOMEM;
+
+       /* Static mapping, never released */
+       sar_ram_base = ioremap(OMAP44XX_SAR_RAM_BASE, SZ_16K);
+       if (WARN_ON(!sar_ram_base))
+               return -ENOMEM;
+
+       return 0;
+}
+early_initcall(omap4_sar_ram_init);
diff --git a/arch/arm/mach-omap2/omap4-sar-layout.h b/arch/arm/mach-omap2/omap4-sar-layout.h
new file mode 100644 (file)
index 0000000..7781ea4
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * omap4-sar-layout.h: OMAP4 SAR RAM layout header file
+ *
+ * Copyright (C) 2011 Texas Instruments, Inc.
+ *     Santosh Shilimkar <santosh.shilimkar@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef OMAP_ARCH_OMAP4_SAR_LAYOUT_H
+#define OMAP_ARCH_OMAP4_SAR_LAYOUT_H
+
+/*
+ * SAR BANK offsets from base address OMAP44XX_SAR_RAM_BASE
+ */
+#define SAR_BANK1_OFFSET               0x0000
+#define SAR_BANK2_OFFSET               0x1000
+#define SAR_BANK3_OFFSET               0x2000
+#define SAR_BANK4_OFFSET               0x3000
+
+#endif
index ea2b8a6..c0d478e 100644 (file)
@@ -45,6 +45,7 @@
 #define OMAP44XX_WKUPGEN_BASE          0x48281000
 #define OMAP44XX_MCPDM_BASE            0x40132000
 #define OMAP44XX_MCPDM_L3_BASE         0x49032000
+#define OMAP44XX_SAR_RAM_BASE          0x4a326000
 
 #define OMAP44XX_MAILBOX_BASE          (L4_44XX_BASE + 0xF4000)
 #define OMAP44XX_HSUSB_OTG_BASE                (L4_44XX_BASE + 0xAB000)