REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdePkg 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: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			310 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			310 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Serial IO protocol as defined in the UEFI 2.0 specification.
 | |
| 
 | |
|   Abstraction of a basic serial device. Targeted at 16550 UART, but
 | |
|   could be much more generic.
 | |
| 
 | |
|   Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef __SERIAL_IO_PROTOCOL_H__
 | |
| #define __SERIAL_IO_PROTOCOL_H__
 | |
| 
 | |
| #define EFI_SERIAL_IO_PROTOCOL_GUID \
 | |
|   { \
 | |
|     0xBB25CF6F, 0xF1D4, 0x11D2, {0x9A, 0x0C, 0x00, 0x90, 0x27, 0x3F, 0xC1, 0xFD } \
 | |
|   }
 | |
| 
 | |
| #define EFI_SERIAL_TERMINAL_DEVICE_TYPE_GUID \
 | |
|   { \
 | |
|     0X6AD9A60F, 0X5815, 0X4C7C, { 0X8A, 0X10, 0X50, 0X53, 0XD2, 0XBF, 0X7A, 0X1B } \
 | |
|   }
 | |
| 
 | |
| ///
 | |
| /// Protocol GUID defined in EFI1.1.
 | |
| ///
 | |
| #define SERIAL_IO_PROTOCOL  EFI_SERIAL_IO_PROTOCOL_GUID
 | |
| 
 | |
| typedef struct _EFI_SERIAL_IO_PROTOCOL EFI_SERIAL_IO_PROTOCOL;
 | |
| 
 | |
| ///
 | |
| /// Backward-compatible with EFI1.1.
 | |
| ///
 | |
| typedef EFI_SERIAL_IO_PROTOCOL SERIAL_IO_INTERFACE;
 | |
| 
 | |
| ///
 | |
| /// Parity type that is computed or checked as each character is transmitted or received. If the
 | |
| /// device does not support parity, the value is the default parity value.
 | |
| ///
 | |
| typedef enum {
 | |
|   DefaultParity,
 | |
|   NoParity,
 | |
|   EvenParity,
 | |
|   OddParity,
 | |
|   MarkParity,
 | |
|   SpaceParity
 | |
| } EFI_PARITY_TYPE;
 | |
| 
 | |
| ///
 | |
| /// Stop bits type
 | |
| ///
 | |
| typedef enum {
 | |
|   DefaultStopBits,
 | |
|   OneStopBit,
 | |
|   OneFiveStopBits,
 | |
|   TwoStopBits
 | |
| } EFI_STOP_BITS_TYPE;
 | |
| 
 | |
| //
 | |
| // define for Control bits, grouped by read only, write only, and read write
 | |
| //
 | |
| //
 | |
| // Read Only
 | |
| //
 | |
| #define EFI_SERIAL_CLEAR_TO_SEND        0x00000010
 | |
| #define EFI_SERIAL_DATA_SET_READY       0x00000020
 | |
| #define EFI_SERIAL_RING_INDICATE        0x00000040
 | |
| #define EFI_SERIAL_CARRIER_DETECT       0x00000080
 | |
| #define EFI_SERIAL_INPUT_BUFFER_EMPTY   0x00000100
 | |
| #define EFI_SERIAL_OUTPUT_BUFFER_EMPTY  0x00000200
 | |
| 
 | |
| //
 | |
| // Write Only
 | |
| //
 | |
| #define EFI_SERIAL_REQUEST_TO_SEND      0x00000002
 | |
| #define EFI_SERIAL_DATA_TERMINAL_READY  0x00000001
 | |
| 
 | |
| //
 | |
| // Read Write
 | |
| //
 | |
| #define EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE      0x00001000
 | |
| #define EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE      0x00002000
 | |
| #define EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE  0x00004000
 | |
| 
 | |
| //
 | |
| // Serial IO Member Functions
 | |
| //
 | |
| 
 | |
| /**
 | |
|   Reset the serial device.
 | |
| 
 | |
|   @param  This              Protocol instance pointer.
 | |
| 
 | |
|   @retval EFI_SUCCESS       The device was reset.
 | |
|   @retval EFI_DEVICE_ERROR  The serial device could not be reset.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_RESET)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL *This
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Sets the baud rate, receive FIFO depth, transmit/receice time out, parity,
 | |
|   data bits, and stop bits on a serial device.
 | |
| 
 | |
|   @param  This             Protocol instance pointer.
 | |
|   @param  BaudRate         The requested baud rate. A BaudRate value of 0 will use the
 | |
|                            device's default interface speed.
 | |
|   @param  ReveiveFifoDepth The requested depth of the FIFO on the receive side of the
 | |
|                            serial interface. A ReceiveFifoDepth value of 0 will use
 | |
|                            the device's default FIFO depth.
 | |
|   @param  Timeout          The requested time out for a single character in microseconds.
 | |
|                            This timeout applies to both the transmit and receive side of the
 | |
|                            interface. A Timeout value of 0 will use the device's default time
 | |
|                            out value.
 | |
|   @param  Parity           The type of parity to use on this serial device. A Parity value of
 | |
|                            DefaultParity will use the device's default parity value.
 | |
|   @param  DataBits         The number of data bits to use on the serial device. A DataBits
 | |
|                            vaule of 0 will use the device's default data bit setting.
 | |
|   @param  StopBits         The number of stop bits to use on this serial device. A StopBits
 | |
|                            value of DefaultStopBits will use the device's default number of
 | |
|                            stop bits.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The device was reset.
 | |
|   @retval EFI_INVALID_PARAMETER One or more attributes has an unsupported value.
 | |
|   @retval EFI_DEVICE_ERROR      The serial device is not functioning correctly.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_SET_ATTRIBUTES)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL         *This,
 | |
|   IN UINT64                         BaudRate,
 | |
|   IN UINT32                         ReceiveFifoDepth,
 | |
|   IN UINT32                         Timeout,
 | |
|   IN EFI_PARITY_TYPE                Parity,
 | |
|   IN UINT8                          DataBits,
 | |
|   IN EFI_STOP_BITS_TYPE             StopBits
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set the control bits on a serial device
 | |
| 
 | |
|   @param  This             Protocol instance pointer.
 | |
|   @param  Control          Set the bits of Control that are settable.
 | |
| 
 | |
|   @retval EFI_SUCCESS      The new control bits were set on the serial device.
 | |
|   @retval EFI_UNSUPPORTED  The serial device does not support this operation.
 | |
|   @retval EFI_DEVICE_ERROR The serial device is not functioning correctly.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_SET_CONTROL_BITS)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL         *This,
 | |
|   IN UINT32                         Control
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Retrieves the status of thecontrol bits on a serial device
 | |
| 
 | |
|   @param  This              Protocol instance pointer.
 | |
|   @param  Control           A pointer to return the current Control signals from the serial device.
 | |
| 
 | |
|   @retval EFI_SUCCESS       The control bits were read from the serial device.
 | |
|   @retval EFI_DEVICE_ERROR  The serial device is not functioning correctly.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_GET_CONTROL_BITS)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL         *This,
 | |
|   OUT UINT32                        *Control
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Writes data to a serial device.
 | |
| 
 | |
|   @param  This              Protocol instance pointer.
 | |
|   @param  BufferSize        On input, the size of the Buffer. On output, the amount of
 | |
|                             data actually written.
 | |
|   @param  Buffer            The buffer of data to write
 | |
| 
 | |
|   @retval EFI_SUCCESS       The data was written.
 | |
|   @retval EFI_DEVICE_ERROR  The device reported an error.
 | |
|   @retval EFI_TIMEOUT       The data write was stopped due to a timeout.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_WRITE)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL         *This,
 | |
|   IN OUT UINTN                      *BufferSize,
 | |
|   IN VOID                           *Buffer
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Writes data to a serial device.
 | |
| 
 | |
|   @param  This              Protocol instance pointer.
 | |
|   @param  BufferSize        On input, the size of the Buffer. On output, the amount of
 | |
|                             data returned in Buffer.
 | |
|   @param  Buffer            The buffer to return the data into.
 | |
| 
 | |
|   @retval EFI_SUCCESS       The data was read.
 | |
|   @retval EFI_DEVICE_ERROR  The device reported an error.
 | |
|   @retval EFI_TIMEOUT       The data write was stopped due to a timeout.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *EFI_SERIAL_READ)(
 | |
|   IN EFI_SERIAL_IO_PROTOCOL         *This,
 | |
|   IN OUT UINTN                      *BufferSize,
 | |
|   OUT VOID                          *Buffer
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   @par Data Structure Description:
 | |
|   The data values in SERIAL_IO_MODE are read-only and are updated by the code
 | |
|   that produces the SERIAL_IO_PROTOCOL member functions.
 | |
| 
 | |
|   @param ControlMask
 | |
|   A mask for the Control bits that the device supports. The device
 | |
|   must always support the Input Buffer Empty control bit.
 | |
| 
 | |
|   @param TimeOut
 | |
|   If applicable, the number of microseconds to wait before timing out
 | |
|   a Read or Write operation.
 | |
| 
 | |
|   @param BaudRate
 | |
|   If applicable, the current baud rate setting of the device; otherwise,
 | |
|   baud rate has the value of zero to indicate that device runs at the
 | |
|   device's designed speed.
 | |
| 
 | |
|   @param ReceiveFifoDepth
 | |
|   The number of characters the device will buffer on input
 | |
| 
 | |
|   @param DataBits
 | |
|   The number of characters the device will buffer on input
 | |
| 
 | |
|   @param Parity
 | |
|   If applicable, this is the EFI_PARITY_TYPE that is computed or
 | |
|   checked as each character is transmitted or reveived. If the device
 | |
|   does not support parity the value is the default parity value.
 | |
| 
 | |
|   @param StopBits
 | |
|   If applicable, the EFI_STOP_BITS_TYPE number of stop bits per
 | |
|   character. If the device does not support stop bits the value is
 | |
|   the default stop bit values.
 | |
| 
 | |
| **/
 | |
