ti: k3: common: Implement topology functions
These functions describe the layout of the cores and clusters in order to support the PSCI framework. Signed-off-by: Benjamin Fair <b-fair@ti.com> Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Andrew F. Davis <afd@ti.com>
This commit is contained in:
parent
a546d25b1e
commit
878bd5cebf
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2018, ARM Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <platform_def.h>
|
||||
#include <psci.h>
|
||||
|
||||
/* The power domain tree descriptor */
|
||||
static unsigned char power_domain_tree_desc[] = {
|
||||
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)
|
||||
{
|
||||
return power_domain_tree_desc;
|
||||
}
|
||||
|
||||
int plat_core_pos_by_mpidr(u_register_t mpidr)
|
||||
{
|
||||
unsigned int cpu_id;
|
||||
|
||||
mpidr &= MPIDR_AFFINITY_MASK;
|
||||
|
||||
if (mpidr & ~(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK))
|
||||
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;
|
||||
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;
|
||||
}
|
||||
}
|
|
@ -36,3 +36,4 @@ PLAT_BL_COMMON_SOURCES += \
|
|||
BL31_SOURCES += \
|
||||
${PLAT_PATH}/common/k3_bl31_setup.c \
|
||||
${PLAT_PATH}/common/k3_helpers.S \
|
||||
${PLAT_PATH}/common/k3_topology.c \
|
||||
|
|
Loading…
Reference in New Issue