1*b45b5bacSMarek Vasut /* 2*b45b5bacSMarek Vasut * Copyright (c) 2021-2025, Renesas Electronics Corporation. All rights reserved. 3*b45b5bacSMarek Vasut * 4*b45b5bacSMarek Vasut * SPDX-License-Identifier: BSD-3-Clause 5*b45b5bacSMarek Vasut */ 6*b45b5bacSMarek Vasut 7*b45b5bacSMarek Vasut #include <common/debug.h> 8*b45b5bacSMarek Vasut #include <lib/psci/psci.h> 9*b45b5bacSMarek Vasut #include <plat_helpers.h> 10*b45b5bacSMarek Vasut #include <platform_def.h> 11*b45b5bacSMarek Vasut 12*b45b5bacSMarek Vasut #include "rcar_private.h" 13*b45b5bacSMarek Vasut plat_get_power_domain_tree_desc(void)14*b45b5bacSMarek Vasutconst unsigned char *plat_get_power_domain_tree_desc(void) 15*b45b5bacSMarek Vasut { 16*b45b5bacSMarek Vasut static const unsigned char rcar_power_domain_tree_desc[] = { 17*b45b5bacSMarek Vasut 1, 18*b45b5bacSMarek Vasut PLATFORM_CLUSTER_COUNT, 19*b45b5bacSMarek Vasut PLATFORM_CLUSTER0_CORE_COUNT, 20*b45b5bacSMarek Vasut PLATFORM_CLUSTER1_CORE_COUNT, 21*b45b5bacSMarek Vasut PLATFORM_CLUSTER2_CORE_COUNT, 22*b45b5bacSMarek Vasut PLATFORM_CLUSTER3_CORE_COUNT 23*b45b5bacSMarek Vasut }; 24*b45b5bacSMarek Vasut 25*b45b5bacSMarek Vasut return rcar_power_domain_tree_desc; 26*b45b5bacSMarek Vasut } 27*b45b5bacSMarek Vasut plat_core_pos_by_mpidr(u_register_t mpidr)28*b45b5bacSMarek Vasutint plat_core_pos_by_mpidr(u_register_t mpidr) 29*b45b5bacSMarek Vasut { 30*b45b5bacSMarek Vasut u_register_t cpu; 31*b45b5bacSMarek Vasut 32*b45b5bacSMarek Vasut /* ARMv8.2 arch */ 33*b45b5bacSMarek Vasut if ((mpidr & (MPIDR_AFFLVL_MASK << MPIDR_AFF0_SHIFT)) != 0) 34*b45b5bacSMarek Vasut return -1; 35*b45b5bacSMarek Vasut 36*b45b5bacSMarek Vasut cpu = plat_renesas_calc_core_pos(mpidr); 37*b45b5bacSMarek Vasut if (cpu >= PLATFORM_CORE_COUNT) 38*b45b5bacSMarek Vasut return -1; 39*b45b5bacSMarek Vasut 40*b45b5bacSMarek Vasut return (int)cpu; 41*b45b5bacSMarek Vasut } 42*b45b5bacSMarek Vasut rcar_cluster_pos_by_mpidr(u_register_t mpidr)43*b45b5bacSMarek Vasutint32_t rcar_cluster_pos_by_mpidr(u_register_t mpidr) 44*b45b5bacSMarek Vasut { 45*b45b5bacSMarek Vasut u_register_t cluster; 46*b45b5bacSMarek Vasut 47*b45b5bacSMarek Vasut /* ARMv8.2 arch */ 48*b45b5bacSMarek Vasut if ((mpidr & (MPIDR_AFFLVL_MASK << MPIDR_AFF0_SHIFT)) != 0) 49*b45b5bacSMarek Vasut return -1; 50*b45b5bacSMarek Vasut 51*b45b5bacSMarek Vasut cluster = MPIDR_AFFLVL2_VAL(mpidr); 52*b45b5bacSMarek Vasut if (cluster >= PLATFORM_CLUSTER_COUNT) 53*b45b5bacSMarek Vasut return -1; 54*b45b5bacSMarek Vasut 55*b45b5bacSMarek Vasut return (int32_t)cluster; 56*b45b5bacSMarek Vasut } 57