xref: /rk3399_ARM-atf/plat/hisilicon/poplar/plat_topology.c (revision e35d0edbbf5f55f2da5fa54ab5518149c18de622)
1*e35d0edbSJorge Ramirez-Ortiz /*
2*e35d0edbSJorge Ramirez-Ortiz  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*e35d0edbSJorge Ramirez-Ortiz  *
4*e35d0edbSJorge Ramirez-Ortiz  * SPDX-License-Identifier: BSD-3-Clause
5*e35d0edbSJorge Ramirez-Ortiz  */
6*e35d0edbSJorge Ramirez-Ortiz 
7*e35d0edbSJorge Ramirez-Ortiz #include <arch.h>
8*e35d0edbSJorge Ramirez-Ortiz #include <plat_arm.h>
9*e35d0edbSJorge Ramirez-Ortiz #include <psci.h>
10*e35d0edbSJorge Ramirez-Ortiz #include "platform_def.h"
11*e35d0edbSJorge Ramirez-Ortiz 
12*e35d0edbSJorge Ramirez-Ortiz const unsigned char hisi_power_domain_tree_desc[] = {
13*e35d0edbSJorge Ramirez-Ortiz 	PLATFORM_CLUSTER_COUNT,
14*e35d0edbSJorge Ramirez-Ortiz 	PLATFORM_CORE_COUNT,
15*e35d0edbSJorge Ramirez-Ortiz };
16*e35d0edbSJorge Ramirez-Ortiz 
17*e35d0edbSJorge Ramirez-Ortiz const unsigned char *plat_get_power_domain_tree_desc(void)
18*e35d0edbSJorge Ramirez-Ortiz {
19*e35d0edbSJorge Ramirez-Ortiz 	return hisi_power_domain_tree_desc;
20*e35d0edbSJorge Ramirez-Ortiz }
21*e35d0edbSJorge Ramirez-Ortiz 
22*e35d0edbSJorge Ramirez-Ortiz int plat_core_pos_by_mpidr(u_register_t mpidr)
23*e35d0edbSJorge Ramirez-Ortiz {
24*e35d0edbSJorge Ramirez-Ortiz 	if (mpidr & MPIDR_CLUSTER_MASK)
25*e35d0edbSJorge Ramirez-Ortiz 		return -1;
26*e35d0edbSJorge Ramirez-Ortiz 
27*e35d0edbSJorge Ramirez-Ortiz 	if ((mpidr & MPIDR_CPU_MASK) >= PLATFORM_CORE_COUNT)
28*e35d0edbSJorge Ramirez-Ortiz 		return -1;
29*e35d0edbSJorge Ramirez-Ortiz 
30*e35d0edbSJorge Ramirez-Ortiz 	return plat_arm_calc_core_pos(mpidr);
31*e35d0edbSJorge Ramirez-Ortiz }
32