fd5f88ff03b9a43b31b79ad9162a82844f685938
[oweals/openwrt.git] /
1 From 6e56da00afdf11416045213552514d10bab845cc Mon Sep 17 00:00:00 2001
2 From: P33M <p33m@github.com>
3 Date: Wed, 16 Jan 2019 10:17:52 +0000
4 Subject: [PATCH] dwc_otg: fix bug with port_addr assignment for
5  single-TT hubs
6
7 See https://github.com/raspberrypi/linux/issues/2734
8
9 The "Hub Port" field in the split transaction packet was always set
10 to 1 for single-TT hubs. The majority of single-TT hub products
11 apparently ignore this field and broadcast to all downstream enabled
12 ports, which masked the issue. A subset of hub devices apparently
13 need the port number to be exact or split transactions will fail.
14 ---
15  drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c | 2 +-
16  1 file changed, 1 insertion(+), 1 deletion(-)
17
18 --- a/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
19 +++ b/drivers/usb/host/dwc_otg/dwc_otg_hcd_linux.c
20 @@ -232,7 +232,7 @@ static int _hub_info(dwc_otg_hcd_t * hcd
21                 else
22                         *hub_addr = urb->dev->tt->hub->devnum;
23         }
24 -       *port_addr = urb->dev->tt->multi ? urb->dev->ttport : 1;
25 +       *port_addr = urb->dev->ttport;
26     } else {
27          *hub_addr = 0;
28         *port_addr = urb->dev->ttport;