From b2dc4ebd4d223980b4d047d2f04d497fbb2b2c9c Mon Sep 17 00:00:00 2001 From: Igor Kotrasinski Date: Thu, 20 Aug 2015 10:00:01 +0200 Subject: [PATCH] usb: gadget: composite: fill bcdUSB for any gadget max speed When handling device GET_DESCRIPTOR, composite gadget driver fills the bcdUSB field only if the gadget supports USB 3.0. Otherwise the field is left unfilled. For consistency, set bcdUSB to 0x0200 for gadgets that don't support superspeed. It's correct to use 0x0200 for any setting that doesn't use superspeed, since USB 2.0 devices can restrict themselves to full speed only. It is NOT correct to use 0x0210, since BOS descriptors are handled only if gadget_is_superspeed() is satisfied, otherwise it results in a stall. Signed-off-by: Igor Kotrasinski Signed-off-by: Felipe Balbi [Backported from mainline commit 5527e73305e8a9958b00331902a27514e62d539b] Change-Id: Icd543a5b83c6b915be4ba54343ce979145f7e15d Signed-off-by: Krzysztof Opasiak --- drivers/usb/gadget/composite.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c index 4e3447bbd097..63652e5d5827 100644 --- a/drivers/usb/gadget/composite.c +++ b/drivers/usb/gadget/composite.c @@ -1499,6 +1499,8 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) } else { cdev->desc.bcdUSB = cpu_to_le16(0x0210); } + } else { + cdev->desc.bcdUSB = cpu_to_le16(0x0200); } value = min(w_length, (u16) sizeof cdev->desc); -- 2.34.1