1*5bd9c17dSSaurabh Gorecha /* 2*5bd9c17dSSaurabh Gorecha * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved. 3*5bd9c17dSSaurabh Gorecha * Copyright (c) 2018,2020 The Linux Foundation. All rights reserved. 4*5bd9c17dSSaurabh Gorecha * 5*5bd9c17dSSaurabh Gorecha * SPDX-License-Identifier: BSD-3-Clause 6*5bd9c17dSSaurabh Gorecha */ 7*5bd9c17dSSaurabh Gorecha 8*5bd9c17dSSaurabh Gorecha #include <arch.h> 9*5bd9c17dSSaurabh Gorecha 10*5bd9c17dSSaurabh Gorecha #include <platform_def.h> 11*5bd9c17dSSaurabh Gorecha #include <qti_plat.h> 12*5bd9c17dSSaurabh Gorecha 13*5bd9c17dSSaurabh Gorecha /* The QTI power domain tree descriptor */ 14*5bd9c17dSSaurabh Gorecha const unsigned char qti_power_domain_tree_desc[] = { 15*5bd9c17dSSaurabh Gorecha /* One domain to represent PDC */ 16*5bd9c17dSSaurabh Gorecha PLAT_PDC_COUNT, 17*5bd9c17dSSaurabh Gorecha /* One domain to represent RSC */ 18*5bd9c17dSSaurabh Gorecha PLAT_RSC_COUNT, 19*5bd9c17dSSaurabh Gorecha /* There is one top-level FCM cluster */ 20*5bd9c17dSSaurabh Gorecha PLAT_CLUSTER_COUNT, 21*5bd9c17dSSaurabh Gorecha /* No. of cores in the FCM cluster */ 22*5bd9c17dSSaurabh Gorecha PLAT_CLUSTER0_CORE_COUNT 23*5bd9c17dSSaurabh Gorecha }; 24*5bd9c17dSSaurabh Gorecha 25*5bd9c17dSSaurabh Gorecha /******************************************************************************* 26*5bd9c17dSSaurabh Gorecha * This function returns the ARM default topology tree information. 27*5bd9c17dSSaurabh Gorecha ******************************************************************************/ plat_get_power_domain_tree_desc(void)28*5bd9c17dSSaurabh Gorechaconst unsigned char *plat_get_power_domain_tree_desc(void) 29*5bd9c17dSSaurabh Gorecha { 30*5bd9c17dSSaurabh Gorecha return qti_power_domain_tree_desc; 31*5bd9c17dSSaurabh Gorecha } 32*5bd9c17dSSaurabh Gorecha 33*5bd9c17dSSaurabh Gorecha /** Function: plat_core_pos_by_mpidr 34*5bd9c17dSSaurabh Gorecha * This function implements a part of the critical interface between the psci 35*5bd9c17dSSaurabh Gorecha * generic layer and the platform that allows the former to query the platform 36*5bd9c17dSSaurabh Gorecha * to convert an MPIDR to a unique linear index. An error code (-1) is returned 37*5bd9c17dSSaurabh Gorecha * in case the MPIDR is invalid. 38*5bd9c17dSSaurabh Gorecha */ plat_core_pos_by_mpidr(u_register_t mpidr)39*5bd9c17dSSaurabh Gorechaint plat_core_pos_by_mpidr(u_register_t mpidr) 40*5bd9c17dSSaurabh Gorecha { 41*5bd9c17dSSaurabh Gorecha int core_linear_index = plat_qti_core_pos_by_mpidr(mpidr); 42*5bd9c17dSSaurabh Gorecha 43*5bd9c17dSSaurabh Gorecha if (core_linear_index < PLATFORM_CORE_COUNT) { 44*5bd9c17dSSaurabh Gorecha return core_linear_index; 45*5bd9c17dSSaurabh Gorecha } else { 46*5bd9c17dSSaurabh Gorecha return -1; 47*5bd9c17dSSaurabh Gorecha } 48*5bd9c17dSSaurabh Gorecha } 49