There's the limitation of Synopsys dwc3 controller with ERST programming in supporting separate ERSTBA_HI and ERSTBA_LO programming. It's supported when the ERSTBA is programmed ERSTBA_HI before ERSTBA_LO. But, writing operations in xHCI is done low-high order following xHCI spec. xHCI specification 5.1 "Register Conventions" states that 64 bit registers should be written in low-high order. Synopsys dwc3 needs workaround for high-low order. That's why I add new quirk to support this. --- Changes in v2: - add a quirk in dwc3 - add dt-bindings of dwc3/xhci - set the quirk in xhci-plat from dwc3 Link to v1: https://lore.kernel.org/r/1716875836-186791-1-git-send-email-dh10.jung@xxxxxxxxxxx/ Changes in v1: - add a quirk in xhci - use the quirk for programming ERST high-low order Link to RFC: https://lore.kernel.org/r/1716339839-44022-1-git-send-email-dh10.jung@xxxxxxxxxxx/ --- Daehwan Jung (5): dt-bindings: usb: snps,dwc3: Add 'snps,xhci-write-64-hi-lo-quirk' quirk usb: dwc3: Support quirk for writing high-low order dt-bindings: usb: xhci: Add 'write-64-hi-lo-quirk' quirk xhci: Add a quirk for writing ERST in high-low order usb: host: xhci-plat: Add support for XHCI_WRITE_64_HI_LO_QUIRK Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 5 +++++ Documentation/devicetree/bindings/usb/usb-xhci.yaml | 4 ++++ drivers/usb/dwc3/core.c | 3 +++ drivers/usb/dwc3/core.h | 2 ++ drivers/usb/dwc3/host.c | 5 ++++- drivers/usb/host/xhci-mem.c | 5 ++++- drivers/usb/host/xhci-plat.c | 3 +++ drivers/usb/host/xhci.h | 2 ++ 8 files changed, 27 insertions(+), 2 deletions(-) -- 2.7.4