Enable secondary USB controller in host mode on lemans EVK Platform.
For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
lines run from the SoC through the hub to the Port controller. Mark the
second USB controller as host only capable.
Add HD3SS3220 Type-C port controller along with Type-c connector for
controlling vbus supply.
Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
1 file changed, 158 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
index 70d85b6ba772..d72639479d75 100644
--- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
+++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
@@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
};
};
+ connector-1 {
+ compatible = "usb-c-connector";
+ label = "USB1-Type-C";
+ data-role = "host";
+ power-role = "dual";
+ try-power-role = "source";
+
+ vbus-supply = <&vbus_supply_regulator_1>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb1_con_ss_ep: endpoint {
+ remote-endpoint = <&hd3ss3220_1_in_ep>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb1_hs_in: endpoint {
+ remote-endpoint = <&usb_hub_2_1>;
+ };
+
+ };
+
+ port@2 {
+ reg = <2>;
+
+ usb1_ss_in: endpoint {
+ remote-endpoint = <&usb_hub_3_1>;
+ };
+
+ };
+ };
+ };
+
edp0-connector {
compatible = "dp-connector";
label = "EDP0";
@@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
enable-active-high;
};
+ vbus_supply_regulator_1: regulator-vbus-supply-1 {
+ compatible = "regulator-fixed";
+ regulator-name = "vbus_supply_1";
+ gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-boot-on;
+ enable-active-high;
+ };
+
vmmc_sdc: regulator-vmmc-sdc {
compatible = "regulator-fixed";
@@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
};
};
};
+
+ usb-typec@47 {
+ compatible = "ti,hd3ss3220";
+ reg = <0x47>;
+
+ interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
+
+ id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&usb1_id>, <&usb1_intr>;
+ pinctrl-names = "default";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ hd3ss3220_1_in_ep: endpoint {
+ remote-endpoint = <&usb1_con_ss_ep>;
+ };
+ };
+
+ };
+ };
+
};
&i2c18 {
@@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
bias-pull-up;
power-source = <0>;
};
+
+ usb1_intr: usb1-intr-state {
+ pins = "gpio6";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ power-source = <0>;
+ };
};
&qup_i2c19_default {
@@ -849,6 +935,12 @@ usb_id: usb-id-state {
function = "gpio";
bias-pull-up;
};
+
+ usb1_id: usb1-id-state {
+ pins = "gpio51";
+ function = "gpio";
+ bias-pull-up;
+ };
};
&uart10 {
@@ -903,6 +995,72 @@ &usb_0_qmpphy {
status = "okay";
};
+&usb_1 {
+ dr_mode = "host";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ status = "okay";
+
+ usb_hub_2_x: hub@1 {
+ compatible = "usb5e3,610";
+ reg = <1>;
+ peer-hub = <&usb_hub_3_x>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ usb_hub_2_1: endpoint {
+ remote-endpoint = <&usb1_hs_in>;
+ };
+ };
+
+ };
+ };
+
+ usb_hub_3_x: hub@2 {
+ compatible = "usb5e3,625";
+ reg = <2>;
+ peer-hub = <&usb_hub_2_x>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@1 {
+ reg = <1>;
+
+ usb_hub_3_1: endpoint {
+ remote-endpoint = <&usb1_ss_in>;
+ };
+ };
+
+ };
+ };
+};
+
+&usb_1_hsphy {
+ vdda-pll-supply = <&vreg_l7a>;
+ vdda18-supply = <&vreg_l6c>;
+ vdda33-supply = <&vreg_l9a>;
+
+ status = "okay";
+};
+
+&usb_1_qmpphy {
+ vdda-phy-supply = <&vreg_l1c>;
+ vdda-pll-supply = <&vreg_l7a>;
+
+ status = "okay";
+};
+
&xo_board_clk {
clock-frequency = <38400000>;
};
--
2.34.1
On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> Enable secondary USB controller in host mode on lemans EVK Platform.
>
> For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> lines run from the SoC through the hub to the Port controller. Mark the
> second USB controller as host only capable.
>
> Add HD3SS3220 Type-C port controller along with Type-c connector for
> controlling vbus supply.
>
> Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> 1 file changed, 158 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> index 70d85b6ba772..d72639479d75 100644
> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> };
> };
>
> + connector-1 {
> + compatible = "usb-c-connector";
> + label = "USB1-Type-C";
> + data-role = "host";
> + power-role = "dual";
> + try-power-role = "source";
> +
> + vbus-supply = <&vbus_supply_regulator_1>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + usb1_con_ss_ep: endpoint {
> + remote-endpoint = <&hd3ss3220_1_in_ep>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + usb1_hs_in: endpoint {
> + remote-endpoint = <&usb_hub_2_1>;
> + };
> +
> + };
> +
> + port@2 {
> + reg = <2>;
> +
> + usb1_ss_in: endpoint {
> + remote-endpoint = <&usb_hub_3_1>;
> + };
> +
> + };
> + };
> + };
> +
> edp0-connector {
> compatible = "dp-connector";
> label = "EDP0";
> @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> enable-active-high;
> };
>
> + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> + compatible = "regulator-fixed";
> + regulator-name = "vbus_supply_1";
> + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-boot-on;
> + enable-active-high;
> + };
> +
> vmmc_sdc: regulator-vmmc-sdc {
> compatible = "regulator-fixed";
>
> @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> };
> };
> };
> +
> + usb-typec@47 {
> + compatible = "ti,hd3ss3220";
> + reg = <0x47>;
> +
> + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> +
> + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> +
> + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> + pinctrl-names = "default";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + hd3ss3220_1_in_ep: endpoint {
> + remote-endpoint = <&usb1_con_ss_ep>;
> + };
> + };
> +
> + };
> + };
> +
> };
>
> &i2c18 {
> @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> bias-pull-up;
> power-source = <0>;
> };
> +
> + usb1_intr: usb1-intr-state {
> + pins = "gpio6";
> + function = "normal";
> + input-enable;
> + bias-pull-up;
> + power-source = <0>;
> + };
> };
>
> &qup_i2c19_default {
> @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> function = "gpio";
> bias-pull-up;
> };
> +
> + usb1_id: usb1-id-state {
> + pins = "gpio51";
> + function = "gpio";
> + bias-pull-up;
> + };
> };
>
> &uart10 {
> @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> status = "okay";
> };
>
> +&usb_1 {
> + dr_mode = "host";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + status = "okay";
> +
> + usb_hub_2_x: hub@1 {
> + compatible = "usb5e3,610";
> + reg = <1>;
> + peer-hub = <&usb_hub_3_x>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> +
> + usb_hub_2_1: endpoint {
> + remote-endpoint = <&usb1_hs_in>;
> + };
Are all other ports disconnected? If so, why do we need a hub?
> + };
> +
> + };
> + };
> +
> + usb_hub_3_x: hub@2 {
> + compatible = "usb5e3,625";
> + reg = <2>;
> + peer-hub = <&usb_hub_2_x>;
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@1 {
> + reg = <1>;
> +
> + usb_hub_3_1: endpoint {
> + remote-endpoint = <&usb1_ss_in>;
> + };
> + };
> +
> + };
> + };
> +};
> +
> +&usb_1_hsphy {
> + vdda-pll-supply = <&vreg_l7a>;
> + vdda18-supply = <&vreg_l6c>;
> + vdda33-supply = <&vreg_l9a>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_qmpphy {
> + vdda-phy-supply = <&vreg_l1c>;
> + vdda-pll-supply = <&vreg_l7a>;
> +
> + status = "okay";
> +};
> +
> &xo_board_clk {
> clock-frequency = <38400000>;
> };
> --
> 2.34.1
>
--
With best wishes
Dmitry
On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > Enable secondary USB controller in host mode on lemans EVK Platform.
> >
> > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > lines run from the SoC through the hub to the Port controller. Mark the
> > second USB controller as host only capable.
> >
> > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > controlling vbus supply.
> >
> > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > ---
> > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > 1 file changed, 158 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > index 70d85b6ba772..d72639479d75 100644
> > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > };
> > };
> >
> > + connector-1 {
> > + compatible = "usb-c-connector";
> > + label = "USB1-Type-C";
> > + data-role = "host";
> > + power-role = "dual";
> > + try-power-role = "source";
> > +
> > + vbus-supply = <&vbus_supply_regulator_1>;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + usb1_con_ss_ep: endpoint {
> > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > + };
> > + };
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + usb1_hs_in: endpoint {
> > + remote-endpoint = <&usb_hub_2_1>;
> > + };
> > +
> > + };
> > +
> > + port@2 {
> > + reg = <2>;
> > +
> > + usb1_ss_in: endpoint {
> > + remote-endpoint = <&usb_hub_3_1>;
> > + };
> > +
> > + };
> > + };
> > + };
> > +
> > edp0-connector {
> > compatible = "dp-connector";
> > label = "EDP0";
> > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > enable-active-high;
> > };
> >
> > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > + compatible = "regulator-fixed";
> > + regulator-name = "vbus_supply_1";
> > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > + regulator-min-microvolt = <5000000>;
> > + regulator-max-microvolt = <5000000>;
> > + regulator-boot-on;
> > + enable-active-high;
> > + };
> > +
> > vmmc_sdc: regulator-vmmc-sdc {
> > compatible = "regulator-fixed";
> >
> > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > };
> > };
> > };
> > +
> > + usb-typec@47 {
> > + compatible = "ti,hd3ss3220";
> > + reg = <0x47>;
> > +
> > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > +
> > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > +
> > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > + pinctrl-names = "default";
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@0 {
> > + reg = <0>;
> > +
> > + hd3ss3220_1_in_ep: endpoint {
> > + remote-endpoint = <&usb1_con_ss_ep>;
> > + };
> > + };
> > +
> > + };
> > + };
> > +
> > };
> >
> > &i2c18 {
> > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > bias-pull-up;
> > power-source = <0>;
> > };
> > +
> > + usb1_intr: usb1-intr-state {
> > + pins = "gpio6";
> > + function = "normal";
> > + input-enable;
> > + bias-pull-up;
> > + power-source = <0>;
> > + };
> > };
> >
> > &qup_i2c19_default {
> > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > function = "gpio";
> > bias-pull-up;
> > };
> > +
> > + usb1_id: usb1-id-state {
> > + pins = "gpio51";
> > + function = "gpio";
> > + bias-pull-up;
> > + };
> > };
> >
> > &uart10 {
> > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > status = "okay";
> > };
> >
> > +&usb_1 {
> > + dr_mode = "host";
> > +
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + status = "okay";
> > +
> > + usb_hub_2_x: hub@1 {
> > + compatible = "usb5e3,610";
> > + reg = <1>;
> > + peer-hub = <&usb_hub_3_x>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + usb_hub_2_1: endpoint {
> > + remote-endpoint = <&usb1_hs_in>;
> > + };
>
> Are all other ports disconnected? If so, why do we need a hub?
Hi Dmitry,
I didn't understand your query, can you give more context to it?
Regards,
Swati
>
> > + };
> > +
> > + };
> > + };
> > +
> > + usb_hub_3_x: hub@2 {
> > + compatible = "usb5e3,625";
> > + reg = <2>;
> > + peer-hub = <&usb_hub_2_x>;
> > +
> > + ports {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + port@1 {
> > + reg = <1>;
> > +
> > + usb_hub_3_1: endpoint {
> > + remote-endpoint = <&usb1_ss_in>;
> > + };
> > + };
> > +
> > + };
> > + };
> > +};
> > +
> > +&usb_1_hsphy {
> > + vdda-pll-supply = <&vreg_l7a>;
> > + vdda18-supply = <&vreg_l6c>;
> > + vdda33-supply = <&vreg_l9a>;
> > +
> > + status = "okay";
> > +};
> > +
> > +&usb_1_qmpphy {
> > + vdda-phy-supply = <&vreg_l1c>;
> > + vdda-pll-supply = <&vreg_l7a>;
> > +
> > + status = "okay";
> > +};
> > +
> > &xo_board_clk {
> > clock-frequency = <38400000>;
> > };
> > --
> > 2.34.1
> >
>
> --
> With best wishes
> Dmitry
On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > >
> > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > lines run from the SoC through the hub to the Port controller. Mark the
> > > second USB controller as host only capable.
> > >
> > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > controlling vbus supply.
> > >
> > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > ---
> > > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > > 1 file changed, 158 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > index 70d85b6ba772..d72639479d75 100644
> > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > > };
> > > };
> > >
> > > + connector-1 {
> > > + compatible = "usb-c-connector";
> > > + label = "USB1-Type-C";
> > > + data-role = "host";
> > > + power-role = "dual";
> > > + try-power-role = "source";
> > > +
> > > + vbus-supply = <&vbus_supply_regulator_1>;
> > > +
> > > + ports {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + port@0 {
> > > + reg = <0>;
> > > +
> > > + usb1_con_ss_ep: endpoint {
> > > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > > + };
> > > + };
> > > +
> > > + port@1 {
> > > + reg = <1>;
> > > +
> > > + usb1_hs_in: endpoint {
> > > + remote-endpoint = <&usb_hub_2_1>;
> > > + };
> > > +
> > > + };
> > > +
> > > + port@2 {
> > > + reg = <2>;
> > > +
> > > + usb1_ss_in: endpoint {
> > > + remote-endpoint = <&usb_hub_3_1>;
> > > + };
> > > +
> > > + };
> > > + };
> > > + };
> > > +
> > > edp0-connector {
> > > compatible = "dp-connector";
> > > label = "EDP0";
> > > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > > enable-active-high;
> > > };
> > >
> > > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > > + compatible = "regulator-fixed";
> > > + regulator-name = "vbus_supply_1";
> > > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > > + regulator-min-microvolt = <5000000>;
> > > + regulator-max-microvolt = <5000000>;
> > > + regulator-boot-on;
> > > + enable-active-high;
> > > + };
> > > +
> > > vmmc_sdc: regulator-vmmc-sdc {
> > > compatible = "regulator-fixed";
> > >
> > > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > > };
> > > };
> > > };
> > > +
> > > + usb-typec@47 {
> > > + compatible = "ti,hd3ss3220";
> > > + reg = <0x47>;
> > > +
> > > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > > +
> > > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > > +
> > > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > > + pinctrl-names = "default";
> > > +
> > > + ports {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + port@0 {
> > > + reg = <0>;
> > > +
> > > + hd3ss3220_1_in_ep: endpoint {
> > > + remote-endpoint = <&usb1_con_ss_ep>;
> > > + };
> > > + };
> > > +
> > > + };
> > > + };
> > > +
> > > };
> > >
> > > &i2c18 {
> > > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > > bias-pull-up;
> > > power-source = <0>;
> > > };
> > > +
> > > + usb1_intr: usb1-intr-state {
> > > + pins = "gpio6";
> > > + function = "normal";
> > > + input-enable;
> > > + bias-pull-up;
> > > + power-source = <0>;
> > > + };
> > > };
> > >
> > > &qup_i2c19_default {
> > > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > > function = "gpio";
> > > bias-pull-up;
> > > };
> > > +
> > > + usb1_id: usb1-id-state {
> > > + pins = "gpio51";
> > > + function = "gpio";
> > > + bias-pull-up;
> > > + };
> > > };
> > >
> > > &uart10 {
> > > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > > status = "okay";
> > > };
> > >
> > > +&usb_1 {
> > > + dr_mode = "host";
> > > +
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + status = "okay";
> > > +
> > > + usb_hub_2_x: hub@1 {
> > > + compatible = "usb5e3,610";
> > > + reg = <1>;
> > > + peer-hub = <&usb_hub_3_x>;
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + ports {
> > > + #address-cells = <1>;
> > > + #size-cells = <0>;
> > > +
> > > + port@1 {
> > > + reg = <1>;
> > > +
> > > + usb_hub_2_1: endpoint {
> > > + remote-endpoint = <&usb1_hs_in>;
> > > + };
> >
> > Are all other ports disconnected? If so, why do we need a hub?
> Hi Dmitry,
> I didn't understand your query, can you give more context to it?
You have described one port of the hub. How are other ports routed? Are
they connected to outer ports? To some other devices? Unconnected?
--
With best wishes
Dmitry
On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> > On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > >
> > > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > >
> > > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > > lines run from the SoC through the hub to the Port controller. Mark the
> > > > second USB controller as host only capable.
> > > >
> > > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > > controlling vbus supply.
> > > >
> > > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > > ---
> > > > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > > > 1 file changed, 158 insertions(+)
> > > >
> > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > index 70d85b6ba772..d72639479d75 100644
> > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > > > };
> > > > };
> > > >
> > > > + connector-1 {
> > > > + compatible = "usb-c-connector";
> > > > + label = "USB1-Type-C";
> > > > + data-role = "host";
> > > > + power-role = "dual";
> > > > + try-power-role = "source";
> > > > +
> > > > + vbus-supply = <&vbus_supply_regulator_1>;
> > > > +
> > > > + ports {
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > +
> > > > + port@0 {
> > > > + reg = <0>;
> > > > +
> > > > + usb1_con_ss_ep: endpoint {
> > > > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > > > + };
> > > > + };
> > > > +
> > > > + port@1 {
> > > > + reg = <1>;
> > > > +
> > > > + usb1_hs_in: endpoint {
> > > > + remote-endpoint = <&usb_hub_2_1>;
> > > > + };
> > > > +
> > > > + };
> > > > +
> > > > + port@2 {
> > > > + reg = <2>;
> > > > +
> > > > + usb1_ss_in: endpoint {
> > > > + remote-endpoint = <&usb_hub_3_1>;
> > > > + };
> > > > +
> > > > + };
> > > > + };
> > > > + };
> > > > +
> > > > edp0-connector {
> > > > compatible = "dp-connector";
> > > > label = "EDP0";
> > > > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > > > enable-active-high;
> > > > };
> > > >
> > > > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > > > + compatible = "regulator-fixed";
> > > > + regulator-name = "vbus_supply_1";
> > > > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > > > + regulator-min-microvolt = <5000000>;
> > > > + regulator-max-microvolt = <5000000>;
> > > > + regulator-boot-on;
> > > > + enable-active-high;
> > > > + };
> > > > +
> > > > vmmc_sdc: regulator-vmmc-sdc {
> > > > compatible = "regulator-fixed";
> > > >
> > > > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > > > };
> > > > };
> > > > };
> > > > +
> > > > + usb-typec@47 {
> > > > + compatible = "ti,hd3ss3220";
> > > > + reg = <0x47>;
> > > > +
> > > > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > > > +
> > > > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > > > +
> > > > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > > > + pinctrl-names = "default";
> > > > +
> > > > + ports {
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > +
> > > > + port@0 {
> > > > + reg = <0>;
> > > > +
> > > > + hd3ss3220_1_in_ep: endpoint {
> > > > + remote-endpoint = <&usb1_con_ss_ep>;
> > > > + };
> > > > + };
> > > > +
> > > > + };
> > > > + };
> > > > +
> > > > };
> > > >
> > > > &i2c18 {
> > > > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > > > bias-pull-up;
> > > > power-source = <0>;
> > > > };
> > > > +
> > > > + usb1_intr: usb1-intr-state {
> > > > + pins = "gpio6";
> > > > + function = "normal";
> > > > + input-enable;
> > > > + bias-pull-up;
> > > > + power-source = <0>;
> > > > + };
> > > > };
> > > >
> > > > &qup_i2c19_default {
> > > > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > > > function = "gpio";
> > > > bias-pull-up;
> > > > };
> > > > +
> > > > + usb1_id: usb1-id-state {
> > > > + pins = "gpio51";
> > > > + function = "gpio";
> > > > + bias-pull-up;
> > > > + };
> > > > };
> > > >
> > > > &uart10 {
> > > > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > > > status = "okay";
> > > > };
> > > >
> > > > +&usb_1 {
> > > > + dr_mode = "host";
> > > > +
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > +
> > > > + status = "okay";
> > > > +
> > > > + usb_hub_2_x: hub@1 {
> > > > + compatible = "usb5e3,610";
> > > > + reg = <1>;
> > > > + peer-hub = <&usb_hub_3_x>;
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > +
> > > > + ports {
> > > > + #address-cells = <1>;
> > > > + #size-cells = <0>;
> > > > +
> > > > + port@1 {
> > > > + reg = <1>;
> > > > +
> > > > + usb_hub_2_1: endpoint {
> > > > + remote-endpoint = <&usb1_hs_in>;
> > > > + };
> > >
> > > Are all other ports disconnected? If so, why do we need a hub?
> > Hi Dmitry,
> > I didn't understand your query, can you give more context to it?
>
> You have described one port of the hub. How are other ports routed? Are
> they connected to outer ports? To some other devices? Unconnected?
Hi Dmitry,
I would like to put it this way, USB HUB has 4 ports but only one port
of the hub is used between SOC and Type-C controller.
Remaining 3 ports are used by other devices.
Regards,
Swati
On Wed, Jan 14, 2026 at 11:10:26AM +0530, Swati Agarwal wrote:
> On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> > > On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > >
> > > > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > >
> > > > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > > > lines run from the SoC through the hub to the Port controller. Mark the
> > > > > second USB controller as host only capable.
> > > > >
> > > > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > > > controlling vbus supply.
> > > > >
> > > > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > > > ---
> > > > > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > > > > 1 file changed, 158 insertions(+)
> > > > >
> > > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > index 70d85b6ba772..d72639479d75 100644
> > > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > > > > };
> > > > > };
> > > > >
> > > > > + connector-1 {
> > > > > + compatible = "usb-c-connector";
> > > > > + label = "USB1-Type-C";
> > > > > + data-role = "host";
> > > > > + power-role = "dual";
> > > > > + try-power-role = "source";
> > > > > +
> > > > > + vbus-supply = <&vbus_supply_regulator_1>;
> > > > > +
> > > > > + ports {
> > > > > + #address-cells = <1>;
> > > > > + #size-cells = <0>;
> > > > > +
> > > > > + port@0 {
> > > > > + reg = <0>;
> > > > > +
> > > > > + usb1_con_ss_ep: endpoint {
> > > > > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > > > > + };
> > > > > + };
> > > > > +
> > > > > + port@1 {
> > > > > + reg = <1>;
> > > > > +
> > > > > + usb1_hs_in: endpoint {
> > > > > + remote-endpoint = <&usb_hub_2_1>;
> > > > > + };
> > > > > +
> > > > > + };
> > > > > +
> > > > > + port@2 {
> > > > > + reg = <2>;
> > > > > +
> > > > > + usb1_ss_in: endpoint {
> > > > > + remote-endpoint = <&usb_hub_3_1>;
> > > > > + };
> > > > > +
> > > > > + };
> > > > > + };
> > > > > + };
> > > > > +
> > > > > edp0-connector {
> > > > > compatible = "dp-connector";
> > > > > label = "EDP0";
> > > > > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > > > > enable-active-high;
> > > > > };
> > > > >
> > > > > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > > > > + compatible = "regulator-fixed";
> > > > > + regulator-name = "vbus_supply_1";
> > > > > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > > > > + regulator-min-microvolt = <5000000>;
> > > > > + regulator-max-microvolt = <5000000>;
> > > > > + regulator-boot-on;
> > > > > + enable-active-high;
> > > > > + };
> > > > > +
> > > > > vmmc_sdc: regulator-vmmc-sdc {
> > > > > compatible = "regulator-fixed";
> > > > >
> > > > > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > > > > };
> > > > > };
> > > > > };
> > > > > +
> > > > > + usb-typec@47 {
> > > > > + compatible = "ti,hd3ss3220";
> > > > > + reg = <0x47>;
> > > > > +
> > > > > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > > > > +
> > > > > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > > > > +
> > > > > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > > > > + pinctrl-names = "default";
> > > > > +
> > > > > + ports {
> > > > > + #address-cells = <1>;
> > > > > + #size-cells = <0>;
> > > > > +
> > > > > + port@0 {
> > > > > + reg = <0>;
> > > > > +
> > > > > + hd3ss3220_1_in_ep: endpoint {
> > > > > + remote-endpoint = <&usb1_con_ss_ep>;
> > > > > + };
> > > > > + };
> > > > > +
> > > > > + };
> > > > > + };
> > > > > +
> > > > > };
> > > > >
> > > > > &i2c18 {
> > > > > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > > > > bias-pull-up;
> > > > > power-source = <0>;
> > > > > };
> > > > > +
> > > > > + usb1_intr: usb1-intr-state {
> > > > > + pins = "gpio6";
> > > > > + function = "normal";
> > > > > + input-enable;
> > > > > + bias-pull-up;
> > > > > + power-source = <0>;
> > > > > + };
> > > > > };
> > > > >
> > > > > &qup_i2c19_default {
> > > > > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > > > > function = "gpio";
> > > > > bias-pull-up;
> > > > > };
> > > > > +
> > > > > + usb1_id: usb1-id-state {
> > > > > + pins = "gpio51";
> > > > > + function = "gpio";
> > > > > + bias-pull-up;
> > > > > + };
> > > > > };
> > > > >
> > > > > &uart10 {
> > > > > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > > > > status = "okay";
> > > > > };
> > > > >
> > > > > +&usb_1 {
> > > > > + dr_mode = "host";
> > > > > +
> > > > > + #address-cells = <1>;
> > > > > + #size-cells = <0>;
> > > > > +
> > > > > + status = "okay";
> > > > > +
> > > > > + usb_hub_2_x: hub@1 {
> > > > > + compatible = "usb5e3,610";
> > > > > + reg = <1>;
> > > > > + peer-hub = <&usb_hub_3_x>;
> > > > > + #address-cells = <1>;
> > > > > + #size-cells = <0>;
> > > > > +
> > > > > + ports {
> > > > > + #address-cells = <1>;
> > > > > + #size-cells = <0>;
> > > > > +
> > > > > + port@1 {
> > > > > + reg = <1>;
> > > > > +
> > > > > + usb_hub_2_1: endpoint {
> > > > > + remote-endpoint = <&usb1_hs_in>;
> > > > > + };
> > > >
> > > > Are all other ports disconnected? If so, why do we need a hub?
> > > Hi Dmitry,
> > > I didn't understand your query, can you give more context to it?
> >
> > You have described one port of the hub. How are other ports routed? Are
> > they connected to outer ports? To some other devices? Unconnected?
> Hi Dmitry,
> I would like to put it this way, USB HUB has 4 ports but only one port
> of the hub is used between SOC and Type-C controller.
> Remaining 3 ports are used by other devices.
Which devices?
--
With best wishes
Dmitry
On Wed, Jan 14, 2026 at 11:39 AM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Wed, Jan 14, 2026 at 11:10:26AM +0530, Swati Agarwal wrote:
> > On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
> > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > >
> > > On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> > > > On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> > > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > >
> > > > > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > > >
> > > > > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > > > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > > > > lines run from the SoC through the hub to the Port controller. Mark the
> > > > > > second USB controller as host only capable.
> > > > > >
> > > > > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > > > > controlling vbus supply.
> > > > > >
> > > > > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > > > > ---
> > > > > > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > > > > > 1 file changed, 158 insertions(+)
> > > > > >
> > > > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > index 70d85b6ba772..d72639479d75 100644
> > > > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > > > > > };
> > > > > > };
> > > > > >
> > > > > > + connector-1 {
> > > > > > + compatible = "usb-c-connector";
> > > > > > + label = "USB1-Type-C";
> > > > > > + data-role = "host";
> > > > > > + power-role = "dual";
> > > > > > + try-power-role = "source";
> > > > > > +
> > > > > > + vbus-supply = <&vbus_supply_regulator_1>;
> > > > > > +
> > > > > > + ports {
> > > > > > + #address-cells = <1>;
> > > > > > + #size-cells = <0>;
> > > > > > +
> > > > > > + port@0 {
> > > > > > + reg = <0>;
> > > > > > +
> > > > > > + usb1_con_ss_ep: endpoint {
> > > > > > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > > > > > + };
> > > > > > + };
> > > > > > +
> > > > > > + port@1 {
> > > > > > + reg = <1>;
> > > > > > +
> > > > > > + usb1_hs_in: endpoint {
> > > > > > + remote-endpoint = <&usb_hub_2_1>;
> > > > > > + };
> > > > > > +
> > > > > > + };
> > > > > > +
> > > > > > + port@2 {
> > > > > > + reg = <2>;
> > > > > > +
> > > > > > + usb1_ss_in: endpoint {
> > > > > > + remote-endpoint = <&usb_hub_3_1>;
> > > > > > + };
> > > > > > +
> > > > > > + };
> > > > > > + };
> > > > > > + };
> > > > > > +
> > > > > > edp0-connector {
> > > > > > compatible = "dp-connector";
> > > > > > label = "EDP0";
> > > > > > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > > > > > enable-active-high;
> > > > > > };
> > > > > >
> > > > > > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > > > > > + compatible = "regulator-fixed";
> > > > > > + regulator-name = "vbus_supply_1";
> > > > > > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > > > > > + regulator-min-microvolt = <5000000>;
> > > > > > + regulator-max-microvolt = <5000000>;
> > > > > > + regulator-boot-on;
> > > > > > + enable-active-high;
> > > > > > + };
> > > > > > +
> > > > > > vmmc_sdc: regulator-vmmc-sdc {
> > > > > > compatible = "regulator-fixed";
> > > > > >
> > > > > > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > > > > > };
> > > > > > };
> > > > > > };
> > > > > > +
> > > > > > + usb-typec@47 {
> > > > > > + compatible = "ti,hd3ss3220";
> > > > > > + reg = <0x47>;
> > > > > > +
> > > > > > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > > > > > +
> > > > > > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > > > > > +
> > > > > > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > > > > > + pinctrl-names = "default";
> > > > > > +
> > > > > > + ports {
> > > > > > + #address-cells = <1>;
> > > > > > + #size-cells = <0>;
> > > > > > +
> > > > > > + port@0 {
> > > > > > + reg = <0>;
> > > > > > +
> > > > > > + hd3ss3220_1_in_ep: endpoint {
> > > > > > + remote-endpoint = <&usb1_con_ss_ep>;
> > > > > > + };
> > > > > > + };
> > > > > > +
> > > > > > + };
> > > > > > + };
> > > > > > +
> > > > > > };
> > > > > >
> > > > > > &i2c18 {
> > > > > > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > > > > > bias-pull-up;
> > > > > > power-source = <0>;
> > > > > > };
> > > > > > +
> > > > > > + usb1_intr: usb1-intr-state {
> > > > > > + pins = "gpio6";
> > > > > > + function = "normal";
> > > > > > + input-enable;
> > > > > > + bias-pull-up;
> > > > > > + power-source = <0>;
> > > > > > + };
> > > > > > };
> > > > > >
> > > > > > &qup_i2c19_default {
> > > > > > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > > > > > function = "gpio";
> > > > > > bias-pull-up;
> > > > > > };
> > > > > > +
> > > > > > + usb1_id: usb1-id-state {
> > > > > > + pins = "gpio51";
> > > > > > + function = "gpio";
> > > > > > + bias-pull-up;
> > > > > > + };
> > > > > > };
> > > > > >
> > > > > > &uart10 {
> > > > > > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > > > > > status = "okay";
> > > > > > };
> > > > > >
> > > > > > +&usb_1 {
> > > > > > + dr_mode = "host";
> > > > > > +
> > > > > > + #address-cells = <1>;
> > > > > > + #size-cells = <0>;
> > > > > > +
> > > > > > + status = "okay";
> > > > > > +
> > > > > > + usb_hub_2_x: hub@1 {
> > > > > > + compatible = "usb5e3,610";
> > > > > > + reg = <1>;
> > > > > > + peer-hub = <&usb_hub_3_x>;
> > > > > > + #address-cells = <1>;
> > > > > > + #size-cells = <0>;
> > > > > > +
> > > > > > + ports {
> > > > > > + #address-cells = <1>;
> > > > > > + #size-cells = <0>;
> > > > > > +
> > > > > > + port@1 {
> > > > > > + reg = <1>;
> > > > > > +
> > > > > > + usb_hub_2_1: endpoint {
> > > > > > + remote-endpoint = <&usb1_hs_in>;
> > > > > > + };
> > > > >
> > > > > Are all other ports disconnected? If so, why do we need a hub?
> > > > Hi Dmitry,
> > > > I didn't understand your query, can you give more context to it?
> > >
> > > You have described one port of the hub. How are other ports routed? Are
> > > they connected to outer ports? To some other devices? Unconnected?
> > Hi Dmitry,
> > I would like to put it this way, USB HUB has 4 ports but only one port
> > of the hub is used between SOC and Type-C controller.
> > Remaining 3 ports are used by other devices.
>
> Which devices?
Hi Dmitry,
For Lemans EVK standalone corekit board, there are 4 ports as follows:-
1) p1 is connected to type c port controller.
2) p4 is used for the m.2 E key (NFA765 Bluetooth) on corekit. This
isn't used on a standard core kit, only if we optionally replace the
wifi card with the NFA765 which uses USB for BT. standard kits all use
UART for BT.
Remaining 2 ports will become functional when the interface plus
mezzanine is stacked on top of corekit.
3) p2 is connected to another hub which is present on the mezz through
which 4 type-A ports are connected.
4) p3 is used for the m.2 B key for a 5G card when the mezz is connected.
Regards,
Swati
On Mon, Jan 19, 2026 at 09:42:03AM +0530, Swati Agarwal wrote:
> On Wed, Jan 14, 2026 at 11:39 AM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Wed, Jan 14, 2026 at 11:10:26AM +0530, Swati Agarwal wrote:
> > > On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
> > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > >
> > > > On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> > > > > On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> > > > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > > >
> > > > > > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > > > >
> > > > > > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > > > > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > > > > > lines run from the SoC through the hub to the Port controller. Mark the
> > > > > > > second USB controller as host only capable.
> > > > > > >
> > > > > > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > > > > > controlling vbus supply.
> > > > > > >
> > > > > > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > > > > > ---
> > > > > > > arch/arm64/boot/dts/qcom/lemans-evk.dts | 158 ++++++++++++++++++++++++
> > > > > > > 1 file changed, 158 insertions(+)
> > > > > > >
> > > > > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > index 70d85b6ba772..d72639479d75 100644
> > > > > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > @@ -67,6 +67,47 @@ usb0_con_ss_ep: endpoint {
> > > > > > > };
> > > > > > > };
> > > > > > >
> > > > > > > + connector-1 {
> > > > > > > + compatible = "usb-c-connector";
> > > > > > > + label = "USB1-Type-C";
> > > > > > > + data-role = "host";
> > > > > > > + power-role = "dual";
> > > > > > > + try-power-role = "source";
> > > > > > > +
> > > > > > > + vbus-supply = <&vbus_supply_regulator_1>;
> > > > > > > +
> > > > > > > + ports {
> > > > > > > + #address-cells = <1>;
> > > > > > > + #size-cells = <0>;
> > > > > > > +
> > > > > > > + port@0 {
> > > > > > > + reg = <0>;
> > > > > > > +
> > > > > > > + usb1_con_ss_ep: endpoint {
> > > > > > > + remote-endpoint = <&hd3ss3220_1_in_ep>;
> > > > > > > + };
> > > > > > > + };
> > > > > > > +
> > > > > > > + port@1 {
> > > > > > > + reg = <1>;
> > > > > > > +
> > > > > > > + usb1_hs_in: endpoint {
> > > > > > > + remote-endpoint = <&usb_hub_2_1>;
> > > > > > > + };
> > > > > > > +
> > > > > > > + };
> > > > > > > +
> > > > > > > + port@2 {
> > > > > > > + reg = <2>;
> > > > > > > +
> > > > > > > + usb1_ss_in: endpoint {
> > > > > > > + remote-endpoint = <&usb_hub_3_1>;
> > > > > > > + };
> > > > > > > +
> > > > > > > + };
> > > > > > > + };
> > > > > > > + };
> > > > > > > +
> > > > > > > edp0-connector {
> > > > > > > compatible = "dp-connector";
> > > > > > > label = "EDP0";
> > > > > > > @@ -140,6 +181,16 @@ vbus_supply_regulator_0: regulator-vbus-supply-0 {
> > > > > > > enable-active-high;
> > > > > > > };
> > > > > > >
> > > > > > > + vbus_supply_regulator_1: regulator-vbus-supply-1 {
> > > > > > > + compatible = "regulator-fixed";
> > > > > > > + regulator-name = "vbus_supply_1";
> > > > > > > + gpio = <&expander1 3 GPIO_ACTIVE_HIGH>;
> > > > > > > + regulator-min-microvolt = <5000000>;
> > > > > > > + regulator-max-microvolt = <5000000>;
> > > > > > > + regulator-boot-on;
> > > > > > > + enable-active-high;
> > > > > > > + };
> > > > > > > +
> > > > > > > vmmc_sdc: regulator-vmmc-sdc {
> > > > > > > compatible = "regulator-fixed";
> > > > > > >
> > > > > > > @@ -527,6 +578,33 @@ hd3ss3220_0_out_ep: endpoint {
> > > > > > > };
> > > > > > > };
> > > > > > > };
> > > > > > > +
> > > > > > > + usb-typec@47 {
> > > > > > > + compatible = "ti,hd3ss3220";
> > > > > > > + reg = <0x47>;
> > > > > > > +
> > > > > > > + interrupts-extended = <&pmm8654au_2_gpios 6 IRQ_TYPE_EDGE_FALLING>;
> > > > > > > +
> > > > > > > + id-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> > > > > > > +
> > > > > > > + pinctrl-0 = <&usb1_id>, <&usb1_intr>;
> > > > > > > + pinctrl-names = "default";
> > > > > > > +
> > > > > > > + ports {
> > > > > > > + #address-cells = <1>;
> > > > > > > + #size-cells = <0>;
> > > > > > > +
> > > > > > > + port@0 {
> > > > > > > + reg = <0>;
> > > > > > > +
> > > > > > > + hd3ss3220_1_in_ep: endpoint {
> > > > > > > + remote-endpoint = <&usb1_con_ss_ep>;
> > > > > > > + };
> > > > > > > + };
> > > > > > > +
> > > > > > > + };
> > > > > > > + };
> > > > > > > +
> > > > > > > };
> > > > > > >
> > > > > > > &i2c18 {
> > > > > > > @@ -690,6 +768,14 @@ usb0_intr_state: usb0-intr-state {
> > > > > > > bias-pull-up;
> > > > > > > power-source = <0>;
> > > > > > > };
> > > > > > > +
> > > > > > > + usb1_intr: usb1-intr-state {
> > > > > > > + pins = "gpio6";
> > > > > > > + function = "normal";
> > > > > > > + input-enable;
> > > > > > > + bias-pull-up;
> > > > > > > + power-source = <0>;
> > > > > > > + };
> > > > > > > };
> > > > > > >
> > > > > > > &qup_i2c19_default {
> > > > > > > @@ -849,6 +935,12 @@ usb_id: usb-id-state {
> > > > > > > function = "gpio";
> > > > > > > bias-pull-up;
> > > > > > > };
> > > > > > > +
> > > > > > > + usb1_id: usb1-id-state {
> > > > > > > + pins = "gpio51";
> > > > > > > + function = "gpio";
> > > > > > > + bias-pull-up;
> > > > > > > + };
> > > > > > > };
> > > > > > >
> > > > > > > &uart10 {
> > > > > > > @@ -903,6 +995,72 @@ &usb_0_qmpphy {
> > > > > > > status = "okay";
> > > > > > > };
> > > > > > >
> > > > > > > +&usb_1 {
> > > > > > > + dr_mode = "host";
> > > > > > > +
> > > > > > > + #address-cells = <1>;
> > > > > > > + #size-cells = <0>;
> > > > > > > +
> > > > > > > + status = "okay";
> > > > > > > +
> > > > > > > + usb_hub_2_x: hub@1 {
> > > > > > > + compatible = "usb5e3,610";
> > > > > > > + reg = <1>;
> > > > > > > + peer-hub = <&usb_hub_3_x>;
> > > > > > > + #address-cells = <1>;
> > > > > > > + #size-cells = <0>;
> > > > > > > +
> > > > > > > + ports {
> > > > > > > + #address-cells = <1>;
> > > > > > > + #size-cells = <0>;
> > > > > > > +
> > > > > > > + port@1 {
> > > > > > > + reg = <1>;
> > > > > > > +
> > > > > > > + usb_hub_2_1: endpoint {
> > > > > > > + remote-endpoint = <&usb1_hs_in>;
> > > > > > > + };
> > > > > >
> > > > > > Are all other ports disconnected? If so, why do we need a hub?
> > > > > Hi Dmitry,
> > > > > I didn't understand your query, can you give more context to it?
> > > >
> > > > You have described one port of the hub. How are other ports routed? Are
> > > > they connected to outer ports? To some other devices? Unconnected?
> > > Hi Dmitry,
> > > I would like to put it this way, USB HUB has 4 ports but only one port
> > > of the hub is used between SOC and Type-C controller.
> > > Remaining 3 ports are used by other devices.
> >
> > Which devices?
> Hi Dmitry,
>
> For Lemans EVK standalone corekit board, there are 4 ports as follows:-
>
> 1) p1 is connected to type c port controller.
> 2) p4 is used for the m.2 E key (NFA765 Bluetooth) on corekit. This
> isn't used on a standard core kit, only if we optionally replace the
> wifi card with the NFA765 which uses USB for BT. standard kits all use
> UART for BT.
Nice. Hopefully Mani patches will be landed soon and we can describe
this one properly.
>
> Remaining 2 ports will become functional when the interface plus
> mezzanine is stacked on top of corekit.
>
> 3) p2 is connected to another hub which is present on the mezz through
> which 4 type-A ports are connected.
> 4) p3 is used for the m.2 B key for a 5G card when the mezz is connected.
Please add a comment for these two, e.g. routed to the connector ABCDEF.
>
>
> Regards,
> Swati
--
With best wishes
Dmitry
On 1/19/2026 12:01 PM, Dmitry Baryshkov wrote:
> On Mon, Jan 19, 2026 at 09:42:03AM +0530, Swati Agarwal wrote:
>> On Wed, Jan 14, 2026 at 11:39 AM Dmitry Baryshkov
>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>
>>> On Wed, Jan 14, 2026 at 11:10:26AM +0530, Swati Agarwal wrote:
>>>> On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
>>>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>>>
>>>>> On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
>>>>>> On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
>>>>>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>>>>>
>>>>>>> On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
>>>>>>>> Enable secondary USB controller in host mode on lemans EVK Platform.
>>>>>>>>
>>>>>>>> For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
>>>>>>>> ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
>>>>>>>> lines run from the SoC through the hub to the Port controller. Mark the
>>>>>>>> second USB controller as host only capable.
>>>>>>>>
>>>>>>>> Add HD3SS3220 Type-C port controller along with Type-c connector for
>>>>>>>> controlling vbus supply.
>>>>>>>>
>>>>>>>> Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
>>>>>>>> ---
[...]
>>>>>>>> +&usb_1 {
>>>>>>>> + dr_mode = "host";
>>>>>>>> +
>>>>>>>> + #address-cells = <1>;
>>>>>>>> + #size-cells = <0>;
>>>>>>>> +
>>>>>>>> + status = "okay";
>>>>>>>> +
>>>>>>>> + usb_hub_2_x: hub@1 {
>>>>>>>> + compatible = "usb5e3,610";
>>>>>>>> + reg = <1>;
>>>>>>>> + peer-hub = <&usb_hub_3_x>;
>>>>>>>> + #address-cells = <1>;
>>>>>>>> + #size-cells = <0>;
>>>>>>>> +
>>>>>>>> + ports {
>>>>>>>> + #address-cells = <1>;
>>>>>>>> + #size-cells = <0>;
>>>>>>>> +
>>>>>>>> + port@1 {
>>>>>>>> + reg = <1>;
>>>>>>>> +
>>>>>>>> + usb_hub_2_1: endpoint {
>>>>>>>> + remote-endpoint = <&usb1_hs_in>;
>>>>>>>> + };
>>>>>>>
>>>>>>> Are all other ports disconnected? If so, why do we need a hub?
>>>>>> Hi Dmitry,
>>>>>> I didn't understand your query, can you give more context to it?
>>>>>
>>>>> You have described one port of the hub. How are other ports routed? Are
>>>>> they connected to outer ports? To some other devices? Unconnected?
>>>> Hi Dmitry,
>>>> I would like to put it this way, USB HUB has 4 ports but only one port
>>>> of the hub is used between SOC and Type-C controller.
>>>> Remaining 3 ports are used by other devices.
>>>
>>> Which devices?
>> Hi Dmitry,
>>
>> For Lemans EVK standalone corekit board, there are 4 ports as follows:-
>>
>> 1) p1 is connected to type c port controller.
>> 2) p4 is used for the m.2 E key (NFA765 Bluetooth) on corekit. This
>> isn't used on a standard core kit, only if we optionally replace the
>> wifi card with the NFA765 which uses USB for BT. standard kits all use
>> UART for BT.
>
> Nice. Hopefully Mani patches will be landed soon and we can describe
> this one properly.
>
>>
>> Remaining 2 ports will become functional when the interface plus
>> mezzanine is stacked on top of corekit.
>>
>> 3) p2 is connected to another hub which is present on the mezz through
>> which 4 type-A ports are connected.
>> 4) p3 is used for the m.2 B key for a 5G card when the mezz is connected.
>
> Please add a comment for these two, e.g. routed to the connector ABCDEF.
>
Hi Dmitry,
Thanks for the review. Can we send v4 with the following changes:
Add 4 ports each to hs and ss hub nodes and link the first port to
Type-C connector and add comments for the other 3 ports. When M.2 E
conncetor comes up, we can link the second port to it in a different patch.
Let me know if the above is reasonable.
Regards,
Krishna,
On Mon, Jan 19, 2026 at 01:06:28PM +0530, Krishna Kurapati wrote:
>
>
> On 1/19/2026 12:01 PM, Dmitry Baryshkov wrote:
> > On Mon, Jan 19, 2026 at 09:42:03AM +0530, Swati Agarwal wrote:
> > > On Wed, Jan 14, 2026 at 11:39 AM Dmitry Baryshkov
> > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > >
> > > > On Wed, Jan 14, 2026 at 11:10:26AM +0530, Swati Agarwal wrote:
> > > > > On Tue, Jan 13, 2026 at 4:59 PM Dmitry Baryshkov
> > > > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > > >
> > > > > > On Tue, Jan 13, 2026 at 01:32:41PM +0530, Swati Agarwal wrote:
> > > > > > > On Sat, Dec 20, 2025 at 9:47 PM Dmitry Baryshkov
> > > > > > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > > > > >
> > > > > > > > On Sat, Dec 20, 2025 at 12:05:37PM +0530, Swati Agarwal wrote:
> > > > > > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > > > > > >
> > > > > > > > > For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> > > > > > > > > ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> > > > > > > > > lines run from the SoC through the hub to the Port controller. Mark the
> > > > > > > > > second USB controller as host only capable.
> > > > > > > > >
> > > > > > > > > Add HD3SS3220 Type-C port controller along with Type-c connector for
> > > > > > > > > controlling vbus supply.
> > > > > > > > >
> > > > > > > > > Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> > > > > > > > > ---
>
> [...]
>
> > > > > > > > > +&usb_1 {
> > > > > > > > > + dr_mode = "host";
> > > > > > > > > +
> > > > > > > > > + #address-cells = <1>;
> > > > > > > > > + #size-cells = <0>;
> > > > > > > > > +
> > > > > > > > > + status = "okay";
> > > > > > > > > +
> > > > > > > > > + usb_hub_2_x: hub@1 {
> > > > > > > > > + compatible = "usb5e3,610";
> > > > > > > > > + reg = <1>;
> > > > > > > > > + peer-hub = <&usb_hub_3_x>;
> > > > > > > > > + #address-cells = <1>;
> > > > > > > > > + #size-cells = <0>;
> > > > > > > > > +
> > > > > > > > > + ports {
> > > > > > > > > + #address-cells = <1>;
> > > > > > > > > + #size-cells = <0>;
> > > > > > > > > +
> > > > > > > > > + port@1 {
> > > > > > > > > + reg = <1>;
> > > > > > > > > +
> > > > > > > > > + usb_hub_2_1: endpoint {
> > > > > > > > > + remote-endpoint = <&usb1_hs_in>;
> > > > > > > > > + };
> > > > > > > >
> > > > > > > > Are all other ports disconnected? If so, why do we need a hub?
> > > > > > > Hi Dmitry,
> > > > > > > I didn't understand your query, can you give more context to it?
> > > > > >
> > > > > > You have described one port of the hub. How are other ports routed? Are
> > > > > > they connected to outer ports? To some other devices? Unconnected?
> > > > > Hi Dmitry,
> > > > > I would like to put it this way, USB HUB has 4 ports but only one port
> > > > > of the hub is used between SOC and Type-C controller.
> > > > > Remaining 3 ports are used by other devices.
> > > >
> > > > Which devices?
> > > Hi Dmitry,
> > >
> > > For Lemans EVK standalone corekit board, there are 4 ports as follows:-
> > >
> > > 1) p1 is connected to type c port controller.
> > > 2) p4 is used for the m.2 E key (NFA765 Bluetooth) on corekit. This
> > > isn't used on a standard core kit, only if we optionally replace the
> > > wifi card with the NFA765 which uses USB for BT. standard kits all use
> > > UART for BT.
> >
> > Nice. Hopefully Mani patches will be landed soon and we can describe
> > this one properly.
> >
> > >
> > > Remaining 2 ports will become functional when the interface plus
> > > mezzanine is stacked on top of corekit.
> > >
> > > 3) p2 is connected to another hub which is present on the mezz through
> > > which 4 type-A ports are connected.
> > > 4) p3 is used for the m.2 B key for a 5G card when the mezz is connected.
> >
> > Please add a comment for these two, e.g. routed to the connector ABCDEF.
> >
>
> Hi Dmitry,
>
> Thanks for the review. Can we send v4 with the following changes:
>
> Add 4 ports each to hs and ss hub nodes and link the first port to Type-C
> connector and add comments for the other 3 ports. When M.2 E conncetor comes
> up, we can link the second port to it in a different patch.
Sounds perfect, thank you!
>
> Let me know if the above is reasonable.
>
> Regards,
> Krishna,
--
With best wishes
Dmitry
On 12/20/25 7:35 AM, Swati Agarwal wrote:
> Enable secondary USB controller in host mode on lemans EVK Platform.
>
> For secondary USB Typec port, there is a genesys USB HUB GL3590 having 4
> ports sitting in between SOC and HD3SS3220 Type-C port controller and SS
> lines run from the SoC through the hub to the Port controller. Mark the
> second USB controller as host only capable.
>
> Add HD3SS3220 Type-C port controller along with Type-c connector for
> controlling vbus supply.
>
> Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> ---
[...]
> + connector-1 {
> + compatible = "usb-c-connector";
> + label = "USB1-Type-C";
> + data-role = "host";
> + power-role = "dual";
> + try-power-role = "source";
Is this port actually capable of receiving power (i.e. won't that
fry the hub)?
[...]
> + port@2 {
> + reg = <2>;
> +
> + usb1_ss_in: endpoint {
> + remote-endpoint = <&usb_hub_3_1>;
> + };
> +
> + };
Stray \n above
[...]
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + hd3ss3220_1_in_ep: endpoint {
> + remote-endpoint = <&usb1_con_ss_ep>;
> + };
> + };
> +
> + };
Stray \n above
[...]
> + usb_hub_3_1: endpoint {
> + remote-endpoint = <&usb1_ss_in>;
> + };
> + };
> +
> + };
Stray \n above
Konrad
© 2016 - 2026 Red Hat, Inc.