All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] usb: dwc3: gadget: fix burst size corruption
@ 2014-05-01  7:16 Zhuang Jin Can
  2014-04-30 20:03   ` Felipe Balbi
  0 siblings, 1 reply; 9+ messages in thread
From: Zhuang Jin Can @ 2014-05-01  7:16 UTC (permalink / raw)
  To: Felipe Balbi; +Cc: linux-usb, linux-omap, linux-kernel

endpoint.maxburst may be 0 if a gadget doesn't call config_ep_by_speed()
to update it from the companion descriptor.
And endpoint.maxburst - 1 returns 11111b which wrongly sets bit
26 of endpoint parameter 0.
This sets a wrong endpoint state and will cause "Get Endpoint State"
command can't get the corret endpoint state and "Set Endpoint Config"
command can't restore the correct endpoint state during hibernation
resume flow.
Thus, when endpoint.maxburst is 0, we should set burst as 0 directly.

Signed-off-by: Zhuang Jin Can <jin.can.zhuang@intel.com>
---
 drivers/usb/dwc3/gadget.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 70715ee..44eca95 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -440,7 +440,8 @@ 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 ?
+				dep->endpoint.maxburst - 1 : 0;
 
 		params.param0 |= DWC3_DEPCFG_BURST_SIZE(burst);
 	}
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2014-05-02 15:35 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-05-01  7:16 [PATCH] usb: dwc3: gadget: fix burst size corruption Zhuang Jin Can
2014-04-30 20:03 ` Felipe Balbi
2014-04-30 20:03   ` Felipe Balbi
2014-05-01 21:14   ` Zhuang Jin Can
2014-05-01 13:45     ` Alan Stern
2014-05-01 13:45       ` Alan Stern
2014-05-01 15:15       ` Felipe Balbi
2014-05-01 15:15         ` Felipe Balbi
2014-05-03  3:35         ` Zhuang Jin Can

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.