* [RFC PATCH 00/14] usb: dwc3: Introduce DWC_usb32
@ 2019-12-12 2:48 Thinh Nguyen
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
` (2 more replies)
0 siblings, 3 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 2:48 UTC (permalink / raw)
To: Felipe Balbi, Greg Kroah-Hartman, Thinh Nguyen, linux-usb,
devicetree, Rob Herring, Alan Stern, Mark Rutland, Roger Quadros,
zhengbin
Cc: John Youn
This patch series adds support to Synopsys DWC_usb32 controller which is
capable of dual-lane and USB speed up to 40 Gbps. In order to support this new
controller, we need to make a few updates the USB stack and dwc3 driver:
1) dwc3 driver needs to update its IP and revision check. The current scheme
does not support more than 2 controllers.
2) Introduce Lane Speed Mantissa and lane count on the gadget side. Devices
operating in SuperSpeed Plus can refer to gen2x1, gen1x2, or gen2x2.
3) Add a new gadget opts to set the sublink speed for drivers that are
constrained to certain lane count or lane speed mantissa.
4) Add miscellaneous initialization checks for DWC_usb32.
Any review comment is highly appreciated.
Thank you,
Thinh
This patch series depends on the following patches
usb: dwc3: Fix GTXFIFOSIZ.TXFDEP macro name
usb: dwc3: gadget: Properly set maxpacket limit
https://patchwork.kernel.org/cover/11283761/
Thinh Nguyen (14):
usb: gadget: Add lane count and lsm
usb: gadget: Add callback to set lane and transfer rate
usb: composite: Properly report lsm
usb: dwc3: Implement new id check for DWC_usb32
usb: dwc3: Update IP checks to support DWC_usb32
usb: devicetree: dwc3: Add max lane and lsm
usb: dwc3: gadget: Set lane count and lsm
usb: dwc3: gadget: Track connected lane count and speed
usb: dwc3: gadget: Limit the setting of speed
usb: dwc3: Update HWPARAMS0.MDWIDTH for DWC_usb32
usb: devicetree: dwc3: Add TRB prefetch count
usb: dwc3: gadget: Set number of TRB prefetch
usb: devicetree: dwc3: Add property to disable mult TRB fetch
usb: dwc3: gadget: Implement disabling of mult TRB fetch
Documentation/devicetree/bindings/usb/dwc3.txt | 9 ++
drivers/usb/dwc3/core.c | 88 ++++++++----
drivers/usb/dwc3/core.h | 65 ++++++---
drivers/usb/dwc3/debugfs.c | 14 +-
drivers/usb/dwc3/gadget.c | 181 +++++++++++++++++++------
drivers/usb/dwc3/host.c | 2 +-
drivers/usb/gadget/composite.c | 16 ++-
drivers/usb/gadget/legacy/mass_storage.c | 2 +
drivers/usb/gadget/udc/core.c | 38 +++++-
include/linux/usb/composite.h | 4 +
include/linux/usb/gadget.h | 15 ++
11 files changed, 344 insertions(+), 90 deletions(-)
--
2.11.0
^ permalink raw reply [flat|nested] 17+ messages in thread
* [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm
2019-12-12 2:48 [RFC PATCH 00/14] usb: dwc3: Introduce DWC_usb32 Thinh Nguyen
@ 2019-12-12 2:49 ` Thinh Nguyen
2019-12-12 8:06 ` Felipe Balbi
2019-12-19 22:09 ` Rob Herring
2019-12-12 2:50 ` [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count Thinh Nguyen
2019-12-12 2:50 ` [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch Thinh Nguyen
2 siblings, 2 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 2:49 UTC (permalink / raw)
To: Greg Kroah-Hartman, Thinh Nguyen, linux-usb, devicetree,
Rob Herring, Mark Rutland
Cc: John Youn
Add a new property to set maximum number of lanes and transfer rated
supported for DWC_usb32. By default, the driver will configure the
controller to use dual-lane at 10Gbps.
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
---
Documentation/devicetree/bindings/usb/dwc3.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
index 66780a47ad85..7da1c4e7d380 100644
--- a/Documentation/devicetree/bindings/usb/dwc3.txt
+++ b/Documentation/devicetree/bindings/usb/dwc3.txt
@@ -85,6 +85,10 @@ Optional properties:
- snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
register for post-silicon frame length adjustment when the
fladj_30mhz_sdbnd signal is invalid or incorrect.
+ - snps,maximum-lane-count: set to specify the number of lanes to use for
+ DWC_usb32 and later. Default is dual-lanes.
+ - snps,maximum-lsm: set to specify the lane speed mantissa to use in Gbps.
+ Default is 10Gbps for SuperSpeed Plus.
- snps,rx-thr-num-pkt-prd: periodic ESS RX packet threshold count - host mode
only. Set this and rx-max-burst-prd to a valid,
non-zero value 1-16 (DWC_usb31 programming guide
--
2.11.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count
2019-12-12 2:48 [RFC PATCH 00/14] usb: dwc3: Introduce DWC_usb32 Thinh Nguyen
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
@ 2019-12-12 2:50 ` Thinh Nguyen
2019-12-12 8:18 ` Felipe Balbi
2019-12-12 2:50 ` [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch Thinh Nguyen
2 siblings, 1 reply; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 2:50 UTC (permalink / raw)
To: Greg Kroah-Hartman, Thinh Nguyen, linux-usb, devicetree,
Rob Herring, Mark Rutland
Cc: John Youn
DWC_usb32 has an enhancement that allows the controller to cache
multiple TRBs for non-control endpoints. Introduce a new property to
DWC3 to set the maximum number of TRBs to cache in advance. The property
can be set from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER (CoreConsultant
value). By default, the number of cache TRB is
DWC_USB32_CACHE_TRBS_PER_TRANSFER.
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
---
Documentation/devicetree/bindings/usb/dwc3.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
index 7da1c4e7d380..ff35fa6de2eb 100644
--- a/Documentation/devicetree/bindings/usb/dwc3.txt
+++ b/Documentation/devicetree/bindings/usb/dwc3.txt
@@ -105,6 +105,9 @@ Optional properties:
this and tx-thr-num-pkt-prd to a valid, non-zero value
1-16 (DWC_usb31 programming guide section 1.2.3) to
enable periodic ESS TX threshold.
+ - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
+ can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
+ Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
- <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated.
- snps,incr-burst-type-adjustment: Value for INCR burst type of GSBUSCFG0
--
2.11.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-12 2:48 [RFC PATCH 00/14] usb: dwc3: Introduce DWC_usb32 Thinh Nguyen
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
2019-12-12 2:50 ` [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count Thinh Nguyen
@ 2019-12-12 2:50 ` Thinh Nguyen
2019-12-12 8:19 ` Felipe Balbi
2 siblings, 1 reply; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 2:50 UTC (permalink / raw)
To: Greg Kroah-Hartman, Thinh Nguyen, linux-usb, devicetree,
Rob Herring, Mark Rutland
Cc: John Youn
DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
Add a new property to limit and only do only single TRB fetch request.
Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
---
Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
index ff35fa6de2eb..29d6f9b1fc70 100644
--- a/Documentation/devicetree/bindings/usb/dwc3.txt
+++ b/Documentation/devicetree/bindings/usb/dwc3.txt
@@ -108,6 +108,8 @@ Optional properties:
- snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
+ - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
+ DWC_usb32.
- <DEPRECATED> tx-fifo-resize: determines if the FIFO *has* to be reallocated.
- snps,incr-burst-type-adjustment: Value for INCR burst type of GSBUSCFG0
--
2.11.0
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
@ 2019-12-12 8:06 ` Felipe Balbi
2019-12-19 22:09 ` Rob Herring
1 sibling, 0 replies; 17+ messages in thread
From: Felipe Balbi @ 2019-12-12 8:06 UTC (permalink / raw)
To: Thinh Nguyen, Greg Kroah-Hartman, Thinh Nguyen, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
[-- Attachment #1: Type: text/plain, Size: 282 bytes --]
Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> Add a new property to set maximum number of lanes and transfer rated
^^^^^
rate?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count
2019-12-12 2:50 ` [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count Thinh Nguyen
@ 2019-12-12 8:18 ` Felipe Balbi
2019-12-12 22:16 ` Thinh Nguyen
0 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2019-12-12 8:18 UTC (permalink / raw)
To: Thinh Nguyen, Greg Kroah-Hartman, Thinh Nguyen, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
[-- Attachment #1: Type: text/plain, Size: 1411 bytes --]
Hi,
Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> DWC_usb32 has an enhancement that allows the controller to cache
> multiple TRBs for non-control endpoints. Introduce a new property to
> DWC3 to set the maximum number of TRBs to cache in advance. The property
> can be set from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER (CoreConsultant
> value). By default, the number of cache TRB is
> DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>
> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> ---
> Documentation/devicetree/bindings/usb/dwc3.txt | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
> index 7da1c4e7d380..ff35fa6de2eb 100644
> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
> @@ -105,6 +105,9 @@ Optional properties:
> this and tx-thr-num-pkt-prd to a valid, non-zero value
> 1-16 (DWC_usb31 programming guide section 1.2.3) to
> enable periodic ESS TX threshold.
> + - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
> + can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> + Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
how about we just leave it at the maximum and in case someone notices
problems, then we consider adding more DT bindings?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-12 2:50 ` [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch Thinh Nguyen
@ 2019-12-12 8:19 ` Felipe Balbi
2019-12-12 22:28 ` Thinh Nguyen
0 siblings, 1 reply; 17+ messages in thread
From: Felipe Balbi @ 2019-12-12 8:19 UTC (permalink / raw)
To: Thinh Nguyen, Greg Kroah-Hartman, Thinh Nguyen, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
[-- Attachment #1: Type: text/plain, Size: 1140 bytes --]
Hi,
Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
> Add a new property to limit and only do only single TRB fetch request.
>
> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> ---
> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
> index ff35fa6de2eb..29d6f9b1fc70 100644
> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
> @@ -108,6 +108,8 @@ Optional properties:
> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
> + DWC_usb32.
two questions:
- how is this different from passing 1 to the previous DT binding
- do we know of anybody having issues with multi-trb prefetch?
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count
2019-12-12 8:18 ` Felipe Balbi
@ 2019-12-12 22:16 ` Thinh Nguyen
0 siblings, 0 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 22:16 UTC (permalink / raw)
To: Felipe Balbi, Thinh Nguyen, Greg Kroah-Hartman, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
Hi,
Felipe Balbi wrote:
> Hi,
>
> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>> DWC_usb32 has an enhancement that allows the controller to cache
>> multiple TRBs for non-control endpoints. Introduce a new property to
>> DWC3 to set the maximum number of TRBs to cache in advance. The property
>> can be set from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER (CoreConsultant
>> value). By default, the number of cache TRB is
>> DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>
>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>> ---
>> Documentation/devicetree/bindings/usb/dwc3.txt | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>> index 7da1c4e7d380..ff35fa6de2eb 100644
>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>> @@ -105,6 +105,9 @@ Optional properties:
>> this and tx-thr-num-pkt-prd to a valid, non-zero value
>> 1-16 (DWC_usb31 programming guide section 1.2.3) to
>> enable periodic ESS TX threshold.
>> + - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>> + can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>> + Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> how about we just leave it at the maximum and in case someone notices
> problems, then we consider adding more DT bindings?
>
Sure. We can do that. I'll remove this.
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-12 8:19 ` Felipe Balbi
@ 2019-12-12 22:28 ` Thinh Nguyen
2019-12-13 7:04 ` Felipe Balbi
0 siblings, 1 reply; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-12 22:28 UTC (permalink / raw)
To: Felipe Balbi, Thinh Nguyen, Greg Kroah-Hartman, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
Hi,
Felipe Balbi wrote:
> Hi,
>
> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
>> Add a new property to limit and only do only single TRB fetch request.
>>
>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>> ---
>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>> index ff35fa6de2eb..29d6f9b1fc70 100644
>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>> @@ -108,6 +108,8 @@ Optional properties:
>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
>> + DWC_usb32.
> two questions:
>
> - how is this different from passing 1 to the previous DT binding
The previous DT binding is related to the number TRBs to cache while
this one is related to whether the controller will send multiple
(internal) fetch commands to fetch the TRBs.
> - do we know of anybody having issues with multi-trb prefetch?
No, we added this for various internal tests.
BR,
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-12 22:28 ` Thinh Nguyen
@ 2019-12-13 7:04 ` Felipe Balbi
2019-12-13 20:10 ` Thinh Nguyen
2019-12-19 22:17 ` Rob Herring
0 siblings, 2 replies; 17+ messages in thread
From: Felipe Balbi @ 2019-12-13 7:04 UTC (permalink / raw)
To: Thinh Nguyen, Thinh Nguyen, Greg Kroah-Hartman, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
[-- Attachment #1: Type: text/plain, Size: 1754 bytes --]
Hi,
Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
>>> Add a new property to limit and only do only single TRB fetch request.
>>>
>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>>> ---
>>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>>> index ff35fa6de2eb..29d6f9b1fc70 100644
>>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>>> @@ -108,6 +108,8 @@ Optional properties:
>>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
>>> + DWC_usb32.
>> two questions:
>>
>> - how is this different from passing 1 to the previous DT binding
>
> The previous DT binding is related to the number TRBs to cache while
> this one is related to whether the controller will send multiple
> (internal) fetch commands to fetch the TRBs.
>
>> - do we know of anybody having issues with multi-trb prefetch?
>
> No, we added this for various internal tests.
We really a better way for you guys to have your test coverage enabled
with upstream kernel. I wonder if DT guys would accept a set of bindings
marked as "for testing purposes". In any case, we really need to enable
Silicon Validation with upstream kernel.
--
balbi
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-13 7:04 ` Felipe Balbi
@ 2019-12-13 20:10 ` Thinh Nguyen
2019-12-19 22:17 ` Rob Herring
1 sibling, 0 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-13 20:10 UTC (permalink / raw)
To: Felipe Balbi, Thinh Nguyen, Greg Kroah-Hartman, linux-usb,
devicetree, Rob Herring, Mark Rutland
Cc: John Youn
Hi,
Felipe Balbi wrote:
> Hi,
>
> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
>>>> Add a new property to limit and only do only single TRB fetch request.
>>>>
>>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>>>> ---
>>>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
>>>> 1 file changed, 2 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>> index ff35fa6de2eb..29d6f9b1fc70 100644
>>>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>>>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>> @@ -108,6 +108,8 @@ Optional properties:
>>>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>>>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
>>>> + DWC_usb32.
>>> two questions:
>>>
>>> - how is this different from passing 1 to the previous DT binding
>> The previous DT binding is related to the number TRBs to cache while
>> this one is related to whether the controller will send multiple
>> (internal) fetch commands to fetch the TRBs.
>>
>>> - do we know of anybody having issues with multi-trb prefetch?
>> No, we added this for various internal tests.
> We really a better way for you guys to have your test coverage enabled
> with upstream kernel. I wonder if DT guys would accept a set of bindings
> marked as "for testing purposes". In any case, we really need to enable
> Silicon Validation with upstream kernel.
>
That would be great! If there's a sensible way to do so, we're open to
suggestions.
Thanks,
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
2019-12-12 8:06 ` Felipe Balbi
@ 2019-12-19 22:09 ` Rob Herring
2019-12-19 22:49 ` Thinh Nguyen
1 sibling, 1 reply; 17+ messages in thread
From: Rob Herring @ 2019-12-19 22:09 UTC (permalink / raw)
To: Thinh Nguyen
Cc: Greg Kroah-Hartman, linux-usb, devicetree, Mark Rutland, John Youn
On Wed, Dec 11, 2019 at 06:49:37PM -0800, Thinh Nguyen wrote:
> Add a new property to set maximum number of lanes and transfer rated
> supported for DWC_usb32. By default, the driver will configure the
> controller to use dual-lane at 10Gbps.
>
> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> ---
> Documentation/devicetree/bindings/usb/dwc3.txt | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
> index 66780a47ad85..7da1c4e7d380 100644
> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
> @@ -85,6 +85,10 @@ Optional properties:
> - snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
> register for post-silicon frame length adjustment when the
> fladj_30mhz_sdbnd signal is invalid or incorrect.
> + - snps,maximum-lane-count: set to specify the number of lanes to use for
> + DWC_usb32 and later. Default is dual-lanes.
Why do you need this? When is it not the number of lanes the phy has?
Reuse 'num-lanes' from PCI binding?
> + - snps,maximum-lsm: set to specify the lane speed mantissa to use in Gbps.
> + Default is 10Gbps for SuperSpeed Plus.
So the value is '10' or '10Gbps'. Other valid values?
> - snps,rx-thr-num-pkt-prd: periodic ESS RX packet threshold count - host mode
> only. Set this and rx-max-burst-prd to a valid,
> non-zero value 1-16 (DWC_usb31 programming guide
> --
> 2.11.0
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-13 7:04 ` Felipe Balbi
2019-12-13 20:10 ` Thinh Nguyen
@ 2019-12-19 22:17 ` Rob Herring
2019-12-19 22:51 ` Thinh Nguyen
1 sibling, 1 reply; 17+ messages in thread
From: Rob Herring @ 2019-12-19 22:17 UTC (permalink / raw)
To: Felipe Balbi
Cc: Thinh Nguyen, Greg Kroah-Hartman, linux-usb, devicetree,
Mark Rutland, John Youn
On Fri, Dec 13, 2019 at 09:04:54AM +0200, Felipe Balbi wrote:
>
> Hi,
>
> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> >> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> >>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
> >>> Add a new property to limit and only do only single TRB fetch request.
> >>>
> >>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> >>> ---
> >>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
> >>> 1 file changed, 2 insertions(+)
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
> >>> index ff35fa6de2eb..29d6f9b1fc70 100644
> >>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
> >>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
> >>> @@ -108,6 +108,8 @@ Optional properties:
> >>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
> >>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> >>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> >>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
> >>> + DWC_usb32.
> >> two questions:
> >>
> >> - how is this different from passing 1 to the previous DT binding
> >
> > The previous DT binding is related to the number TRBs to cache while
> > this one is related to whether the controller will send multiple
> > (internal) fetch commands to fetch the TRBs.
> >
> >> - do we know of anybody having issues with multi-trb prefetch?
> >
> > No, we added this for various internal tests.
>
> We really a better way for you guys to have your test coverage enabled
> with upstream kernel. I wonder if DT guys would accept a set of bindings
> marked as "for testing purposes". In any case, we really need to enable
> Silicon Validation with upstream kernel.
Well, anything would be better than the endless stream of new
properties. Include 'test-mode' in the property names would be fine I
guess.
However, why do they need to be in DT rather than module params or
debugfs settings? Changing at runtime or reloading the module is a
better experience than editting a DT and rebooting.
Rob
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm
2019-12-19 22:09 ` Rob Herring
@ 2019-12-19 22:49 ` Thinh Nguyen
0 siblings, 0 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-19 22:49 UTC (permalink / raw)
To: Rob Herring, Thinh Nguyen
Cc: Greg Kroah-Hartman, linux-usb, devicetree, Mark Rutland, John Youn
Hi,
Rob Herring wrote:
> On Wed, Dec 11, 2019 at 06:49:37PM -0800, Thinh Nguyen wrote:
>> Add a new property to set maximum number of lanes and transfer rated
>> supported for DWC_usb32. By default, the driver will configure the
>> controller to use dual-lane at 10Gbps.
>>
>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>> ---
>> Documentation/devicetree/bindings/usb/dwc3.txt | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>> index 66780a47ad85..7da1c4e7d380 100644
>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>> @@ -85,6 +85,10 @@ Optional properties:
>> - snps,quirk-frame-length-adjustment: Value for GFLADJ_30MHZ field of GFLADJ
>> register for post-silicon frame length adjustment when the
>> fladj_30mhz_sdbnd signal is invalid or incorrect.
>> + - snps,maximum-lane-count: set to specify the number of lanes to use for
>> + DWC_usb32 and later. Default is dual-lanes.
> Why do you need this? When is it not the number of lanes the phy has?
The issue is the controller doesn't know the number of lanes the phy
supports. There's no HW parameter for this. The user needs to inform
this to the controller.
>
> Reuse 'num-lanes' from PCI binding?
Ok.
>
>> + - snps,maximum-lsm: set to specify the lane speed mantissa to use in Gbps.
>> + Default is 10Gbps for SuperSpeed Plus.
> So the value is '10' or '10Gbps'. Other valid values?
I'm missing this in the description. It can be either 10 or 5. If not
set, then default to 10Gbps for SSP. I'll update this.
>
>> - snps,rx-thr-num-pkt-prd: periodic ESS RX packet threshold count - host mode
>> only. Set this and rx-max-burst-prd to a valid,
>> non-zero value 1-16 (DWC_usb31 programming guide
>> --
>> 2.11.0
>>
Thanks,
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-19 22:17 ` Rob Herring
@ 2019-12-19 22:51 ` Thinh Nguyen
2019-12-20 22:11 ` Rob Herring
0 siblings, 1 reply; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-19 22:51 UTC (permalink / raw)
To: Rob Herring, Felipe Balbi
Cc: Thinh Nguyen, Greg Kroah-Hartman, linux-usb, devicetree,
Mark Rutland, John Youn
Hi,
Rob Herring wrote:
> On Fri, Dec 13, 2019 at 09:04:54AM +0200, Felipe Balbi wrote:
>> Hi,
>>
>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>>>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
>>>>> Add a new property to limit and only do only single TRB fetch request.
>>>>>
>>>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>>>>> ---
>>>>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
>>>>> 1 file changed, 2 insertions(+)
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>> index ff35fa6de2eb..29d6f9b1fc70 100644
>>>>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>> @@ -108,6 +108,8 @@ Optional properties:
>>>>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>>>>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
>>>>> + DWC_usb32.
>>>> two questions:
>>>>
>>>> - how is this different from passing 1 to the previous DT binding
>>> The previous DT binding is related to the number TRBs to cache while
>>> this one is related to whether the controller will send multiple
>>> (internal) fetch commands to fetch the TRBs.
>>>
>>>> - do we know of anybody having issues with multi-trb prefetch?
>>> No, we added this for various internal tests.
>> We really a better way for you guys to have your test coverage enabled
>> with upstream kernel. I wonder if DT guys would accept a set of bindings
>> marked as "for testing purposes". In any case, we really need to enable
>> Silicon Validation with upstream kernel.
> Well, anything would be better than the endless stream of new
> properties. Include 'test-mode' in the property names would be fine I
> guess.
>
Generally the properties are for some quirks or configurations that the
controller must use to work properly and not for debugging purposes.
Unfortunately, this list can be long..
> However, why do they need to be in DT rather than module params or
> debugfs settings? Changing at runtime or reloading the module is a
> better experience than editting a DT and rebooting.
>
> Rob
Internally, our tool can debug different properties as if they are
module parameters. They can be changed at runtime. Setting properties is
one of the options which we can configure without tampering much of the
existing code.
BR,
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-19 22:51 ` Thinh Nguyen
@ 2019-12-20 22:11 ` Rob Herring
2019-12-20 23:52 ` Thinh Nguyen
0 siblings, 1 reply; 17+ messages in thread
From: Rob Herring @ 2019-12-20 22:11 UTC (permalink / raw)
To: Thinh Nguyen
Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb, devicetree,
Mark Rutland, John Youn
On Thu, Dec 19, 2019 at 3:52 PM Thinh Nguyen <Thinh.Nguyen@synopsys.com> wrote:
>
> Hi,
>
> Rob Herring wrote:
> > On Fri, Dec 13, 2019 at 09:04:54AM +0200, Felipe Balbi wrote:
> >> Hi,
> >>
> >> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> >>>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
> >>>>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
> >>>>> Add a new property to limit and only do only single TRB fetch request.
> >>>>>
> >>>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> >>>>> ---
> >>>>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
> >>>>> 1 file changed, 2 insertions(+)
> >>>>>
> >>>>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
> >>>>> index ff35fa6de2eb..29d6f9b1fc70 100644
> >>>>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
> >>>>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
> >>>>> @@ -108,6 +108,8 @@ Optional properties:
> >>>>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
> >>>>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> >>>>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
> >>>>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
> >>>>> + DWC_usb32.
> >>>> two questions:
> >>>>
> >>>> - how is this different from passing 1 to the previous DT binding
> >>> The previous DT binding is related to the number TRBs to cache while
> >>> this one is related to whether the controller will send multiple
> >>> (internal) fetch commands to fetch the TRBs.
> >>>
> >>>> - do we know of anybody having issues with multi-trb prefetch?
> >>> No, we added this for various internal tests.
> >> We really a better way for you guys to have your test coverage enabled
> >> with upstream kernel. I wonder if DT guys would accept a set of bindings
> >> marked as "for testing purposes". In any case, we really need to enable
> >> Silicon Validation with upstream kernel.
> > Well, anything would be better than the endless stream of new
> > properties. Include 'test-mode' in the property names would be fine I
> > guess.
> >
>
> Generally the properties are for some quirks or configurations that the
> controller must use to work properly and not for debugging purposes.
> Unfortunately, this list can be long..
quirks or testing? Now I'm confused, which is it?
I'm sure I've said this before (for DWC3), but it is better to have a
compatible string for each implementation (usually an SoC) so you can
address new quirks without a dtb change and continually adding new
properties.
Rob
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch
2019-12-20 22:11 ` Rob Herring
@ 2019-12-20 23:52 ` Thinh Nguyen
0 siblings, 0 replies; 17+ messages in thread
From: Thinh Nguyen @ 2019-12-20 23:52 UTC (permalink / raw)
To: Rob Herring, Thinh Nguyen
Cc: Felipe Balbi, Greg Kroah-Hartman, linux-usb, devicetree,
Mark Rutland, John Youn
Hi,
Rob Herring wrote:
> On Thu, Dec 19, 2019 at 3:52 PM Thinh Nguyen <Thinh.Nguyen@synopsys.com> wrote:
>> Hi,
>>
>> Rob Herring wrote:
>>> On Fri, Dec 13, 2019 at 09:04:54AM +0200, Felipe Balbi wrote:
>>>> Hi,
>>>>
>>>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>>>>> Thinh Nguyen <Thinh.Nguyen@synopsys.com> writes:
>>>>>>> DWC_usb32 has a feature where it can issue multiple TRB fetch requests.
>>>>>>> Add a new property to limit and only do only single TRB fetch request.
>>>>>>>
>>>>>>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>>>>>>> ---
>>>>>>> Documentation/devicetree/bindings/usb/dwc3.txt | 2 ++
>>>>>>> 1 file changed, 2 insertions(+)
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/usb/dwc3.txt b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>>>> index ff35fa6de2eb..29d6f9b1fc70 100644
>>>>>>> --- a/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>>>> +++ b/Documentation/devicetree/bindings/usb/dwc3.txt
>>>>>>> @@ -108,6 +108,8 @@ Optional properties:
>>>>>>> - snps,num-trb-prefetch: max value to do TRBs cache for DWC_usb32. The value
>>>>>>> can be from 1 to DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>>>>> Default value is DWC_USB32_CACHE_TRBS_PER_TRANSFER.
>>>>>>> + - snps,dis-mult-trb-fetch: set to issue only single TRB fetch request in
>>>>>>> + DWC_usb32.
>>>>>> two questions:
>>>>>>
>>>>>> - how is this different from passing 1 to the previous DT binding
>>>>> The previous DT binding is related to the number TRBs to cache while
>>>>> this one is related to whether the controller will send multiple
>>>>> (internal) fetch commands to fetch the TRBs.
>>>>>
>>>>>> - do we know of anybody having issues with multi-trb prefetch?
>>>>> No, we added this for various internal tests.
>>>> We really a better way for you guys to have your test coverage enabled
>>>> with upstream kernel. I wonder if DT guys would accept a set of bindings
>>>> marked as "for testing purposes". In any case, we really need to enable
>>>> Silicon Validation with upstream kernel.
>>> Well, anything would be better than the endless stream of new
>>> properties. Include 'test-mode' in the property names would be fine I
>>> guess.
>>>
>> Generally the properties are for some quirks or configurations that the
>> controller must use to work properly and not for debugging purposes.
>> Unfortunately, this list can be long..
> quirks or testing? Now I'm confused, which is it?
I was referring to the existing properties, they are necessary for a
working device. Nothing "extra" solely for debugging purposes.
With the exception for these couple properties related to TRB fetching
in this RFC series, they are for testing only. Regardless, I agreed to
Felipe previously that we can remove them.
> I'm sure I've said this before (for DWC3), but it is better to have a
> compatible string for each implementation (usually an SoC) so you can
> address new quirks without a dtb change and continually adding new
> properties.
>
> Rob
Yes, you mentioned it before. It may work on SoC, but it won't work for
PCI devices. We can't use VID:PID either, because the HAPS devices only
have a set of VID:PID.
Please refer back to a couple discussions back:
1) https://www.spinics.net/lists/linux-usb/msg164494.html
This one is related to cadence's, but I think it's relevant:
2) https://www.spinics.net/lists/linux-usb/msg175199.html
There maybe more discussions previously, but I don't have the history of
all the emails.
BR,
Thinh
^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2019-12-20 23:53 UTC | newest]
Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-12 2:48 [RFC PATCH 00/14] usb: dwc3: Introduce DWC_usb32 Thinh Nguyen
2019-12-12 2:49 ` [RFC PATCH 06/14] usb: devicetree: dwc3: Add max lane and lsm Thinh Nguyen
2019-12-12 8:06 ` Felipe Balbi
2019-12-19 22:09 ` Rob Herring
2019-12-19 22:49 ` Thinh Nguyen
2019-12-12 2:50 ` [RFC PATCH 11/14] usb: devicetree: dwc3: Add TRB prefetch count Thinh Nguyen
2019-12-12 8:18 ` Felipe Balbi
2019-12-12 22:16 ` Thinh Nguyen
2019-12-12 2:50 ` [RFC PATCH 13/14] usb: devicetree: dwc3: Add property to disable mult TRB fetch Thinh Nguyen
2019-12-12 8:19 ` Felipe Balbi
2019-12-12 22:28 ` Thinh Nguyen
2019-12-13 7:04 ` Felipe Balbi
2019-12-13 20:10 ` Thinh Nguyen
2019-12-19 22:17 ` Rob Herring
2019-12-19 22:51 ` Thinh Nguyen
2019-12-20 22:11 ` Rob Herring
2019-12-20 23:52 ` Thinh Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).