]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
arm/PSCI: support PSCI versions greater than 1.0
authorAndre Heider <a.heider@gmail.com>
Fri, 9 Feb 2018 07:10:22 +0000 (08:10 +0100)
committerTom Rini <trini@konsulko.com>
Wed, 14 Feb 2018 17:14:15 +0000 (12:14 -0500)
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>
arch/arm/lib/psci-dt.c

index 05e0ad6e70d4b922a12131ce0d9343c07a3c136b..7f228537f69b6b48a65438c3f8d9113039b1ed5a 100644 (file)
@@ -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)