mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2024-12-15 20:20:30 +00:00
9a6e297ed7
ref: - https://github.com/u-boot/u-boot/blob/master/arch/arm/cpu/armv7/sunxi/psci.c - https://github.com/smaeul/u-boot/commits/patch/h3-scp/
105 lines
3.7 KiB
Diff
105 lines
3.7 KiB
Diff
From 35c037e402d3d1a342830d72ac18a785bc03052a Mon Sep 17 00:00:00 2001
|
|
From: Samuel Holland <samuel@sholland.org>
|
|
Date: Sat, 9 Oct 2021 22:43:26 -0500
|
|
Subject: [PATCH 10/13] arm: psci: Add definitions for PSCI v1.1
|
|
|
|
Add the new option, function IDs, and prototypes for PSCI v1.1
|
|
implementations. In the process, fix some issues with the existing
|
|
definitions:
|
|
- Fix the incorrectly-named ARM_PSCI_0_2_FN64_SYSTEM_RESET2.
|
|
- Replace the deprecated "affinity_level" naming with "power_level".
|
|
|
|
Signed-off-by: Samuel Holland <samuel@sholland.org>
|
|
---
|
|
arch/arm/cpu/armv7/Kconfig | 3 +++
|
|
arch/arm/include/asm/psci.h | 6 ++++--
|
|
arch/arm/include/asm/system.h | 14 +++++++++-----
|
|
arch/arm/lib/psci-dt.c | 2 ++
|
|
4 files changed, 18 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/arch/arm/cpu/armv7/Kconfig b/arch/arm/cpu/armv7/Kconfig
|
|
index 4eb34b7b44..ec3d31e750 100644
|
|
--- a/arch/arm/cpu/armv7/Kconfig
|
|
+++ b/arch/arm/cpu/armv7/Kconfig
|
|
@@ -91,6 +91,9 @@ choice
|
|
help
|
|
Select the supported PSCI version.
|
|
|
|
+config ARMV7_PSCI_1_1
|
|
+ bool "PSCI V1.1"
|
|
+
|
|
config ARMV7_PSCI_1_0
|
|
bool "PSCI V1.0"
|
|
|
|
diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h
|
|
index 7343b941ef..aa351867ee 100644
|
|
--- a/arch/arm/include/asm/psci.h
|
|
+++ b/arch/arm/include/asm/psci.h
|
|
@@ -22,9 +22,9 @@
|
|
#include <linux/bitops.h>
|
|
#endif
|
|
|
|
-#define ARM_PSCI_VER_1_1 (0x00010001)
|
|
-#define ARM_PSCI_VER_1_0 (0x00010000)
|
|
#define ARM_PSCI_VER_0_2 (0x00000002)
|
|
+#define ARM_PSCI_VER_1_0 (0x00010000)
|
|
+#define ARM_PSCI_VER_1_1 (0x00010001)
|
|
|
|
/* PSCI 0.1 interface */
|
|
#define ARM_PSCI_FN_BASE 0x95c1ba5e
|
|
@@ -87,6 +87,8 @@
|
|
#define ARM_PSCI_1_0_FN64_STAT_COUNT ARM_PSCI_0_2_FN64(17)
|
|
|
|
/* PSCI 1.1 interface */
|
|
+#define ARM_PSCI_1_1_FN_SYSTEM_RESET2 ARM_PSCI_0_2_FN(18)
|
|
+
|
|
#define ARM_PSCI_1_1_FN64_SYSTEM_RESET2 ARM_PSCI_0_2_FN64(18)
|
|
|
|
/* 1KB stack per core */
|
|
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
|
|
index 0eae857e73..63f0c4c39e 100644
|
|
--- a/arch/arm/include/asm/system.h
|
|
+++ b/arch/arm/include/asm/system.h
|
|
@@ -558,16 +558,20 @@ void mmu_page_table_flush(unsigned long start, unsigned long stop);
|
|
#ifdef CONFIG_ARMV7_PSCI
|
|
void psci_arch_cpu_entry(void);
|
|
void psci_arch_init(void);
|
|
+
|
|
u32 psci_version(void);
|
|
-s32 psci_features(u32 function_id, u32 psci_fid);
|
|
+s32 psci_cpu_suspend(u32 function_id, u32 power_state, u32 pc, u32 context_id);
|
|
s32 psci_cpu_off(void);
|
|
-s32 psci_cpu_on(u32 function_id, u32 target_cpu, u32 pc,
|
|
- u32 context_id);
|
|
-s32 psci_affinity_info(u32 function_id, u32 target_affinity,
|
|
- u32 lowest_affinity_level);
|
|
+s32 psci_cpu_on(u32 function_id, u32 target_cpu, u32 pc, u32 context_id);
|
|
+s32 psci_affinity_info(u32 function_id, u32 target_affinity, u32 power_level);
|
|
u32 psci_migrate_info_type(void);
|
|
void psci_system_off(void);
|
|
void psci_system_reset(void);
|
|
+s32 psci_features(u32 function_id, u32 psci_fid);
|
|
+s32 psci_cpu_default_suspend(u32 function_id, u32 pc, u32 context_id);
|
|
+s32 psci_node_hw_state(u32 function_id, u32 target_cpu, u32 power_level);
|
|
+s32 psci_system_suspend(u32 function_id, u32 pc, u32 context_id);
|
|
+s32 psci_system_reset2(u32 function_id, u32 reset_type, u32 cookie);
|
|
#endif
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c
|
|
index 903b335704..ea9d1c8355 100644
|
|
--- a/arch/arm/lib/psci-dt.c
|
|
+++ b/arch/arm/lib/psci-dt.c
|
|
@@ -66,6 +66,8 @@ int fdt_psci(void *fdt)
|
|
init_psci_node:
|
|
#if CONFIG_IS_ENABLED(ARMV8_SEC_FIRMWARE_SUPPORT)
|
|
psci_ver = sec_firmware_support_psci_version();
|
|
+#elif defined(CONFIG_ARMV7_PSCI_1_1)
|
|
+ psci_ver = ARM_PSCI_VER_1_1;
|
|
#elif defined(CONFIG_ARMV7_PSCI_1_0) || defined(CONFIG_ARMV8_PSCI)
|
|
psci_ver = ARM_PSCI_VER_1_0;
|
|
#elif defined(CONFIG_ARMV7_PSCI_0_2)
|
|
--
|
|
2.34.1
|
|
|