diff mbox series

[v5,1/5] dt-bindings: connector: add typec-power-opmode property to usb-connector

Message ID 20201106165805.31534-2-amelie.delaunay@st.com (mailing list archive)
State New, archived
Headers show
Series STUSB1600 support on STM32MP15xx-DKx | expand

Commit Message

Amelie Delaunay Nov. 6, 2020, 4:58 p.m. UTC
Power operation mode may depends on hardware design, so, add the optional
property typec-power-opmode for usb-c connector to select the power
operation mode capability.

Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
---
Hi Bahdri, Rob,

I've added the exlusion with FRS property, but new FRS property name
should be use here so, be careful.

---
 .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
 1 file changed, 24 insertions(+)

Comments

Rob Herring Nov. 9, 2020, 3:03 p.m. UTC | #1
On Fri, Nov 6, 2020 at 10:58 AM Amelie Delaunay <amelie.delaunay@st.com> wrote:
>
> Power operation mode may depends on hardware design, so, add the optional
> property typec-power-opmode for usb-c connector to select the power
> operation mode capability.
>
> Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
> ---
> Hi Bahdri, Rob,
>
> I've added the exlusion with FRS property, but new FRS property name
> should be use here so, be careful.
>
> ---
>  .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> index 62781518aefc..a84464b3e1f2 100644
> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> @@ -93,6 +93,24 @@ properties:
>        - device
>        - dual
>
> +  typec-power-opmode:
> +    description: Determines the power operation mode that the Type C connector
> +      will support and will advertise through CC pins when it has no power
> +      delivery support.
> +      - "default" corresponds to default USB voltage and current defined by the
> +        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
> +        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
> +        operation respectively.
> +      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
> +        Type-C Cable and Connector specification, when Power Delivery is not
> +        supported.
> +    allOf:
> +      - $ref: /schemas/types.yaml#definitions/string
> +    enum:
> +      - default
> +      - 1.5A
> +      - 3.0A

Use the enums here. Unless you want to define it as actual current as
a numerical value.

Rob
Amelie Delaunay Nov. 9, 2020, 3:54 p.m. UTC | #2
On 11/9/20 4:03 PM, Rob Herring wrote:
> On Fri, Nov 6, 2020 at 10:58 AM Amelie Delaunay <amelie.delaunay@st.com> wrote:
>>
>> Power operation mode may depends on hardware design, so, add the optional
>> property typec-power-opmode for usb-c connector to select the power
>> operation mode capability.
>>
>> Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
>> ---
>> Hi Bahdri, Rob,
>>
>> I've added the exlusion with FRS property, but new FRS property name
>> should be use here so, be careful.
>>
>> ---
>>   .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
>>   1 file changed, 24 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> index 62781518aefc..a84464b3e1f2 100644
>> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> @@ -93,6 +93,24 @@ properties:
>>         - device
>>         - dual
>>
>> +  typec-power-opmode:
>> +    description: Determines the power operation mode that the Type C connector
>> +      will support and will advertise through CC pins when it has no power
>> +      delivery support.
>> +      - "default" corresponds to default USB voltage and current defined by the
>> +        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
>> +        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
>> +        operation respectively.
>> +      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
>> +        Type-C Cable and Connector specification, when Power Delivery is not
>> +        supported.
>> +    allOf:
>> +      - $ref: /schemas/types.yaml#definitions/string
>> +    enum:
>> +      - default
>> +      - 1.5A
>> +      - 3.0A
> 
> Use the enums here. Unless you want to define it as actual current as
> a numerical value.

If I understand your point correctly, I think I should remove allOf here 
and stick with what is done to describe power-role and data-role 
property. Right ?

