summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/dwc3/gadget.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index f4f97b0ec0b2..12969d2fa688 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -182,7 +182,7 @@ int dwc3_gadget_resize_tx_fifos(struct dwc3 *dwc)
int num_eps;
struct usb_composite_dev *cdev = get_gadget_data(&dwc->gadget);
- if (!dwc->needs_fifo_resize)
+ if (!(cdev && cdev->config) || !dwc->needs_fifo_resize)
return 0;
/* gadget.num_eps never be greater than dwc->num_in_eps */
@@ -2534,6 +2534,9 @@ static void dwc3_gadget_reset_interrupt(struct dwc3 *dwc)
dwc3_clear_stall_all_ep(dwc);
dwc->start_config_issued = false;
+ /* bus reset issued due to missing status stage of a control transfer */
+ dwc->resize_fifos = 0;
+
/* Reset device address to zero */
reg = dwc3_readl(dwc->regs, DWC3_DCFG);
reg &= ~(DWC3_DCFG_DEVADDR_MASK);