From 1c0d7c32273a8df9745e78f010d2a84956a4eb30 Mon Sep 17 00:00:00 2001 From: Yuantian Tang Date: Tue, 16 May 2017 14:45:27 +0800 Subject: 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 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(); } /* -- cgit v0.10.2