[PATCH 03/16] dt-bindings: usb: st,stm32-ucpd: Document STM32 UCPD controller
From: Fabrice Gasnier <fabrice.gasnier@foss.st.com>
Date: 2026-08-21 16:23:53
Also in:
linux-arm-kernel, linux-phy, linux-usb, lkml
Subsystem:
open firmware and flattened device tree bindings, the rest, usb subsystem · Maintainers:
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Linus Torvalds, Greg Kroah-Hartman
From: Christian Bruel <christian.bruel@foss.st.com> 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@foss.st.com> Signed-off-by: Fabrice Gasnier <fabrice.gasnier@foss.st.com> --- .../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@foss.st.com> + - Fabrice Gasnier <fabrice.gasnier@foss.st.com> + +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