xref: /rk3399_ARM-atf/plat/hisilicon/poplar/plat_topology.c (revision 0818e9e864458660085259f8c67e9d5db6564ace)
1e35d0edbSJorge Ramirez-Ortiz /*
2*0818e9e8SAntonio 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 
7e35d0edbSJorge Ramirez-Ortiz #include <arch.h>
8e35d0edbSJorge Ramirez-Ortiz #include <psci.h>
9e35d0edbSJorge Ramirez-Ortiz #include "platform_def.h"
10*0818e9e8SAntonio Nino Diaz #include "plat_private.h"
11e35d0edbSJorge Ramirez-Ortiz 
12e35d0edbSJorge Ramirez-Ortiz const unsigned char hisi_power_domain_tree_desc[] = {
13e35d0edbSJorge Ramirez-Ortiz 	PLATFORM_CLUSTER_COUNT,
14e35d0edbSJorge Ramirez-Ortiz 	PLATFORM_CORE_COUNT,
15e35d0edbSJorge Ramirez-Ortiz };
16e35d0edbSJorge Ramirez-Ortiz 
17e35d0edbSJorge Ramirez-Ortiz const unsigned char *plat_get_power_domain_tree_desc(void)
18e35d0edbSJorge Ramirez-Ortiz {
19e35d0edbSJorge Ramirez-Ortiz 	return hisi_power_domain_tree_desc;
20e35d0edbSJorge Ramirez-Ortiz }
21e35d0edbSJorge Ramirez-Ortiz 
22e35d0edbSJorge Ramirez-Ortiz int plat_core_pos_by_mpidr(u_register_t mpidr)
23e35d0edbSJorge Ramirez-Ortiz {
24e35d0edbSJorge Ramirez-Ortiz 	if (mpidr & MPIDR_CLUSTER_MASK)
25e35d0edbSJorge Ramirez-Ortiz 		return -1;
26e35d0edbSJorge Ramirez-Ortiz 
27e35d0edbSJorge Ramirez-Ortiz 	if ((mpidr & MPIDR_CPU_MASK) >= PLATFORM_CORE_COUNT)
28e35d0edbSJorge Ramirez-Ortiz 		return -1;
29e35d0edbSJorge Ramirez-Ortiz 
30*0818e9e8SAntonio Nino Diaz 	return poplar_calc_core_pos(mpidr);
31e35d0edbSJorge Ramirez-Ortiz }
32