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