On 08/18/2015 05:42 PM, Felipe Balbi wrote: > On Tue, Aug 18, 2015 at 11:06:32AM -0400, Alan Stern wrote: >> On Tue, 18 Aug 2015, Igor Kotrasinski wrote: >> >>> 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. >>> >>> Make behaviour consistent by filling bcdUSB for the other two cases of >>> USB 2.0 and USB 1.1 capable gadgets. >>> >>> Given that legacy gadget drivers set bcdUSB manually, it makes sense to >>> place the entire logic in the composite gadget driver. >>> >>> Signed-off-by: Igor Kotrasinski <i.kotrasinsk@xxxxxxxxxxx> >>> --- >>> drivers/usb/gadget/composite.c | 4 ++++ >>> 1 file changed, 4 insertions(+) >>> >>> diff --git a/drivers/usb/gadget/composite.c b/drivers/usb/gadget/composite.c >>> index 58b4657..6eac055 100644 >>> --- a/drivers/usb/gadget/composite.c >>> +++ b/drivers/usb/gadget/composite.c >>> @@ -1499,6 +1499,10 @@ composite_setup(struct usb_gadget *gadget, const struct usb_ctrlrequest *ctrl) >>> } else { >>> cdev->desc.bcdUSB = cpu_to_le16(0x0210); >>> } >>> + } else if (gadget_is_dualspeed(gadget)) { >>> + cdev->desc.bcdUSB = cpu_to_le16(0x0200); >>> + } else { >>> + cdev->desc.bcdUSB = cpu_to_le16(0x0110); >>> } >> I would argue that there's no need to check gadget_is_dualspeed(); >> bcdUSB should always be set to 0x0200. After all, the spec explicitly >> permits USB-2.0 devices to run only at full speed. > we should actually set it to 0x0210 so we get to send BOS descriptors > :-) > If I understand it correctly then, gadget->max_speed isn't any indicator of supported standard? Either way, some else block definitely should be there. I don't follow why 0x0210 is appropriate for all other gadget speeds; could you please, if possible, elaborate? Igor Kotrasinski -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html