From 8b439118e3bdf9e65a8f7e3b292803ecdaf665bc Mon Sep 17 00:00:00 2001 From: Akash Kumar Date: Thu, 12 Feb 2026 11:47:53 +0530 Subject: [PATCH] FROMLIST: arm64: dts: qcom: qcs6490-rb3gen2: Enable USB2 controller Micro-USB OTG Enable the secondary USB controller (USB2) and its High-Speed PHY to support OTG functionality via a Micro-USB connector. Define a dedicated 'usb2-connector' node using the 'gpio-usb-b-connector' compatible to handle ID and VBUS detection. Link this connector to the DWC3 controller via OF graph ports to satisfy schema requirements and enable role switching. Specific hardware configuration: - ID pin: TLMM 61 - VBUS detection: PM7325 GPIO 9 - VBUS supply: Fixed regulator controlled by TLMM 63 - Configure &usb_2 in OTG mode with role switching enabled. - Define a gpio-usb-b-connector node for Micro-USB support, mapping the ID pin to TLMM 61 and VBUS detection to PM7325 GPIO 9. - Add the 'vdd_micro_usb_vbus' fixed regulator (controlled by TLMM 63) to supply VBUS to the connector. - Add the 'usb2_id_detect' pinctrl state to configure GPIO 61 for ID detection. - Enable &usb_2_hsphy and populate necessary voltage supplies (VDDA PLL, VDDA 1.8V, VDDA 3.3V). Link: https://lore.kernel.org/all/c3on5e56hqipudpt7uyam2cples3rhadpz324zeg7nebczsglt@bxuy5jzrxjc7/ Reviewed-by: Dmitry Baryshkov Signed-off-by: Akash Kumar --- arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts | 66 ++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts index b66bbdc561d0..13b5f981dd6d 100644 --- a/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts +++ b/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts @@ -255,6 +255,16 @@ }; }; + vdd_micro_usb_vbus: regulator-micro-usb-vbus { + compatible = "regulator-fixed"; + regulator-name = "MICRO_USB_VBUS"; + gpio = <&tlmm 63 GPIO_ACTIVE_HIGH>; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + regulator-boot-on; + enable-active-high; + }; + vph_pwr: vph-pwr-regulator { compatible = "regulator-fixed"; regulator-name = "vph_pwr"; @@ -286,6 +296,31 @@ regulator-enable-ramp-delay = <10000>; }; + usb2-connector { + compatible = "gpio-usb-b-connector", + "usb-b-connector"; + label = "micro-USB"; + type = "micro"; + id-gpios = <&tlmm 61 GPIO_ACTIVE_HIGH>; + vbus-gpios = <&pm7325_gpios 9 GPIO_ACTIVE_HIGH>; + vbus-supply = <&vdd_micro_usb_vbus>; + pinctrl-0 = <&usb2_id_detect>; + pinctrl-names = "default"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb2_connector_ep: endpoint { + remote-endpoint = <&usb2_controller_ep>; + }; + }; + }; + }; + wcn6750-pmu { compatible = "qcom,wcn6750-pmu"; pinctrl-0 = <&bt_en>; @@ -1646,6 +1681,12 @@ */ bias-pull-up; }; + + usb2_id_detect: usb2-id-detect-state { + pins = "gpio61"; + function = "gpio"; + bias-pull-up; + }; }; &uart5 { @@ -1709,6 +1750,31 @@ status = "okay"; }; +&usb_2 { + status = "okay"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + usb2_controller_ep: endpoint { + remote-endpoint = <&usb2_connector_ep>; + }; + }; + }; +}; + +&usb_2_hsphy { + vdda-pll-supply = <&vreg_l10c_0p88>; + vdda18-supply = <&vreg_l1c_1p8>; + vdda33-supply = <&vreg_l2b_3p072>; + + status = "okay"; +}; + &usb_dp_qmpphy_out { remote-endpoint = <&redriver_phy_con_ss>; };