This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git

commit aabc458bcd9b364d6c3210ea33c06f765d11bb4f
Author: wangming9 <[email protected]>
AuthorDate: Wed Apr 24 15:58:10 2024 +0800

    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 <[email protected]>
---
 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);

Reply via email to