1*dddba19aSStephan Gerhold /* 2*dddba19aSStephan Gerhold * Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved. 3*dddba19aSStephan Gerhold * 4*dddba19aSStephan Gerhold * SPDX-License-Identifier: BSD-3-Clause 5*dddba19aSStephan Gerhold */ 6*dddba19aSStephan Gerhold 7*dddba19aSStephan Gerhold #include <arch.h> 8*dddba19aSStephan Gerhold #include <plat/common/platform.h> 9*dddba19aSStephan Gerhold 10*dddba19aSStephan Gerhold #include <platform_def.h> 11*dddba19aSStephan Gerhold 12*dddba19aSStephan Gerhold static const unsigned char plat_power_domain_tree_desc[PLAT_MAX_PWR_LVL + 1] = { 13*dddba19aSStephan Gerhold PLATFORM_SYSTEM_COUNT, 14*dddba19aSStephan Gerhold PLATFORM_CLUSTER_COUNT, 15*dddba19aSStephan Gerhold PLATFORM_MAX_CPUS_PER_CLUSTER, 16*dddba19aSStephan Gerhold }; 17*dddba19aSStephan Gerhold 18*dddba19aSStephan Gerhold int plat_core_pos_by_mpidr(u_register_t mpidr) 19*dddba19aSStephan Gerhold { 20*dddba19aSStephan Gerhold unsigned int core = MPIDR_AFFLVL0_VAL(mpidr); 21*dddba19aSStephan Gerhold 22*dddba19aSStephan Gerhold if (MPIDR_AFFLVL3_VAL(mpidr) > 0 || 23*dddba19aSStephan Gerhold MPIDR_AFFLVL2_VAL(mpidr) > 0 || 24*dddba19aSStephan Gerhold MPIDR_AFFLVL1_VAL(mpidr) > 0 || 25*dddba19aSStephan Gerhold core >= PLATFORM_MAX_CPUS_PER_CLUSTER) { 26*dddba19aSStephan Gerhold return -1; 27*dddba19aSStephan Gerhold } 28*dddba19aSStephan Gerhold 29*dddba19aSStephan Gerhold return core; 30*dddba19aSStephan Gerhold } 31*dddba19aSStephan Gerhold 32*dddba19aSStephan Gerhold const unsigned char *plat_get_power_domain_tree_desc(void) 33*dddba19aSStephan Gerhold { 34*dddba19aSStephan Gerhold return plat_power_domain_tree_desc; 35*dddba19aSStephan Gerhold } 36