summaryrefslogtreecommitdiff
path: root/drivers/firmware/psci.c
diff options
context:
space:
mode:
authorMaulik Shah <mkshah@codeaurora.org>2017-04-06 10:38:13 +0530
committerMaulik Shah <mkshah@codeaurora.org>2017-05-09 17:45:09 +0530
commitb39ce179da9818c98616da20f3a1b0667c559179 (patch)
treeb1e9b5e3833f539665f4519fa002550ad839a7cb /drivers/firmware/psci.c
parent3d82d66409abb91539bcb9d1f343fcb9d583f2b4 (diff)
drivers: firmware: psci: Set ARM32 cpuidle ops
ARM64 uses cpu enable-method property as "psci" whereas for ARM32 this needs to be "arm,psci". Use "psci" as enable-method for ARM32 and initialize cpuidle ops to be used by LPM driver for ARM32. Change-Id: I1bafc2460b3f62c6d7688d5bb7aa9cffa03bf917 Signed-off-by: Maulik Shah <mkshah@codeaurora.org>
Diffstat (limited to 'drivers/firmware/psci.c')
-rw-r--r--drivers/firmware/psci.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index af0060d6a22a..d652f3b53635 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -230,6 +230,13 @@ static int __init psci_features(u32 psci_func_id)
#ifdef CONFIG_CPU_IDLE
static DEFINE_PER_CPU_READ_MOSTLY(u32 *, psci_power_state);
+#ifdef CONFIG_ARM_PSCI
+static int psci_cpu_init(struct device_node *cpu_node, int cpu)
+{
+ return 0;
+}
+#endif
+
static int psci_dt_cpu_init_idle(struct device_node *cpu_node, int cpu)
{
int i, ret, count = 0;
@@ -333,10 +340,14 @@ int psci_cpu_suspend_enter(unsigned long state_id)
#ifdef CONFIG_ARM
static struct cpuidle_ops psci_cpuidle_ops __initdata = {
.suspend = psci_cpu_suspend_enter,
+#ifdef CONFIG_ARM_PSCI
+ .init = psci_cpu_init,
+#else
.init = psci_dt_cpu_init_idle,
+#endif
};
-CPUIDLE_METHOD_OF_DECLARE(psci, "arm,psci", &psci_cpuidle_ops);
+CPUIDLE_METHOD_OF_DECLARE(psci, "psci", &psci_cpuidle_ops);
#endif
#endif