Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 895d3b53 authored by Bastian Hecht's avatar Bastian Hecht Committed by Simon Horman
Browse files

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: default avatarBastian Hecht <hechtb+renesas@gmail.com>
Acked-by: default avatarMagnus Damm <damm@opensource.se>
[ horms@verge.net.au: Added missing includes ]
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 13baf88b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -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);
+22 −0
Original line number Diff line number Diff line
@@ -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();
}