summaryrefslogtreecommitdiff
path: root/IntelFrameworkModulePkg/Library/GenericBdsLib
diff options
context:
space:
mode:
Diffstat (limited to 'IntelFrameworkModulePkg/Library/GenericBdsLib')
-rw-r--r--IntelFrameworkModulePkg/Library/GenericBdsLib/BdsConsole.c33
1 files changed, 27 insertions, 6 deletions
diff --git a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsConsole.c b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsConsole.c
index 42b0a23769..ab7879def1 100644
--- a/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsConsole.c
+++ b/IntelFrameworkModulePkg/Library/GenericBdsLib/BdsConsole.c
@@ -361,16 +361,37 @@ BdsLibConnectConsoleVariable (
SetDevicePathEndNode (Next);
//
- // Connect the instance device path
+ // Check USB1.1 console
//
- Status = BdsLibConnectDevicePath (Instance);
- if (EFI_ERROR (Status)) {
+ if ((DevicePathType (Instance) == MESSAGING_DEVICE_PATH) &&
+ ((DevicePathSubType (Instance) == MSG_USB_CLASS_DP)
+ || (DevicePathSubType (Instance) == MSG_USB_WWID_DP)
+ )) {
//
- // Delete the instance from the console varialbe
+ // Check the Usb console in Usb2.0 bus firstly, then Usb1.1 bus
//
- BdsLibUpdateConsoleVariable (ConVarName, NULL, Instance);
+ Status = BdsLibConnectUsbDevByShortFormDP (PCI_IF_EHCI, Instance);
+ if (!EFI_ERROR (Status)) {
+ DeviceExist = TRUE;
+ }
+
+ Status = BdsLibConnectUsbDevByShortFormDP (PCI_IF_UHCI, Instance);
+ if (!EFI_ERROR (Status)) {
+ DeviceExist = TRUE;
+ }
} else {
- DeviceExist = TRUE;
+ //
+ // Connect the instance device path
+ //
+ Status = BdsLibConnectDevicePath (Instance);
+ if (EFI_ERROR (Status)) {
+ //
+ // Delete the instance from the console varialbe
+ //
+ BdsLibUpdateConsoleVariable (ConVarName, NULL, Instance);
+ } else {
+ DeviceExist = TRUE;
+ }
}
FreePool(Instance);
} while (CopyOfDevicePath != NULL);