Regards,
Amelie
> 
> Rob
>
Rob Herring Nov. 9, 2020, 4:02 p.m. UTC | #3
On Mon, Nov 9, 2020 at 9:54 AM Amelie DELAUNAY <amelie.delaunay@st.com> wrote:
>
> On 11/9/20 4:03 PM, Rob Herring wrote:
> > On Fri, Nov 6, 2020 at 10:58 AM Amelie Delaunay <amelie.delaunay@st.com> wrote:
> >>
> >> Power operation mode may depends on hardware design, so, add the optional
> >> property typec-power-opmode for usb-c connector to select the power
> >> operation mode capability.
> >>
> >> Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
> >> ---
> >> Hi Bahdri, Rob,
> >>
> >> I've added the exlusion with FRS property, but new FRS property name
> >> should be use here so, be careful.
> >>
> >> ---
> >>   .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
> >>   1 file changed, 24 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> index 62781518aefc..a84464b3e1f2 100644
> >> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> @@ -93,6 +93,24 @@ properties:
> >>         - device
> >>         - dual
> >>
> >> +  typec-power-opmode:
> >> +    description: Determines the power operation mode that the Type C connector
> >> +      will support and will advertise through CC pins when it has no power
> >> +      delivery support.
> >> +      - "default" corresponds to default USB voltage and current defined by the
> >> +        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
> >> +        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
> >> +        operation respectively.
> >> +      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
> >> +        Type-C Cable and Connector specification, when Power Delivery is not
> >> +        supported.
> >> +    allOf:
> >> +      - $ref: /schemas/types.yaml#definitions/string
> >> +    enum:
> >> +      - default
> >> +      - 1.5A
> >> +      - 3.0A
> >
> > Use the enums here. Unless you want to define it as actual current as
> > a numerical value.
>
> If I understand your point correctly, I think I should remove allOf here
> and stick with what is done to describe power-role and data-role
> property. Right ?

No, use the numerical values like FRS:

+      "1" refers to default USB power level as described by "Table
6-14 Fixed Supply PDO - Sink".
+      "2" refers to 1.5A@5V.
+      "3" refers to 3.0A@5V.
+    $ref: /schemas/types.yaml#/definitions/uint32
+    enum: [1, 2, 3]

Rob
Amelie Delaunay Nov. 9, 2020, 4:10 p.m. UTC | #4
On 11/9/20 5:02 PM, Rob Herring wrote:
> On Mon, Nov 9, 2020 at 9:54 AM Amelie DELAUNAY <amelie.delaunay@st.com> wrote:
>>
>> On 11/9/20 4:03 PM, Rob Herring wrote:
>>> On Fri, Nov 6, 2020 at 10:58 AM Amelie Delaunay <amelie.delaunay@st.com> wrote:
>>>>
>>>> Power operation mode may depends on hardware design, so, add the optional
>>>> property typec-power-opmode for usb-c connector to select the power
>>>> operation mode capability.
>>>>
>>>> Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
>>>> ---
>>>> Hi Bahdri, Rob,
>>>>
>>>> I've added the exlusion with FRS property, but new FRS property name
>>>> should be use here so, be careful.
>>>>
>>>> ---
>>>>    .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
>>>>    1 file changed, 24 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>>>> index 62781518aefc..a84464b3e1f2 100644
>>>> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
>>>> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>>>> @@ -93,6 +93,24 @@ properties:
>>>>          - device
>>>>          - dual
>>>>
>>>> +  typec-power-opmode:
>>>> +    description: Determines the power operation mode that the Type C connector
>>>> +      will support and will advertise through CC pins when it has no power
>>>> +      delivery support.
>>>> +      - "default" corresponds to default USB voltage and current defined by the
>>>> +        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
>>>> +        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
>>>> +        operation respectively.
>>>> +      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
>>>> +        Type-C Cable and Connector specification, when Power Delivery is not
>>>> +        supported.
>>>> +    allOf:
>>>> +      - $ref: /schemas/types.yaml#definitions/string
>>>> +    enum:
>>>> +      - default
>>>> +      - 1.5A
>>>> +      - 3.0A
>>>
>>> Use the enums here. Unless you want to define it as actual current as
>>> a numerical value.
>>
>> If I understand your point correctly, I think I should remove allOf here
>> and stick with what is done to describe power-role and data-role
>> property. Right ?
> 
> No, use the numerical values like FRS:
> 
> +      "1" refers to default USB power level as described by "Table
> 6-14 Fixed Supply PDO - Sink".
> +      "2" refers to 1.5A@5V.
> +      "3" refers to 3.0A@5V.
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    enum: [1, 2, 3]

But it changes the type-c class philosophy. There is already an API to 
convert string into enum, the same kind is used for data-role and 
power-role properties.
Moveover, FRS values doesn't fit with typec_pwr_opmode enum:
enum typec_pwr_opmode {
	TYPEC_PWR_MODE_USB,
	TYPEC_PWR_MODE_1_5A,
	TYPEC_PWR_MODE_3_0A,
	TYPEC_PWR_MODE_PD,
};

