Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

usb: dwc3: gadget: Use max speed if unspecified

If the gadget driver doesn't specify a max_speed, then use the
controller's maximum supported speed as default. For DWC_usb32 IP, the
gadget's speed maybe limited to gen2x1 rate only if the driver's
max_speed is unknown. This scenario should not occur with the current
implementation since the default gadget driver's max_speed should always
be specified. However, to make the driver more robust and help with
readability, let's cover all the scenarios in __dwc3_gadget_set_speed().

Fixes: 450b9e9fabd8 ("usb: dwc3: gadget: Set speed only up to the max supported")
Cc: <stable@vger.kernel.org>
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/55ac7001af73bfe9bc750c6446ef4ac8cf6f9313.1615254129.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Thinh Nguyen and committed by
Greg Kroah-Hartman
93f1d43c cdb651b6

+1 -1
+1 -1
drivers/usb/dwc3/gadget.c
··· 2083 2083 u32 reg; 2084 2084 2085 2085 speed = dwc->gadget_max_speed; 2086 - if (speed > dwc->maximum_speed) 2086 + if (speed == USB_SPEED_UNKNOWN || speed > dwc->maximum_speed) 2087 2087 speed = dwc->maximum_speed; 2088 2088 2089 2089 if (speed == USB_SPEED_SUPER_PLUS &&