[U-Boot] [PATCH] arm/PSCI: support PSCI versions greater than 1.0

Andre Heider a.heider at gmail.com
Fri Feb 9 07:10:22 UTC 2018


ATF recently began announcing PSCI v1.1. Since that version is unknown
to u-boot, the PSCI device nodes were not updated.

Switch from the case statement to a greater/less-than comparison so that
v1.1, as well as future versions, get at least the compatible nodes of
known versions.

PSCI v1.1 doesn't seem to have introduced a new corresponding compatible.

Signed-off-by: Andre Heider <a.heider at gmail.com>
---
 arch/arm/lib/psci-dt.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c
index 05e0ad6e70..7f228537f6 100644
--- a/arch/arm/lib/psci-dt.c
+++ b/arch/arm/lib/psci-dt.c
@@ -69,22 +69,25 @@ init_psci_node:
 #elif defined(CONFIG_ARMV7_PSCI_1_0) || defined(CONFIG_ARMV8_PSCI)
 	psci_ver = ARM_PSCI_VER_1_0;
 #endif
-	switch (psci_ver) {
-	case ARM_PSCI_VER_1_0:
+	if (psci_ver >= ARM_PSCI_VER_1_0) {
 		tmp = fdt_setprop_string(fdt, nodeoff,
 				"compatible", "arm,psci-1.0");
 		if (tmp)
 			return tmp;
-	case ARM_PSCI_VER_0_2:
+	}
+
+	if (psci_ver >= ARM_PSCI_VER_0_2) {
 		tmp = fdt_appendprop_string(fdt, nodeoff,
 				"compatible", "arm,psci-0.2");
 		if (tmp)
 			return tmp;
-	default:
+	}
+
+#ifndef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
 	/*
 	 * The Secure firmware framework isn't able to support PSCI version 0.1.
 	 */
-#ifndef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT
+	if (psci_ver < ARM_PSCI_VER_0_2) {
 		tmp = fdt_appendprop_string(fdt, nodeoff,
 				"compatible", "arm,psci");
 		if (tmp)
@@ -105,9 +108,8 @@ init_psci_node:
 				ARM_PSCI_FN_MIGRATE);
 		if (tmp)
 			return tmp;
-#endif
-		break;
 	}
+#endif
 
 	tmp = fdt_setprop_string(fdt, nodeoff, "method", "smc");
 	if (tmp)
-- 
2.16.1



More information about the U-Boot mailing list