linux/drivers/usb/dwc2
Fabrice Gasnier 32fde84362 usb: dwc2: drd: fix soft connect when gadget is unconfigured
When the gadget driver hasn't been (yet) configured, and the cable is
connected to a HOST, the SFTDISCON gets cleared unconditionally, so the
HOST tries to enumerate it.
At the host side, this can result in a stuck USB port or worse. When
getting lucky, some dmesg can be observed at the host side:
 new high-speed USB device number ...
 device descriptor read/64, error -110

Fix it in drd, by checking the enabled flag before calling
dwc2_hsotg_core_connect(). It will be called later, once configured,
by the normal flow:
- udc_bind_to_driver
 - usb_gadget_connect
   - dwc2_hsotg_pullup
     - dwc2_hsotg_core_connect

Fixes: 17f934024e ("usb: dwc2: override PHY input signals with usb role switch support")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
Link: https://lore.kernel.org/r/1644999135-13478-1-git-send-email-fabrice.gasnier@foss.st.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-17 16:10:21 +01:00
..
core.c usb: dwc2: Fix spelling mistake "was't" -> "wasn't" 2021-08-27 10:29:54 +02:00
core.h usb: dwc2: drd: fix soft connect when gadget is unconfigured 2022-02-17 16:10:21 +01:00
core_intr.c usb: dwc2: Skip clock gating on Samsung SoCs 2021-07-21 09:50:27 +02:00
debug.h USB: dwc2: Use the correct style for SPDX License Identifier 2020-05-05 10:58:50 +03:00
debugfs.c usb: dwc2: add otg_rev and otg_caps information for gadget driver 2021-10-25 09:20:26 +02:00
drd.c usb: dwc2: drd: fix soft connect when gadget is unconfigured 2022-02-17 16:10:21 +01:00
gadget.c usb: dwc2: gadget: don't try to disable ep0 in dwc2_hsotg_suspend 2022-01-26 13:49:35 +01:00
hcd.c usb: dwc2: do not gate off the hardware if it does not support clock gating 2022-01-06 15:27:53 +01:00
hcd.h USB: dwc2: Use the correct style for SPDX License Identifier 2020-05-05 10:58:50 +03:00
hcd_ddma.c usb: dwc2: Modify dwc2_readl/writel functions prototype 2018-07-30 10:39:16 +03:00
hcd_intr.c usb: dwc2: Make "trimming xfer length" a debug message 2021-01-26 18:42:15 +01:00
hcd_queue.c usb: dwc2: hcd_queue: Fix use of floating point literal 2021-11-17 15:03:34 +01:00
hw.h usb: dwc2: Update enter and exit partial power down functions 2021-04-09 15:16:38 +02:00
Kconfig usb: dwc2: override PHY input signals with usb role switch support 2020-10-02 13:29:13 +03:00
Makefile usb: dwc2: override PHY input signals with usb role switch support 2020-10-02 13:29:13 +03:00
params.c usb: dwc2: stm32mp15: set otg_rev 2021-10-25 09:20:26 +02:00
pci.c usb: dwc2: pci: Fix possible copy/paste issue 2021-05-27 09:45:27 +02:00
platform.c Linux 5.16-rc6 2021-12-20 09:58:10 +01:00