12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /** @file
- Copyright (c) 2017-2021, Arm Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
- System Control and Management Interface V1.0
- http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/
- DEN0056A_System_Control_and_Management_Interface.pdf
- **/
- #ifndef ARM_SCMI_PERFORMANCE_PROTOCOL_PRIVATE_H_
- #define ARM_SCMI_PERFORMANCE_PROTOCOL_PRIVATE_H_
- #include <Protocol/ArmScmiPerformanceProtocol.h>
- // Number of performance levels returned by a call to the SCP, Lvls Bits[11:0]
- #define NUM_PERF_LEVELS_MASK 0x0FFF
- #define NUM_PERF_LEVELS(Lvls) (Lvls & NUM_PERF_LEVELS_MASK)
- // Number of performance levels remaining after a call to the SCP, Lvls Bits[31:16]
- #define NUM_REMAIN_PERF_LEVELS_SHIFT 16
- #define NUM_REMAIN_PERF_LEVELS(Lvls) (Lvls >> NUM_REMAIN_PERF_LEVELS_SHIFT)
- /** Return values for ScmiMessageIdPerformanceDescribeLevels command.
- SCMI Spec section 4.5.2.5
- **/
- typedef struct {
- UINT32 NumLevels;
- // NOTE: Since EDK2 does not allow flexible array member [] we declare
- // here array of 1 element length. However below is used as a variable
- // length array.
- SCMI_PERFORMANCE_LEVEL PerfLevel[1]; // Offset to array of performance levels
- } PERF_DESCRIBE_LEVELS;
- /** Initialize performance management protocol and install on a given Handle.
- @param[in] Handle Handle to install performance management
- protocol.
- @retval EFI_SUCCESS Performance protocol installed successfully.
- **/
- EFI_STATUS
- ScmiPerformanceProtocolInit (
- IN EFI_HANDLE* Handle
- );
- #endif /* ARM_SCMI_PERFORMANCE_PROTOCOL_PRIVATE_H_ */
|