\r
}\r
\r
-/**\r
- Update the device path that describing a terminal device\r
- based on the new BaudRate, Data Bits, parity and Stop Bits\r
- set.\r
-\r
- @param DevicePath terminal device's path\r
-\r
-**/\r
-VOID\r
-ChangeVariableDevicePath (\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL *DevicePath\r
- )\r
-{\r
- EFI_DEVICE_PATH_PROTOCOL *Node;\r
- ACPI_HID_DEVICE_PATH *Acpi;\r
- UART_DEVICE_PATH *Uart;\r
- UINTN Com;\r
- BM_TERMINAL_CONTEXT *NewTerminalContext;\r
- BM_MENU_ENTRY *NewMenuEntry;\r
\r
- Node = DevicePath;\r
- Node = NextDevicePathNode (Node);\r
- Com = 0;\r
- while (!IsDevicePathEnd (Node)) {\r
- Acpi = (ACPI_HID_DEVICE_PATH *) Node;\r
- if (IsIsaSerialNode (Acpi)) {\r
- CopyMem (&Com, &Acpi->UID, sizeof (UINT32));\r
- }\r
-\r
- if ((DevicePathType (Node) == MESSAGING_DEVICE_PATH) && (DevicePathSubType (Node) == MSG_UART_DP)) {\r
- NewMenuEntry = BOpt_GetMenuEntry (\r
- &TerminalMenu,\r
- Com\r
- );\r
- ASSERT (NewMenuEntry != NULL);\r
- NewTerminalContext = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
- Uart = (UART_DEVICE_PATH *) Node;\r
- CopyMem (\r
- &Uart->BaudRate,\r
- &NewTerminalContext->BaudRate,\r
- sizeof (UINT64)\r
- );\r
-\r
- CopyMem (\r
- &Uart->DataBits,\r
- &NewTerminalContext->DataBits,\r
- sizeof (UINT8)\r
- );\r
-\r
- CopyMem (\r
- &Uart->Parity,\r
- &NewTerminalContext->Parity,\r
- sizeof (UINT8)\r
- );\r
-\r
- CopyMem (\r
- &Uart->StopBits,\r
- &NewTerminalContext->StopBits,\r
- sizeof (UINT8)\r
- );\r
- }\r
-\r
- Node = NextDevicePathNode (Node);\r
- }\r
-}\r
\r
/**\r
Retrieve ACPI UID of UART from device path\r