1. Retired HotPlugDevice protocol.

2. Check devicepath node to get hot plug information. Currently, USB and PCCard device are checked.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7562 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
vanjeff
2009-02-23 02:51:45 +00:00
parent fbfa4a1da7
commit aa8f4f55ff
10 changed files with 99 additions and 115 deletions

View File

@@ -256,7 +256,7 @@ ConPlatformTextInDriverBindingStart (
return Status;
}
//
// Check the device handle, if it is a hot plug device,
// Check the device path, if it is a hot plug device,
// do not put the device path into ConInDev, and install
// gEfiConsoleInDeviceGuid to the device handle directly.
// The policy is, make hot plug device plug in and play immediately.
@@ -373,7 +373,7 @@ ConPlatformTextOutDriverBindingStart (
return Status;
}
//
// Check the device handle, if it is a hot plug device,
// Check the device path, if it is a hot plug device,
// do not put the device path into ConOutDev and ErrOutDev,
// and install gEfiConsoleOutDeviceGuid to the device handle directly.
// The policy is, make hot plug device plug in and play immediately.
@@ -953,24 +953,31 @@ IsHotPlugDevice (
IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
)
{
//
// Check device whether is hot plug device or not throught Device Path
//
if ((DevicePathType (DevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == MSG_USB_DP ||
DevicePathSubType (DevicePath) == MSG_USB_CLASS_DP ||
DevicePathSubType (DevicePath) == MSG_USB_WWID_DP)) {
EFI_DEVICE_PATH_PROTOCOL *CheckDevicePath;
CheckDevicePath = DevicePath;
while (!IsDevicePathEnd (CheckDevicePath)) {
//
// If Device is USB device
//
return TRUE;
}
if ((DevicePathType (DevicePath) == HARDWARE_DEVICE_PATH) &&
(DevicePathSubType (DevicePath) == HW_PCCARD_DP)) {
//
// If Device is PCCard
//
return TRUE;
// Check device whether is hot plug device or not throught Device Path
//
if ((DevicePathType (CheckDevicePath) == MESSAGING_DEVICE_PATH) &&
(DevicePathSubType (CheckDevicePath) == MSG_USB_DP ||
DevicePathSubType (CheckDevicePath) == MSG_USB_CLASS_DP ||
DevicePathSubType (CheckDevicePath) == MSG_USB_WWID_DP)) {
//
// If Device is USB device
//
return TRUE;
}
if ((DevicePathType (CheckDevicePath) == HARDWARE_DEVICE_PATH) &&
(DevicePathSubType (CheckDevicePath) == HW_PCCARD_DP)) {
//
// If Device is PCCard
//
return TRUE;
}
CheckDevicePath = NextDevicePathNode (CheckDevicePath);
}
return FALSE;