From: Sebastian Macke <[email protected]> This patch adds basic support for the idle state of the cpu. The patch overrides the regular idle function, enables the interupts, checks for the power management unit and enables the cpu doze mode if available.
Signed-off-by: Sebastian Macke <[email protected]> [[email protected]: Fixed checkpatch, blankline after declarations] Signed-off-by: Stafford Horne <[email protected]> --- arch/openrisc/kernel/process.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index c49350b..ffde77f 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c @@ -75,6 +75,20 @@ void machine_power_off(void) __asm__("l.nop 1"); } +/* + * Send the doze signal to the cpu if available. + * Make sure, that all interrupts are enabled + */ +void arch_cpu_idle(void) +{ + unsigned long upr; + + local_irq_enable(); + upr = mfspr(SPR_UPR); + if (upr & SPR_UPR_PMP) + mtspr(SPR_PMR, mfspr(SPR_PMR) | SPR_PMR_DME); +} + void (*pm_power_off) (void) = machine_power_off; /* -- 2.9.3

