xref: /rk3399_ARM-atf/plat/rockchip/common/plat_topology.c (revision 8742f8574bcbb513480c53645dbc5b72ea5f451e)
16fba6e04STony Xie /*
26fba6e04STony Xie  * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved.
36fba6e04STony Xie  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
56fba6e04STony Xie  */
66fba6e04STony Xie 
7ee1ebbd1SIsla Mitchell #include <platform_def.h>
809d40e0eSAntonio Nino Diaz 
909d40e0eSAntonio Nino Diaz #include <arch.h>
1009d40e0eSAntonio Nino Diaz #include <lib/psci/psci.h>
1109d40e0eSAntonio Nino Diaz 
1209d40e0eSAntonio Nino Diaz #include <plat_private.h>
136fba6e04STony Xie 
146fba6e04STony Xie /*******************************************************************************
156fba6e04STony Xie  * This function returns the RockChip default topology tree information.
166fba6e04STony Xie  ******************************************************************************/
plat_get_power_domain_tree_desc(void)176fba6e04STony Xie const unsigned char *plat_get_power_domain_tree_desc(void)
186fba6e04STony Xie {
196fba6e04STony Xie 	return rockchip_power_domain_tree_desc;
206fba6e04STony Xie }
216fba6e04STony Xie 
plat_core_pos_by_mpidr(u_register_t mpidr)226fba6e04STony Xie int plat_core_pos_by_mpidr(u_register_t mpidr)
236fba6e04STony Xie {
246fba6e04STony Xie 	unsigned int cluster_id, cpu_id;
256fba6e04STony Xie 
269ec78bdfSTony Xie 	cpu_id = mpidr & MPIDR_AFFLVL_MASK;
27*82e18f89SHeiko Stuebner #ifdef PLAT_RK_MPIDR_CLUSTER_MASK
28*82e18f89SHeiko Stuebner 	cluster_id = mpidr & PLAT_RK_MPIDR_CLUSTER_MASK;
29*82e18f89SHeiko Stuebner #else
309ec78bdfSTony Xie 	cluster_id = mpidr & MPIDR_CLUSTER_MASK;
31*82e18f89SHeiko Stuebner #endif
326fba6e04STony Xie 
339ec78bdfSTony Xie 	cpu_id += (cluster_id >> PLAT_RK_CLST_TO_CPUID_SHIFT);
349ec78bdfSTony Xie 
359ec78bdfSTony Xie 	if (cpu_id >= PLATFORM_CORE_COUNT)
366fba6e04STony Xie 		return -1;
376fba6e04STony Xie 
389ec78bdfSTony Xie 	return cpu_id;
396fba6e04STony Xie }
40