On Tue, Jul 18, 2017 at 08:47:58PM +0100, Abdulhadi Mohamed wrote:
> The current HID function driver doesn't support GET_PROCOTOL and
> SET_PROCOTOL commands, which are required to operate the HID gadgets in
> BOOT mode. This patch implements this feature for devices that have
> the same implementation for REPORT and BOOT mode so that these 
> devices are recognized by older BIOSes. 
> 
> Signed-off-by: Abdulhadi Mohamed <abdulahha...@gmail.com>

Any reason you didn't cc: the correct maintainers as well?
scripts/get_maintainer.pl will tell you who to contact...

> 
> ---
>  drivers/usb/gadget/function/f_hid.c | 17 ++++++++++++++++-
>  include/linux/hid.h                 |  6 ++++++
>  2 files changed, 22 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/gadget/function/f_hid.c 
> b/drivers/usb/gadget/function/f_hid.c
> index 5eea448..c60b882 100644
> --- a/drivers/usb/gadget/function/f_hid.c
> +++ b/drivers/usb/gadget/function/f_hid.c
> @@ -44,6 +44,7 @@ struct f_hidg {
>         /* configuration */
>         unsigned char                   bInterfaceSubClass;
>         unsigned char                   bInterfaceProtocol;
> +       unsigned char                   protocol;
>         unsigned short                  report_desc_length;
>         char                            *report_desc;
>         unsigned short                  report_length;
> @@ -527,7 +528,9 @@ 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);
> +               ((u8 *) req->buf)[0] = hidg->protocol;
> +               goto respond;
>                 break;
> 
>         case ((USB_DIR_OUT | USB_TYPE_CLASS | USB_RECIP_INTERFACE) << 8
> @@ -539,6 +542,17 @@ 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");
> +               if (value > HID_REPORT_PROTOCOL)
> +                       goto stall;
> +               length = 0;
> +               /*
> +                * We assume that programs implementing the Boot protocol
> +                * are also compatible with the Report Protocol
> +                */
> +               if(hidg->bInterfaceSubClass == USB_INTERFACE_SUBCLASS_BOOT) {
> +                       hidg->protocol = value;
> +                       goto respond;
> +               }

Always use scripts/checkpatch.pl on your patches so you do not get
grumpy maintainers telling you to use scripts/checkpatch.pl on your
patches...

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to