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

Commit d082d36e authored by Mike Rapoport's avatar Mike Rapoport Committed by Eric Miao
Browse files

[ARM] pxa: add ability to set suspend mode



PXA processors have several low-power modes. Currently kernel supports
only one of these modes for PM_SUSPEND_MEM.

This patch adds ability to set desired suspend mode for PXA27x based
machines.

Signed-off-by: default avatarMike Rapoport <mike@compulab.co.il>
Reviewed-by: default avatarRussell King <linux@arm.linux.org.uk>
Signed-off-by: default avatarEric Miao <eric.miao@marvell.com>
parent 94c35a6b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -16,4 +16,7 @@
#define ARB_DMA_PARK		(1<<25)	   /* Be parked with DMA when idle */
#define ARB_CORE_PARK		(1<<24)	   /* Be parked with core when idle */
#define ARB_LOCK_FLAG		(1<<23)	   /* Only Locking masters gain access to the bus */

extern int __init pxa27x_set_pwrmode(unsigned int mode);

#endif /* __MACH_PXA27x_H */
+18 −1
Original line number Diff line number Diff line
@@ -203,6 +203,23 @@ static struct clk_lookup pxa27x_clkregs[] = {
#define SAVE(x)		sleep_save[SLEEP_SAVE_##x] = x
#define RESTORE(x)	x = sleep_save[SLEEP_SAVE_##x]

/*
 * allow platforms to override default PWRMODE setting used for PM_SUSPEND_MEM
 */
static unsigned int pwrmode = PWRMODE_SLEEP;

int __init pxa27x_set_pwrmode(unsigned int mode)
{
	switch (mode) {
	case PWRMODE_SLEEP:
	case PWRMODE_DEEPSLEEP:
		pwrmode = mode;
		return 0;
	}

	return -EINVAL;
}

/*
 * List of global PXA peripheral registers to preserve.
 * More ones like CP and general purpose register values are preserved
@@ -254,7 +271,7 @@ void pxa27x_cpu_pm_enter(suspend_state_t state)
		pxa_cpu_standby();
		break;
	case PM_SUSPEND_MEM:
		pxa27x_cpu_suspend(PWRMODE_SLEEP);
		pxa27x_cpu_suspend(pwrmode);
		break;
	}
}