* [PATCH v2 0/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit @ 2021-12-20 14:16 Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 1/2] " Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Yaqin Pan 0 siblings, 2 replies; 7+ messages in thread From: Yaqin Pan @ 2021-12-20 14:16 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Felipe Balbi, linux-usb, devicetree, linux-kernel Cc: kernel, Yaqin Pan Add a quirk to set dwc3 controller GUCTL.SPRSCTRLTRANSEN bit. Changes in v2: - modify Documentation/devicetree/bindings/usb/snps,dwc3.yaml Yaqin Pan (2): usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit. dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ drivers/usb/dwc3/core.c | 4 ++++ drivers/usb/dwc3/core.h | 3 +++ 3 files changed, 13 insertions(+) -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit. 2021-12-20 14:16 [PATCH v2 0/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit Yaqin Pan @ 2021-12-20 14:16 ` Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Yaqin Pan 1 sibling, 0 replies; 7+ messages in thread From: Yaqin Pan @ 2021-12-20 14:16 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Felipe Balbi, linux-usb, devicetree, linux-kernel Cc: kernel, Yaqin Pan 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=aaaa, idProduct=8816, bcdDevice=13.08 usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3 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=aaaa, PID=8816 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 <akingchen@vivo.com> --- 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"); dwc->lpm_nyet_threshold = lpm_nyet_threshold; dwc->tx_de_emphasis = 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 @@ /* Global User Control Register */ #define DWC3_GUCTL_HSTINAUTORETRY BIT(14) +#define DWC3_GUCTL_SPRSCTRLTRANSEN BIT(17) /* 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; unsigned dis_split_quirk:1; + unsigned sprs_ctrl_trans_quirk:1; unsigned async_callbacks:1; u16 imod_interval; -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 2021-12-20 14:16 [PATCH v2 0/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 1/2] " Yaqin Pan @ 2021-12-20 14:16 ` Yaqin Pan 2021-12-20 18:36 ` Sergey Shtylyov 2021-12-20 21:05 ` Rob Herring 1 sibling, 2 replies; 7+ messages in thread From: Yaqin Pan @ 2021-12-20 14:16 UTC (permalink / raw) To: Greg Kroah-Hartman, Rob Herring, Felipe Balbi, linux-usb, devicetree, linux-kernel Cc: kernel, Yaqin Pan Add snps,dis_split_quirk property for dwc3 controller Signed-off-by: Yaqin Pan <akingchen@vivo.com> --- Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml index 41416fbd92aa..e9615ca8f447 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 + snps,dis-split-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 issues. + type: boolean + snps,is-utmi-l1-suspend: description: True when DWC3 asserts output signal utmi_l1_suspend_n, false when -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 2021-12-20 14:16 ` [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Yaqin Pan @ 2021-12-20 18:36 ` Sergey Shtylyov 2021-12-21 14:38 ` Yaqin Pan 2021-12-20 21:05 ` Rob Herring 1 sibling, 1 reply; 7+ messages in thread From: Sergey Shtylyov @ 2021-12-20 18:36 UTC (permalink / raw) To: Yaqin Pan, Greg Kroah-Hartman, Rob Herring, Felipe Balbi, linux-usb, devicetree, linux-kernel Cc: kernel Hello! On 12/20/21 5:16 PM, Yaqin Pan wrote: > Add snps,dis_split_quirk property for dwc3 controller The name doesn't match the prop itself anymore... > > Signed-off-by: Yaqin Pan <akingchen@vivo.com> > --- > Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/Documentation/devicetree/bindings/usb/snps,dwc3.yaml b/Documentation/devicetree/bindings/usb/snps,dwc3.yaml > index 41416fbd92aa..e9615ca8f447 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 > > + snps,dis-split-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 issues. > + type: boolean > + > snps,is-utmi-l1-suspend: > description: > True when DWC3 asserts output signal utmi_l1_suspend_n, false when > MBR, Sergey ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 2021-12-20 18:36 ` Sergey Shtylyov @ 2021-12-21 14:38 ` Yaqin Pan 0 siblings, 0 replies; 7+ messages in thread From: Yaqin Pan @ 2021-12-21 14:38 UTC (permalink / raw) To: s.shtylyov Cc: akingchen, balbi, devicetree, gregkh, kernel, linux-kernel, linux-usb, robh+dt Sorry, i make a mistake, and the snps,dis_split_quirk should be snps,sprs-ctrl-trans-quirk. And i will renew the patch. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 2021-12-20 14:16 ` [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Yaqin Pan 2021-12-20 18:36 ` Sergey Shtylyov @ 2021-12-20 21:05 ` Rob Herring 2021-12-21 14:45 ` Yaqin Pan 1 sibling, 1 reply; 7+ messages in thread From: Rob Herring @ 2021-12-20 21:05 UTC (permalink / raw) To: Yaqin Pan Cc: linux-usb, devicetree, linux-kernel, Greg Kroah-Hartman, Felipe Balbi, kernel, Rob Herring On Mon, 20 Dec 2021 22:16:29 +0800, Yaqin Pan wrote: > Add snps,dis_split_quirk property for dwc3 controller > > Signed-off-by: Yaqin Pan <akingchen@vivo.com> > --- > Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ > 1 file changed, 6 insertions(+) > My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' on your patch (DT_CHECKER_FLAGS is new in v5.13): yamllint warnings/errors: ./Documentation/devicetree/bindings/usb/snps,dwc3.yaml:229:3: [error] duplication of key "snps,dis-split-quirk" in mapping (key-duplicates) dtschema/dtc warnings/errors: make[1]: *** Deleting file 'Documentation/devicetree/bindings/usb/snps,dwc3.example.dts' Traceback (most recent call last): File "/usr/local/bin/dt-extract-example", line 45, in <module> binding = yaml.load(open(args.yamlfile, encoding='utf-8').read()) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load return constructor.get_single_data() File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 121, in get_single_data return self.construct_document(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 131, in construct_document for _dummy in generator: File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 674, in construct_yaml_map value = self.construct_mapping(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 445, in construct_mapping return BaseConstructor.construct_mapping(self, node, deep=deep) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 263, in construct_mapping if self.check_mapping_key(node, key_node, mapping, key, value): File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 294, in check_mapping_key raise DuplicateKeyError(*args) ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping in "<unicode string>", line 32, column 3 found duplicate key "snps,dis-split-quirk" with value "{}" (original value: "{}") in "<unicode string>", line 229, column 3 To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys make[1]: *** [Documentation/devicetree/bindings/Makefile:25: Documentation/devicetree/bindings/usb/snps,dwc3.example.dts] Error 1 make[1]: *** Waiting for unfinished jobs.... schemas/usb/snps,dwc3.yaml: ignoring, error parsing file Traceback (most recent call last): File "/usr/local/bin/dt-doc-validate", line 25, in check_doc testtree = dtschema.load(filename, line_number=line_number) File "/usr/local/lib/python3.8/dist-packages/dtschema/lib.py", line 656, in load return yaml.load(f.read()) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load return constructor.get_single_data() File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 121, in get_single_data return self.construct_document(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 131, in construct_document for _dummy in generator: File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 674, in construct_yaml_map value = self.construct_mapping(node) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 445, in construct_mapping return BaseConstructor.construct_mapping(self, node, deep=deep) File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 263, in construct_mapping if self.check_mapping_key(node, key_node, mapping, key, value): File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 294, in check_mapping_key raise DuplicateKeyError(*args) ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping in "<unicode string>", line 32, column 3 found duplicate key "snps,dis-split-quirk" with value "{}" (original value: "{}") in "<unicode string>", line 229, column 3 To suppress this check see: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/bin/dt-doc-validate", line 67, in <module> ret = check_doc(f) File "/usr/local/bin/dt-doc-validate", line 30, in check_doc print(filename + ":", exc.path[-1], exc.message, file=sys.stderr) AttributeError: 'DuplicateKeyError' object has no attribute 'path' /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/usb/snps,dwc3.yaml: ignoring, error parsing file warning: no schema found in file: ./Documentation/devicetree/bindings/usb/snps,dwc3.yaml make: *** [Makefile:1413: dt_binding_check] Error 2 doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/patch/1571063 This check can fail if there are any dependencies. The base for a patch series is generally the most recent rc1. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit. ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 2021-12-20 21:05 ` Rob Herring @ 2021-12-21 14:45 ` Yaqin Pan 0 siblings, 0 replies; 7+ messages in thread From: Yaqin Pan @ 2021-12-21 14:45 UTC (permalink / raw) To: robh Cc: akingchen, balbi, devicetree, gregkh, kernel, linux-kernel, linux-usb, robh+dt >> Add snps,dis_split_quirk property for dwc3 controller >> >> Signed-off-by: Yaqin Pan <akingchen@vivo.com> >> --- >> Documentation/devicetree/bindings/usb/snps,dwc3.yaml | 6 ++++++ >> 1 file changed, 6 insertions(+) >> > >My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check' >on your patch (DT_CHECKER_FLAGS is new in v5.13): > >yamllint warnings/errors: >./Documentation/devicetree/bindings/usb/snps,dwc3.yaml:229:3: [error] duplication of key "snps,dis-split-quirk" in mapping (key-duplicates) > >dtschema/dtc warnings/errors: >make[1]: *** Deleting file 'Documentation/devicetree/bindings/usb/snps,dwc3.example.dts' >Traceback (most recent call last): > File "/usr/local/bin/dt-extract-example", line 45, in <module> > binding = yaml.load(open(args.yamlfile, encoding='utf-8').read()) > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load > return constructor.get_single_data() > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 121, in get_single_data > return self.construct_document(node) > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 131, in construct_document > for _dummy in generator: > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 674, in construct_yaml_map > value = self.construct_mapping(node) > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 445, in construct_mapping > return BaseConstructor.construct_mapping(self, node, deep=deep) > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 263, in construct_mapping > if self.check_mapping_key(node, key_node, mapping, key, value): > File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 294, in check_mapping_key > raise DuplicateKeyError(*args) >ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping > in "<unicode string>", line 32, column 3 >found duplicate key "snps,dis-split-quirk" with value "{}" (original value: "{}") > in "<unicode string>", line 229, column 3 Sorry, i make a mistake, and the snps,dis_split_quirk should be snps,sprs-ctrl-trans-quirk. And i will renew the patch. >To suppress this check see: > http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys > >make[1]: *** [Documentation/devicetree/bindings/Makefile:25: Documentation/devicetree/bindings/usb/snps,dwc3.example.dts] Error 1 >make[1]: *** Waiting for unfinished jobs.... ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2021-12-21 14:46 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2021-12-20 14:16 [PATCH v2 0/2] usb: dwc3: Add a quirk to set GUCTL.SPRSCTRLTRANSEN bit Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 1/2] " Yaqin Pan 2021-12-20 14:16 ` [PATCH v2 2/2] dt-bindings: usb: document snps,dis_split_quirk property in dwc3 Yaqin Pan 2021-12-20 18:36 ` Sergey Shtylyov 2021-12-21 14:38 ` Yaqin Pan 2021-12-20 21:05 ` Rob Herring 2021-12-21 14:45 ` Yaqin Pan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox