[PATCH 03/16] dt-bindings: usb: st,stm32-ucpd: Document STM32 UCPD controller

From: Fabrice Gasnier

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


From: Christian Bruel <christian.bruel@xxxxxxxxxxx>

Add support for the UCPD controller found in STM32MP25 platforms.

Document the compatible "st,stm32-ucpd". This controller handles
USB Type-C CC line management and USB PD.

VBUS monitoring relies on external TCPP03 companion chip

Signed-off-by: Christian Bruel <christian.bruel@xxxxxxxxxxx>
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
---
.../devicetree/bindings/usb/st,stm32-ucpd.yaml | 134 +++++++++++++++++++++
1 file changed, 134 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/st,stm32-ucpd.yaml b/Documentation/devicetree/bindings/usb/st,stm32-ucpd.yaml
new file mode 100644
index 000000000000..d9b8253654a7
--- /dev/null
+++ b/Documentation/devicetree/bindings/usb/st,stm32-ucpd.yaml
@@ -0,0 +1,134 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/usb/st,stm32-ucpd.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: STM32 UCPD (USB Type-C and Power Delivery)
+
+maintainers:
+ - Christian Bruel <christian.bruel@xxxxxxxxxxx>
+ - Fabrice Gasnier <fabrice.gasnier@xxxxxxxxxxx>
+
+description:
+ STMicroelectronics USB Type-C and Power Delivery Port Controller
+
+properties:
+ compatible:
+ const: st,stm32mp25-ucpd
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-names:
+ const: ucpd
+
+ clocks:
+ items:
+ - description: APB Bus clock
+ - description: RCC kernel clock
+
+ clock-names:
+ items:
+ - const: apb
+ - const: ker
+
+ resets:
+ maxItems: 1
+
+ reset-names:
+ const: ucpd
+
+ nvmem-cells:
+ maxItems: 6
+ description: Phandles to the trim values provided by otp
+
+ nvmem-cell-names:
+ maxItems: 6
+
+ st,tcpp:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ phandle to Type-C Port Protection companion chip.
+ Refer to ./st,tcpp.yaml
+
+ access-controllers:
+ maxItems: 1
+
+ power-domains:
+ maxItems: 1
+
+ ucpd-supply:
+ description: phandle to the UCPD regulator supply.
+
+ vconn-cc1-gpios:
+ description: Vconn on CC1 gate enable GPIO.
+
+ vconn-cc2-gpios:
+ description: Vconn on CC2 gate enable GPIO.
+
+ vconn-supply:
+ description: phandle to the regulator supplying Vconn gates.
+
+ connector:
+ type: object
+ $ref: ../connector/usb-connector.yaml#
+ unevaluatedProperties: false
+ description: USB Type-C connector properties.
+
+required:
+ - clocks
+ - clock-names
+ - compatible
+ - connector
+ - interrupts
+ - interrupt-names
+ - resets
+ - reset-names
+ - reg
+ - st,tcpp
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/clock/st,stm32mp25-rcc.h>
+ #include <dt-bindings/gpio/gpio.h>
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/reset/st,stm32mp25-rcc.h>
+
+ typec@480a0000 {
+ compatible = "st,stm32mp25-ucpd";
+ reg = <0x480a0000 0x400>;
+ interrupts-extended = <&exti1 46 IRQ_TYPE_LEVEL_HIGH>;
+ interrupt-names = "ucpd";
+ clocks = <&rcc CK_BUS_USBTC>, <&rcc CK_KER_USBTC>;
+ clock-names = "apb", "ker";
+ resets = <&rcc USBTC_R>;
+ reset-names = "ucpd";
+ access-controllers = <&rifsc 69>;
+ power-domains = <&d1_pd>;
+ ucpd-supply = <&scmi_vdd33ucpd>;
+ vconn-cc1-gpios = <&gpiof 5 GPIO_ACTIVE_HIGH>;
+ vconn-cc2-gpios = <&gpioc 3 GPIO_ACTIVE_HIGH>;
+ vconn-supply = <&vconn>;
+ st,tcpp = <&tcpp03>;
+
+ connector {
+ compatible = "usb-c-connector";
+ label = "USB-C";
+ power-role = "dual";
+ try-power-role = "sink";
+ data-role = "dual";
+ typec-power-opmode = "default";
+ pd-disable;
+ port {
+ endpoint {
+ remote-endpoint = <&dwc3_ep>;
+ };
+ };
+ };
+ };

--
2.43.0