1*54fd6939SJiyong Park /* 2*54fd6939SJiyong Park * Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved. 3*54fd6939SJiyong Park * 4*54fd6939SJiyong Park * SPDX-License-Identifier: BSD-3-Clause 5*54fd6939SJiyong Park */ 6*54fd6939SJiyong Park 7*54fd6939SJiyong Park #ifndef AMU_H 8*54fd6939SJiyong Park #define AMU_H 9*54fd6939SJiyong Park 10*54fd6939SJiyong Park #include <stdbool.h> 11*54fd6939SJiyong Park #include <stdint.h> 12*54fd6939SJiyong Park 13*54fd6939SJiyong Park #include <context.h> 14*54fd6939SJiyong Park 15*54fd6939SJiyong Park #include <platform_def.h> 16*54fd6939SJiyong Park 17*54fd6939SJiyong Park #if __aarch64__ 18*54fd6939SJiyong Park void amu_enable(bool el2_unused, cpu_context_t *ctx); 19*54fd6939SJiyong Park #else 20*54fd6939SJiyong Park void amu_enable(bool el2_unused); 21*54fd6939SJiyong Park #endif 22*54fd6939SJiyong Park 23*54fd6939SJiyong Park #if ENABLE_AMU_AUXILIARY_COUNTERS 24*54fd6939SJiyong Park /* 25*54fd6939SJiyong Park * AMU data for a single core. 26*54fd6939SJiyong Park */ 27*54fd6939SJiyong Park struct amu_core { 28*54fd6939SJiyong Park uint16_t enable; /* Mask of auxiliary counters to enable */ 29*54fd6939SJiyong Park }; 30*54fd6939SJiyong Park 31*54fd6939SJiyong Park /* 32*54fd6939SJiyong Park * Topological platform data specific to the AMU. 33*54fd6939SJiyong Park */ 34*54fd6939SJiyong Park struct amu_topology { 35*54fd6939SJiyong Park struct amu_core cores[PLATFORM_CORE_COUNT]; /* Per-core data */ 36*54fd6939SJiyong Park }; 37*54fd6939SJiyong Park 38*54fd6939SJiyong Park #if !ENABLE_AMU_FCONF 39*54fd6939SJiyong Park /* 40*54fd6939SJiyong Park * Retrieve the platform's AMU topology. A `NULL` return value is treated as a 41*54fd6939SJiyong Park * non-fatal error, in which case no auxiliary counters will be enabled. 42*54fd6939SJiyong Park */ 43*54fd6939SJiyong Park const struct amu_topology *plat_amu_topology(void); 44*54fd6939SJiyong Park #endif /* ENABLE_AMU_FCONF */ 45*54fd6939SJiyong Park #endif /* ENABLE_AMU_AUXILIARY_COUNTERS */ 46*54fd6939SJiyong Park 47*54fd6939SJiyong Park #endif /* AMU_H */ 48