Subject: linux-next: manual merge of the usb tree with the usb.current tree

From: Stephen Rothwell <[email-masked]>
Date: Mon, 15 May 2023 12:35:24 +1000

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);