diff options
author | Tom Rini <trini@konsulko.com> | 2016-08-02 20:45:24 -0400 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-08-02 20:45:24 -0400 |
commit | ad6a303c578b0087749510d20c1c46ae13f20367 (patch) | |
tree | df814f33a90a3dbd6a39aa8dad4fa8628a9eea6f /arch/arm | |
parent | 7351bf2b5b35819104d7c84ba8fd7d72eea544ee (diff) | |
parent | ab01ef5fa617444fd95543ee04ea53ccda273269 (diff) | |
download | u-boot-imx-ad6a303c578b0087749510d20c1c46ae13f20367.zip u-boot-imx-ad6a303c578b0087749510d20c1c46ae13f20367.tar.gz u-boot-imx-ad6a303c578b0087749510d20c1c46ae13f20367.tar.bz2 |
Merge git://git.denx.de/u-boot-fsl-qoriq
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/cpu/armv8/fsl-layerscape/ppa.c | 2 | ||||
-rw-r--r-- | arch/arm/include/asm/psci.h | 3 | ||||
-rw-r--r-- | arch/arm/lib/psci-dt.c | 80 |
3 files changed, 41 insertions, 44 deletions
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c index 541b251..f54ac3f 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/ppa.c +++ b/arch/arm/cpu/armv8/fsl-layerscape/ppa.c @@ -24,7 +24,7 @@ int ppa_init(void) u32 *boot_loc_ptr_l, *boot_loc_ptr_h; int ret; -#ifdef CONFIG_SYS_LS_PPA_FW_IN_NOR +#ifdef CONFIG_SYS_LS_PPA_FW_IN_XIP ppa_fit_addr = (void *)CONFIG_SYS_LS_PPA_FW_ADDR; #else #error "No CONFIG_SYS_LS_PPA_FW_IN_xxx defined" diff --git a/arch/arm/include/asm/psci.h b/arch/arm/include/asm/psci.h index 8aefaa7..5b8ce4d 100644 --- a/arch/arm/include/asm/psci.h +++ b/arch/arm/include/asm/psci.h @@ -18,6 +18,9 @@ #ifndef __ARM_PSCI_H__ #define __ARM_PSCI_H__ +#define ARM_PSCI_VER_1_0 (0x00010000) +#define ARM_PSCI_VER_0_2 (0x00000002) + /* PSCI 0.1 interface */ #define ARM_PSCI_FN_BASE 0x95c1ba5e #define ARM_PSCI_FN(n) (ARM_PSCI_FN_BASE + (n)) diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c index 8dc31d4..baf6d70 100644 --- a/arch/arm/lib/psci-dt.c +++ b/arch/arm/lib/psci-dt.c @@ -19,7 +19,6 @@ int fdt_psci(void *fdt) #if defined(CONFIG_ARMV8_PSCI) || defined(CONFIG_ARMV7_PSCI) int nodeoff; unsigned int psci_ver = 0; - char *psci_compt; int tmp; nodeoff = fdt_path_offset(fdt, "/cpus"); @@ -51,27 +50,10 @@ int fdt_psci(void *fdt) fdt_setprop_string(fdt, tmp, "enable-method", "psci"); } - /* - * The PSCI node might be called "/psci" or might be called something - * else but contain either of the compatible strings - * "arm,psci"/"arm,psci-0.2" - */ nodeoff = fdt_path_offset(fdt, "/psci"); if (nodeoff >= 0) goto init_psci_node; - nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci"); - if (nodeoff >= 0) - goto init_psci_node; - - nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci-0.2"); - if (nodeoff >= 0) - goto init_psci_node; - - nodeoff = fdt_node_offset_by_compatible(fdt, -1, "arm,psci-1.0"); - if (nodeoff >= 0) - goto init_psci_node; - nodeoff = fdt_path_offset(fdt, "/"); if (nodeoff < 0) return nodeoff; @@ -83,41 +65,53 @@ int fdt_psci(void *fdt) init_psci_node: #ifdef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT psci_ver = sec_firmware_support_psci_version(); +#elif defined(CONFIG_ARMV7_PSCI_1_0) + psci_ver = ARM_PSCI_VER_1_0; #endif switch (psci_ver) { - case 0x00010000: - psci_compt = "arm,psci-1.0"; - break; - case 0x00000002: - psci_compt = "arm,psci-0.2"; - break; + case 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: + tmp = fdt_appendprop_string(fdt, nodeoff, + "compatible", "arm,psci-0.2"); + if (tmp) + return tmp; default: - psci_compt = "arm,psci"; + /* + * The Secure firmware framework isn't able to support PSCI version 0.1. + */ +#ifndef CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT + tmp = fdt_appendprop_string(fdt, nodeoff, + "compatible", "arm,psci"); + if (tmp) + return tmp; + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend", + ARM_PSCI_FN_CPU_SUSPEND); + if (tmp) + return tmp; + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off", + ARM_PSCI_FN_CPU_OFF); + if (tmp) + return tmp; + tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on", + ARM_PSCI_FN_CPU_ON); + if (tmp) + return tmp; + tmp = fdt_setprop_u32(fdt, nodeoff, "migrate", + ARM_PSCI_FN_MIGRATE); + if (tmp) + return tmp; +#endif break; } - tmp = fdt_setprop_string(fdt, nodeoff, "compatible", psci_compt); - if (tmp) - return tmp; tmp = fdt_setprop_string(fdt, nodeoff, "method", "smc"); if (tmp) return tmp; -#ifdef CONFIG_ARMV7_PSCI - tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_suspend", - ARM_PSCI_FN_CPU_SUSPEND); - if (tmp) - return tmp; - tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_off", ARM_PSCI_FN_CPU_OFF); - if (tmp) - return tmp; - tmp = fdt_setprop_u32(fdt, nodeoff, "cpu_on", ARM_PSCI_FN_CPU_ON); - if (tmp) - return tmp; - tmp = fdt_setprop_u32(fdt, nodeoff, "migrate", ARM_PSCI_FN_MIGRATE); - if (tmp) - return tmp; -#endif #endif return 0; } |