From aabc458bcd9b364d6c3210ea33c06f765d11bb4f Mon Sep 17 00:00:00 2001 From: wangming9 Date: Wed, 24 Apr 2024 15:58:10 +0800 Subject: [PATCH] arch/arm/psci: Fixed the poweroff command blocking problem. Summary: 1. Delete redundant psci_cpu_reset interfaces 2. Adjust the correct interfaces for poweroff and reset Signed-off-by: wangming9 --- arch/arm/src/armv7-a/arm_cpu_psci.c | 20 +++----------------- arch/arm/src/armv7-a/arm_cpu_psci.h | 1 - arch/arm64/src/common/arm64_cpu_psci.c | 20 +++----------------- arch/arm64/src/common/arm64_cpu_psci.h | 1 - 4 files changed, 6 insertions(+), 36 deletions(-) diff --git a/arch/arm/src/armv7-a/arm_cpu_psci.c b/arch/arm/src/armv7-a/arm_cpu_psci.c index 3cd4df1c57..ca5af51538 100644 --- a/arch/arm/src/armv7-a/arm_cpu_psci.c +++ b/arch/arm/src/armv7-a/arm_cpu_psci.c @@ -162,20 +162,6 @@ int psci_cpu_off(void) return psci_to_dev_err(ret); } -int psci_cpu_reset(void) -{ - int ret; - - if (psci_data.conduit == SMCCC_CONDUIT_NONE) - { - return -EINVAL; - } - - ret = psci_data.invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); - - return psci_to_dev_err(ret); -} - int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point) { int ret; @@ -185,7 +171,7 @@ int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point) return -EINVAL; } - ret = psci_data.invoke_psci_fn(PSCI_FN_NATIVE(0_2, CPU_ON), + ret = psci_data.invoke_psci_fn(PSCI_0_2_FN_CPU_ON, cpuid, (unsigned long)entry_point, 0); return psci_to_dev_err(ret); @@ -245,7 +231,7 @@ void up_systempoweroff(void) /* Set up for the system poweroff */ - ret = psci_cpu_off(); + ret = psci_sys_poweroff(); if (ret) { sinfo("Failed to power off CPU, error code: %d\n", ret); @@ -270,7 +256,7 @@ void up_systemreset(void) /* Set up for the system reset */ - ret = psci_cpu_reset(); + ret = psci_sys_reset(); if (ret) { sinfo("Failed to reset CPU, error code: %d\n", ret); diff --git a/arch/arm/src/armv7-a/arm_cpu_psci.h b/arch/arm/src/armv7-a/arm_cpu_psci.h index a63299bb3e..0dd8f1c25e 100644 --- a/arch/arm/src/armv7-a/arm_cpu_psci.h +++ b/arch/arm/src/armv7-a/arm_cpu_psci.h @@ -150,7 +150,6 @@ void arm_smccc_smc(unsigned long a0, unsigned long a1, uint32_t psci_version(void); int psci_cpu_off(void); -int psci_cpu_reset(void); int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point); int psci_sys_poweroff(void); int psci_sys_reset(void); diff --git a/arch/arm64/src/common/arm64_cpu_psci.c b/arch/arm64/src/common/arm64_cpu_psci.c index 068158e56a..3612c4918b 100644 --- a/arch/arm64/src/common/arm64_cpu_psci.c +++ b/arch/arm64/src/common/arm64_cpu_psci.c @@ -164,20 +164,6 @@ int psci_cpu_off(void) return psci_to_dev_err(ret); } -int psci_cpu_reset(void) -{ - int ret; - - if (psci_data.conduit == SMCCC_CONDUIT_NONE) - { - return -EINVAL; - } - - ret = psci_data.invoke_psci_fn(PSCI_0_2_FN_SYSTEM_RESET, 0, 0, 0); - - return psci_to_dev_err(ret); -} - int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point) { int ret; @@ -187,7 +173,7 @@ int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point) return -EINVAL; } - ret = psci_data.invoke_psci_fn(PSCI_FN_NATIVE(0_2, CPU_ON), + ret = psci_data.invoke_psci_fn(PSCI_0_2_FN_CPU_ON, cpuid, (unsigned long)entry_point, 0); return psci_to_dev_err(ret); @@ -247,7 +233,7 @@ void up_systempoweroff(void) /* Set up for the system poweroff */ - ret = psci_cpu_off(); + ret = psci_sys_poweroff(); if (ret) { serr("Failed to power off CPU, error code: %d\n", ret); @@ -272,7 +258,7 @@ void up_systemreset(void) /* Set up for the system reset */ - ret = psci_cpu_reset(); + ret = psci_sys_reset(); if (ret) { serr("Failed to reset CPU, error code: %d\n", ret); diff --git a/arch/arm64/src/common/arm64_cpu_psci.h b/arch/arm64/src/common/arm64_cpu_psci.h index 8fe2a4cedf..abd18be6c7 100644 --- a/arch/arm64/src/common/arm64_cpu_psci.h +++ b/arch/arm64/src/common/arm64_cpu_psci.h @@ -99,7 +99,6 @@ struct psci_interface uint32_t psci_version(void); int psci_cpu_off(void); -int psci_cpu_reset(void); int psci_cpu_on(unsigned long cpuid, uintptr_t entry_point); int psci_sys_poweroff(void); int psci_sys_reset(void);