diff --git a/plat/qti/msm8916/include/platform_def.h b/plat/qti/msm8916/include/platform_def.h index 7b31917c9..2b922d813 100644 --- a/plat/qti/msm8916/include/platform_def.h +++ b/plat/qti/msm8916/include/platform_def.h @@ -25,8 +25,12 @@ #define CACHE_WRITEBACK_GRANULE U(64) #define PLATFORM_STACK_SIZE SZ_4K -/* CPU topology: single cluster with 4 cores */ +/* CPU topology: one or two clusters with 4 cores each */ +#ifdef PLAT_msm8939 +#define PLATFORM_CLUSTER_COUNT U(2) +#else #define PLATFORM_CLUSTER_COUNT U(1) +#endif #define PLATFORM_CPU_PER_CLUSTER_SHIFT U(2) /* 4 */ #define PLATFORM_CPUS_PER_CLUSTER (1 << PLATFORM_CPU_PER_CLUSTER_SHIFT) #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER_COUNT * \ diff --git a/plat/qti/msm8916/msm8916_setup.c b/plat/qti/msm8916/msm8916_setup.c index 270bae1c3..9576ea4e0 100644 --- a/plat/qti/msm8916/msm8916_setup.c +++ b/plat/qti/msm8916/msm8916_setup.c @@ -49,7 +49,7 @@ struct uartdm_gpios { static const struct uartdm_gpios uartdm_gpio_map[] = { #if defined(PLAT_msm8909) {4, 5, 0x2}, {20, 21, 0x3}, -#elif defined(PLAT_msm8916) +#elif defined(PLAT_msm8916) || defined(PLAT_msm8939) {0, 1, 0x2}, {4, 5, 0x2}, #endif }; diff --git a/plat/qti/msm8916/platform.mk b/plat/qti/msm8916/platform.mk index 9432435a1..4f4dcb428 100644 --- a/plat/qti/msm8916/platform.mk +++ b/plat/qti/msm8916/platform.mk @@ -55,7 +55,9 @@ WORKAROUND_CVE_2017_5715 := 0 WORKAROUND_CVE_2022_23960 := 0 ifeq (${MSM8916_CPU},cortex_a53) -# MSM8916 uses ARM Cortex-A53 r0p0 so likely all the errata apply +# The Cortex-A53 revision varies depending on the SoC revision. +# msm8916 uses r0p0, msm8939 uses r0p1 or r0p4. Enable all errata +# and rely on the runtime detection to apply them only if needed. ERRATA_A53_819472 := 1 ERRATA_A53_824069 := 1 ERRATA_A53_826319 := 1 @@ -63,7 +65,7 @@ ERRATA_A53_827319 := 1 ERRATA_A53_835769 := 1 ERRATA_A53_836870 := 1 ERRATA_A53_843419 := 1 -ERRATA_A53_855873 := 0 # Workaround works only for >= r0p3 +ERRATA_A53_855873 := 1 ERRATA_A53_1530924 := 1 endif diff --git a/plat/qti/msm8939/platform.mk b/plat/qti/msm8939/platform.mk new file mode 100644 index 000000000..9bf6d4d9f --- /dev/null +++ b/plat/qti/msm8939/platform.mk @@ -0,0 +1,11 @@ +# +# Copyright (c) 2022-2023, Stephan Gerhold +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# Cache cannot be enabled early on MSM8939 because the CCI-400 must be +# enabled before the CPUs in both clusters become cache-coherent. +override WARMBOOT_ENABLE_DCACHE_EARLY := 0 + +include plat/qti/msm8916/platform.mk diff --git a/plat/qti/msm8939/sp_min/sp_min-msm8939.mk b/plat/qti/msm8939/sp_min/sp_min-msm8939.mk new file mode 100644 index 000000000..28a6f01b3 --- /dev/null +++ b/plat/qti/msm8939/sp_min/sp_min-msm8939.mk @@ -0,0 +1,7 @@ +# +# Copyright (c) 2022-2023, Stephan Gerhold +# +# SPDX-License-Identifier: BSD-3-Clause +# + +include plat/qti/msm8916/sp_min/sp_min-msm8916.mk diff --git a/plat/qti/msm8939/tsp/tsp-msm8939.mk b/plat/qti/msm8939/tsp/tsp-msm8939.mk new file mode 100644 index 000000000..4eefc64ff --- /dev/null +++ b/plat/qti/msm8939/tsp/tsp-msm8939.mk @@ -0,0 +1,7 @@ +# +# Copyright (c) 2023, Stephan Gerhold +# +# SPDX-License-Identifier: BSD-3-Clause +# + +include plat/qti/msm8916/tsp/tsp-msm8916.mk