Re: [PATCH 2/2] arm64: dts: qcom: monaco-evk: Enable the tertiary USB controller

From: Loic Poulain

Date: Fri Feb 13 2026 - 05:48:23 EST


Hi Swati,

On Tue, Feb 10, 2026 at 4:54 PM Swati Agarwal
<swati.agarwal@xxxxxxxxxxxxxxxx> wrote:
>
> Enable the tertiary usb controller connected to micro usb port in OTG mode
> on Monaco EVK platform.
>
> Signed-off-by: Swati Agarwal <swati.agarwal@xxxxxxxxxxxxxxxx>
> ---
> arch/arm64/boot/dts/qcom/monaco-evk.dts | 53 +++++++++++++++++++++++++
> arch/arm64/boot/dts/qcom/monaco.dtsi | 7 ++++
> 2 files changed, 60 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/monaco-evk.dts b/arch/arm64/boot/dts/qcom/monaco-evk.dts
> index 03af9bbcacc9..e6fc6f6a52e1 100644
> --- a/arch/arm64/boot/dts/qcom/monaco-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/monaco-evk.dts
> @@ -27,6 +27,25 @@ chosen {
> stdout-path = "serial0:115200n8";
> };
>
> + connector-2 {
> + compatible = "gpio-usb-b-connector", "usb-b-connector";
> + label = "micro-USB";
> + type = "micro";
> +
> + id-gpios = <&pmm8620au_0_gpios 9 GPIO_ACTIVE_HIGH>;
> + vbus-gpios = <&expander6 7 GPIO_ACTIVE_HIGH>;
> + vbus-supply = <&vbus_supply_regulator_2>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&usb2_id>;
> +
> + port {
> + usb2_con_hs_ep: endpoint {
> + remote-endpoint = <&usb_2_dwc3_hs>;
> + };
> + };
> + };
> +
> dmic: audio-codec-0 {
> compatible = "dmic-codec";
> #sound-dai-cells = <0>;
> @@ -77,6 +96,15 @@ platform {
> };
> };
> };
> +
> + vbus_supply_regulator_2: vbus-supply-regulator-2 {
> + compatible = "regulator-fixed";
> + regulator-name = "vbus_supply_2";
> + gpio = <&pmm8650au_1_gpios 7 GPIO_ACTIVE_HIGH>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + enable-active-high;
> + };
> };
>
> &apps_rsc {
> @@ -484,6 +512,16 @@ &pcieport1 {
> wake-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
> };
>
> +&pmm8620au_0_gpios {
> + usb2_id: usb2-id-state {
> + pins = "gpio9";
> + function = "normal";
> + input-enable;
> + bias-pull-up;
> + power-source = <0>;
> + };
> +};
> +
> &qupv3_id_0 {
> firmware-name = "qcom/qcs8300/qupv3fw.elf";
> status = "okay";
> @@ -690,3 +728,18 @@ &usb_qmpphy {
>
> status = "okay";
> };
> +
> +&usb_2 {
> + status = "okay";
> +};
> +
> +&usb_2_dwc3_hs {
> + remote-endpoint = <&usb2_con_hs_ep>;
> +};
> +
> +&usb_2_hsphy {
> + vdda-pll-supply = <&vreg_l7a>;
> + vdda18-supply = <&vreg_l7c>;
> + vdda33-supply = <&vreg_l9a>;
> + status = "okay";
> +};

I noticed that usb_2/hs doesn’t work properly unless refgen is
supplied. It may appear to work on your setup if another PHY or
subsystem enables refgen, either explicitly in software (e.g. DSI) or
indirectly, such as through DP, which might be voting for it behind
the scenes.


> diff --git a/arch/arm64/boot/dts/qcom/monaco.dtsi b/arch/arm64/boot/dts/qcom/monaco.dtsi
> index 5d2df4305d1c..59dfacbae4f6 100644
> --- a/arch/arm64/boot/dts/qcom/monaco.dtsi
> +++ b/arch/arm64/boot/dts/qcom/monaco.dtsi
> @@ -5232,7 +5232,14 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>,
> qcom,select-utmi-as-pipe-clk;
> wakeup-source;
>
> + usb-role-switch;
> +
> status = "disabled";
> +
> + port {
> + usb_2_dwc3_hs: endpoint {
> + };
> + };
> };
>
> iris: video-codec@aa00000 {
> --
> 2.34.1
>
>