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