/** @file\r
BDS Lib functions which contain all the code to connect console device\r
\r
-Copyright (c) 2004 - 2009, Intel Corporation. <BR>\r
-All rights reserved. This program and the accompanying materials\r
+Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
http://opensource.org/licenses/bsd-license.php\r
\r
SetDevicePathEndNode (Next);\r
//\r
- // Check USB1.1 console\r
+ // Connect the USB console\r
+ // USB console device path is a short-form device path that \r
+ // starts with the first element being a USB WWID\r
+ // or a USB Class device path\r
//\r
if ((DevicePathType (Instance) == MESSAGING_DEVICE_PATH) &&\r
((DevicePathSubType (Instance) == MSG_USB_CLASS_DP)\r
|| (DevicePathSubType (Instance) == MSG_USB_WWID_DP)\r
)) {\r
- //\r
- // Check the Usb console in Usb2.0 bus firstly, then Usb1.1 bus\r
- //\r
- Status = BdsLibConnectUsbDevByShortFormDP (PCI_CLASSC_PI_EHCI, Instance);\r
- if (!EFI_ERROR (Status)) {\r
- DeviceExist = TRUE;\r
- }\r
-\r
- Status = BdsLibConnectUsbDevByShortFormDP (PCI_CLASSC_PI_UHCI, Instance);\r
+ Status = BdsLibConnectUsbDevByShortFormDP (0xFF, Instance);\r
if (!EFI_ERROR (Status)) {\r
DeviceExist = TRUE;\r
}\r
//\r
// Calculate the BltBuffer needed size.\r
//\r
- BltBufferSize = BmpHeader->PixelWidth * BmpHeader->PixelHeight * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);\r
- if (BltBufferSize >= SIZE_4GB) {\r
- //\r
- // If the BMP resolution is too large\r
- //\r
- return EFI_UNSUPPORTED;\r
- }\r
- \r
+ BltBufferSize = MultU64x32 ((UINT64) BmpHeader->PixelWidth, BmpHeader->PixelHeight);\r
+ //\r
+ // Ensure the BltBufferSize * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) doesn't overflow\r
+ //\r
+ if (BltBufferSize > DivU64x32 ((UINTN) ~0, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL))) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+ BltBufferSize = MultU64x32 (BltBufferSize, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL));\r
+\r
IsAllocated = FALSE;\r
if (*GopBlt == NULL) {\r
//\r