From a82bf5ad1bad19a0e0c86042df76f60f1b41d8f6 Mon Sep 17 00:00:00 2001 From: "Andrew F. Davis" Date: Wed, 27 Mar 2019 09:37:10 -0500 Subject: ti: k3: common: Remove MSMC port definitions The MSMC port defines were added to help in the case when some ports are not connected and have no cores attached. We can get the same functionality by defined the number of cores on that port to zero. This simplifies several code paths, do this here. Signed-off-by: Andrew F. Davis Change-Id: I3247fe37af7b86c3227e647b4f617fab70c8ee8a --- plat/ti/k3/board/generic/include/board_def.h | 7 ---- plat/ti/k3/common/k3_helpers.S | 14 +++----- plat/ti/k3/common/k3_topology.c | 54 ++++++++-------------------- plat/ti/k3/include/platform_def.h | 37 +++---------------- 4 files changed, 23 insertions(+), 89 deletions(-) diff --git a/plat/ti/k3/board/generic/include/board_def.h b/plat/ti/k3/board/generic/include/board_def.h index 4c8f8822..490b975f 100644 --- a/plat/ti/k3/board/generic/include/board_def.h +++ b/plat/ti/k3/board/generic/include/board_def.h @@ -11,16 +11,9 @@ /* The ports must be in order and contiguous */ #define K3_CLUSTER0_CORE_COUNT 2 -#define K3_CLUSTER0_MSMC_PORT 0 - #define K3_CLUSTER1_CORE_COUNT 2 -#define K3_CLUSTER1_MSMC_PORT 1 - #define K3_CLUSTER2_CORE_COUNT 2 -#define K3_CLUSTER2_MSMC_PORT 2 - #define K3_CLUSTER3_CORE_COUNT 2 -#define K3_CLUSTER3_MSMC_PORT 3 /* * This RAM will be used for the bootloader including code, bss, and stacks. diff --git a/plat/ti/k3/common/k3_helpers.S b/plat/ti/k3/common/k3_helpers.S index 3dfdda4b..1ab1af54 100644 --- a/plat/ti/k3/common/k3_helpers.S +++ b/plat/ti/k3/common/k3_helpers.S @@ -73,21 +73,17 @@ func plat_my_core_pos lsr x1, x1, #MPIDR_AFF1_SHIFT and x0, x0, #MPIDR_CPU_MASK -#if K3_CLUSTER1_MSMC_PORT != UNUSED - cmp x1, #K3_CLUSTER0_MSMC_PORT + cmp x1, 0 b.eq out add x0, x0, #K3_CLUSTER0_CORE_COUNT -#if K3_CLUSTER2_MSMC_PORT != UNUSED - cmp x1, #K3_CLUSTER1_MSMC_PORT + + cmp x1, 1 b.eq out add x0, x0, #K3_CLUSTER1_CORE_COUNT -#if K3_CLUSTER3_MSMC_PORT != UNUSED - cmp x1, #K3_CLUSTER2_MSMC_PORT + + cmp x1, 2 b.eq out add x0, x0, #K3_CLUSTER2_CORE_COUNT -#endif /* K3_CLUSTER3_MSMC_PORT != UNUSED */ -#endif /* K3_CLUSTER2_MSMC_PORT != UNUSED */ -#endif /* K3_CLUSTER1_MSMC_PORT != UNUSED */ out: ret diff --git a/plat/ti/k3/common/k3_topology.c b/plat/ti/k3/common/k3_topology.c index 2b98acb2..139f1fdb 100644 --- a/plat/ti/k3/common/k3_topology.c +++ b/plat/ti/k3/common/k3_topology.c @@ -13,15 +13,9 @@ static unsigned char power_domain_tree_desc[] = { PLATFORM_SYSTEM_COUNT, PLATFORM_CLUSTER_COUNT, K3_CLUSTER0_CORE_COUNT, -#if K3_CLUSTER1_MSMC_PORT != UNUSED K3_CLUSTER1_CORE_COUNT, -#endif /* K3_CLUSTER1_MSMC_PORT != UNUSED */ -#if K3_CLUSTER2_MSMC_PORT != UNUSED K3_CLUSTER2_CORE_COUNT, -#endif /* K3_CLUSTER2_MSMC_PORT != UNUSED */ -#if K3_CLUSTER3_MSMC_PORT != UNUSED K3_CLUSTER3_CORE_COUNT, -#endif /* K3_CLUSTER3_MSMC_PORT != UNUSED */ }; const unsigned char *plat_get_power_domain_tree_desc(void) @@ -31,42 +25,22 @@ const unsigned char *plat_get_power_domain_tree_desc(void) int plat_core_pos_by_mpidr(u_register_t mpidr) { - unsigned int cpu_id; + unsigned int cluster = MPIDR_AFFLVL1_VAL(mpidr); + unsigned int core = MPIDR_AFFLVL0_VAL(mpidr); - mpidr &= MPIDR_AFFINITY_MASK; - - if (mpidr & ~(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK)) + if (MPIDR_AFFLVL3_VAL(mpidr) > 0 || + MPIDR_AFFLVL2_VAL(mpidr) > 0) { return -1; + } - cpu_id = MPIDR_AFFLVL0_VAL(mpidr); - - switch (MPIDR_AFFLVL1_VAL(mpidr)) { - case K3_CLUSTER0_MSMC_PORT: - if (cpu_id < K3_CLUSTER0_CORE_COUNT) - return cpu_id; - return -1; -#if K3_CLUSTER1_MSMC_PORT != UNUSED - case K3_CLUSTER1_MSMC_PORT: - if (cpu_id < K3_CLUSTER1_CORE_COUNT) - return K3_CLUSTER0_CORE_COUNT + cpu_id; - return -1; -#endif /* K3_CLUSTER1_MSMC_PORT != UNUSED */ -#if K3_CLUSTER2_MSMC_PORT != UNUSED - case K3_CLUSTER2_MSMC_PORT: - if (cpu_id < K3_CLUSTER2_CORE_COUNT) - return K3_CLUSTER0_CORE_COUNT + - K3_CLUSTER1_CORE_COUNT + cpu_id; + if (cluster > 0) + core += K3_CLUSTER0_CORE_COUNT; + if (cluster > 1) + core += K3_CLUSTER1_CORE_COUNT; + if (cluster > 2) + core += K3_CLUSTER2_CORE_COUNT; + if (cluster > 3) return -1; -#endif /* K3_CLUSTER2_MSMC_PORT != UNUSED */ -#if K3_CLUSTER3_MSMC_PORT != UNUSED - case K3_CLUSTER3_MSMC_PORT: - if (cpu_id < K3_CLUSTER3_CORE_COUNT) - return K3_CLUSTER0_CORE_COUNT + - K3_CLUSTER1_CORE_COUNT + - K3_CLUSTER2_CORE_COUNT + cpu_id; - return -1; -#endif /* K3_CLUSTER3_MSMC_PORT != UNUSED */ - default: - return -1; - } + + return core; } diff --git a/plat/ti/k3/include/platform_def.h b/plat/ti/k3/include/platform_def.h index 68fdae74..690c68e5 100644 --- a/plat/ti/k3/include/platform_def.h +++ b/plat/ti/k3/include/platform_def.h @@ -29,39 +29,10 @@ K3_CLUSTER2_CORE_COUNT + \ K3_CLUSTER3_CORE_COUNT) -#define PLATFORM_CLUSTER_COUNT ((K3_CLUSTER0_MSMC_PORT != UNUSED) + \ - (K3_CLUSTER1_MSMC_PORT != UNUSED) + \ - (K3_CLUSTER2_MSMC_PORT != UNUSED) + \ - (K3_CLUSTER3_MSMC_PORT != UNUSED)) - -#define UNUSED -1 - -#if !defined(K3_CLUSTER1_CORE_COUNT) || !defined(K3_CLUSTER1_MSMC_PORT) -#define K3_CLUSTER1_CORE_COUNT 0 -#define K3_CLUSTER1_MSMC_PORT UNUSED -#endif - -#if !defined(K3_CLUSTER2_CORE_COUNT) || !defined(K3_CLUSTER2_MSMC_PORT) -#define K3_CLUSTER2_CORE_COUNT 0 -#define K3_CLUSTER2_MSMC_PORT UNUSED -#endif - -#if !defined(K3_CLUSTER3_CORE_COUNT) || !defined(K3_CLUSTER3_MSMC_PORT) -#define K3_CLUSTER3_CORE_COUNT 0 -#define K3_CLUSTER3_MSMC_PORT UNUSED -#endif - -#if K3_CLUSTER0_MSMC_PORT == UNUSED -#error "ARM cluster 0 must be used" -#endif - -#if ((K3_CLUSTER1_MSMC_PORT == UNUSED) && (K3_CLUSTER1_CORE_COUNT != 0)) || \ - ((K3_CLUSTER2_MSMC_PORT == UNUSED) && (K3_CLUSTER2_CORE_COUNT != 0)) || \ - ((K3_CLUSTER3_MSMC_PORT == UNUSED) && (K3_CLUSTER3_CORE_COUNT != 0)) -#error "Unused ports must have 0 ARM cores" -#endif - -#define PLATFORM_CLUSTER_OFFSET K3_CLUSTER0_MSMC_PORT +#define PLATFORM_CLUSTER_COUNT ((K3_CLUSTER0_CORE_COUNT != 0) + \ + (K3_CLUSTER1_CORE_COUNT != 0) + \ + (K3_CLUSTER2_CORE_COUNT != 0) + \ + (K3_CLUSTER3_CORE_COUNT != 0)) #define PLAT_NUM_PWR_DOMAINS (PLATFORM_SYSTEM_COUNT + \ PLATFORM_CLUSTER_COUNT + \ -- cgit v1.2.3