]> Git Repo - linux.git/blobdiff - drivers/usb/dwc3/gadget.c
usb: dwc3: gadget: update DCFG.NumP to max burst size
[linux.git] / drivers / usb / dwc3 / gadget.c
index 43efb627d1cf179395213c841727751393648c54..4b681b0d420f3f55c5a3435865659d5f28623db9 100644 (file)
@@ -464,9 +464,19 @@ static int dwc3_gadget_set_ep_config(struct dwc3 *dwc, struct dwc3_ep *dep,
 
        /* Burst size is only needed in SuperSpeed mode */
        if (dwc->gadget.speed >= USB_SPEED_SUPER) {
-               u32 burst = dep->endpoint.maxburst - 1;
+               u32 burst = dep->endpoint.maxburst;
+               u32 nump;
+               u32 reg;
 
-               params.param0 |= DWC3_DEPCFG_BURST_SIZE(burst);
+               /* update NumP */
+               reg = dwc3_readl(dwc->regs, DWC3_DCFG);
+               nump = DWC3_DCFG_NUMP(reg);
+               nump = max(nump, burst);
+               reg &= ~DWC3_DCFG_NUMP_MASK;
+               reg |= nump << DWC3_DCFG_NUMP_SHIFT;
+               dwc3_writel(dwc->regs, DWC3_DCFG, reg);
+
+               params.param0 |= DWC3_DEPCFG_BURST_SIZE(burst - 1);
        }
 
        if (ignore)
This page took 0.030407 seconds and 4 git commands to generate.