mirror of
https://github.com/torvalds/linux.git
synced 2024-12-18 00:53:40 +00:00
[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: Mike Rapoport <mike@compulab.co.il> Reviewed-by: Russell King <linux@arm.linux.org.uk> Signed-off-by: Eric Miao <eric.miao@marvell.com>
This commit is contained in:
parent
94c35a6b51
commit
d082d36ea8
@ -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 */
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user