From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754229AbdBUTN2 (ORCPT ); Tue, 21 Feb 2017 14:13:28 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:35388 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753763AbdBUTNF (ORCPT ); Tue, 21 Feb 2017 14:13:05 -0500 From: Stafford Horne To: Jonas Bonn , Stefan Kristiansson Cc: linux@roeck-us.net, openrisc@lists.librecores.org, linux-kernel@vger.kernel.org, Sebastian Macke , Stafford Horne , Christian Svensson Subject: [PATCH v3 14/25] openrisc: Initial support for the idle state Date: Wed, 22 Feb 2017 04:11:43 +0900 Message-Id: <705d104f39c66faddd1fda08fc7b04f2b2e6a840.1487702890.git.shorne@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Sebastian Macke 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 | 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