EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextInDriverBinding = {\r
ConPlatformTextInDriverBindingSupported,\r
ConPlatformTextInDriverBindingStart,\r
- ConPlatformDriverBindingStop,\r
+ ConPlatformTextInDriverBindingStop,\r
0xa,\r
NULL,\r
NULL\r
EFI_DRIVER_BINDING_PROTOCOL gConPlatformTextOutDriverBinding = {\r
ConPlatformTextOutDriverBindingSupported,\r
ConPlatformTextOutDriverBindingStart,\r
- ConPlatformDriverBindingStop,\r
+ ConPlatformTextOutDriverBindingStop,\r
0xa,\r
NULL,\r
NULL\r
EFI_STATUS Status;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
EFI_SIMPLE_TEXT_OUT_PROTOCOL *TextOut;\r
-\r
BOOLEAN NeedClose;\r
\r
NeedClose = TRUE;\r
DevicePath,\r
CHECK\r
);\r
+\r
if (!EFI_ERROR (Status)) {\r
NeedClose = FALSE;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
\r
EFI_STATUS\r
EFIAPI\r
-ConPlatformDriverBindingStop (\r
+ConPlatformTextInDriverBindingStop (\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
IN EFI_HANDLE ControllerHandle,\r
IN UINTN NumberOfChildren,\r
);\r
if (!EFI_ERROR (Status)) {\r
//\r
- // Remove DevicePath from ConInDev, ConOutDev, and StdErrDev\r
+ // Remove DevicePath from ConInDev\r
//\r
ConPlatformUpdateDeviceVariable (\r
VarConsoleInpDev,\r
DevicePath,\r
DELETE\r
);\r
+ }\r
+ }\r
+ //\r
+ // Uninstall the Console Device GUIDs from Controller Handle\r
+ //\r
+ ConPlatformUnInstallProtocol (\r
+ This,\r
+ ControllerHandle,\r
+ &gEfiConsoleInDeviceGuid\r
+ );\r
+\r
+ //\r
+ // Close the Simple Input Protocol\r
+ //\r
+ gBS->CloseProtocol (\r
+ ControllerHandle,\r
+ &gEfiSimpleTextInProtocolGuid,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle\r
+ );\r
+\r
+ return EFI_SUCCESS;\r
+}\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+ConPlatformTextOutDriverBindingStop (\r
+ IN EFI_DRIVER_BINDING_PROTOCOL *This,\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN UINTN NumberOfChildren,\r
+ IN EFI_HANDLE *ChildHandleBuffer\r
+ )\r
+/*++\r
+\r
+Routine Description:\r
+\r
+Arguments:\r
+ (Standard DriverBinding Protocol Stop() function)\r
+\r
+Returns:\r
+\r
+ None\r
+\r
+--*/\r
+{\r
+ EFI_STATUS Status;\r
+ EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
+\r
+ //\r
+ // hot plug device is not included into the console associated variables,\r
+ // so no need to check variable for those hot plug devices.\r
+ //\r
+ if (!IsHotPlugDevice (This->DriverBindingHandle, ControllerHandle)) {\r
+ //\r
+ // Get the Device Path Protocol so the environment variables can be updated\r
+ //\r
+ Status = gBS->OpenProtocol (\r
+ ControllerHandle,\r
+ &gEfiDevicePathProtocolGuid,\r
+ (VOID **) &DevicePath,\r
+ This->DriverBindingHandle,\r
+ ControllerHandle,\r
+ EFI_OPEN_PROTOCOL_GET_PROTOCOL\r
+ );\r
+ if (!EFI_ERROR (Status)) {\r
+ //\r
+ // Remove DevicePath from ConOutDev, and StdErrDev\r
+ //\r
ConPlatformUpdateDeviceVariable (\r
VarConsoleOutDev,\r
DevicePath,\r
//\r
// Uninstall the Console Device GUIDs from Controller Handle\r
//\r
- ConPlatformUnInstallProtocol (\r
- This,\r
- ControllerHandle,\r
- &gEfiConsoleInDeviceGuid\r
- );\r
-\r
ConPlatformUnInstallProtocol (\r
This,\r
ControllerHandle,\r
);\r
\r
//\r
- // Close the Simple Input and Simple Text Output Protocols\r
+ // Close the Simple Text Output Protocol\r
//\r
- gBS->CloseProtocol (\r
- ControllerHandle,\r
- &gEfiSimpleTextInProtocolGuid,\r
- This->DriverBindingHandle,\r
- ControllerHandle\r
- );\r
-\r
gBS->CloseProtocol (\r
ControllerHandle,\r
&gEfiSimpleTextOutProtocolGuid,\r
return EFI_SUCCESS;\r
}\r
\r
+\r
VOID\r
ConPlatformUnInstallProtocol (\r
IN EFI_DRIVER_BINDING_PROTOCOL *This,\r