/* * Copyright (c) 2021, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #ifndef MPMM_H #define MPMM_H #include #include /* * Enable the Maximum Power Mitigation Mechanism. * * This function will enable MPMM for the current core. The AMU counters * representing the MPMM gears must have been configured and enabled prior to * calling this function. */ void mpmm_enable(void); /* * MPMM core data. * * This structure represents per-core data retrieved from the hardware * configuration device tree. */ struct mpmm_core { /* * Whether MPMM is supported. * * Cores with support for MPMM offer one or more auxiliary AMU counters * representing MPMM gears. */ bool supported; }; /* * MPMM topology. * * This topology structure describes the system-wide representation of the * information retrieved from the hardware configuration device tree. */ struct mpmm_topology { struct mpmm_core cores[PLATFORM_CORE_COUNT]; /* Per-core data */ }; #if !ENABLE_MPMM_FCONF /* * Retrieve the platform's MPMM topology. A `NULL` return value is treated as a * non-fatal error, in which case MPMM will not be enabled for any core. */ const struct mpmm_topology *plat_mpmm_topology(void); #endif /* ENABLE_MPMM_FCONF */ #endif /* MPMM_H */