usb: dwc3: gadget: Remove FS bInterval_m1 limitation
authorThinh Nguyen <Thinh.Nguyen@synopsys.com>
Thu, 15 Apr 2021 07:41:58 +0000 (00:41 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 22 Apr 2021 09:04:24 +0000 (11:04 +0200)
The programming guide incorrectly stated that the DCFG.bInterval_m1 must
be set to 0 when operating in fullspeed. There's no such limitation for
all IPs. See DWC_usb3x programming guide section 3.2.2.1.

Fixes: a1679af85b2a ("usb: dwc3: gadget: Fix setting of DEPCFG.bInterval_m1")
Cc: <stable@vger.kernel.org>
Acked-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/5d4139ae89d810eb0a2d8577fb096fc88e87bfab.1618472454.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/gadget.c

index 1a632a3..90f4f9e 100644 (file)
@@ -607,12 +607,14 @@ static int dwc3_gadget_set_ep_config(struct dwc3_ep *dep, unsigned int action)
                u8 bInterval_m1;
 
                /*
-                * Valid range for DEPCFG.bInterval_m1 is from 0 to 13, and it
-                * must be set to 0 when the controller operates in full-speed.
+                * Valid range for DEPCFG.bInterval_m1 is from 0 to 13.
+                *
+                * NOTE: The programming guide incorrectly stated bInterval_m1
+                * must be set to 0 when operating in fullspeed. Internally the
+                * controller does not have this limitation. See DWC_usb3x
+                * programming guide section 3.2.2.1.
                 */
                bInterval_m1 = min_t(u8, desc->bInterval - 1, 13);
-               if (dwc->gadget->speed == USB_SPEED_FULL)
-                       bInterval_m1 = 0;
 
                if (usb_endpoint_type(desc) == USB_ENDPOINT_XFER_INT &&
                    dwc->gadget->speed == USB_SPEED_FULL)