#include <Guid/SerialPortLibVendor.h>\r
\r
typedef struct {\r
- VENDOR_DEVICE_PATH Guid;\r
- UART_DEVICE_PATH Uart;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
+ VENDOR_DEVICE_PATH Guid;\r
+ UART_DEVICE_PATH Uart;\r
+ EFI_DEVICE_PATH_PROTOCOL End;\r
} SERIAL_DEVICE_PATH;\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialReset (\r
- IN EFI_SERIAL_IO_PROTOCOL *This\r
+ IN EFI_SERIAL_IO_PROTOCOL *This\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialSetAttributes (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT64 BaudRate,\r
- IN UINT32 ReceiveFifoDepth,\r
- IN UINT32 Timeout,\r
- IN EFI_PARITY_TYPE Parity,\r
- IN UINT8 DataBits,\r
- IN EFI_STOP_BITS_TYPE StopBits\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN UINT64 BaudRate,\r
+ IN UINT32 ReceiveFifoDepth,\r
+ IN UINT32 Timeout,\r
+ IN EFI_PARITY_TYPE Parity,\r
+ IN UINT8 DataBits,\r
+ IN EFI_STOP_BITS_TYPE StopBits\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialSetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT32 Control\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN UINT32 Control\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialGetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- OUT UINT32 *Control\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ OUT UINT32 *Control\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialWrite (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SerialRead (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
);\r
\r
-EFI_HANDLE mSerialHandle = NULL;\r
+EFI_HANDLE mSerialHandle = NULL;\r
\r
-SERIAL_DEVICE_PATH mSerialDevicePath = {\r
+SERIAL_DEVICE_PATH mSerialDevicePath = {\r
{\r
- { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { sizeof (VENDOR_DEVICE_PATH), 0} },\r
+ { HARDWARE_DEVICE_PATH, HW_VENDOR_DP, { sizeof (VENDOR_DEVICE_PATH), 0 }\r
+ },\r
EDKII_SERIAL_PORT_LIB_VENDOR_GUID\r
},\r
{\r
- { MESSAGING_DEVICE_PATH, MSG_UART_DP, { sizeof (UART_DEVICE_PATH), 0} },\r
+ { MESSAGING_DEVICE_PATH, MSG_UART_DP, { sizeof (UART_DEVICE_PATH), 0 }\r
+ },\r
0, // Reserved\r
0, // BaudRate\r
0, // DataBits\r
0, // Parity\r
0 // StopBits\r
},\r
- { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 } }\r
+ { END_DEVICE_PATH_TYPE, END_ENTIRE_DEVICE_PATH_SUBTYPE, { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 }\r
+ }\r
};\r
\r
//\r
// Template used to initialize the Serial IO protocols.\r
//\r
-EFI_SERIAL_IO_MODE mSerialIoMode = {\r
+EFI_SERIAL_IO_MODE mSerialIoMode = {\r
//\r
// value field set in SerialDxeInitialize()?\r
- //--------- ------------------- -----------------------------\r
- 0, // ControlMask\r
+ // --------- ------------------- -----------------------------\r
+ 0, // ControlMask\r
1000 * 1000, // Timeout\r
- 0, // BaudRate yes\r
- 1, // ReceiveFifoDepth\r
- 0, // DataBits yes\r
- 0, // Parity yes\r
- 0 // StopBits yes\r
+ 0, // BaudRate yes\r
+ 1, // ReceiveFifoDepth\r
+ 0, // DataBits yes\r
+ 0, // Parity yes\r
+ 0 // StopBits yes\r
};\r
\r
-EFI_SERIAL_IO_PROTOCOL mSerialIoTemplate = {\r
+EFI_SERIAL_IO_PROTOCOL mSerialIoTemplate = {\r
SERIAL_IO_INTERFACE_REVISION,\r
SerialReset,\r
SerialSetAttributes,\r
EFI_STATUS\r
EFIAPI\r
SerialReset (\r
- IN EFI_SERIAL_IO_PROTOCOL *This\r
+ IN EFI_SERIAL_IO_PROTOCOL *This\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
Status = SerialPortInitialize ();\r
if (EFI_ERROR (Status)) {\r
This->Mode->BaudRate,\r
This->Mode->ReceiveFifoDepth,\r
This->Mode->Timeout,\r
- (EFI_PARITY_TYPE) This->Mode->Parity,\r
- (UINT8) This->Mode->DataBits,\r
- (EFI_STOP_BITS_TYPE) This->Mode->StopBits\r
+ (EFI_PARITY_TYPE)This->Mode->Parity,\r
+ (UINT8)This->Mode->DataBits,\r
+ (EFI_STOP_BITS_TYPE)This->Mode->StopBits\r
);\r
\r
//\r
EFI_STATUS\r
EFIAPI\r
SerialSetAttributes (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT64 BaudRate,\r
- IN UINT32 ReceiveFifoDepth,\r
- IN UINT32 Timeout,\r
- IN EFI_PARITY_TYPE Parity,\r
- IN UINT8 DataBits,\r
- IN EFI_STOP_BITS_TYPE StopBits\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN UINT64 BaudRate,\r
+ IN UINT32 ReceiveFifoDepth,\r
+ IN UINT32 Timeout,\r
+ IN EFI_PARITY_TYPE Parity,\r
+ IN UINT8 DataBits,\r
+ IN EFI_STOP_BITS_TYPE StopBits\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_TPL Tpl;\r
- UINT64 OriginalBaudRate;\r
- UINT32 OriginalReceiveFifoDepth;\r
- UINT32 OriginalTimeout;\r
- EFI_PARITY_TYPE OriginalParity;\r
- UINT8 OriginalDataBits;\r
- EFI_STOP_BITS_TYPE OriginalStopBits;\r
+ EFI_STATUS Status;\r
+ EFI_TPL Tpl;\r
+ UINT64 OriginalBaudRate;\r
+ UINT32 OriginalReceiveFifoDepth;\r
+ UINT32 OriginalTimeout;\r
+ EFI_PARITY_TYPE OriginalParity;\r
+ UINT8 OriginalDataBits;\r
+ EFI_STOP_BITS_TYPE OriginalStopBits;\r
\r
//\r
// Preserve the original input values in case\r
// SerialPortSetAttributes() updates the input/output\r
// parameters even on error.\r
//\r
- OriginalBaudRate = BaudRate;\r
+ OriginalBaudRate = BaudRate;\r
OriginalReceiveFifoDepth = ReceiveFifoDepth;\r
- OriginalTimeout = Timeout;\r
- OriginalParity = Parity;\r
- OriginalDataBits = DataBits;\r
- OriginalStopBits = StopBits;\r
- Status = SerialPortSetAttributes (&BaudRate, &ReceiveFifoDepth, &Timeout, &Parity, &DataBits, &StopBits);\r
+ OriginalTimeout = Timeout;\r
+ OriginalParity = Parity;\r
+ OriginalDataBits = DataBits;\r
+ OriginalStopBits = StopBits;\r
+ Status = SerialPortSetAttributes (&BaudRate, &ReceiveFifoDepth, &Timeout, &Parity, &DataBits, &StopBits);\r
if (EFI_ERROR (Status)) {\r
//\r
// If it is just to set Timeout value and unsupported is returned,\r
(This->Mode->Timeout != OriginalTimeout) &&\r
(This->Mode->ReceiveFifoDepth == OriginalReceiveFifoDepth) &&\r
(This->Mode->BaudRate == OriginalBaudRate) &&\r
- (This->Mode->DataBits == (UINT32) OriginalDataBits) &&\r
- (This->Mode->Parity == (UINT32) OriginalParity) &&\r
- (This->Mode->StopBits == (UINT32) OriginalStopBits)) {\r
+ (This->Mode->DataBits == (UINT32)OriginalDataBits) &&\r
+ (This->Mode->Parity == (UINT32)OriginalParity) &&\r
+ (This->Mode->StopBits == (UINT32)OriginalStopBits))\r
+ {\r
//\r
// Restore to the original input values.\r
//\r
- BaudRate = OriginalBaudRate;\r
+ BaudRate = OriginalBaudRate;\r
ReceiveFifoDepth = OriginalReceiveFifoDepth;\r
- Timeout = OriginalTimeout;\r
- Parity = OriginalParity;\r
- DataBits = OriginalDataBits;\r
- StopBits = OriginalStopBits;\r
- Status = EFI_SUCCESS;\r
- } else if (Status == EFI_INVALID_PARAMETER || Status == EFI_UNSUPPORTED) {\r
+ Timeout = OriginalTimeout;\r
+ Parity = OriginalParity;\r
+ DataBits = OriginalDataBits;\r
+ StopBits = OriginalStopBits;\r
+ Status = EFI_SUCCESS;\r
+ } else if ((Status == EFI_INVALID_PARAMETER) || (Status == EFI_UNSUPPORTED)) {\r
return EFI_INVALID_PARAMETER;\r
} else {\r
return EFI_DEVICE_ERROR;\r
//\r
// Set the Serial I/O mode\r
//\r
- This->Mode->ReceiveFifoDepth = ReceiveFifoDepth;\r
- This->Mode->Timeout = Timeout;\r
- This->Mode->BaudRate = BaudRate;\r
- This->Mode->DataBits = (UINT32) DataBits;\r
- This->Mode->Parity = (UINT32) Parity;\r
- This->Mode->StopBits = (UINT32) StopBits;\r
+ This->Mode->ReceiveFifoDepth = ReceiveFifoDepth;\r
+ This->Mode->Timeout = Timeout;\r
+ This->Mode->BaudRate = BaudRate;\r
+ This->Mode->DataBits = (UINT32)DataBits;\r
+ This->Mode->Parity = (UINT32)Parity;\r
+ This->Mode->StopBits = (UINT32)StopBits;\r
\r
//\r
// Check if the device path has actually changed\r
//\r
- if (mSerialDevicePath.Uart.BaudRate == BaudRate &&\r
- mSerialDevicePath.Uart.DataBits == DataBits &&\r
- mSerialDevicePath.Uart.Parity == (UINT8) Parity &&\r
- mSerialDevicePath.Uart.StopBits == (UINT8) StopBits\r
- ) {\r
+ if ((mSerialDevicePath.Uart.BaudRate == BaudRate) &&\r
+ (mSerialDevicePath.Uart.DataBits == DataBits) &&\r
+ (mSerialDevicePath.Uart.Parity == (UINT8)Parity) &&\r
+ (mSerialDevicePath.Uart.StopBits == (UINT8)StopBits)\r
+ )\r
+ {\r
gBS->RestoreTPL (Tpl);\r
return EFI_SUCCESS;\r
}\r
//\r
mSerialDevicePath.Uart.BaudRate = BaudRate;\r
mSerialDevicePath.Uart.DataBits = DataBits;\r
- mSerialDevicePath.Uart.Parity = (UINT8) Parity;\r
- mSerialDevicePath.Uart.StopBits = (UINT8) StopBits;\r
+ mSerialDevicePath.Uart.Parity = (UINT8)Parity;\r
+ mSerialDevicePath.Uart.StopBits = (UINT8)StopBits;\r
\r
Status = gBS->ReinstallProtocolInterface (\r
mSerialHandle,\r
EFI_STATUS\r
EFIAPI\r
SerialSetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN UINT32 Control\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN UINT32 Control\r
)\r
{\r
return SerialPortSetControl (Control);\r
EFI_STATUS\r
EFIAPI\r
SerialGetControl (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- OUT UINT32 *Control\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ OUT UINT32 *Control\r
)\r
{\r
return SerialPortGetControl (Control);\r
EFI_STATUS\r
EFIAPI\r
SerialWrite (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- IN VOID *Buffer\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ IN VOID *Buffer\r
)\r
{\r
- UINTN Count;\r
+ UINTN Count;\r
\r
Count = SerialPortWrite (Buffer, *BufferSize);\r
\r
EFI_STATUS\r
EFIAPI\r
SerialRead (\r
- IN EFI_SERIAL_IO_PROTOCOL *This,\r
- IN OUT UINTN *BufferSize,\r
- OUT VOID *Buffer\r
+ IN EFI_SERIAL_IO_PROTOCOL *This,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT VOID *Buffer\r
)\r
{\r
- UINTN Count;\r
- UINTN TimeOut;\r
+ UINTN Count;\r
+ UINTN TimeOut;\r
\r
Count = 0;\r
\r
if (SerialPortPoll ()) {\r
break;\r
}\r
+\r
gBS->Stall (10);\r
TimeOut += 10;\r
}\r
+\r
if (TimeOut >= mSerialIoMode.Timeout) {\r
break;\r
}\r
+\r
SerialPortRead (Buffer, 1);\r
Count++;\r
- Buffer = (VOID *) ((UINT8 *) Buffer + 1);\r
+ Buffer = (VOID *)((UINT8 *)Buffer + 1);\r
}\r
\r
if (Count != *BufferSize) {\r
EFI_STATUS\r
EFIAPI\r
SerialDxeInitialize (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- mSerialIoMode.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
- mSerialIoMode.DataBits = (UINT32) PcdGet8 (PcdUartDefaultDataBits);\r
- mSerialIoMode.Parity = (UINT32) PcdGet8 (PcdUartDefaultParity);\r
- mSerialIoMode.StopBits = (UINT32) PcdGet8 (PcdUartDefaultStopBits);\r
- mSerialIoMode.ReceiveFifoDepth = PcdGet16 (PcdUartDefaultReceiveFifoDepth);\r
+ mSerialIoMode.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
+ mSerialIoMode.DataBits = (UINT32)PcdGet8 (PcdUartDefaultDataBits);\r
+ mSerialIoMode.Parity = (UINT32)PcdGet8 (PcdUartDefaultParity);\r
+ mSerialIoMode.StopBits = (UINT32)PcdGet8 (PcdUartDefaultStopBits);\r
+ mSerialIoMode.ReceiveFifoDepth = PcdGet16 (PcdUartDefaultReceiveFifoDepth);\r
mSerialDevicePath.Uart.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
mSerialDevicePath.Uart.DataBits = PcdGet8 (PcdUartDefaultDataBits);\r
mSerialDevicePath.Uart.Parity = PcdGet8 (PcdUartDefaultParity);\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
&mSerialHandle,\r
- &gEfiSerialIoProtocolGuid, &mSerialIoTemplate,\r
- &gEfiDevicePathProtocolGuid, &mSerialDevicePath,\r
+ &gEfiSerialIoProtocolGuid,\r
+ &mSerialIoTemplate,\r
+ &gEfiDevicePathProtocolGuid,\r
+ &mSerialDevicePath,\r
NULL\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r
}\r
-\r