mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 07:17:27 +00:00 
			
		
		
		
	 429309e0c6
			
		
	
	
		429309e0c6
		
	
	
	
	
		
			
			REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the ArmPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Andrew Fish <afish@apple.com>
		
			
				
	
	
		
			170 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|   Copyright (c) 2017-2021, Arm Limited. All rights reserved.<BR>
 | |
| 
 | |
|   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 SCMI_PRIVATE_H_
 | |
| #define SCMI_PRIVATE_H_
 | |
| 
 | |
| // SCMI protocol IDs.
 | |
| typedef enum {
 | |
|   ScmiProtocolIdBase        = 0x10,
 | |
|   ScmiProtocolIdPowerDomain = 0x11,
 | |
|   ScmiProtocolIdSystemPower = 0x12,
 | |
|   ScmiProtocolIdPerformance = 0x13,
 | |
|   ScmiProtocolIdClock       = 0x14,
 | |
|   ScmiProtocolIdSensor      = 0x15
 | |
| } SCMI_PROTOCOL_ID;
 | |
| 
 | |
| // SCMI message types.
 | |
| typedef enum {
 | |
|   ScmiMessageTypeCommand         = 0,
 | |
|   ScmiMessageTypeDelayedResponse = 2, // Skipping 1 is deliberate.
 | |
|   ScmiMessageTypeNotification    = 3
 | |
| } SCMI_MESSAGE_TYPE;
 | |
| 
 | |
| // SCMI response error codes.
 | |
| typedef enum {
 | |
|   ScmiSuccess           =  0,
 | |
|   ScmiNotSupported      = -1,
 | |
|   ScmiInvalidParameters = -2,
 | |
|   ScmiDenied            = -3,
 | |
|   ScmiNotFound          = -4,
 | |
|   ScmiOutOfRange        = -5,
 | |
|   ScmiBusy              = -6,
 | |
|   ScmiCommsError        = -7,
 | |
|   ScmiGenericError      = -8,
 | |
|   ScmiHardwareError     = -9,
 | |
|   ScmiProtocolError     = -10
 | |
| } SCMI_STATUS;
 | |
| 
 | |
| // SCMI message IDs common to all protocols.
 | |
| typedef enum {
 | |
|   ScmiMessageIdProtocolVersion           = 0x0,
 | |
|   ScmiMessageIdProtocolAttributes        = 0x1,
 | |
|   ScmiMessageIdProtocolMessageAttributes = 0x2
 | |
| } SCMI_MESSAGE_ID;
 | |
| 
 | |
| // Not defined in SCMI specification but will help to identify a message.
 | |
| typedef struct {
 | |
|   SCMI_PROTOCOL_ID    ProtocolId;
 | |
|   UINT32              MessageId;
 | |
| } SCMI_COMMAND;
 | |
| 
 | |
| #pragma pack(1)
 | |
| 
 | |
| // Response to a SCMI command.
 | |
| typedef struct {
 | |
|   INT32     Status;
 | |
|   UINT32    ReturnValues[];
 | |
| } SCMI_MESSAGE_RESPONSE;
 | |
| 
 | |
| // Message header. MsgId[7:0], MsgType[9:8], ProtocolId[17:10]
 | |
| #define MESSAGE_TYPE_SHIFT  8
 | |
| #define PROTOCOL_ID_SHIFT   10
 | |
| #define SCMI_MESSAGE_HEADER(MsgId, MsgType, ProtocolId)  (           \
 | |
|                             MsgType << MESSAGE_TYPE_SHIFT   |        \
 | |
|                             ProtocolId << PROTOCOL_ID_SHIFT |        \
 | |
|                             MsgId                                    \
 | |
|                             )
 | |
| // SCMI message header.
 | |
| typedef struct {
 | |
|   UINT32    MessageHeader;
 | |
| } SCMI_MESSAGE_HEADER;
 | |
| 
 | |
| #pragma pack()
 | |
| 
 | |
