Re: [PATCH 1/2] dt-bindings: usb: xhci: add xhci-no-soft-retry-quirk
From: Matt Eaton
Date: Fri Aug 28 2026 - 09:18:30 EST
On Fri, Aug 28, 2026 at 2:39 PM Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote:
>
> On 28/08/2026 14:37, Matt Eaton via B4 Relay wrote:
> > From: Matt Eaton <linux@xxxxxxxxxxxxxx>
> >
> > Document the xhci-no-soft-retry-quirk property, added in the
> > following patch.
> >
> > snps,dwc3-common.yaml refs usb-xhci.yaml for every dr_mode other than
> > peripheral, so a host-mode dwc3 node inherits it and dt_binding_check
> > accepts it there.
>
> I do not understand how this sentence is relevant. Please describe the
> hardware needing this.
I came across this while porting the UniFi Travel Router (IPQ4018),
the stock Qualcomm kernel is 4.4.60 which predates the soft retry
code. The command ring hangs if you disconnect the device while it's
transmitting. Reproducible consistently when using USB to tether to a
phone.
> >
> > Signed-off-by: Matt Eaton <linux@xxxxxxxxxxxxxx>
> > ---
> > Documentation/devicetree/bindings/usb/usb-xhci.yaml | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/usb/usb-xhci.yaml b/Documentation/devicetree/bindings/usb/usb-xhci.yaml
> > index 4238ae896ef6..5d67a41658f7 100644
> > --- a/Documentation/devicetree/bindings/usb/usb-xhci.yaml
> > +++ b/Documentation/devicetree/bindings/usb/usb-xhci.yaml
> > @@ -25,6 +25,10 @@ properties:
> > description: Set if the controller has broken port disable mechanism
> > type: boolean
> >
> > + xhci-no-soft-retry-quirk:
> > + description: Set if the controller cannot perform xHCI Soft Retry correctly
>
> Why isn't this implied by compatible? Looks like controller's property.
The xhci device is created by dwc3 core as a child device, and so
xhci_plat_probe() is used. I think a DT property is the right
approach, similar to quirk-broken-port-ped, but to set
XHCI_NO_SOFT_RETRY.
>
> Best regards,
> Krzysztof
Cheers,
Matt Eaton