summaryrefslogtreecommitdiff
path: root/arch/arm
diff options
context:
space:
mode:
authorAndre Heider <a.heider@gmail.com>2018-02-09 08:10:22 +0100
committerTom Rini <trini@konsulko.com>2018-02-14 12:14:15 -0500
commit678382c73a08145262e95b5639607f72e49c0ee9 (patch)
treeaf1ce959e206cfeef69881c066bea97f58ee0b70 /arch/arm
parentd877a6c50e886af089bf8fb947e566982672fd0a (diff)
arm/PSCI: support PSCI versions greater than 1.0
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@gmail.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/lib/psci-dt.c16
1 files 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)