From nobody Wed Jul 1 04:16:14 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CBB37C4332F for ; Thu, 30 Dec 2021 14:04:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239838AbhL3OEw (ORCPT ); Thu, 30 Dec 2021 09:04:52 -0500 Received: from mail-m17657.qiye.163.com ([59.111.176.57]:10726 "EHLO mail-m17657.qiye.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239778AbhL3OEs (ORCPT ); Thu, 30 Dec 2021 09:04:48 -0500 DKIM-Signature: a=rsa-sha256; b=oFRei3OJYHj6xA2yRbqb2IoU+wF4W2tnfHbsEwbuq6D7uZwRSGgrtuSf+3xM9QmOm9s/p/Cg66p99QnYSj0P+pVXKfK8VG3b1SVv5I1XK9JfYIksWvEoa14qQ6ZJqHEj6Af26MxdKC8u/deBvuTg8d97orB6DcS5MXquHYVXLhA=; s=default; c=relaxed/relaxed; d=vivo.com; v=1; bh=RWcY89ErvPEeUtYtul67R6QvSk7GdHCL3vo/k7DyrAY=; h=date:mime-version:subject:message-id:from; Received: from vivo-600-G6.vivo.xyz (unknown [58.251.74.232]) by mail-m17657.qiye.163.com (Hmail) with ESMTPA id 0331E2801D3; Thu, 30 Dec 2021 21:59:22 +0800 (CST) From: Yaqin Pan To: Greg Kroah-Hartman , Rob Herring , Felipe Balbi , linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: kernel@vivo.com, Yaqin Pan Subject: [PATCH v3 1/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit. Date: Thu, 30 Dec 2021 21:58:30 +0800 Message-Id: <20211230135832.23005-2-akingchen@vivo.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211230135832.23005-1-akingchen@vivo.com> References: <20211230135832.23005-1-akingchen@vivo.com> X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgPGg8OCBgUHx5ZQUlOS1dZCBgUCR5ZQVlLVUtZV1 kWDxoPAgseWUFZKDYvK1lXWShZQUhPN1dZLVlBSVdZDwkaFQgSH1lBWUNNHklWHh5OHkJCHh8eGR 1LVRMBExYaEhckFA4PWVdZFhoPEhUdFFlBWVVLWQY+ X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6MDo6CDo5Ej5PIREzGR83Hyoa SBMaCylVSlVKTU9LQ0xJTE1ITkpDVTMWGhIXVRoQEhUcGBMeFTsNEg0UVRgUFkVZV1kSC1lBWU5D VUlOSlVMT1VJSElZV1kIAVlBT0pNQjcG X-HM-Tid: 0a7e0ba35f6cda03kuws0331e2801d3 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This quirk is only for dwc3 host mode. the dwc3 controller can't emurate some devices successfully. For example, TF card reader (aaaa:8816): failed log 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. if enable the GUCTL.SPRSCTRLTRANSEN bit. then the log is: usb 2-1: new high-speed USB device number 3 using xhci-hcd usb 2-1: New USB device found, idVendor=3Daaaa, idProduct=3D8816, bcdDevice=3D13.08 usb 2-1: New USB device strings: Mfr=3D1, Product=3D2, SerialNumber=3D3 usb 2-1: Product: MXT USB Device usb 2-1: Manufacturer: MXTronics usb 2-1: SerialNumber: 150101v01 usb 2-1: New USB device found, VID=3Daaaa, PID=3D8816 Some devices 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. Signed-off-by: Yaqin Pan --- 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=3D1 & Nump !=3D 0) */ reg |=3D DWC3_GUCTL_HSTINAUTORETRY; + if (dwc->sprs_ctrl_trans_quirk) + reg |=3D DWC3_GUCTL_SPRSCTRLTRANSEN; =20 dwc3_writel(dwc->regs, DWC3_GUCTL, reg); } @@ -1377,6 +1379,8 @@ static void dwc3_get_properties(struct dwc3 *dwc) =20 dwc->dis_split_quirk =3D device_property_read_bool(dev, "snps,dis-split-quirk"); + dwc->sprs_ctrl_trans_quirk =3D device_property_read_bool(dev, + "snps,sprs-ctrl-trans-quirk"); =20 dwc->lpm_nyet_threshold =3D lpm_nyet_threshold; dwc->tx_de_emphasis =3D tx_de_emphasis; diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h index 5991766239ba..6048087df1d1 100644 --- a/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h @@ -254,6 +254,7 @@ =20 /* Global User Control Register */ #define DWC3_GUCTL_HSTINAUTORETRY BIT(14) +#define DWC3_GUCTL_SPRSCTRLTRANSEN BIT(17) =20 /* Global User Control 1 Register */ #define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17) @@ -1077,6 +1078,7 @@ struct dwc3_scratchpad_array { * 3 - Reserved * @dis_metastability_quirk: set to disable metastability quirk. * @dis_split_quirk: set to disable split boundary. + * @sprs_ctrl_trans_quirk: set to enable sparse control transaction quirk. * @imod_interval: set the interrupt moderation interval in 250ns * increments or 0 to disable. */ @@ -1279,6 +1281,7 @@ struct dwc3 { unsigned dis_metastability_quirk:1; =20 unsigned dis_split_quirk:1; + unsigned sprs_ctrl_trans_quirk:1; unsigned async_callbacks:1; =20 u16 imod_interval; --=20 2.17.1 From nobody Wed Jul 1 04:16:14 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 01F54C433EF for ; Thu, 30 Dec 2021 14:04:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239821AbhL3OEv (ORCPT ); Thu, 30 Dec 2021 09:04:51 -0500 Received: from mail-m17657.qiye.163.com ([59.111.176.57]:10718 "EHLO mail-m17657.qiye.163.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239777AbhL3OEr (ORCPT ); Thu, 30 Dec 2021 09:04:47 -0500 DKIM-Signature: a=rsa-sha256; b=KUEDStXckAtztTshgFDnh7jDmwNopP7UVG9mB2OULMJB25jtSA+9eNgAeP1+QK2xC6ww/GByqZ6fNeirXkGbjbO0Ccr1Ok4mYLcfXAPT87ydfvYM4SXJ+aCeGEWdvpqkR1h6MN//qO5OQsGSXq9J/SKwwLMnxBhIt6kmn0Uvw3E=; s=default; c=relaxed/relaxed; d=vivo.com; v=1; bh=xpKKS0qqZkQyHog/qbonODBiKgIt7QbYO2CMS+1sO7I=; h=date:mime-version:subject:message-id:from; Received: from vivo-600-G6.vivo.xyz (unknown [58.251.74.232]) by mail-m17657.qiye.163.com (Hmail) with ESMTPA id 78B822802C1; Thu, 30 Dec 2021 21:59:25 +0800 (CST) From: Yaqin Pan To: Greg Kroah-Hartman , Rob Herring , Felipe Balbi , linux-usb@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: kernel@vivo.com, Yaqin Pan Subject: [PATCH v3 2/2] dt-bindings: usb: document snps,sprs-ctrl-trans-quirk property in dwc3 Date: Thu, 30 Dec 2021 21:58:31 +0800 Message-Id: <20211230135832.23005-3-akingchen@vivo.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211230135832.23005-1-akingchen@vivo.com> References: <20211230135832.23005-1-akingchen@vivo.com> X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgPGg8OCBgUHx5ZQUlOS1dZCBgUCR5ZQVlLVUtZV1 kWDxoPAgseWUFZKDYvK1lXWShZQUhPN1dZLVlBSVdZDwkaFQgSH1lBWRoaSxpWHhhIHR9PTxoYSU kdVRMBExYaEhckFA4PWVdZFhoPEhUdFFlBWVVLWQY+ X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Nio6MRw*PT5KNREtCR0oHyks TQgwCR1VSlVKTU9LQ0xJTE1OQkNPVTMWGhIXVRoQEhUcGBMeFTsNEg0UVRgUFkVZV1kSC1lBWU5D VUlOSlVMT1VJSElZV1kIAVlBSUlLTDcG X-HM-Tid: 0a7e0ba3691dda03kuws78b822802c1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add snps,sprs-ctrl-trans-quirk property for dwc3 controller Signed-off-by: Yaqin Pan --- Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documen= tation/devicetree/bindings/usb/snps,dwc3.yaml index 41416fbd92aa..7a127f0cb530 100644 --- a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml +++ b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml @@ -226,6 +226,12 @@ properties: avoid -EPROTO errors with usbhid on some devices (Hikey 970). type: boolean =20 + snps,sprs-ctrl-trans-quirk: + description: + When set, change the way host controller schedules transations for a= Control transfer. + Avoid failing to enumerate some devices due to usb compatibility iss= ues. + type: boolean + snps,is-utmi-l1-suspend: description: True when DWC3 asserts output signal utmi_l1_suspend_n, false when --=20 2.17.1