summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx/head-v7.S
diff options
context:
space:
mode:
authorShawn Guo <shawn.guo@linaro.org>2011-09-06 15:08:40 +0800
committerArnd Bergmann <arnd@arndb.de>2011-10-31 14:26:27 +0100
commita1f1c7efb0c1c78b5e84455bb5a6c8b2bee3059c (patch)
tree732ecae274d63faa98d4e3fa9091592bfb7ed9a4 /arch/arm/mach-imx/head-v7.S
parent13eed9897a2160272df2804ac3bbd4d91c76e577 (diff)
downloadblackbird-op-linux-a1f1c7efb0c1c78b5e84455bb5a6c8b2bee3059c.tar.gz
blackbird-op-linux-a1f1c7efb0c1c78b5e84455bb5a6c8b2bee3059c.zip
arm/imx6q: add suspend/resume support
It adds suspend/resume support for imx6q. Signed-off-by: Anson Huang <b20788@freescale.com> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Diffstat (limited to 'arch/arm/mach-imx/head-v7.S')
-rw-r--r--arch/arm/mach-imx/head-v7.S28
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/head-v7.S b/arch/arm/mach-imx/head-v7.S
index ede908bca7d5..6229efbc70cb 100644
--- a/arch/arm/mach-imx/head-v7.S
+++ b/arch/arm/mach-imx/head-v7.S
@@ -12,6 +12,7 @@
#include <linux/linkage.h>
#include <linux/init.h>
+#include <asm/asm-offsets.h>
#include <asm/hardware/cache-l2x0.h>
.section ".text.head", "ax"
@@ -69,3 +70,30 @@ ENTRY(v7_secondary_startup)
b secondary_startup
ENDPROC(v7_secondary_startup)
#endif
+
+/*
+ * The following code is located into the .data section. This is to
+ * allow phys_l2x0_saved_regs to be accessed with a relative load
+ * as we are running on physical address here.
+ */
+ .data
+ .align
+
+ .macro pl310_resume
+ ldr r2, phys_l2x0_saved_regs
+ ldr r0, [r2, #L2X0_R_PHY_BASE] @ get physical base of l2x0
+ ldr r1, [r2, #L2X0_R_AUX_CTRL] @ get aux_ctrl value
+ str r1, [r0, #L2X0_AUX_CTRL] @ restore aux_ctrl
+ mov r1, #0x1
+ str r1, [r0, #L2X0_CTRL] @ re-enable L2
+ .endm
+
+ENTRY(v7_cpu_resume)
+ bl v7_invalidate_l1
+ pl310_resume
+ b cpu_resume
+ENDPROC(v7_cpu_resume)
+
+ .globl phys_l2x0_saved_regs
+phys_l2x0_saved_regs:
+ .long 0
OpenPOWER on IntegriCloud