ARM: shmobile: sh73a0: Add CPU sleep suspend
authorBastian Hecht <hechtb@gmail.com>
Wed, 5 Dec 2012 12:13:06 +0000 (12:13 +0000)
committerSimon Horman <horms+renesas@verge.net.au>
Fri, 25 Jan 2013 03:43:46 +0000 (12:43 +0900)
Add the lighest possible sleep mode on Cortex-A9 cores: CPU sleep. It is
entered by a simple dsb and wfi instruction via cpu_do_idle(). As just
clocks are stopped there is no need to save or restore any state of the
system.

Signed-off-by: Bastian Hecht <hechtb+renesas@gmail.com>
Acked-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/board-kzm9g.c
arch/arm/mach-shmobile/include/mach/common.h
arch/arm/mach-shmobile/pm-sh73a0.c [new file with mode: 0644]

index 0b7147928aa3ef0d0638afde9296edf5fe043a43..f6aba6d61d8995d7810eede64e27fb50fc62af65 100644 (file)
@@ -37,6 +37,7 @@ obj-$(CONFIG_ARCH_SHMOBILE)   += pm-rmobile.o
 obj-$(CONFIG_ARCH_SH7372)      += pm-sh7372.o sleep-sh7372.o
 obj-$(CONFIG_ARCH_R8A7740)     += pm-r8a7740.o
 obj-$(CONFIG_ARCH_R8A7779)     += pm-r8a7779.o
+obj-$(CONFIG_ARCH_SH73A0)      += pm-sh73a0.o
 
 # Board objects
 obj-$(CONFIG_MACH_AP4EVB)      += board-ap4evb.o
index ac9428530d7b5254b30ad33e9b81e1dd458e47c6..363c6edfa3cda53c7ef9df6e8cd18e1868802e48 100644 (file)
@@ -772,6 +772,8 @@ static void __init kzm_init(void)
 
        sh73a0_add_standard_devices();
        platform_add_devices(kzm_devices, ARRAY_SIZE(kzm_devices));
+
+       sh73a0_pm_init();
 }
 
 static void kzm9g_restart(char mode, const char *cmd)
index 2d1686becdd558755da2d87434785d660c6e6b36..f221c116e968fd2639546b2059573690483eb6fd 100644 (file)
@@ -40,6 +40,7 @@ extern void sh73a0_add_early_devices(void);
 extern void sh73a0_add_standard_devices(void);
 extern void sh73a0_clock_init(void);
 extern void sh73a0_pinmux_init(void);
+extern void sh73a0_pm_init(void);
 extern struct clk sh73a0_extal1_clk;
 extern struct clk sh73a0_extal2_clk;
 extern struct clk sh73a0_extcki_clk;
diff --git a/arch/arm/mach-shmobile/pm-sh73a0.c b/arch/arm/mach-shmobile/pm-sh73a0.c
new file mode 100644 (file)
index 0000000..99086e9
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * sh73a0 Power management support
+ *
+ *  Copyright (C) 2012 Bastian Hecht <hechtb+renesas@gmail.com>
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+
+#include <linux/suspend.h>
+#include <mach/common.h>
+
+#ifdef CONFIG_SUSPEND
+static int sh73a0_enter_suspend(suspend_state_t suspend_state)
+{
+       cpu_do_idle();
+       return 0;
+}
+
+static void sh73a0_suspend_init(void)
+{
+       shmobile_suspend_ops.enter = sh73a0_enter_suspend;
+}
+#else
+static void sh73a0_suspend_init(void) {}
+#endif
+
+void __init sh73a0_pm_init(void)
+{
+       sh73a0_suspend_init();
+}
This page took 0.040438 seconds and 5 git commands to generate.