Regards
Amelie
Rob Herring Nov. 11, 2020, 8:25 p.m. UTC | #5
On Mon, Nov 09, 2020 at 05:10:23PM +0100, Amelie DELAUNAY wrote:
> 
> 
> On 11/9/20 5:02 PM, Rob Herring wrote:
> > On Mon, Nov 9, 2020 at 9:54 AM Amelie DELAUNAY <amelie.delaunay@st.com> wrote:
> > > 
> > > On 11/9/20 4:03 PM, Rob Herring wrote:
> > > > On Fri, Nov 6, 2020 at 10:58 AM Amelie Delaunay <amelie.delaunay@st.com> wrote:
> > > > > 
> > > > > Power operation mode may depends on hardware design, so, add the optional
> > > > > property typec-power-opmode for usb-c connector to select the power
> > > > > operation mode capability.
> > > > > 
> > > > > Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
> > > > > ---
> > > > > Hi Bahdri, Rob,
> > > > > 
> > > > > I've added the exlusion with FRS property, but new FRS property name
> > > > > should be use here so, be careful.
> > > > > 
> > > > > ---
> > > > >    .../bindings/connector/usb-connector.yaml     | 24 +++++++++++++++++++
> > > > >    1 file changed, 24 insertions(+)
> > > > > 
> > > > > diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> > > > > index 62781518aefc..a84464b3e1f2 100644
> > > > > --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
> > > > > +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> > > > > @@ -93,6 +93,24 @@ properties:
> > > > >          - device
> > > > >          - dual
> > > > > 
> > > > > +  typec-power-opmode:
> > > > > +    description: Determines the power operation mode that the Type C connector
> > > > > +      will support and will advertise through CC pins when it has no power
> > > > > +      delivery support.
> > > > > +      - "default" corresponds to default USB voltage and current defined by the
> > > > > +        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
> > > > > +        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
> > > > > +        operation respectively.
> > > > > +      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
> > > > > +        Type-C Cable and Connector specification, when Power Delivery is not
> > > > > +        supported.
> > > > > +    allOf:
> > > > > +      - $ref: /schemas/types.yaml#definitions/string
> > > > > +    enum:
> > > > > +      - default
> > > > > +      - 1.5A
> > > > > +      - 3.0A
> > > > 
> > > > Use the enums here. Unless you want to define it as actual current as
> > > > a numerical value.
> > > 
> > > If I understand your point correctly, I think I should remove allOf here
> > > and stick with what is done to describe power-role and data-role
> > > property. Right ?
> > 
> > No, use the numerical values like FRS:
> > 
> > +      "1" refers to default USB power level as described by "Table
> > 6-14 Fixed Supply PDO - Sink".
> > +      "2" refers to 1.5A@5V.
> > +      "3" refers to 3.0A@5V.
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    enum: [1, 2, 3]
> 
> But it changes the type-c class philosophy. There is already an API to
> convert string into enum, the same kind is used for data-role and power-role
> properties.
> Moveover, FRS values doesn't fit with typec_pwr_opmode enum:
> enum typec_pwr_opmode {
> 	TYPEC_PWR_MODE_USB,
> 	TYPEC_PWR_MODE_1_5A,
> 	TYPEC_PWR_MODE_3_0A,
> 	TYPEC_PWR_MODE_PD,
> };

Okay, then strings it is I guess.

Reviewed-by: Rob Herring <robh@kernel.org>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
index 62781518aefc..a84464b3e1f2 100644
--- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
+++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
@@ -93,6 +93,24 @@  properties:
       - device
       - dual
 
+  typec-power-opmode:
+    description: Determines the power operation mode that the Type C connector
+      will support and will advertise through CC pins when it has no power
+      delivery support.
+      - "default" corresponds to default USB voltage and current defined by the
+        USB 2.0 and USB 3.2 specifications, 5V 500mA for USB 2.0 ports and
+        5V 900mA or 1500mA for USB 3.2 ports in single-lane or dual-lane
+        operation respectively.
+      - "1.5A" and "3.0A", 5V 1.5A and 5V 3.0A respectively, as defined in USB
+        Type-C Cable and Connector specification, when Power Delivery is not
+        supported.
+    allOf:
+      - $ref: /schemas/types.yaml#definitions/string
+    enum:
+      - default
+      - 1.5A
+      - 3.0A
+
   # The following are optional properties for "usb-c-connector" with power
   # delivery support.
   source-pdos:
@@ -192,6 +210,12 @@  allOf:
         type:
           const: micro
 
+anyOf:
+  - not:
+      required:
+        - typec-power-opmode
+        - new-source-frs-typec-current
+
 additionalProperties: true
 
 examples: