summaryrefslogtreecommitdiff
path: root/drivers/firmware
diff options
context:
space:
mode:
authorYuantian Tang <andy.tang@nxp.com>2017-05-16 06:45:27 (GMT)
committerXie Xiaobo <xiaobo.xie@nxp.com>2017-07-14 10:29:16 (GMT)
commit1c0d7c32273a8df9745e78f010d2a84956a4eb30 (patch)
treea8dc31260d81bab66e11dea4af35263206817826 /drivers/firmware
parent7317a8a3b33fde57fe6862e979be48c606b565b5 (diff)
downloadlinux-1c0d7c32273a8df9745e78f010d2a84956a4eb30.tar.xz
armv8: add psci 0.2 stardard support
In current kernel, only psci v1.0 is supported. But our psci firmware only support psci v0.2. So update psci driver to support psci v0.2. Signed-off-by: Tang Yuantian <andy.tang@nxp.com>
Diffstat (limited to 'drivers/firmware')
-rw-r--r--drivers/firmware/psci.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 8263429..d159992 100644
--- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c
@@ -418,8 +418,7 @@ CPUIDLE_METHOD_OF_DECLARE(psci, "psci", &psci_cpuidle_ops);
static int psci_system_suspend(unsigned long unused)
{
- return invoke_psci_fn(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND),
- virt_to_phys(cpu_resume), 0, 0);
+ return psci_cpu_suspend(0, virt_to_phys(cpu_resume));
}
static int psci_system_suspend_enter(suspend_state_t state)
@@ -439,6 +438,8 @@ static void __init psci_init_system_suspend(void)
if (!IS_ENABLED(CONFIG_SUSPEND))
return;
+ suspend_set_ops(&psci_suspend_ops);
+
ret = psci_features(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND));
if (ret != PSCI_RET_NOT_SUPPORTED)
@@ -516,6 +517,7 @@ static void __init psci_0_2_set_functions(void)
arm_pm_restart = psci_sys_reset;
pm_power_off = psci_sys_poweroff;
+ psci_init_system_suspend();
}
/*