)\r
{\r
EFI_STATUS Status;\r
- EFI_TPL Tpl;\r
\r
Status = SerialPortInitialize ();\r
if (EFI_ERROR (Status)) {\r
}\r
\r
//\r
- // Set the Serial I/O mode and update the device path\r
- //\r
-\r
- Tpl = gBS->RaiseTPL (TPL_NOTIFY);\r
-\r
- //\r
- // Set the Serial I/O mode\r
- //\r
- This->Mode->ReceiveFifoDepth = PcdGet16 (PcdUartDefaultReceiveFifoDepth);\r
- This->Mode->Timeout = 1000 * 1000;\r
- This->Mode->BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
- This->Mode->DataBits = (UINT32) PcdGet8 (PcdUartDefaultDataBits);\r
- This->Mode->Parity = (UINT32) PcdGet8 (PcdUartDefaultParity);\r
- This->Mode->StopBits = (UINT32) PcdGet8 (PcdUartDefaultStopBits);\r
-\r
- //\r
- // Check if the device path has actually changed\r
- //\r
- if (mSerialDevicePath.Uart.BaudRate == This->Mode->BaudRate &&\r
- mSerialDevicePath.Uart.DataBits == (UINT8) This->Mode->DataBits &&\r
- mSerialDevicePath.Uart.Parity == (UINT8) This->Mode->Parity &&\r
- mSerialDevicePath.Uart.StopBits == (UINT8) This->Mode->StopBits\r
- ) {\r
- gBS->RestoreTPL (Tpl);\r
- return EFI_SUCCESS;\r
- }\r
-\r
- //\r
- // Update the device path\r
+ // Go set the current attributes\r
//\r
- mSerialDevicePath.Uart.BaudRate = This->Mode->BaudRate;\r
- mSerialDevicePath.Uart.DataBits = (UINT8) This->Mode->DataBits;\r
- mSerialDevicePath.Uart.Parity = (UINT8) This->Mode->Parity;\r
- mSerialDevicePath.Uart.StopBits = (UINT8) This->Mode->StopBits;\r
-\r
- Status = gBS->ReinstallProtocolInterface (\r
- mSerialHandle,\r
- &gEfiDevicePathProtocolGuid,\r
- &mSerialDevicePath,\r
- &mSerialDevicePath\r
- );\r
-\r
- gBS->RestoreTPL (Tpl);\r
+ Status = This->SetAttributes (\r
+ This,\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
+ );\r
\r
return Status;\r
}\r
{\r
EFI_STATUS Status;\r
\r
- Status = SerialPortInitialize ();\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
-\r
mSerialIoMode.BaudRate = PcdGet64 (PcdUartDefaultBaudRate);\r
mSerialIoMode.DataBits = (UINT32) PcdGet8 (PcdUartDefaultDataBits);\r
mSerialIoMode.Parity = (UINT32) PcdGet8 (PcdUartDefaultParity);\r
mSerialDevicePath.Uart.Parity = PcdGet8 (PcdUartDefaultParity);\r
mSerialDevicePath.Uart.StopBits = PcdGet8 (PcdUartDefaultStopBits);\r
\r
+ //\r
+ // Issue a reset to initialize the Serial Port\r
+ //\r
+ Status = mSerialIoTemplate.Reset (&mSerialIoTemplate);\r
+ if (EFI_ERROR (Status)) {\r
+ return Status;\r
+ }\r
+\r
//\r
// Make a new handle with Serial IO protocol and its device path on it.\r
//\r