irq = dwc3_gadget_get_irq(dwc);
if (irq < 0) {
-@@ -3286,6 +3287,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
- goto err4;
- }
+@@ -3288,6 +3289,12 @@ int dwc3_gadget_init(struct dwc3 *dwc)
+
+ dwc3_gadget_set_speed(&dwc->gadget, dwc->maximum_speed);
+ if (dwc->disable_devinit_u1u2_quirk) {
+ reg = dwc3_readl(dwc->regs, DWC3_DCTL);
xhci->quirks |= XHCI_BROKEN_PORT_PED;
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
-@@ -1969,10 +1969,12 @@ static int finish_td(struct xhci_hcd *xh
+@@ -1972,10 +1972,12 @@ static int finish_td(struct xhci_hcd *xh
union xhci_trb *ep_trb, struct xhci_transfer_event *event,
struct xhci_virt_ep *ep, int *status)
{
u32 trb_comp_code;
int ep_index;
-@@ -1995,14 +1997,30 @@ static int finish_td(struct xhci_hcd *xh
+@@ -1998,14 +2000,30 @@ static int finish_td(struct xhci_hcd *xh
if (trb_comp_code == COMP_STALL_ERROR ||
xhci_requires_manual_halt_cleanup(xhci, ep_ctx,
trb_comp_code)) {
#define BCSR5_INT_USB (0x02)
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
-@@ -434,6 +434,7 @@ struct usb_bus {
+@@ -432,6 +432,7 @@ struct usb_bus {
* for control transfers?
*/
u8 otg_port; /* 0, or number of OTG/HNP port */