ARM: shmobile: r8a7740: Add CPU sleep suspend
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> [ horms@verge.net.au: Added missing includes ] Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
This commit is contained in:
parent
13baf88bd6
commit
895d3b53fd
3 changed files with 25 additions and 0 deletions
|
@ -1181,6 +1181,8 @@ static void __init eva_init(void)
|
|||
rmobile_add_device_to_domain("A4LC", &hdmi_lcdc_device);
|
||||
if (usb)
|
||||
rmobile_add_device_to_domain("A3SP", usb);
|
||||
|
||||
r8a7740_pm_init();
|
||||
}
|
||||
|
||||
static void __init eva_earlytimer_init(void)
|
||||
|
|
|
@ -52,6 +52,7 @@ extern void r8a7740_add_early_devices(void);
|
|||
extern void r8a7740_add_standard_devices(void);
|
||||
extern void r8a7740_clock_init(u8 md_ck);
|
||||
extern void r8a7740_pinmux_init(void);
|
||||
extern void r8a7740_pm_init(void);
|
||||
|
||||
extern void r8a7779_init_irq(void);
|
||||
extern void r8a7779_map_io(void);
|
||||
|
|
|
@ -9,7 +9,9 @@
|
|||
* for more details.
|
||||
*/
|
||||
#include <linux/console.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <mach/pm-rmobile.h>
|
||||
#include <mach/common.h>
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int r8a7740_pd_a4s_suspend(void)
|
||||
|
@ -58,3 +60,23 @@ void __init r8a7740_init_pm_domains(void)
|
|||
}
|
||||
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
#ifdef CONFIG_SUSPEND
|
||||
static int r8a7740_enter_suspend(suspend_state_t suspend_state)
|
||||
{
|
||||
cpu_do_idle();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void r8a7740_suspend_init(void)
|
||||
{
|
||||
shmobile_suspend_ops.enter = r8a7740_enter_suspend;
|
||||
}
|
||||
#else
|
||||
static void r8a7740_suspend_init(void) {}
|
||||
#endif
|
||||
|
||||
void __init r8a7740_pm_init(void)
|
||||
{
|
||||
r8a7740_suspend_init();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue