Re: [PATCH 1/4] dt-bindings: usb: Document ST UCPD

From: Fabrice Gasnier

Date: Fri Aug 21 2026 - 12:27:25 EST


On 8/19/26 18:33, Marek Vasut wrote:
> Document ST UCPD Type-C block. The UCPD integrates the physical
> layer of the Power Delivery (PD), with CC signaling method, for
> operation with Type-C cables. Vbus and Vconn control is performed
> using an external chip, usually ST TCPP01/TCPP02/TCPP03 or similar.

Hi Marek, All,

I've sent a series for the complete case. Please check and review here:
https://lore.kernel.org/linux-usb/20260821-ucpd-host-fusb340-v7-2-rfc-v1-0-c5e27cbc0795@xxxxxxxxxxx/

Thanks,
BR,
Fabrice

>
> Signed-off-by: Marek Vasut <marex@xxxxxxxxxxxx>
> ---
> Cc: Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>
> Cc: Conor Dooley <conor+dt@xxxxxxxxxx>
> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> Cc: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx>
> Cc: Krzysztof Kozlowski <krzk+dt@xxxxxxxxxx>
> Cc: Maxime Coquelin <mcoquelin.stm32@xxxxxxxxx>
> Cc: Rob Herring <robh@xxxxxxxxxx>
> Cc: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxx>
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: kernel@xxxxxxxxxxxxxxxxxx
> Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> Cc: linux-kernel@xxxxxxxxxxxxxxx
> Cc: linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Cc: linux-usb@xxxxxxxxxxxxxxx
> ---
> .../bindings/usb/st,stm32mp25-ucpd.yaml | 154 ++++++++++++++++++
> 1 file changed, 154 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/usb/st,stm32mp25-ucpd.yaml
>
> diff --git a/Documentation/devicetree/bindings/usb/st,stm32mp25-ucpd.yaml b/Documentation/devicetree/bindings/usb/st,stm32mp25-ucpd.yaml
> new file mode 100644
> index 0000000000000..9b13efdc90597
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/usb/st,stm32mp25-ucpd.yaml
> @@ -0,0 +1,154 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/usb/st,stm32mp25-ucpd.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: STMicroelectronics STM32MP25 UCPD Type-C controller
> +
> +maintainers:
> + - Marek Vasut <marex@xxxxxxxxxxxx>
> +
> +description:
> + The UCPD integrates the physical layer of the Power Delivery (PD),
> + with CC signaling method, for operation with Type-C cables. Vbus
> + and Vconn control is performed using an external chip, usually
> + ST TCPP01/TCPP02/TCPP03 or similar.
> +
> +properties:
> + compatible:
> + const: st,stm32mp25-ucpd
> +
> + reg:
> + maxItems: 1
> +
> + access-controllers:
> + maxItems: 1
> +
> + clocks:
> + minItems: 2
> + maxItems: 2
> +
> + clock-names:
> + items:
> + - const: apb
> + - const: ker
> +
> + interrupts:
> + maxItems: 1
> +
> + nvmem-cells:
> + maxItems: 1
> +
> + nvmem-cell-names:
> + const: trim
> +
> + power-domains:
> + maxItems: 1
> +
> + resets:
> + maxItems: 1
> +
> + reset-names:
> + const: phy
> +
> + vconn-gpios:
> + description: GPIOs used to control CC1 and CC2 Vconn
> +
> + vdd33-supply:
> + description: Regulator that supplies the CC lines driver
> +
> + connector:
> + type: object
> + $ref: /schemas/connector/usb-connector.yaml#
> + unevaluatedProperties: false
> +
> + properties:
> + compatible:
> + const: usb-c-connector
> +
> + power-role: true
> +
> + typec-power-opmode: true
> +
> + required:
> + - compatible
> +
> +required:
> + - compatible
> + - reg
> + - clocks
> + - clock-names
> + - interrupts
> + - nvmem-cells
> + - nvmem-cell-names
> + - power-domains
> + - resets
> + - reset-names
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/clock/st,stm32mp25-rcc.h>
> + #include <dt-bindings/interrupt-controller/arm-gic.h>
> + #include <dt-bindings/reset/st,stm32mp25-rcc.h>
> +
> + ucpd: phy@480a0000 {
> + compatible = "st,stm32mp25-ucpd";
> + reg = <0x480a0000 0x1000>;
> + access-controllers = <&rifsc 69>;
> + clocks = <&rcc CK_BUS_USBTC>, <&rcc CK_KER_USBTC>;
> + clock-names = "apb", "ker";
> + interrupts = <46 IRQ_TYPE_LEVEL_HIGH>;
> + nvmem-cells = <&ucpdtrim>;
> + nvmem-cell-names = "trim";
> + power-domains = <&cluster_pd>;
> + resets = <&rcc USBTC_R>;
> + reset-names = "phy";
> +
> + vconn-gpios = <&tcpp 0 0>, <&tcpp 1 0>;
> + vdd33-supply = <&scmi_vdd33ucpd>;
> +
> + connector {
> + compatible = "usb-c-connector";
> + label = "USB-C";
> + data-role = "dual";
> + power-role = "source";
> + self-powered;
> + vbus-gpios = <&gpioa 10 0>;
> + vbus-supply = <&reg_usbc_vbus>;
> +
> + altmodes {
> + displayport {
> + svid = /bits/ 16 <0xff01>;
> + vdo = <0xffffffff>;
> + };
> + };
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> + usbc0_hs_ep: endpoint {
> + remote-endpoint = <&usb_drd0_hs_ep>;
> + };
> + };
> + port@1 {
> + reg = <1>;
> + usbc0_ss_ep: endpoint {
> + remote-endpoint = <&usb_drd0_ss_ep>;
> + };
> + };
> +
> + port@2 {
> + reg = <2>;
> + usbc0_sbu_ep: endpoint {
> + remote-endpoint = <&usb_sbu_ep>;
> + };
> + };
> + };
> + };
> + };