| typedef struct {
 | |
|   UINT32    ControlMask;
 | |
| 
 | |
|   //
 | |
|   // current Attributes
 | |
|   //
 | |
|   UINT32    Timeout;
 | |
|   UINT64    BaudRate;
 | |
|   UINT32    ReceiveFifoDepth;
 | |
|   UINT32    DataBits;
 | |
|   UINT32    Parity;
 | |
|   UINT32    StopBits;
 | |
| } EFI_SERIAL_IO_MODE;
 | |
| 
 | |
| #define EFI_SERIAL_IO_PROTOCOL_REVISION     0x00010000
 | |
| #define EFI_SERIAL_IO_PROTOCOL_REVISION1p1  0x00010001
 | |
| #define SERIAL_IO_INTERFACE_REVISION        EFI_SERIAL_IO_PROTOCOL_REVISION
 | |
| 
 | |
| ///
 | |
| /// The Serial I/O protocol is used to communicate with UART-style serial devices.
 | |
| /// These can be standard UART serial ports in PC-AT systems, serial ports attached
 | |
| /// to a USB interface, or potentially any character-based I/O device.
 | |
| ///
 | |
| struct _EFI_SERIAL_IO_PROTOCOL {
 | |
|   ///
 | |
|   /// The revision to which the EFI_SERIAL_IO_PROTOCOL adheres. All future revisions
 | |
|   /// must be backwards compatible. If a future version is not backwards compatible,
 | |
|   /// it is not the same GUID.
 | |
|   ///
 | |
|   UINT32                         Revision;
 | |
|   EFI_SERIAL_RESET               Reset;
 | |
|   EFI_SERIAL_SET_ATTRIBUTES      SetAttributes;
 | |
|   EFI_SERIAL_SET_CONTROL_BITS    SetControl;
 | |
|   EFI_SERIAL_GET_CONTROL_BITS    GetControl;
 | |
|   EFI_SERIAL_WRITE               Write;
 | |
|   EFI_SERIAL_READ                Read;
 | |
|   ///
 | |
|   /// Pointer to SERIAL_IO_MODE data.
 | |
|   ///
 | |
|   EFI_SERIAL_IO_MODE             *Mode;
 | |
|   ///
 | |
|   /// Pointer to a GUID identifying the device connected to the serial port.
 | |
|   /// This field is NULL when the protocol is installed by the serial port
 | |
|   /// driver and may be populated by a platform driver for a serial port
 | |
|   /// with a known device attached. The field will remain NULL if there is
 | |
|   /// no platform serial device identification information available.
 | |
|   ///
 | |
|   CONST EFI_GUID                 *DeviceTypeGuid; // Revision 1.1
 | |
| };
 | |
| 
 | |
| extern EFI_GUID  gEfiSerialIoProtocolGuid;
 | |
| extern EFI_GUID  gEfiSerialTerminalDeviceTypeGuid;
 | |
| 
 | |
| #endif
 |