Commit b4a4be84 authored by Roger Quadros's avatar Roger Quadros Committed by Greg Kroah-Hartman

USB: fix up merge of 6.4-rc4 into usb-next

The merge of 6.4-rc4 got the changes in drivers/usb/dwc3/gadget.c
completely incorrect, so fix it up properly.

Link: https://lore.kernel.org/r/f604f836-7858-6140-4ec1-9ba95cba6991@kernel.org
Fixes: 7e530d32 ("Merge 6.4-rc4 into usb-next")
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 7e530d32
...@@ -2702,13 +2702,17 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc) ...@@ -2702,13 +2702,17 @@ static int dwc3_gadget_soft_disconnect(struct dwc3 *dwc)
static int dwc3_gadget_soft_connect(struct dwc3 *dwc) static int dwc3_gadget_soft_connect(struct dwc3 *dwc)
{ {
int ret;
/* /*
* In the Synopsys DWC_usb31 1.90a programming guide section * In the Synopsys DWC_usb31 1.90a programming guide section
* 4.1.9, it specifies that for a reconnect after a * 4.1.9, it specifies that for a reconnect after a
* device-initiated disconnect requires a core soft reset * device-initiated disconnect requires a core soft reset
* (DCTL.CSftRst) before enabling the run/stop bit. * (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_event_buffers_setup(dwc);
__dwc3_gadget_start(dwc); __dwc3_gadget_start(dwc);
...@@ -2753,25 +2757,11 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) ...@@ -2753,25 +2757,11 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on)
synchronize_irq(dwc->irq_gadget); synchronize_irq(dwc->irq_gadget);
if (!is_on) { if (!is_on)
ret = dwc3_gadget_soft_disconnect(dwc); ret = dwc3_gadget_soft_disconnect(dwc);
} else { else
/* ret = dwc3_gadget_soft_connect(dwc);
* 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.
*/
ret = dwc3_core_soft_reset(dwc);
if (ret)
goto done;
dwc3_event_buffers_setup(dwc);
__dwc3_gadget_start(dwc);
ret = dwc3_gadget_run_stop(dwc, true);
}
done:
pm_runtime_put(dwc->dev); pm_runtime_put(dwc->dev);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment