2020-09-02 08:01:25

by Amelie Delaunay

[permalink] [raw]
Subject: [RESEND PATCH v2 0/6] Add STUSB160x Type-C port controller support

This series adds support for STMicroelectronics STUSB160x Type-C port
controllers [1].
STUSB160x driver requires to get power operation mode via device tree,
that's why this series also adds the optional DT property power-opmode
for usb-c-connector to select the power operation mode capability and
a function to convert the power operation mode string into power
operation mode value.
This driver has been tested on stm32mp157c-dk2 [2], which has a Type-C
connector managed by STUSB1600, and connected to USB OTG controller.

[1] https://www.st.com/en/interfaces-and-transceivers/usb-type-c-and-power-delivery-controllers.html
[2] https://www.st.com/en/evaluation-tools/stm32mp157c-dk2.html

Amelie Delaunay (6):
dt-bindings: connector: add power-opmode optional property to
usb-connector
usb: typec: add typec_find_pwr_opmode
dt-bindings: usb: Add DT bindings for STUSB160x Type-C controller
usb: typec: add support for STUSB160x Type-C controller family
ARM: dts: stm32: add STUSB1600 Type-C using I2C4 on stm32mp15xx-dkx
ARM: multi_v7_defconfig: enable STUSB160X Type-C port controller
support
---
Changes in v2:
- power-opmode DT property description updated.
---
.../bindings/connector/usb-connector.yaml | 20 +
.../devicetree/bindings/usb/st,stusb160x.yaml | 85 ++
arch/arm/boot/dts/stm32mp15-pinctrl.dtsi | 7 +
arch/arm/boot/dts/stm32mp15xx-dkx.dtsi | 38 +
arch/arm/configs/multi_v7_defconfig | 2 +
drivers/usb/typec/Kconfig | 12 +
drivers/usb/typec/Makefile | 1 +
drivers/usb/typec/class.c | 15 +
drivers/usb/typec/stusb160x.c | 875 ++++++++++++++++++
include/linux/usb/typec.h | 1 +
10 files changed, 1056 insertions(+)
create mode 100644 Documentation/devicetree/bindings/usb/st,stusb160x.yaml
create mode 100644 drivers/usb/typec/stusb160x.c

--
2.17.1


2020-09-02 08:02:10

by Amelie Delaunay

[permalink] [raw]
Subject: [RESEND PATCH v2 1/6] dt-bindings: connector: add power-opmode optional property to usb-connector

Power operation mode may depends on hardware design, so, add the optional
property power-opmode for usb-c connector to select the power operation
mode capability.

Signed-off-by: Amelie Delaunay <[email protected]>
---
Changes in v2:
- Add description for possible operation current values
---
.../bindings/connector/usb-connector.yaml | 20 +++++++++++++++++++
1 file changed, 20 insertions(+)

diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
index 9bd52e63c935..2fd85b9a7e1a 100644
--- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
+++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
@@ -88,6 +88,26 @@ properties:
- device
- dual

+ power-opmode:
+ description: Determines the power operation mode that the Type C connector
+ will support and will advertise through CC pins.
+ - "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.
+ - "usb_power_delivery" when Power Delivery is supported, as defined in
+ USB Power Delivery specification.
+ allOf:
+ - $ref: /schemas/types.yaml#definitions/string
+ enum:
+ - default
+ - 1.5A
+ - 3.0A
+ - usb_power_delivery
+
# The following are optional properties for "usb-c-connector" with power
# delivery support.
source-pdos:
--
2.17.1

2020-09-23 09:10:10

by Jun Li

[permalink] [raw]
Subject: Re: [RESEND PATCH v2 1/6] dt-bindings: connector: add power-opmode optional property to usb-connector

Amelie Delaunay <[email protected]> 于2020年9月2日周三 下午4:01写道:
>
> Power operation mode may depends on hardware design, so, add the optional
> property power-opmode for usb-c connector to select the power operation
> mode capability.
>
> Signed-off-by: Amelie Delaunay <[email protected]>
> ---
> Changes in v2:
> - Add description for possible operation current values
> ---
> .../bindings/connector/usb-connector.yaml | 20 +++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> index 9bd52e63c935..2fd85b9a7e1a 100644
> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> @@ -88,6 +88,26 @@ properties:
> - device
> - dual
>
> + power-opmode:
> + description: Determines the power operation mode that the Type C connector
> + will support and will advertise through CC pins.
> + - "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.
> + - "usb_power_delivery" when Power Delivery is supported, as defined in
> + USB Power Delivery specification.

Why need "usb_power_delivery"? isn't this information can be implied by
existing properties like if "source-pdos" is present?

Li Jun
> + allOf:
> + - $ref: /schemas/types.yaml#definitions/string
> + enum:
> + - default
> + - 1.5A
> + - 3.0A
> + - usb_power_delivery
> +
> # The following are optional properties for "usb-c-connector" with power
> # delivery support.
> source-pdos:
> --
> 2.17.1
>

2020-09-23 09:33:34

by Amelie Delaunay

[permalink] [raw]
Subject: Re: [RESEND PATCH v2 1/6] dt-bindings: connector: add power-opmode optional property to usb-connector



On 9/23/20 11:08 AM, Jun Li wrote:
> Amelie Delaunay <[email protected]> 于2020年9月2日周三 下午4:01写道:
>>
>> Power operation mode may depends on hardware design, so, add the optional
>> property power-opmode for usb-c connector to select the power operation
>> mode capability.
>>
>> Signed-off-by: Amelie Delaunay <[email protected]>
>> ---
>> Changes in v2:
>> - Add description for possible operation current values
>> ---
>> .../bindings/connector/usb-connector.yaml | 20 +++++++++++++++++++
>> 1 file changed, 20 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> index 9bd52e63c935..2fd85b9a7e1a 100644
>> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
>> @@ -88,6 +88,26 @@ properties:
>> - device
>> - dual
>>
>> + power-opmode:
>> + description: Determines the power operation mode that the Type C connector
>> + will support and will advertise through CC pins.
>> + - "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.
>> + - "usb_power_delivery" when Power Delivery is supported, as defined in
>> + USB Power Delivery specification.
>
> Why need "usb_power_delivery"? isn't this information can be implied by
> existing properties like if "source-pdos" is present?
>

power-opmode is an optional property.
usb_power_delivery, as 3.0A, 1.5A or default here, only reflect the
possible power operation mode you can set and that are understood by
typec class:
static const char * const typec_pwr_opmodes[] = {
[TYPEC_PWR_MODE_USB] = "default",
[TYPEC_PWR_MODE_1_5A] = "1.5A",
[TYPEC_PWR_MODE_3_0A] = "3.0A",
[TYPEC_PWR_MODE_PD] = "usb_power_delivery",
};

But I guess that a Type-C controller with usb power delivery support
won't use power-opmode property but rather source/sink-pdos.

power-opmode shows what will be advertised through CC pins. I can remove
usb_power_delivery from the possible values, but what about the user who
will add power-opmode property to configure his Type-C controller with
USB power delivery support (sink and/or source by the way) ?
Should I restrict the use of power-opmode to non-USB power delivery
Type-C controllers ?
Please advise.

Regards,
Amelie


> Li Jun
>> + allOf:
>> + - $ref: /schemas/types.yaml#definitions/string
>> + enum:
>> + - default
>> + - 1.5A
>> + - 3.0A
>> + - usb_power_delivery
>> +
>> # The following are optional properties for "usb-c-connector" with power
>> # delivery support.
>> source-pdos:
>> --
>> 2.17.1
>>

2020-09-23 10:37:17

by Jun Li

[permalink] [raw]
Subject: Re: [RESEND PATCH v2 1/6] dt-bindings: connector: add power-opmode optional property to usb-connector

Amelie DELAUNAY <[email protected]> 于2020年9月23日周三 下午5:31写道:
>
>
>
> On 9/23/20 11:08 AM, Jun Li wrote:
> > Amelie Delaunay <[email protected]> 于2020年9月2日周三 下午4:01写道:
> >>
> >> Power operation mode may depends on hardware design, so, add the optional
> >> property power-opmode for usb-c connector to select the power operation
> >> mode capability.
> >>
> >> Signed-off-by: Amelie Delaunay <[email protected]>
> >> ---
> >> Changes in v2:
> >> - Add description for possible operation current values
> >> ---
> >> .../bindings/connector/usb-connector.yaml | 20 +++++++++++++++++++
> >> 1 file changed, 20 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/connector/usb-connector.yaml b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> index 9bd52e63c935..2fd85b9a7e1a 100644
> >> --- a/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> +++ b/Documentation/devicetree/bindings/connector/usb-connector.yaml
> >> @@ -88,6 +88,26 @@ properties:
> >> - device
> >> - dual
> >>
> >> + power-opmode:
> >> + description: Determines the power operation mode that the Type C connector
> >> + will support and will advertise through CC pins.
> >> + - "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.
> >> + - "usb_power_delivery" when Power Delivery is supported, as defined in
> >> + USB Power Delivery specification.
> >
> > Why need "usb_power_delivery"? isn't this information can be implied by
> > existing properties like if "source-pdos" is present?
> >
>
> power-opmode is an optional property.
> usb_power_delivery, as 3.0A, 1.5A or default here, only reflect the
> possible power operation mode you can set and that are understood by
> typec class:
> static const char * const typec_pwr_opmodes[] = {
> [TYPEC_PWR_MODE_USB] = "default",
> [TYPEC_PWR_MODE_1_5A] = "1.5A",
> [TYPEC_PWR_MODE_3_0A] = "3.0A",
> [TYPEC_PWR_MODE_PD] = "usb_power_delivery",
> };
>
> But I guess that a Type-C controller with usb power delivery support
> won't use power-opmode property but rather source/sink-pdos.
>
> power-opmode shows what will be advertised through CC pins. I can remove
> usb_power_delivery from the possible values, but what about the user who
> will add power-opmode property to configure his Type-C controller with
> USB power delivery support (sink and/or source by the way) ?

With power delivery support, this information should be abstracted from
source-pdos.

> Should I restrict the use of power-opmode to non-USB power delivery
> Type-C controllers ?

I think Yes. only need it for non-PD(power source/DRP).

Li Jun
> Please advise.
>
> Regards,
> Amelie
>
>
> > Li Jun
> >> + allOf:
> >> + - $ref: /schemas/types.yaml#definitions/string
> >> + enum:
> >> + - default
> >> + - 1.5A
> >> + - 3.0A
> >> + - usb_power_delivery
> >> +
> >> # The following are optional properties for "usb-c-connector" with power
> >> # delivery support.
> >> source-pdos:
> >> --
> >> 2.17.1
> >>