/* Submit a USB set HID protocol request for the USB device specified by UsbIo and Interface and set the protocol to the value specified by Protocol. If UsbIo is NULL, then ASSERT(). */
EFI_STATUS EFIAPI UsbSetProtocolRequest(IN EFI_USB_IO_PROTOCOL *UsbIo, IN UINT8 Interface, IN UINT8 Protocol)
/* Submit a USB set HID protocol request for the USB device specified by UsbIo and Interface and set the protocol to the value specified by Protocol. If UsbIo is NULL, then ASSERT(). */
EFI_STATUS EFIAPI UsbSetProtocolRequest(IN EFI_USB_IO_PROTOCOL *UsbIo, IN UINT8 Interface, IN UINT8 Protocol)
{
  UINT32                  Status;
  EFI_STATUS              Result;
  EFI_USB_DEVICE_REQUEST  Request;
  ASSERT (UsbIo != NULL);
  Request.RequestType = USB_HID_CLASS_SET_REQ_TYPE;
  Request.Request     = EFI_USB_SET_PROTOCOL_REQUEST;
  Request.Value       = Protocol;
  Request.Index       = Interface;
  Request.Length      = 0;
  Result = UsbIo->UsbControlTransfer (
                    UsbIo,
                    &Request,
                    EfiUsbNoData,
                    PcdGet32 (PcdUsbTransferTimeoutValue),
                    NULL,
                    0,
                    &Status
                    );
  return Result;
}