]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
usb: dwc3: core: Disable USB2 retry for DWC_usb31 1.80a and prior
authorFaisal Hassan <quic_faisalh@quicinc.com>
Fri, 29 Nov 2024 17:34:22 +0000 (23:04 +0530)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 Dec 2024 15:09:41 +0000 (16:09 +0100)
commit04d5b4c23f3b7cbf44a71a338dae0c7aabd86c29
tree64f5d91ce54c944b639a4c5c775cd928ec244e29
parenta787bffff5d14545c8e2d061b6f7839ede8ead19
usb: dwc3: core: Disable USB2 retry for DWC_usb31 1.80a and prior

STAR 9001346572 addresses a USB 2.0 endpoint blocking issue in host mode
for controller versions DWC_usb31 1.70a and 1.80a. This issue affects
devices on both high-speed and full-speed bus instances. When all
endpoint caches are filled and a single active endpoint receives
continuous NAK responses, data transfers to other endpoints may get
blocked.

To resolve this, for controller versions DWC_usb31 1.70a and 1.80a, the
GUCTL3 bit[16] (USB2.0 Internal Retry Disable) is set to 1. This bit
disables the USB2.0 internal retry feature and ensures proper eviction
handling in the host controller endpoind cache. The GUCTL3[16] register
function is available only from DWC_usb31 version 1.70a.

Signed-off-by: Faisal Hassan <quic_faisalh@quicinc.com>
Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/20241129173422.20063-1-quic_faisalh@quicinc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/dwc3/core.c
drivers/usb/dwc3/core.h