**/\r
UART_DEVICE_PATH *\r
SkipControllerDevicePathNode (\r
- EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
- BOOLEAN *ContainsControllerNode,\r
- UINT32 *ControllerNumber\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath,\r
+ BOOLEAN *ContainsControllerNode,\r
+ UINT32 *ControllerNumber\r
)\r
{\r
if ((DevicePathType (DevicePath) == HARDWARE_DEVICE_PATH) &&\r
(DevicePathSubType (DevicePath) == HW_CONTROLLER_DP)\r
- ) {\r
+ )\r
+ {\r
if (ContainsControllerNode != NULL) {\r
*ContainsControllerNode = TRUE;\r
}\r
+\r
if (ControllerNumber != NULL) {\r
- *ControllerNumber = ((CONTROLLER_DEVICE_PATH *) DevicePath)->ControllerNumber;\r
+ *ControllerNumber = ((CONTROLLER_DEVICE_PATH *)DevicePath)->ControllerNumber;\r
}\r
+\r
DevicePath = NextDevicePathNode (DevicePath);\r
} else {\r
if (ContainsControllerNode != NULL) {\r
*ContainsControllerNode = FALSE;\r
}\r
}\r
- return (UART_DEVICE_PATH *) DevicePath;\r
+\r
+ return (UART_DEVICE_PATH *)DevicePath;\r
}\r
\r
/**\r
**/\r
BOOLEAN\r
VerifyUartParameters (\r
- IN UINT32 ClockRate,\r
- IN UINT64 BaudRate,\r
- IN UINT8 DataBits,\r
- IN EFI_PARITY_TYPE Parity,\r
- IN EFI_STOP_BITS_TYPE StopBits,\r
- OUT UINT64 *Divisor,\r
- OUT UINT64 *ActualBaudRate\r
+ IN UINT32 ClockRate,\r
+ IN UINT64 BaudRate,\r
+ IN UINT8 DataBits,\r
+ IN EFI_PARITY_TYPE Parity,\r
+ IN EFI_STOP_BITS_TYPE StopBits,\r
+ OUT UINT64 *Divisor,\r
+ OUT UINT64 *ActualBaudRate\r
)\r
{\r
- UINT64 Remainder;\r
- UINT32 ComputedBaudRate;\r
- UINT64 ComputedDivisor;\r
- UINT64 Percent;\r
+ UINT64 Remainder;\r
+ UINT32 ComputedBaudRate;\r
+ UINT64 ComputedDivisor;\r
+ UINT64 Percent;\r
\r
if ((DataBits < 5) || (DataBits > 8) ||\r
(Parity < NoParity) || (Parity > SpaceParity) ||\r
(StopBits < OneStopBit) || (StopBits > TwoStopBits) ||\r
((DataBits == 5) && (StopBits == TwoStopBits)) ||\r
((DataBits >= 6) && (DataBits <= 8) && (StopBits == OneFiveStopBits))\r
- ) {\r
+ )\r
+ {\r
return FALSE;\r
}\r
\r
if (Remainder >= LShiftU64 (BaudRate, 3)) {\r
ComputedDivisor++;\r
}\r
+\r
//\r
// If the computed divisor is larger than the maximum value that can be programmed\r
// into the UART, then the requested baud rate can not be supported.\r
// Actual baud rate that the serial port will be programmed for\r
// should be with in 4% of requested one.\r
//\r
- ComputedBaudRate = ClockRate / ((UINT16) ComputedDivisor << 4);\r
+ ComputedBaudRate = ClockRate / ((UINT16)ComputedDivisor << 4);\r
if (ComputedBaudRate == 0) {\r
return FALSE;\r
}\r
\r
Percent = DivU64x32 (MultU64x32 (BaudRate, 100), ComputedBaudRate);\r
- DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate));\r
+ DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate));\r
DEBUG ((DEBUG_INFO, "Divisor = %ld\n", ComputedDivisor));\r
DEBUG ((DEBUG_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent));\r
\r
if (ActualBaudRate != NULL) {\r
*ActualBaudRate = BaudRate;\r
}\r
+\r
if (Divisor != NULL) {\r
*Divisor = ComputedDivisor;\r
}\r
+\r
return TRUE;\r
}\r
+\r
if (ComputedBaudRate < BaudRate) {\r
if (ActualBaudRate != NULL) {\r
*ActualBaudRate = ComputedBaudRate;\r
}\r
+\r
if (Divisor != NULL) {\r
*Divisor = ComputedDivisor;\r
}\r
+\r
return TRUE;\r
}\r
\r
if (ComputedDivisor == MAX_UINT16) {\r
return FALSE;\r
}\r
+\r
ComputedDivisor++;\r
- ComputedBaudRate = ClockRate / ((UINT16) ComputedDivisor << 4);\r
+ ComputedBaudRate = ClockRate / ((UINT16)ComputedDivisor << 4);\r
if (ComputedBaudRate == 0) {\r
return FALSE;\r
}\r
\r
- DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate));\r
+ DEBUG ((DEBUG_INFO, "ClockRate = %d\n", ClockRate));\r
DEBUG ((DEBUG_INFO, "Divisor = %ld\n", ComputedDivisor));\r
DEBUG ((DEBUG_INFO, "BaudRate/Actual (%ld/%d) = %d%%\n", BaudRate, ComputedBaudRate, Percent));\r
\r
if (ActualBaudRate != NULL) {\r
*ActualBaudRate = ComputedBaudRate;\r
}\r
+\r
if (Divisor != NULL) {\r
*Divisor = ComputedDivisor;\r
}\r
+\r
return TRUE;\r
}\r
\r
**/\r
BOOLEAN\r
SerialFifoFull (\r
- IN SERIAL_DEV_FIFO *Fifo\r
+ IN SERIAL_DEV_FIFO *Fifo\r
)\r
{\r
- return (BOOLEAN) (((Fifo->Tail + 1) % SERIAL_MAX_FIFO_SIZE) == Fifo->Head);\r
+ return (BOOLEAN)(((Fifo->Tail + 1) % SERIAL_MAX_FIFO_SIZE) == Fifo->Head);\r
}\r
\r
/**\r
**/\r
BOOLEAN\r
SerialFifoEmpty (\r
- IN SERIAL_DEV_FIFO *Fifo\r
+ IN SERIAL_DEV_FIFO *Fifo\r
)\r
\r
{\r
- return (BOOLEAN) (Fifo->Head == Fifo->Tail);\r
+ return (BOOLEAN)(Fifo->Head == Fifo->Tail);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
SerialFifoAdd (\r
- IN OUT SERIAL_DEV_FIFO *Fifo,\r
- IN UINT8 Data\r
+ IN OUT SERIAL_DEV_FIFO *Fifo,\r
+ IN UINT8 Data\r
)\r
{\r
//\r
if (SerialFifoFull (Fifo)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
//\r
// FIFO is not full can add data\r
//\r
Fifo->Data[Fifo->Tail] = Data;\r
- Fifo->Tail = (Fifo->Tail + 1) % SERIAL_MAX_FIFO_SIZE;\r
+ Fifo->Tail = (Fifo->Tail + 1) % SERIAL_MAX_FIFO_SIZE;\r
return EFI_SUCCESS;\r
}\r
\r
**/\r
EFI_STATUS\r
SerialFifoRemove (\r
- IN OUT SERIAL_DEV_FIFO *Fifo,\r
- OUT UINT8 *Data\r
+ IN OUT SERIAL_DEV_FIFO *Fifo,\r
+ OUT UINT8 *Data\r
)\r
{\r
//\r
if (SerialFifoEmpty (Fifo)) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
+\r
//\r
// FIFO is not empty, can remove data\r
//\r
- *Data = Fifo->Data[Fifo->Head];\r
+ *Data = Fifo->Data[Fifo->Head];\r
Fifo->Head = (Fifo->Head + 1) % SERIAL_MAX_FIFO_SIZE;\r
return EFI_SUCCESS;\r
}\r
**/\r
EFI_STATUS\r
SerialReceiveTransmit (\r
- IN SERIAL_DEV *SerialDevice\r
+ IN SERIAL_DEV *SerialDevice\r
)\r
\r
{\r
- SERIAL_PORT_LSR Lsr;\r
- UINT8 Data;\r
- BOOLEAN ReceiveFifoFull;\r
- SERIAL_PORT_MSR Msr;\r
- SERIAL_PORT_MCR Mcr;\r
- UINTN TimeOut;\r
+ SERIAL_PORT_LSR Lsr;\r
+ UINT8 Data;\r
+ BOOLEAN ReceiveFifoFull;\r
+ SERIAL_PORT_MSR Msr;\r
+ SERIAL_PORT_MCR Mcr;\r
+ UINTN TimeOut;\r
\r
Data = 0;\r
\r
// if receive buffer is available.\r
//\r
if (SerialDevice->HardwareFlowControl &&\r
- !FeaturePcdGet(PcdSerialUseHalfHandshake)&&\r
+ !FeaturePcdGet (PcdSerialUseHalfHandshake) &&\r
!ReceiveFifoFull\r
- ) {\r
+ )\r
+ {\r
Mcr.Data = READ_MCR (SerialDevice);\r
Mcr.Bits.Rts = 1;\r
WRITE_MCR (SerialDevice, Mcr.Data);\r
}\r
+\r
do {\r
Lsr.Data = READ_LSR (SerialDevice);\r
\r
if ((Lsr.Bits.Dr == 1) && !ReceiveFifoFull) {\r
ReceiveFifoFull = SerialFifoFull (&SerialDevice->Receive);\r
if (!ReceiveFifoFull) {\r
- if (Lsr.Bits.FIFOe == 1 || Lsr.Bits.Oe == 1 || Lsr.Bits.Pe == 1 || Lsr.Bits.Fe == 1 || Lsr.Bits.Bi == 1) {\r
+ if ((Lsr.Bits.FIFOe == 1) || (Lsr.Bits.Oe == 1) || (Lsr.Bits.Pe == 1) || (Lsr.Bits.Fe == 1) || (Lsr.Bits.Bi == 1)) {\r
REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
EFI_ERROR_CODE,\r
EFI_P_EC_INPUT_ERROR | EFI_PERIPHERAL_SERIAL_PORT,\r
SerialDevice->DevicePath\r
);\r
- if (Lsr.Bits.FIFOe == 1 || Lsr.Bits.Pe == 1|| Lsr.Bits.Fe == 1 || Lsr.Bits.Bi == 1) {\r
+ if ((Lsr.Bits.FIFOe == 1) || (Lsr.Bits.Pe == 1) || (Lsr.Bits.Fe == 1) || (Lsr.Bits.Bi == 1)) {\r
Data = READ_RBR (SerialDevice);\r
continue;\r
}\r
// tell the peer to stop sending data.\r
//\r
if (SerialDevice->HardwareFlowControl &&\r
- !FeaturePcdGet(PcdSerialUseHalfHandshake) &&\r
+ !FeaturePcdGet (PcdSerialUseHalfHandshake) &&\r
SerialFifoFull (&SerialDevice->Receive)\r
- ) {\r
+ )\r
+ {\r
Mcr.Data = READ_MCR (SerialDevice);\r
Mcr.Bits.Rts = 0;\r
WRITE_MCR (SerialDevice, Mcr.Data);\r
}\r
\r
-\r
continue;\r
} else {\r
REPORT_STATUS_CODE_WITH_DEVICE_PATH (\r
);\r
}\r
}\r
+\r
//\r
// Do the write\r
//\r
- if (Lsr.Bits.Thre == 1 && !SerialFifoEmpty (&SerialDevice->Transmit)) {\r
+ if ((Lsr.Bits.Thre == 1) && !SerialFifoEmpty (&SerialDevice->Transmit)) {\r
//\r
// Make sure the transmit data will not be missed\r
//\r
//\r
// For half handshake flow control assert RTS before sending.\r
//\r
- if (FeaturePcdGet(PcdSerialUseHalfHandshake)) {\r
+ if (FeaturePcdGet (PcdSerialUseHalfHandshake)) {\r
Mcr.Data = READ_MCR (SerialDevice);\r
- Mcr.Bits.Rts= 0;\r
+ Mcr.Bits.Rts = 0;\r
WRITE_MCR (SerialDevice, Mcr.Data);\r
}\r
+\r
//\r
// Wait for CTS\r
//\r
- TimeOut = 0;\r
- Msr.Data = READ_MSR (SerialDevice);\r
- while ((Msr.Bits.Dcd == 1) && ((Msr.Bits.Cts == 0) ^ FeaturePcdGet(PcdSerialUseHalfHandshake))) {\r
+ TimeOut = 0;\r
+ Msr.Data = READ_MSR (SerialDevice);\r
+ while ((Msr.Bits.Dcd == 1) && ((Msr.Bits.Cts == 0) ^ FeaturePcdGet (PcdSerialUseHalfHandshake))) {\r
gBS->Stall (TIMEOUT_STALL_INTERVAL);\r
TimeOut++;\r
if (TimeOut > 5) {\r
Msr.Data = READ_MSR (SerialDevice);\r
}\r
\r
- if ((Msr.Bits.Dcd == 0) || ((Msr.Bits.Cts == 1) ^ FeaturePcdGet(PcdSerialUseHalfHandshake))) {\r
+ if ((Msr.Bits.Dcd == 0) || ((Msr.Bits.Cts == 1) ^ FeaturePcdGet (PcdSerialUseHalfHandshake))) {\r
SerialFifoRemove (&SerialDevice->Transmit, &Data);\r
WRITE_THR (SerialDevice, Data);\r
}\r
//\r
// For half handshake flow control, tell DCE we are done.\r
//\r
- if (FeaturePcdGet(PcdSerialUseHalfHandshake)) {\r
- Mcr.Data = READ_MCR (SerialDevice);\r
+ if (FeaturePcdGet (PcdSerialUseHalfHandshake)) {\r
+ Mcr.Data = READ_MCR (SerialDevice);\r
Mcr.Bits.Rts = 1;\r
WRITE_MCR (SerialDevice, Mcr.Data);\r
}\r
// in the rest of this function that may send additional characters to this\r
// UART device invalidating the flush operation.\r
//\r
- Elapsed = 0;\r
+ Elapsed = 0;\r
Lsr.Data = READ_LSR (SerialDevice);\r
while (Lsr.Bits.Temt == 0 || Lsr.Bits.Thre == 0) {\r
if (Elapsed >= Timeout) {\r
return EFI_TIMEOUT;\r
}\r
+\r
gBS->Stall (TIMEOUT_STALL_INTERVAL);\r
Elapsed += TIMEOUT_STALL_INTERVAL;\r
Lsr.Data = READ_LSR (SerialDevice);\r
//\r
// Interface Functions\r
//\r
+\r
/**\r
Reset serial device.\r
\r
IN EFI_SERIAL_IO_PROTOCOL *This\r
)\r
{\r
- EFI_STATUS Status;\r
- SERIAL_DEV *SerialDevice;\r
- SERIAL_PORT_LCR Lcr;\r
- SERIAL_PORT_IER Ier;\r
- SERIAL_PORT_MCR Mcr;\r
- SERIAL_PORT_FCR Fcr;\r
- EFI_TPL Tpl;\r
- UINT32 Control;\r
+ EFI_STATUS Status;\r
+ SERIAL_DEV *SerialDevice;\r
+ SERIAL_PORT_LCR Lcr;\r
+ SERIAL_PORT_IER Ier;\r
+ SERIAL_PORT_MCR Mcr;\r
+ SERIAL_PORT_FCR Fcr;\r
+ EFI_TPL Tpl;\r
+ UINT32 Control;\r
\r
SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
\r
//\r
// Turn off all interrupts\r
//\r
- Ier.Data = READ_IER (SerialDevice);\r
- Ier.Bits.Ravie = 0;\r
- Ier.Bits.Theie = 0;\r
- Ier.Bits.Rie = 0;\r
- Ier.Bits.Mie = 0;\r
+ Ier.Data = READ_IER (SerialDevice);\r
+ Ier.Bits.Ravie = 0;\r
+ Ier.Bits.Theie = 0;\r
+ Ier.Bits.Rie = 0;\r
+ Ier.Bits.Mie = 0;\r
WRITE_IER (SerialDevice, Ier.Data);\r
\r
//\r
// Reset the FIFO\r
//\r
- Fcr.Data = 0;\r
+ Fcr.Data = 0;\r
Fcr.Bits.TrFIFOE = 0;\r
WRITE_FCR (SerialDevice, Fcr.Data);\r
\r
//\r
// Enable FIFO\r
//\r
- Fcr.Bits.TrFIFOE = 1;\r
+ Fcr.Bits.TrFIFOE = 1;\r
if (SerialDevice->ReceiveFifoDepth > 16) {\r
Fcr.Bits.TrFIFO64 = 1;\r
}\r
- Fcr.Bits.ResetRF = 1;\r
- Fcr.Bits.ResetTF = 1;\r
+\r
+ Fcr.Bits.ResetRF = 1;\r
+ Fcr.Bits.ResetTF = 1;\r
WRITE_FCR (SerialDevice, Fcr.Data);\r
\r
//\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
if (EFI_ERROR (Status)) {\r
gBS->RestoreTPL (Tpl);\r
return EFI_DEVICE_ERROR;\r
}\r
+\r
//\r
// Go set the current control bits\r
//\r
if (SerialDevice->HardwareFlowControl) {\r
Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE;\r
}\r
+\r
if (SerialDevice->SoftwareLoopbackEnable) {\r
Control |= EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE;\r
}\r
+\r
Status = This->SetControl (\r
This,\r
Control\r
//\r
// Reset the software FIFO\r
//\r
- SerialDevice->Receive.Head = SerialDevice->Receive.Tail = 0;\r
+ SerialDevice->Receive.Head = SerialDevice->Receive.Tail = 0;\r
SerialDevice->Transmit.Head = SerialDevice->Transmit.Tail = 0;\r
gBS->RestoreTPL (Tpl);\r
\r
IN EFI_STOP_BITS_TYPE StopBits\r
)\r
{\r
- EFI_STATUS Status;\r
- SERIAL_DEV *SerialDevice;\r
- UINT64 Divisor;\r
- SERIAL_PORT_LCR Lcr;\r
- UART_DEVICE_PATH *Uart;\r
- EFI_TPL Tpl;\r
+ EFI_STATUS Status;\r
+ SERIAL_DEV *SerialDevice;\r
+ UINT64 Divisor;\r
+ SERIAL_PORT_LCR Lcr;\r
+ UART_DEVICE_PATH *Uart;\r
+ EFI_TPL Tpl;\r
\r
SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
\r
}\r
\r
if (Parity == DefaultParity) {\r
- Parity = (EFI_PARITY_TYPE) PcdGet8 (PcdUartDefaultParity);\r
+ Parity = (EFI_PARITY_TYPE)PcdGet8 (PcdUartDefaultParity);\r
}\r
\r
if (DataBits == 0) {\r
}\r
\r
if (StopBits == DefaultStopBits) {\r
- StopBits = (EFI_STOP_BITS_TYPE) PcdGet8 (PcdUartDefaultStopBits);\r
+ StopBits = (EFI_STOP_BITS_TYPE)PcdGet8 (PcdUartDefaultStopBits);\r
}\r
\r
if (!VerifyUartParameters (SerialDevice->ClockRate, BaudRate, DataBits, Parity, StopBits, &Divisor, &BaudRate)) {\r
//\r
// Write the divisor to the serial port\r
//\r
- WRITE_DLL (SerialDevice, (UINT8) Divisor);\r
- WRITE_DLM (SerialDevice, (UINT8) ((UINT16) Divisor >> 8));\r
+ WRITE_DLL (SerialDevice, (UINT8)Divisor);\r
+ WRITE_DLM (SerialDevice, (UINT8)((UINT16)Divisor >> 8));\r
\r
//\r
// Put serial port back in normal mode and set remaining attributes.\r
Lcr.Bits.DLab = 0;\r
\r
switch (Parity) {\r
- case NoParity:\r
- Lcr.Bits.ParEn = 0;\r
- Lcr.Bits.EvenPar = 0;\r
- Lcr.Bits.SticPar = 0;\r
- break;\r
-\r
- case EvenParity:\r
- Lcr.Bits.ParEn = 1;\r
- Lcr.Bits.EvenPar = 1;\r
- Lcr.Bits.SticPar = 0;\r
- break;\r
-\r
- case OddParity:\r
- Lcr.Bits.ParEn = 1;\r
- Lcr.Bits.EvenPar = 0;\r
- Lcr.Bits.SticPar = 0;\r
- break;\r
-\r
- case SpaceParity:\r
- Lcr.Bits.ParEn = 1;\r
- Lcr.Bits.EvenPar = 1;\r
- Lcr.Bits.SticPar = 1;\r
- break;\r
-\r
- case MarkParity:\r
- Lcr.Bits.ParEn = 1;\r
- Lcr.Bits.EvenPar = 0;\r
- Lcr.Bits.SticPar = 1;\r
- break;\r
-\r
- default:\r
- break;\r
+ case NoParity:\r
+ Lcr.Bits.ParEn = 0;\r
+ Lcr.Bits.EvenPar = 0;\r
+ Lcr.Bits.SticPar = 0;\r
+ break;\r
+\r
+ case EvenParity:\r
+ Lcr.Bits.ParEn = 1;\r
+ Lcr.Bits.EvenPar = 1;\r
+ Lcr.Bits.SticPar = 0;\r
+ break;\r
+\r
+ case OddParity:\r
+ Lcr.Bits.ParEn = 1;\r
+ Lcr.Bits.EvenPar = 0;\r
+ Lcr.Bits.SticPar = 0;\r
+ break;\r
+\r
+ case SpaceParity:\r
+ Lcr.Bits.ParEn = 1;\r
+ Lcr.Bits.EvenPar = 1;\r
+ Lcr.Bits.SticPar = 1;\r
+ break;\r
+\r
+ case MarkParity:\r
+ Lcr.Bits.ParEn = 1;\r
+ Lcr.Bits.EvenPar = 0;\r
+ Lcr.Bits.SticPar = 1;\r
+ break;\r
+\r
+ default:\r
+ break;\r
}\r
\r
switch (StopBits) {\r
- case OneStopBit:\r
- Lcr.Bits.StopB = 0;\r
- break;\r
+ case OneStopBit:\r
+ Lcr.Bits.StopB = 0;\r
+ break;\r
\r
- case OneFiveStopBits:\r
- case TwoStopBits:\r
- Lcr.Bits.StopB = 1;\r
- break;\r
+ case OneFiveStopBits:\r
+ case TwoStopBits:\r
+ Lcr.Bits.StopB = 1;\r
+ break;\r
\r
- default:\r
- break;\r
+ default:\r
+ break;\r
}\r
+\r
//\r
// DataBits\r
//\r
- Lcr.Bits.SerialDB = (UINT8) ((DataBits - 5) & 0x03);\r
+ Lcr.Bits.SerialDB = (UINT8)((DataBits - 5) & 0x03);\r
WRITE_LCR (SerialDevice, Lcr.Data);\r
\r
//\r
// Set the Serial I/O mode\r
//\r
- This->Mode->BaudRate = BaudRate;\r
- This->Mode->ReceiveFifoDepth = ReceiveFifoDepth;\r
- This->Mode->Timeout = Timeout;\r
- This->Mode->Parity = Parity;\r
- This->Mode->DataBits = DataBits;\r
- This->Mode->StopBits = StopBits;\r
+ This->Mode->BaudRate = BaudRate;\r
+ This->Mode->ReceiveFifoDepth = ReceiveFifoDepth;\r
+ This->Mode->Timeout = Timeout;\r
+ This->Mode->Parity = Parity;\r
+ This->Mode->DataBits = DataBits;\r
+ This->Mode->StopBits = StopBits;\r
\r
//\r
// See if Device Path Node has actually changed\r
//\r
- if (SerialDevice->UartDevicePath.BaudRate == BaudRate &&\r
- SerialDevice->UartDevicePath.DataBits == DataBits &&\r
- SerialDevice->UartDevicePath.Parity == Parity &&\r
- SerialDevice->UartDevicePath.StopBits == StopBits\r
- ) {\r
+ if ((SerialDevice->UartDevicePath.BaudRate == BaudRate) &&\r
+ (SerialDevice->UartDevicePath.DataBits == DataBits) &&\r
+ (SerialDevice->UartDevicePath.Parity == Parity) &&\r
+ (SerialDevice->UartDevicePath.StopBits == StopBits)\r
+ )\r
+ {\r
gBS->RestoreTPL (Tpl);\r
return EFI_SUCCESS;\r
}\r
+\r
//\r
// Update the device path\r
//\r
SerialDevice->UartDevicePath.BaudRate = BaudRate;\r
SerialDevice->UartDevicePath.DataBits = DataBits;\r
- SerialDevice->UartDevicePath.Parity = (UINT8) Parity;\r
- SerialDevice->UartDevicePath.StopBits = (UINT8) StopBits;\r
+ SerialDevice->UartDevicePath.Parity = (UINT8)Parity;\r
+ SerialDevice->UartDevicePath.StopBits = (UINT8)StopBits;\r
\r
Status = EFI_SUCCESS;\r
if (SerialDevice->Handle != NULL) {\r
-\r
//\r
// Skip the optional Controller device path node\r
//\r
Uart = SkipControllerDevicePathNode (\r
- (EFI_DEVICE_PATH_PROTOCOL *) (\r
- (UINT8 *) SerialDevice->DevicePath + GetDevicePathSize (SerialDevice->ParentDevicePath) - END_DEVICE_PATH_LENGTH\r
- ),\r
+ (EFI_DEVICE_PATH_PROTOCOL *)(\r
+ (UINT8 *)SerialDevice->DevicePath + GetDevicePathSize (SerialDevice->ParentDevicePath) - END_DEVICE_PATH_LENGTH\r
+ ),\r
NULL,\r
NULL\r
);\r
IN UINT32 Control\r
)\r
{\r
- SERIAL_DEV *SerialDevice;\r
- SERIAL_PORT_MCR Mcr;\r
- EFI_TPL Tpl;\r
- UART_FLOW_CONTROL_DEVICE_PATH *FlowControl;\r
- EFI_STATUS Status;\r
+ SERIAL_DEV *SerialDevice;\r
+ SERIAL_PORT_MCR Mcr;\r
+ EFI_TPL Tpl;\r
+ UART_FLOW_CONTROL_DEVICE_PATH *FlowControl;\r
+ EFI_STATUS Status;\r
\r
//\r
// The control bits that can be set are :\r
//\r
if ((Control & (~(EFI_SERIAL_REQUEST_TO_SEND | EFI_SERIAL_DATA_TERMINAL_READY |\r
EFI_SERIAL_HARDWARE_LOOPBACK_ENABLE | EFI_SERIAL_SOFTWARE_LOOPBACK_ENABLE |\r
- EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE))) != 0) {\r
+ EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE))) != 0)\r
+ {\r
return EFI_UNSUPPORTED;\r
}\r
\r
//\r
SerialFlushTransmitFifo (SerialDevice);\r
\r
- Mcr.Data = READ_MCR (SerialDevice);\r
- Mcr.Bits.DtrC = 0;\r
- Mcr.Bits.Rts = 0;\r
- Mcr.Bits.Lme = 0;\r
+ Mcr.Data = READ_MCR (SerialDevice);\r
+ Mcr.Bits.DtrC = 0;\r
+ Mcr.Bits.Rts = 0;\r
+ Mcr.Bits.Lme = 0;\r
SerialDevice->SoftwareLoopbackEnable = FALSE;\r
- SerialDevice->HardwareFlowControl = FALSE;\r
+ SerialDevice->HardwareFlowControl = FALSE;\r
\r
if ((Control & EFI_SERIAL_DATA_TERMINAL_READY) == EFI_SERIAL_DATA_TERMINAL_READY) {\r
Mcr.Bits.DtrC = 1;\r
\r
Status = EFI_SUCCESS;\r
if (SerialDevice->Handle != NULL) {\r
- FlowControl = (UART_FLOW_CONTROL_DEVICE_PATH *) (\r
- (UINTN) SerialDevice->DevicePath\r
- + GetDevicePathSize (SerialDevice->ParentDevicePath)\r
- - END_DEVICE_PATH_LENGTH\r
- + sizeof (UART_DEVICE_PATH)\r
- );\r
+ FlowControl = (UART_FLOW_CONTROL_DEVICE_PATH *)(\r
+ (UINTN)SerialDevice->DevicePath\r
+ + GetDevicePathSize (SerialDevice->ParentDevicePath)\r
+ - END_DEVICE_PATH_LENGTH\r
+ + sizeof (UART_DEVICE_PATH)\r
+ );\r
if (IsUartFlowControlDevicePathNode (FlowControl) &&\r
- ((BOOLEAN) (ReadUnaligned32 (&FlowControl->FlowControlMap) == UART_FLOW_CONTROL_HARDWARE) != SerialDevice->HardwareFlowControl)) {\r
+ ((BOOLEAN)(ReadUnaligned32 (&FlowControl->FlowControlMap) == UART_FLOW_CONTROL_HARDWARE) != SerialDevice->HardwareFlowControl))\r
+ {\r
//\r
// Flow Control setting is changed, need to reinstall device path protocol\r
//\r
OUT UINT32 *Control\r
)\r
{\r
- SERIAL_DEV *SerialDevice;\r
- SERIAL_PORT_MSR Msr;\r
- SERIAL_PORT_MCR Mcr;\r
- EFI_TPL Tpl;\r
+ SERIAL_DEV *SerialDevice;\r
+ SERIAL_PORT_MSR Msr;\r
+ SERIAL_PORT_MCR Mcr;\r
+ EFI_TPL Tpl;\r
\r
- Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
+ Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
- SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
+ SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
\r
- *Control = 0;\r
+ *Control = 0;\r
\r
//\r
// Read the Modem Status Register\r
if (Msr.Bits.Dcd == 1) {\r
*Control |= EFI_SERIAL_CARRIER_DETECT;\r
}\r
+\r
//\r
// Read the Modem Control Register\r
//\r
if (SerialDevice->HardwareFlowControl) {\r
*Control |= EFI_SERIAL_HARDWARE_FLOW_CONTROL_ENABLE;\r
}\r
+\r
//\r
// Update FIFO status\r
//\r
UINTN Timeout;\r
UINTN BitsPerCharacter;\r
\r
- SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
- Elapsed = 0;\r
- ActualWrite = 0;\r
+ SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
+ Elapsed = 0;\r
+ ActualWrite = 0;\r
\r
if (*BufferSize == 0) {\r
return EFI_SUCCESS;\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
+ Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
- CharBuffer = (UINT8 *) Buffer;\r
+ CharBuffer = (UINT8 *)Buffer;\r
\r
//\r
// Compute the number of bits in a single character. This is a start bit,\r
Timeout = MAX (\r
This->Mode->Timeout,\r
(UINTN)DivU64x64Remainder (\r
- BitsPerCharacter * (SerialDevice->TransmitFifoDepth + 1) * 1000000,\r
- This->Mode->BaudRate,\r
- NULL\r
- )\r
+ BitsPerCharacter * (SerialDevice->TransmitFifoDepth + 1) * 1000000,\r
+ This->Mode->BaudRate,\r
+ NULL\r
+ )\r
);\r
\r
for (Index = 0; Index < *BufferSize; Index++) {\r
EFI_STATUS Status;\r
EFI_TPL Tpl;\r
\r
- SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
- Elapsed = 0;\r
+ SerialDevice = SERIAL_DEV_FROM_THIS (This);\r
+ Elapsed = 0;\r
\r
if (*BufferSize == 0) {\r
return EFI_SUCCESS;\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
+ Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
\r
- Status = SerialReceiveTransmit (SerialDevice);\r
+ Status = SerialReceiveTransmit (SerialDevice);\r
\r
if (EFI_ERROR (Status)) {\r
*BufferSize = 0;\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- CharBuffer = (UINT8 *) Buffer;\r
+ CharBuffer = (UINT8 *)Buffer;\r
for (Index = 0; Index < *BufferSize; Index++) {\r
while (SerialFifoRemove (&SerialDevice->Receive, &(CharBuffer[Index])) != EFI_SUCCESS) {\r
//\r
return EFI_DEVICE_ERROR;\r
}\r
}\r
+\r
//\r
// Successful read so reset timeout\r
//\r
**/\r
BOOLEAN\r
SerialPresent (\r
- IN SERIAL_DEV *SerialDevice\r
+ IN SERIAL_DEV *SerialDevice\r
)\r
\r
{\r
- UINT8 Temp;\r
- BOOLEAN Status;\r
+ UINT8 Temp;\r
+ BOOLEAN Status;\r
\r
Status = TRUE;\r
\r
if (READ_SCR (SerialDevice) != 0x55) {\r
Status = FALSE;\r
}\r
+\r
//\r
// Restore SCR\r
//\r
**/\r
UINT8\r
SerialReadRegister (\r
- IN SERIAL_DEV *SerialDev,\r
- IN UINT32 Offset\r
+ IN SERIAL_DEV *SerialDev,\r
+ IN UINT32 Offset\r
)\r
{\r
- UINT8 Data;\r
- EFI_STATUS Status;\r
+ UINT8 Data;\r
+ EFI_STATUS Status;\r
\r
if (SerialDev->PciDeviceInfo == NULL) {\r
- return IoRead8 ((UINTN) SerialDev->BaseAddress + Offset * SerialDev->RegisterStride);\r
+ return IoRead8 ((UINTN)SerialDev->BaseAddress + Offset * SerialDev->RegisterStride);\r
} else {\r
if (SerialDev->MmioAccess) {\r
- Status = SerialDev->PciDeviceInfo->PciIo->Mem.Read (SerialDev->PciDeviceInfo->PciIo, EfiPciIoWidthUint8, EFI_PCI_IO_PASS_THROUGH_BAR,\r
- SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, 1, &Data);\r
+ Status = SerialDev->PciDeviceInfo->PciIo->Mem.Read (\r
+ SerialDev->PciDeviceInfo->PciIo,\r
+ EfiPciIoWidthUint8,\r
+ EFI_PCI_IO_PASS_THROUGH_BAR,\r
+ SerialDev->BaseAddress + Offset * SerialDev->RegisterStride,\r
+ 1,\r
+ &Data\r
+ );\r
} else {\r
- Status = SerialDev->PciDeviceInfo->PciIo->Io.Read (SerialDev->PciDeviceInfo->PciIo, EfiPciIoWidthUint8, EFI_PCI_IO_PASS_THROUGH_BAR,\r
- SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, 1, &Data);\r
+ Status = SerialDev->PciDeviceInfo->PciIo->Io.Read (\r
+ SerialDev->PciDeviceInfo->PciIo,\r
+ EfiPciIoWidthUint8,\r
+ EFI_PCI_IO_PASS_THROUGH_BAR,\r
+ SerialDev->BaseAddress + Offset * SerialDev->RegisterStride,\r
+ 1,\r
+ &Data\r
+ );\r
}\r
+\r
ASSERT_EFI_ERROR (Status);\r
return Data;\r
}\r
**/\r
VOID\r
SerialWriteRegister (\r
- IN SERIAL_DEV *SerialDev,\r
- IN UINT32 Offset,\r
- IN UINT8 Data\r
+ IN SERIAL_DEV *SerialDev,\r
+ IN UINT32 Offset,\r
+ IN UINT8 Data\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
if (SerialDev->PciDeviceInfo == NULL) {\r
- IoWrite8 ((UINTN) SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, Data);\r
+ IoWrite8 ((UINTN)SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, Data);\r
} else {\r
if (SerialDev->MmioAccess) {\r
- Status = SerialDev->PciDeviceInfo->PciIo->Mem.Write (SerialDev->PciDeviceInfo->PciIo, EfiPciIoWidthUint8, EFI_PCI_IO_PASS_THROUGH_BAR,\r
- SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, 1, &Data);\r
+ Status = SerialDev->PciDeviceInfo->PciIo->Mem.Write (\r
+ SerialDev->PciDeviceInfo->PciIo,\r
+ EfiPciIoWidthUint8,\r
+ EFI_PCI_IO_PASS_THROUGH_BAR,\r
+ SerialDev->BaseAddress + Offset * SerialDev->RegisterStride,\r
+ 1,\r
+ &Data\r
+ );\r
} else {\r
- Status = SerialDev->PciDeviceInfo->PciIo->Io.Write (SerialDev->PciDeviceInfo->PciIo, EfiPciIoWidthUint8, EFI_PCI_IO_PASS_THROUGH_BAR,\r
- SerialDev->BaseAddress + Offset * SerialDev->RegisterStride, 1, &Data);\r
+ Status = SerialDev->PciDeviceInfo->PciIo->Io.Write (\r
+ SerialDev->PciDeviceInfo->PciIo,\r
+ EfiPciIoWidthUint8,\r
+ EFI_PCI_IO_PASS_THROUGH_BAR,\r
+ SerialDev->BaseAddress + Offset * SerialDev->RegisterStride,\r
+ 1,\r
+ &Data\r
+ );\r
}\r
+\r
ASSERT_EFI_ERROR (Status);\r
}\r
}\r