diff mbox series

[v2,06/12] usb: devicetree: Introduce num-lanes and lsm

Message ID d605a437f0a4bc837a05269caaa3875c2e0b29d8.1595468673.git.thinhn@synopsys.com
State Changes Requested, archived
Headers show
Series usb: Handle different sublink speeds | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 1 warnings, 17 lines checked

Commit Message

Thinh Nguyen July 23, 2020, 2:12 a.m. UTC
According to USB 3.2 spec, a super-speed-plus device can operate at
gen2x2, gen2x1, or gen1x2. Introduce "num-lanes" and
"lane-speed-mantissa-gbps" properties for devices operating in
super-speed-plus. If the USB controller device supports multiple lanes
at different transfer rate, the user can specify the HW capability via
these properties.

Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
---
Changes in v2:
- Make "num-lanes" and "lane-speed-mantissa-gbps" common USB properties

 Documentation/devicetree/bindings/usb/generic.txt | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Rob Herring July 23, 2020, 8:29 p.m. UTC | #1
On Wed, Jul 22, 2020 at 07:12:39PM -0700, Thinh Nguyen wrote:
> According to USB 3.2 spec, a super-speed-plus device can operate at
> gen2x2, gen2x1, or gen1x2. Introduce "num-lanes" and
> "lane-speed-mantissa-gbps" properties for devices operating in
> super-speed-plus. If the USB controller device supports multiple lanes
> at different transfer rate, the user can specify the HW capability via
> these properties.
> 
> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
> ---
> Changes in v2:
> - Make "num-lanes" and "lane-speed-mantissa-gbps" common USB properties
> 
>  Documentation/devicetree/bindings/usb/generic.txt | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt
> index ba472e7aefc9..a8253da684af 100644
> --- a/Documentation/devicetree/bindings/usb/generic.txt
> +++ b/Documentation/devicetree/bindings/usb/generic.txt
> @@ -7,6 +7,17 @@ Optional properties:
>  			"low-speed". In case this isn't passed via DT, USB
>  			controllers should default to their maximum HW
>  			capability.
> + - num-lanes: tells USB controllers that we want to work up to a certain number
> +			of lanes. Valid arguments are 1 or 2. Apply if the
> +			maximum-speed is super-speed-plus. In case this isn't
> +			passed via DT, the USB controllers should default to
> +			their maximum HW capability.
> + - lane-speed-mantissa-gbps: tells USB controllers that we want the symmetric
> +			lanes to operate up to a certain rate in Gbps. Valid
> +			inputs are 5 or 10 (i.e. Gen 1/Gen 2 transfer rate).
> +			Apply if the maximum-speed is super-speed-plus. In case
> +			this isn't passed via DT, the USB controllers should
> +			default to their maximum HW capability.

This still leaves 'maximum-speed = "super-speed-plus"' ambiguous. Fix 
that please.

To put it another way, we already have one way to define USB speeds. 
Don't define a new and different way that only covers a fraction of the 
possibilities.

Rob
Thinh Nguyen July 24, 2020, 2:39 a.m. UTC | #2
Rob Herring wrote:
> On Wed, Jul 22, 2020 at 07:12:39PM -0700, Thinh Nguyen wrote:
>> According to USB 3.2 spec, a super-speed-plus device can operate at
>> gen2x2, gen2x1, or gen1x2. Introduce "num-lanes" and
>> "lane-speed-mantissa-gbps" properties for devices operating in
>> super-speed-plus. If the USB controller device supports multiple lanes
>> at different transfer rate, the user can specify the HW capability via
>> these properties.
>>
>> Signed-off-by: Thinh Nguyen <thinhn@synopsys.com>
>> ---
>> Changes in v2:
>> - Make "num-lanes" and "lane-speed-mantissa-gbps" common USB properties
>>
>>   Documentation/devicetree/bindings/usb/generic.txt | 11 +++++++++++
>>   1 file changed, 11 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt
>> index ba472e7aefc9..a8253da684af 100644
>> --- a/Documentation/devicetree/bindings/usb/generic.txt
>> +++ b/Documentation/devicetree/bindings/usb/generic.txt
>> @@ -7,6 +7,17 @@ Optional properties:
>>   			"low-speed". In case this isn't passed via DT, USB
>>   			controllers should default to their maximum HW
>>   			capability.
>> + - num-lanes: tells USB controllers that we want to work up to a certain number
>> +			of lanes. Valid arguments are 1 or 2. Apply if the
>> +			maximum-speed is super-speed-plus. In case this isn't
>> +			passed via DT, the USB controllers should default to
>> +			their maximum HW capability.
>> + - lane-speed-mantissa-gbps: tells USB controllers that we want the symmetric
>> +			lanes to operate up to a certain rate in Gbps. Valid
>> +			inputs are 5 or 10 (i.e. Gen 1/Gen 2 transfer rate).
>> +			Apply if the maximum-speed is super-speed-plus. In case
>> +			this isn't passed via DT, the USB controllers should
>> +			default to their maximum HW capability.
> This still leaves 'maximum-speed = "super-speed-plus"' ambiguous. Fix
> that please.
>
> To put it another way, we already have one way to define USB speeds.
> Don't define a new and different way that only covers a fraction of the
> possibilities.
>

Then, we can just do away with the "num-lanes" property, and change it 
to something like this as you suggested?

diff --git a/Documentation/devicetree/bindings/usb/generic.txt 
b/Documentation/devicetree/bindings/usb/generic.txt
index ba472e7aefc9..8541b9571f2f 100644
--- a/Documentation/devicetree/bindings/usb/generic.txt
+++ b/Documentation/devicetree/bindings/usb/generic.txt
@@ -3,10 +3,13 @@ Generic USB Properties
  Optional properties:
   - maximum-speed: tells USB controllers we want to work up to a certain
                         speed. Valid arguments are "super-speed-plus",
-                       "super-speed", "high-speed", "full-speed" and
-                       "low-speed". In case this isn't passed via DT, USB
-                       controllers should default to their maximum HW
-                       capability.
+                       "super-speed-plus-gen2x2", 
"super-speed-plus-gen2x1",
+                       "super-speed-plus-gen1x2", "super-speed", 
"high-speed",
+                       "full-speed" and "low-speed". In case this isn't 
passed
+                       via DT, USB controllers should default to their 
maximum
+                       HW capability. Similarly, if the argument is
+                       "super-speed-plus", USB controllers should 
default to
+                       their maximum transfer rate and number of lanes.
   - dr_mode: tells Dual-Role USB controllers that we want to work on a
                         particular mode. Valid arguments are "host",
                         "peripheral" and "otg". In case this attribute 
isn't


Is that ok?

BR,
Thinh
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/usb/generic.txt b/Documentation/devicetree/bindings/usb/generic.txt
index ba472e7aefc9..a8253da684af 100644
--- a/Documentation/devicetree/bindings/usb/generic.txt
+++ b/Documentation/devicetree/bindings/usb/generic.txt
@@ -7,6 +7,17 @@  Optional properties:
 			"low-speed". In case this isn't passed via DT, USB
 			controllers should default to their maximum HW
 			capability.
+ - num-lanes: tells USB controllers that we want to work up to a certain number
+			of lanes. Valid arguments are 1 or 2. Apply if the
+			maximum-speed is super-speed-plus. In case this isn't
+			passed via DT, the USB controllers should default to
+			their maximum HW capability.
+ - lane-speed-mantissa-gbps: tells USB controllers that we want the symmetric
+			lanes to operate up to a certain rate in Gbps. Valid
+			inputs are 5 or 10 (i.e. Gen 1/Gen 2 transfer rate).
+			Apply if the maximum-speed is super-speed-plus. In case
+			this isn't passed via DT, the USB controllers should
+			default to their maximum HW capability.
  - dr_mode: tells Dual-Role USB controllers that we want to work on a
 			particular mode. Valid arguments are "host",
 			"peripheral" and "otg". In case this attribute isn't