From f3dbf1f0c9101bf303cb5f52bca6ba02aebc1e45 Mon Sep 17 00:00:00 2001 From: York Sun Date: Mon, 1 Aug 2016 09:00:13 -0700 Subject: powerpc/mpc85xx: Update erratum workaround for A006379 Update erratum workaround for A006379 to set register CPCHDBCR0 with value 0x001e0000, replacing the old value 0x003c0000. Signed-off-by: York Sun Reported-by: Dave Liu --- arch/powerpc/include/asm/immap_85xx.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/powerpc/include/asm/immap_85xx.h b/arch/powerpc/include/asm/immap_85xx.h index c045a24..7a878be 100644 --- a/arch/powerpc/include/asm/immap_85xx.h +++ b/arch/powerpc/include/asm/immap_85xx.h @@ -1579,7 +1579,7 @@ typedef struct cpc_corenet { #define CPC_HDBCR0_CDQ_SPEC_DIS 0x08000000 #define CPC_HDBCR0_TAG_ECC_SCRUB_DIS 0x01000000 #define CPC_HDBCR0_DATA_ECC_SCRUB_DIS 0x00400000 -#define CPC_HDBCR0_SPLRU_LEVEL_EN 0x003c0000 +#define CPC_HDBCR0_SPLRU_LEVEL_EN 0x001e0000 #endif /* CONFIG_SYS_FSL_CPC */ /* Global Utilities Block */ -- cgit v1.1 From 388aabc85d4c6a0e603e45421e7e2edadd9f24ac Mon Sep 17 00:00:00 2001 From: Hou Zhiqiang Date: Fri, 29 Jul 2016 18:26:35 +0800 Subject: arm/PSCI: Removed unused code Identify the PSCI node only by its name, so removed the code finding it by compatible string. Signed-off-by: Hou Zhiqiang Reviewed-by: York Sun --- arch/arm/lib/psci-dt.c | 17 ----------------- 1 file changed, 17 deletions(-) (limited to 'arch') diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c index 8dc31d4..bcd92e7 100644 --- a/arch/arm/lib/psci-dt.c +++ b/arch/arm/lib/psci-dt.c @@ -51,27 +51,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; -- cgit v1.1 From 2c774165449ebb180060b8596764140cfb00a1e1 Mon Sep 17 00:00:00 2001 From: Hou Zhiqiang Date: Fri, 29 Jul 2016 18:26:36 +0800 Subject: arm/PSCI: Fixed the backward compatiblity issue Appended the compatible strings of old version PSCI to the latest version supported. And there are some psci functions' property must be added to DT only for psci version 0.1, including cpu_on, cpu_off, cpu_suspend, migrate. Note, ARMv8 Secure Firmware Framework doesn't support PSCI ver 0.1. Signed-off-by: Hou Zhiqiang Reviewed-by: York Sun --- arch/arm/include/asm/psci.h | 3 +++ arch/arm/lib/psci-dt.c | 61 ++++++++++++++++++++++++++------------------- 2 files changed, 38 insertions(+), 26 deletions(-) (limited to 'arch') 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 bcd92e7..af49c24 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"); @@ -68,39 +67,49 @@ init_psci_node: psci_ver = sec_firmware_support_psci_version(); #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; } -- cgit v1.1 From bded21895d4e58e7770579fc5d7905ec34cc06a9 Mon Sep 17 00:00:00 2001 From: Hou Zhiqiang Date: Fri, 29 Jul 2016 18:26:37 +0800 Subject: arm/PSCI: Add support for creating ARMv7 PSCI version 1.0 DT node Signed-off-by: Hou Zhiqiang Reviewed-by: York Sun --- arch/arm/lib/psci-dt.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/arm/lib/psci-dt.c b/arch/arm/lib/psci-dt.c index af49c24..baf6d70 100644 --- a/arch/arm/lib/psci-dt.c +++ b/arch/arm/lib/psci-dt.c @@ -65,6 +65,8 @@ 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 ARM_PSCI_VER_1_0: -- cgit v1.1 From ab01ef5fa617444fd95543ee04ea53ccda273269 Mon Sep 17 00:00:00 2001 From: Hou Zhiqiang Date: Fri, 29 Jul 2016 19:26:34 +0800 Subject: ARMv8/fsl-ppa: Consolidate PPA image stored-media flag for XIP The PPA binary may be stored on QSPI flash instead of NOR. So, deprecated CONFIG_SYS_LS_PPA_FW_IN_NOR in favour of CONFIG_SYS_LS_PPA_FW_IN_XIP to prevent fragmentation of code by addition of a new QSPI specific flag. Signed-off-by: Hou Zhiqiang Signed-off-by: Abhimanyu Saini Reviewed-by: York Sun --- arch/arm/cpu/armv8/fsl-layerscape/ppa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch') 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" -- cgit v1.1