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>
		
			
				
	
	
		
			131 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|   Copyright (c) 2017-2018, 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_MTL_LIB_H_
 | |
| #define ARM_MTL_LIB_H_
 | |
| 
 | |
| #include <Uefi/UefiBaseType.h>
 | |
| 
 | |
| // Ideally we don't need packed struct. However we can't rely on compilers.
 | |
| #pragma pack(1)
 | |
| 
 | |
| typedef struct {
 | |
|   UINT32    Reserved1;
 | |
|   UINT32    ChannelStatus;
 | |
|   UINT64    Reserved2;
 | |
|   UINT32    Flags;
 | |
|   UINT32    Length;
 | |
|   UINT32    MessageHeader;
 | |
| 
 | |
|   // 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.
 | |
|   UINT32    Payload[1]; // size less object gives offset to payload.
 | |
| } MTL_MAILBOX;
 | |
| 
 | |
| #pragma pack()
 | |
| 
 | |
| // Channel Type, Low-priority, and High-priority
 | |
| typedef enum {
 | |
|   MTL_CHANNEL_TYPE_LOW  = 0,
 | |
|   MTL_CHANNEL_TYPE_HIGH = 1
 | |
| } MTL_CHANNEL_TYPE;
 | |
| 
 | |
| typedef struct {
 | |
|   UINT64    PhysicalAddress;
 | |
|   UINT32    ModifyMask;
 | |
|   UINT32    PreserveMask;
 | |
| } MTL_DOORBELL;
 | |
| 
 | |
| typedef struct {
 | |
|   MTL_CHANNEL_TYPE           ChannelType;
 | |
|   MTL_MAILBOX      *CONST    MailBox;
 | |
|   MTL_DOORBELL               DoorBell;
 | |
| } MTL_CHANNEL;
 | |
| 
 | |
| /** Wait until channel is free.
 | |
| 
 | |
|   @param[in] Channel                Pointer to a channel.
 | |
|   @param[in] TimeOutInMicroSeconds  Time out in micro seconds.
 | |
| 
 | |
|   @retval EFI_SUCCESS               Channel is free.
 | |
|   @retval EFI_TIMEOUT               Time out error.
 | |
| **/
 | |
| EFI_STATUS
 | |
| MtlWaitUntilChannelFree (
 | |
|   IN MTL_CHANNEL  *Channel,
 | |
|   IN UINTN        TimeOutInMicroSeconds
 | |
|   );
 | |
| 
 | |
| /** Return the address of the message payload.
 | |
| 
 | |
|   @param[in] Channel   Pointer to a channel.
 | |
| 
 | |
|   @retval UINT32*      Pointer to the payload.
 | |
| **/
 | |
| UINT32 *
 | |
| MtlGetChannelPayload (
 | |
|   IN MTL_CHANNEL  *Channel
 | |
|   );
 | |
| 
 | |
| /** Return pointer to a channel for the requested channel type.
 | |
| 
 | |
|   @param[in] ChannelType        ChannelType, Low or High priority channel.
 | |
|                                 MTL_CHANNEL_TYPE_LOW or
 | |
|                                 MTL_CHANNEL_TYPE_HIGH
 | |
| 
 | |
|   @param[out] Channel           Holds pointer to the channel.
 | |
| 
 | |
|   @retval EFI_SUCCESS           Pointer to channel is returned.
 | |
|   @retval EFI_UNSUPPORTED       Requested channel type not supported.
 | |
| **/
 | |
| EFI_STATUS
 | |
| MtlGetChannel (
 | |
|   IN  MTL_CHANNEL_TYPE  ChannelType,
 | |
|   OUT MTL_CHANNEL       **Channel
 | |
|   );
 | |
| 
 | |
| /** Mark the channel busy and ring the doorbell.
 | |
| 
 | |
|   @param[in] Channel               Pointer to a channel.
 | |
|   @param[in] MessageHeader         Message header.
 | |
| 
 | |
|   @param[out] PayloadLength        Message length.
 | |
| 
 | |
|   @retval EFI_SUCCESS              Message sent successfully.
 | |
|   @retval EFI_DEVICE_ERROR         Channel is busy.
 | |
| **/
 | |
| EFI_STATUS
 | |
| MtlSendMessage (
 | |
|   IN  MTL_CHANNEL  *Channel,
 | |
|   IN  UINT32       MessageHeader,
 | |
|   OUT UINT32       PayloadLength
 | |
|   );
 | |
| 
 | |
| /** Wait for a response on a channel.
 | |
| 
 | |
|   If channel is free after sending message, it implies SCP responded
 | |
|   with a response on the channel.
 | |
| 
 | |
|   @param[in] Channel               Pointer to a channel.
 | |
| 
 | |
|   @retval EFI_SUCCESS              Message received successfully.
 | |
|   @retval EFI_TIMEOUT              Time out error.
 | |
| **/
 | |
| EFI_STATUS
 | |
| MtlReceiveMessage (
 | |
|   IN  MTL_CHANNEL  *Channel,
 | |
|   OUT UINT32       *MessageHeader,
 | |
|   OUT UINT32       *PayloadLength
 | |
|   );
 | |
| 
 | |
| #endif /* ARM_MTL_LIB_H_ */
 |