Skip to content

Commit f761351

Browse files
P33Mpelwell
authored andcommitted
usb: dwc2: only masquerade split-IN interrupt transfers
Some hub hardware does not differentiate pipe direction in the non-periodic split handler, so transfers to the same endpoint index will collide. A simple fix is to limit the non-periodic masquerade only to IN transfers, which are also the most affected by interrupt latency. A recurrence of #2024 Signed-off-by: Jonathan Bell <jonathan@raspberrypi.com>
1 parent abfc953 commit f761351

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/usb/dwc2/hcd.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -685,7 +685,8 @@ static void dwc2_hc_init(struct dwc2_hsotg *hsotg, struct dwc2_host_chan *chan)
685685
* Devices are none the wiser - the handshake tokens are the same.
686686
* The fakery is undone in dwc2_hc_n_intr().
687687
*/
688-
if (chan->do_split && chan->ep_type == USB_ENDPOINT_XFER_INT)
688+
if (chan->ep_is_in && chan->do_split &&
689+
chan->ep_type == USB_ENDPOINT_XFER_INT)
689690
chan->ep_type = USB_ENDPOINT_XFER_CONTROL;
690691

691692
hcchar |= chan->ep_type << HCCHAR_EPTYPE_SHIFT & HCCHAR_EPTYPE_MASK;

0 commit comments

Comments
 (0)