Hi Thinh: > Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit. > >Can you explain the problem in more detail? sure i will resend the patch > >> For example, TF card reader (aaaa:8816): >> usb 1-1: new high-speed USB device number 2 using xhci-hcd >> usb 1-1: device descriptor read/all, error -110 >> From the usb analyzer, always return NAK in the data phase. > >And how this change help to resolve this issue. Some device are slow in responding to Control transfers. Scheduling mulitiple transactions in one microframe/frame can cause the devices to misbehave. if this qurik is enabled, the host controller schedules transations for a Control transfer in defferent microframes/frame. > >Also note in the patch that this is for host mode. yes, this is only for host mode > >> >> Signed-off-by: Yaqin Pan <akingchen@xxxxxxxx> >> --- >> drivers/usb/dwc3/core.c | 4 ++++ >> drivers/usb/dwc3/core.h | 3 +++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c >> index ba74ad7f6995..93ac2c79a2c0 100644 >> --- a/drivers/usb/dwc3/core.c >> +++ b/drivers/usb/dwc3/core.c >> @@ -1071,6 +1071,8 @@ static int dwc3_core_init(struct dwc3 *dwc) >> * packet with Retry=1 & Nump != 0) >> */ >> reg |= DWC3_GUCTL_HSTINAUTORETRY; >> + if (dwc->sprs_ctrl_trans_quirk) >> + reg |= DWC3_GUCTL_SPRSCTRLTRANSEN; >> >> dwc3_writel(dwc->regs, DWC3_GUCTL, reg); >> } >> @@ -1377,6 +1379,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) >> >> dwc->dis_split_quirk = device_property_read_bool(dev, >> "snps,dis-split-quirk"); >> + dwc->sprs_ctrl_trans_quirk = device_property_read_bool(dev, >> + "snps,sprs-ctrl-trans-quirk"); > >Since you're adding a new device property, please add another patch to >document it in Documentation/devicetree/bindings/usb I will upload a patch serials for that > I will renew the patch,thanks~ Yaqin