Browse Source

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 <afd@ti.com>
Change-Id: I3247fe37af7b86c3227e647b4f617fab70c8ee8a
pull/1929/head
Andrew F. Davis 6 years ago
parent
commit
a82bf5ad1b
  1. 7
      plat/ti/k3/board/generic/include/board_def.h
  2. 14
      plat/ti/k3/common/k3_helpers.S
  3. 54
      plat/ti/k3/common/k3_topology.c
  4. 37
      plat/ti/k3/include/platform_def.h

7
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.

14
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

54
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;
}

37
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 + \

Loading…
Cancel
Save