| /** Return a pointer to the message payload.
 | |
| 
 | |
|   @param[out] Payload         Holds pointer to the message payload.
 | |
| 
 | |
|   @retval EFI_SUCCESS         Payload holds a valid message payload pointer.
 | |
|   @retval EFI_TIMEOUT         Time out error if MTL channel is busy.
 | |
|   @retval EFI_UNSUPPORTED     If MTL channel is unsupported.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ScmiCommandGetPayload (
 | |
|   OUT UINT32  **Payload
 | |
|   );
 | |
| 
 | |
| /** Execute a SCMI command and receive a response.
 | |
| 
 | |
|   This function uses a MTL channel to transfer message to SCP
 | |
|   and waits for a response.
 | |
| 
 | |
|   @param[in]   Command      Pointer to the SCMI command (Protocol ID
 | |
|                             and Message ID)
 | |
| 
 | |
|   @param[in,out] PayloadLength   SCMI command message length.
 | |
| 
 | |
|   @param[out] OPTIONAL  ReturnValues   Pointer to SCMI response.
 | |
| 
 | |
|   @retval OUT EFI_SUCCESS       Command sent and message received successfully.
 | |
|   @retval OUT EFI_UNSUPPORTED   Channel not supported.
 | |
|   @retval OUT EFI_TIMEOUT       Timeout on the channel.
 | |
|   @retval OUT EFI_DEVICE_ERROR  Channel not ready.
 | |
|   @retval OUT EFI_DEVICE_ERROR  Message Header corrupted.
 | |
|   @retval OUT EFI_DEVICE_ERROR  SCMI error.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ScmiCommandExecute (
 | |
|   IN     SCMI_COMMAND  *Command,
 | |
|   IN OUT UINT32        *PayloadLength,
 | |
|   OUT    UINT32        **ReturnValues OPTIONAL
 | |
|   );
 | |
| 
 | |
| /** Return protocol version from SCP for a given protocol ID.
 | |
| 
 | |
|   @param[in]  Protocol ID    Protocol ID.
 | |
|   @param[out] Version        Pointer to version of the protocol.
 | |
| 
 | |
|   @retval EFI_SUCCESS       Version holds a valid version received
 | |
|                              from the SCP.
 | |
|   @retval EFI_DEVICE_ERROR  SCMI error.
 | |
|   @retval !(EFI_SUCCESS)    Other errors.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ScmiGetProtocolVersion (
 | |
|   IN  SCMI_PROTOCOL_ID  ProtocolId,
 | |
|   OUT UINT32            *Version
 | |
|   );
 | |
| 
 | |
| /** Return protocol attributes from SCP for a given protocol ID.
 | |
| 
 | |
|   @param[in]  Protocol ID    Protocol ID.
 | |
|   @param[out] ReturnValues   Pointer to attributes of the protocol.
 | |
| 
 | |
|   @retval EFI_SUCCESS       ReturnValues points to protocol attributes.
 | |
|   @retval EFI_DEVICE_ERROR  SCMI error.
 | |
|   @retval !(EFI_SUCCESS)    Other errors.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ScmiGetProtocolAttributes (
 | |
|   IN  SCMI_PROTOCOL_ID  ProtocolId,
 | |
|   OUT UINT32            **ReturnValues
 | |
|   );
 | |
| 
 | |
| /** Return protocol message attributes from SCP for a given protocol ID.
 | |
| 
 | |
|   @param[in]  Protocol ID    Protocol ID.
 | |
| 
 | |
|   @param[out] Attributes     Pointer to attributes of the protocol.
 | |
| 
 | |
|   @retval EFI_SUCCESS       ReturnValues points to protocol message attributes.
 | |
|   @retval EFI_DEVICE_ERROR  SCMI error.
 | |
|   @retval !(EFI_SUCCESS)    Other errors.
 | |
| **/
 | |
| EFI_STATUS
 | |
| ScmiGetProtocolMessageAttributes (
 | |
|   IN  SCMI_PROTOCOL_ID  ProtocolId,
 | |
|   OUT UINT32            **ReturnValues
 | |
|   );
 | |
| 
 | |
| #endif /* SCMI_PRIVATE_H_ */
 |