43 lines
1.4 KiB
Diff
43 lines
1.4 KiB
Diff
![]() |
From 7b1b44ea74c7d936bac1509cbe0a4637c7635f94 Mon Sep 17 00:00:00 2001
|
||
|
From: anarkia1976 <stefano.villa1976@gmail.com>
|
||
|
Date: Mon, 29 Jun 2015 16:41:07 +0200
|
||
|
Subject: [PATCH] drivers: usb: keyboard/mouse: Added Boot mode patch
|
||
|
|
||
|
---
|
||
|
drivers/usb/gadget/f_hid.c | 15 ++++++++++++++-
|
||
|
1 file changed, 14 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/drivers/usb/gadget/f_hid.c b/drivers/usb/gadget/f_hid.c
|
||
|
index fa52b72..4b49e6e 100644
|
||
|
--- a/drivers/usb/gadget/f_hid.c
|
||
|
+++ b/drivers/usb/gadget/f_hid.c
|
||
|
@@ -403,7 +403,12 @@ static int hidg_setup(struct usb_function *f,
|
||
|
case ((USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8
|
||
|
| HID_REQ_GET_PROTOCOL):
|
||
|
VDBG(cdev, "get_protocol\n");
|
||
|
- goto stall;
|
||
|
+ length = min_t(unsigned, length, 1);
|
||
|
+ if (hidg->bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT)
|
||
|
+ ((u8 *) req->buf)[0] = 0; /* Boot protocol */
|
||
|
+ else
|
||
|
+ ((u8 *) req->buf)[0] = 1; /* Report protocol */
|
||
|
+ goto respond;
|
||
|
break;
|
||
|
|
||
|
case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8
|
||
|
@@ -417,6 +422,14 @@ static int hidg_setup(struct usb_function *f,
|
||
|
case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8
|
||
|
| HID_REQ_SET_PROTOCOL):
|
||
|
VDBG(cdev, "set_protocol\n");
|
||
|
+ length = 0;
|
||
|
+ if (hidg->bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) {
|
||
|
+ if (value == 0) /* Boot protocol */
|
||
|
+ goto respond;
|
||
|
+ } else {
|
||
|
+ if (value == 1) /* Report protocol */
|
||
|
+ goto respond;
|
||
|
+ }
|
||
|
goto stall;
|
||
|
break;
|
||
|
|