From 3b125e5f36499bc91cdd9f7fb09662e05ba3d2ae Mon Sep 17 00:00:00 2001 From: Cole Munz Date: Wed, 29 Jul 2026 07:29:37 -0500 Subject: [PATCH] arm64: dts: rockchip: flipper-one: wire Type-C up port VBUS to the connector The hd3ss3220 driver reads the "vbus" regulator from the connector fwnode, not from its own node. With no "connector" child present it walks the graph instead: ep = fwnode_graph_get_next_endpoint(dev_fwnode(dev), NULL); connector = fwnode_graph_get_remote_port_parent(ep); ... vbus = devm_of_regulator_get_optional(dev, to_of_node(connector), "vbus"); so on F0B1C2 it lands on &typec_up_con. vbus-supply sits on &usbmux instead, the lookup returns -ENODEV, hd3ss3220->vbus stays NULL and hd3ss3220_regulator_control() is never reached. VBUS on the up port is only ever present because the regulator is marked always-on. The property is not valid where it currently sits either: usb-mux@47 (ti,hd3ss3220): 'vbus-supply' does not match any of the regexes: '^pinctrl-[0-9]+$' from schema $id: http://devicetree.org/schemas/usb/ti,hd3ss3220.yaml Move it to &typec_up_con, which usb-connector.yaml already describes as carrying vbus-supply, and drop regulator-always-on now that the driver switches the regulator with the port role. Signed-off-by: Cole Munz --- .../boot/dts/rockchip/rk3576-flipper-one-rev-f0b1c2.dts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm64/boot/dts/rockchip/rk3576-flipper-one-rev-f0b1c2.dts b/arch/arm64/boot/dts/rockchip/rk3576-flipper-one-rev-f0b1c2.dts index 0fe76d9b30eedb..8a0bfd09f6249c 100644 --- a/arch/arm64/boot/dts/rockchip/rk3576-flipper-one-rev-f0b1c2.dts +++ b/arch/arm64/boot/dts/rockchip/rk3576-flipper-one-rev-f0b1c2.dts @@ -28,7 +28,6 @@ compatible = "regulator-fixed"; enable-active-high; regulator-name = "vusb_typec_up"; - regulator-always-on; /* Remove once VBUS is wired up in the DT binding and driver */ regulator-min-microvolt = <5200000>; regulator-max-microvolt = <5200000>; gpios = <&gpio_expander 0x7 GPIO_ACTIVE_HIGH>; @@ -69,6 +68,10 @@ }; }; +&typec_up_con { + vbus-supply = <&vusb_typec_up>; +}; + &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1m1_xfer>; @@ -85,7 +88,6 @@ &usbmux { interrupt-parent = <&gpio_expander>; interrupts = <4 IRQ_TYPE_LEVEL_LOW>; - vbus-supply = <&vusb_typec_up>; /* Wire it up in the DT binding and driver */ }; &vcc5v0_device_s0 {