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>
This commit is contained in:
Andre Heider 2018-02-09 08:10:22 +01:00 committed by Tom Rini
parent d877a6c50e
commit 678382c73a

View file

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