/* * Copyright 2024 NXP * * SPDX-License-Identifier: BSD-3-Clause */ #include #include const unsigned char *plat_get_power_domain_tree_desc(void) { static const unsigned char s32g_power_domain_tree_desc[] = { PLATFORM_SYSTEM_COUNT, PLATFORM_CLUSTER_COUNT, PLATFORM_CORE_COUNT / U(2), PLATFORM_CORE_COUNT / U(2), }; return s32g_power_domain_tree_desc; } int plat_core_pos_by_mpidr(u_register_t mpidr) { unsigned int cluster_id, cpu_id, core_id; u_register_t mpidr_priv = mpidr; mpidr_priv &= MPIDR_AFFINITY_MASK; if ((mpidr_priv & ~(MPIDR_CLUSTER_MASK | MPIDR_CPU_MASK)) != 0) { return -1; } cluster_id = MPIDR_AFFLVL1_VAL(mpidr_priv); cpu_id = MPIDR_AFFLVL0_VAL(mpidr_priv); if ((cluster_id >= PLATFORM_CLUSTER_COUNT) || (cpu_id >= PLATFORM_MAX_CPUS_PER_CLUSTER)) { return -1; } core_id = s32g2_core_pos_by_mpidr(mpidr_priv); if (core_id >= PLATFORM_CORE_COUNT) { return -1; } return (int)core_id; } unsigned int plat_get_syscnt_freq2(void) { return COUNTER_FREQUENCY; }