From 581afac87bf5bd018bd4c7394645c9a0c32acc04 Mon Sep 17 00:00:00 2001 From: Sebastian Macke Date: Sun, 20 Jul 2014 15:13:31 +0000 Subject: [PATCH] openrisc: Initial support for the idle state 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 [shorne@gmail.com: Fixed checkpatch, blankline after declarations] Signed-off-by: Stafford Horne --- arch/openrisc/kernel/process.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index c49350b200e1c..6e9d1cb519f24 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c @@ -75,6 +75,17 @@ 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) +{ + local_irq_enable(); + if (mfspr(SPR_UPR) & SPR_UPR_PMP) + mtspr(SPR_PMR, mfspr(SPR_PMR) | SPR_PMR_DME); +} + void (*pm_power_off) (void) = machine_power_off; /* -- 2.39.5