MdeModulePkg/Usb/Keyboard.c: don't request protocol before setting

No need to check the interface protocol then conditionally setting,
just set it to BOOT_PROTOCOL and check for error.

Signed-off-by: Matt DeVillier <matt.devillier@gmail.com>
This commit is contained in:
Matt DeVillier
2019-12-17 22:54:22 -06:00
parent 2719881a54
commit f1d5f1091d

View File

@@ -807,7 +807,6 @@ InitUSBKeyboard (
IN OUT USB_KB_DEV *UsbKeyboardDevice IN OUT USB_KB_DEV *UsbKeyboardDevice
) )
{ {
UINT8 Protocol;
EFI_STATUS Status; EFI_STATUS Status;
REPORT_STATUS_CODE_WITH_DEVICE_PATH ( REPORT_STATUS_CODE_WITH_DEVICE_PATH (
@@ -820,21 +819,28 @@ InitUSBKeyboard (
InitQueue (&UsbKeyboardDevice->EfiKeyQueue, sizeof (EFI_KEY_DATA)); InitQueue (&UsbKeyboardDevice->EfiKeyQueue, sizeof (EFI_KEY_DATA));
InitQueue (&UsbKeyboardDevice->EfiKeyQueueForNotify, sizeof (EFI_KEY_DATA)); InitQueue (&UsbKeyboardDevice->EfiKeyQueueForNotify, sizeof (EFI_KEY_DATA));
UsbGetProtocolRequest (
UsbKeyboardDevice->UsbIo,
UsbKeyboardDevice->InterfaceDescriptor.InterfaceNumber,
&Protocol
);
// //
// Set boot protocol for the USB Keyboard. // Set boot protocol for the USB Keyboard.
// This driver only supports boot protocol. // This driver only supports boot protocol.
// //
if (Protocol != BOOT_PROTOCOL) { Status = UsbSetProtocolRequest (
UsbSetProtocolRequest ( UsbKeyboardDevice->UsbIo,
UsbKeyboardDevice->UsbIo, UsbKeyboardDevice->InterfaceDescriptor.InterfaceNumber,
UsbKeyboardDevice->InterfaceDescriptor.InterfaceNumber, BOOT_PROTOCOL
BOOT_PROTOCOL );
if (EFI_ERROR (Status)) {
//
// If protocol could not be set here, it means
// the keyboard interface has some errors and could
// not be initialized
//
REPORT_STATUS_CODE_WITH_DEVICE_PATH (
EFI_ERROR_CODE | EFI_ERROR_MINOR,
(EFI_PERIPHERAL_KEYBOARD | EFI_P_EC_INTERFACE_ERROR),
UsbKeyboardDevice->DevicePath
); );
return EFI_DEVICE_ERROR;
} }
UsbKeyboardDevice->CtrlOn = FALSE; UsbKeyboardDevice->CtrlOn = FALSE;