diff options
-rw-r--r-- | drivers/usb/dwc3/gadget.c | 5 |
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); |