Hi all, Today's linux-next merge of the usb tree got a conflict in: drivers/usb/dwc3/gadget.c between commit: c8540870af4c ("usb: dwc3: gadget: Improve dwc3_gadget_suspend() and dwc3_gadget_resume()") from the usb.current tree and commit: 813f44d57e19 ("usb: dwc3: gadget: Bail out in pullup if soft reset timeout happens") from the usb tree. I fixed it up (I think - see below) and can carry the fix as necessary. This is now fixed as far as linux-next is concerned, but any non trivial conflicts should be mentioned to your upstream maintainer when your tree is submitted for merging. You may also want to consider cooperating with the maintainer of the conflicting tree to minimise any particularly complex conflicts. -- Cheers, Stephen Rothwell diff --cc drivers/usb/dwc3/gadget.c index d831f5acf7b5,5965796bc5d5..000000000000 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@@ -2700,21 -2699,6 +2700,26 @@@ static int dwc3_gadget_soft_disconnect( return ret; } +static int dwc3_gadget_soft_connect(struct dwc3 *dwc) +{ ++ int ret; ++ + /* + * In the Synopsys DWC_usb31 1.90a programming guide section + * 4.1.9, it specifies that for a reconnect after a + * device-initiated disconnect requires a core soft reset + * (DCTL.CSftRst) before enabling the run/stop bit. + */ + dwc3_core_soft_reset(dwc); ++ ret = dwc3_core_soft_reset(dwc); ++ if (ret) ++ return ret; + + dwc3_event_buffers_setup(dwc); + __dwc3_gadget_start(dwc); + return dwc3_gadget_run_stop(dwc, true); +} + static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) { struct dwc3 *dwc = gadget_to_dwc(g);