public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/4] Enable secondary USB controller in host mode
@ 2026-01-22  9:28 Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub Swati Agarwal
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Swati Agarwal @ 2026-01-22  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Dmitry Baryshkov, Jens Glathe, Chaoyi Chen,
	J . Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, devicetree, linux-kernel, linux-arm-msm, Swati Agarwal

Enable secondary USB controller in host mode on lemans EVK platforms.

Changes in v5:
Updated comment description in DT.
Updated vdd-supply status for other hubs in bindings.

Changes in v4:
Updated power supply property for hub.
Updated details for all 4 ports of hub.

Changes in v3:
Updated binding properties for genesys hub.

Changes in v2:
Add Genesys Logic GL3590 hub support.
Rename hd3ss3220_ instance for primary port controller.

Link to v4:
https://lore.kernel.org/all/20260120103312.2174727-1-swati.agarwal@oss.qualcomm.com/

Link to v3:
https://lore.kernel.org/all/20251220063537.3639535-1-swati.agarwal@oss.qualcomm.com/

Link to v2:
https://lore.kernel.org/all/20251216120749.94007-1-swati.agarwal@oss.qualcomm.com/

Link to v1:
https://lore.kernel.org/all/20251203-swati-v1-1-250efcb4e6a7@oss.qualcomm.com/

Swati Agarwal (4):
  dt-bindings: usb: Add binding for Genesys Logic GL3590 hub
  usb: misc: onboard_usb_hub: Add Genesys Logic GL3590 hub support
  arm64: dts: qcom: lemans-evk: Rename hd3ss3220_ instance for primary
    port controller
  arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host
    mode

 .../bindings/usb/genesys,gl850g.yaml          |  19 ++
 arch/arm64/boot/dts/qcom/lemans-evk.dts       | 216 +++++++++++++++++-
 drivers/usb/misc/onboard_usb_dev.c            |   1 +
 drivers/usb/misc/onboard_usb_dev.h            |   8 +
 4 files changed, 240 insertions(+), 4 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub
  2026-01-22  9:28 [PATCH v5 0/4] Enable secondary USB controller in host mode Swati Agarwal
@ 2026-01-22  9:28 ` Swati Agarwal
  2026-01-22 17:06   ` Rob Herring
  2026-01-22  9:28 ` [PATCH v5 2/4] usb: misc: onboard_usb_hub: Add Genesys Logic GL3590 hub support Swati Agarwal
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 17+ messages in thread
From: Swati Agarwal @ 2026-01-22  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Dmitry Baryshkov, Jens Glathe, Chaoyi Chen,
	J . Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, devicetree, linux-kernel, linux-arm-msm, Swati Agarwal

Add the binding for the USB3.2 Genesys Logic GL3590 hub.
GL3590 hub requires 1.2V and 3.3V supplies for operation.

Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
---
 .../bindings/usb/genesys,gl850g.yaml          | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
index 9a94b2a74a1e..6ab13785e832 100644
--- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
+++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
@@ -15,6 +15,7 @@ properties:
       - usb5e3,608
       - usb5e3,610
       - usb5e3,620
+      - usb5e3,625
       - usb5e3,626
 
   reg: true
@@ -26,6 +27,10 @@ properties:
     description:
       The regulator that provides 3.3V or 5.0V core power to the hub.
 
+  vdd12-supply:
+    description:
+      The regulator that provides 1.2V power to the hub.
+
   peer-hub: true
 
   ports:
@@ -56,6 +61,7 @@ allOf:
       properties:
         peer-hub: false
         vdd-supply: false
+        vdd12-supply: false
 
   - if:
       properties:
@@ -68,6 +74,19 @@ allOf:
       properties:
         peer-hub: true
         vdd-supply: true
+        vdd12-supply: false
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - usb5e3,625
+    then:
+      properties:
+        peer-hub: true
+        vdd-supply: true
+        vdd12-supply: true
 
 unevaluatedProperties: false
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 2/4] usb: misc: onboard_usb_hub: Add Genesys Logic GL3590 hub support
  2026-01-22  9:28 [PATCH v5 0/4] Enable secondary USB controller in host mode Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub Swati Agarwal
@ 2026-01-22  9:28 ` Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 3/4] arm64: dts: qcom: lemans-evk: Rename hd3ss3220_ instance for primary port controller Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode Swati Agarwal
  3 siblings, 0 replies; 17+ messages in thread
From: Swati Agarwal @ 2026-01-22  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Dmitry Baryshkov, Jens Glathe, Chaoyi Chen,
	J . Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, devicetree, linux-kernel, linux-arm-msm, Swati Agarwal

Add support for the GL3590 4 ports USB3.2 hub.

Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
---
 drivers/usb/misc/onboard_usb_dev.c | 1 +
 drivers/usb/misc/onboard_usb_dev.h | 8 ++++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/usb/misc/onboard_usb_dev.c b/drivers/usb/misc/onboard_usb_dev.c
index 41360a7591e5..bde303b820d7 100644
--- a/drivers/usb/misc/onboard_usb_dev.c
+++ b/drivers/usb/misc/onboard_usb_dev.c
@@ -661,6 +661,7 @@ static const struct usb_device_id onboard_dev_id_table[] = {
 	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0608) }, /* Genesys Logic GL850G USB 2.0 HUB */
 	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0610) }, /* Genesys Logic GL852G USB 2.0 HUB */
 	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0620) }, /* Genesys Logic GL3523 USB 3.1 HUB */
+	{ USB_DEVICE(VENDOR_ID_GENESYS, 0x0625) }, /* Genesys Logic GL3590 USB 3.2 HUB */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2412) }, /* USB2412 USB 2.0 HUB */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2514) }, /* USB2514B USB 2.0 HUB */
 	{ USB_DEVICE(VENDOR_ID_MICROCHIP, 0x2517) }, /* USB2517 USB 2.0 HUB */
diff --git a/drivers/usb/misc/onboard_usb_dev.h b/drivers/usb/misc/onboard_usb_dev.h
index 1a1e86e60e04..af9f3a33e850 100644
--- a/drivers/usb/misc/onboard_usb_dev.h
+++ b/drivers/usb/misc/onboard_usb_dev.h
@@ -108,6 +108,13 @@ static const struct onboard_dev_pdata genesys_gl852g_data = {
 	.is_hub = true,
 };
 
+static const struct onboard_dev_pdata genesys_gl3590_data = {
+	.reset_us = 50,
+	.num_supplies = 2,
+	.supply_names = { "vdd", "vdd12" },
+	.is_hub = true,
+};
+
 static const struct onboard_dev_pdata vialab_vl817_data = {
 	.reset_us = 10,
 	.num_supplies = 1,
@@ -147,6 +154,7 @@ static const struct of_device_id onboard_dev_match[] = {
 	{ .compatible = "usb5e3,608", .data = &genesys_gl850g_data, },
 	{ .compatible = "usb5e3,610", .data = &genesys_gl852g_data, },
 	{ .compatible = "usb5e3,620", .data = &genesys_gl852g_data, },
+	{ .compatible = "usb5e3,625", .data = &genesys_gl3590_data, },
 	{ .compatible = "usb5e3,626", .data = &genesys_gl852g_data, },
 	{ .compatible = "usbbda,179", .data = &realtek_rtl8188etv_data, },
 	{ .compatible = "usbbda,411", .data = &realtek_rts5411_data, },
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 3/4] arm64: dts: qcom: lemans-evk: Rename hd3ss3220_ instance for primary port controller
  2026-01-22  9:28 [PATCH v5 0/4] Enable secondary USB controller in host mode Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 2/4] usb: misc: onboard_usb_hub: Add Genesys Logic GL3590 hub support Swati Agarwal
@ 2026-01-22  9:28 ` Swati Agarwal
  2026-01-22  9:28 ` [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode Swati Agarwal
  3 siblings, 0 replies; 17+ messages in thread
From: Swati Agarwal @ 2026-01-22  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Dmitry Baryshkov, Jens Glathe, Chaoyi Chen,
	J . Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, devicetree, linux-kernel, linux-arm-msm, Swati Agarwal,
	Konrad Dybcio

Rename the hd3ss3220_ instance to improve clarity and simplify usage when
adding a secondary port controller.

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/lemans-evk.dts | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
index 90fce947ca7e..074a1edd0334 100644
--- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
+++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
@@ -62,7 +62,7 @@ port@1 {
 				reg = <1>;
 
 				usb0_con_ss_ep: endpoint {
-					remote-endpoint = <&hd3ss3220_in_ep>;
+					remote-endpoint = <&hd3ss3220_0_in_ep>;
 				};
 			};
 		};
@@ -522,7 +522,7 @@ ports {
 			port@0 {
 				reg = <0>;
 
-				hd3ss3220_in_ep: endpoint {
+				hd3ss3220_0_in_ep: endpoint {
 					remote-endpoint = <&usb0_con_ss_ep>;
 				};
 			};
@@ -530,7 +530,7 @@ hd3ss3220_in_ep: endpoint {
 			port@1 {
 				reg = <1>;
 
-				hd3ss3220_out_ep: endpoint {
+				hd3ss3220_0_out_ep: endpoint {
 					remote-endpoint = <&usb_0_dwc3_ss>;
 				};
 			};
@@ -904,7 +904,7 @@ &usb_0_dwc3_hs {
 };
 
 &usb_0_dwc3_ss {
-	remote-endpoint = <&hd3ss3220_out_ep>;
+	remote-endpoint = <&hd3ss3220_0_out_ep>;
 };
 
 &usb_0_hsphy {
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-01-22  9:28 [PATCH v5 0/4] Enable secondary USB controller in host mode Swati Agarwal
                   ` (2 preceding siblings ...)
  2026-01-22  9:28 ` [PATCH v5 3/4] arm64: dts: qcom: lemans-evk: Rename hd3ss3220_ instance for primary port controller Swati Agarwal
@ 2026-01-22  9:28 ` Swati Agarwal
  2026-01-22 10:31   ` Dmitry Baryshkov
  3 siblings, 1 reply; 17+ messages in thread
From: Swati Agarwal @ 2026-01-22  9:28 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Dmitry Baryshkov, Jens Glathe, Chaoyi Chen,
	J . Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio
  Cc: linux-usb, devicetree, linux-kernel, linux-arm-msm, Swati Agarwal

Enable secondary USB controller in host mode on lemans EVK Platform.

Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
having 4 ports. The ports of hub that are present on lemans EVK standalone
board are used as follows:-
1) port-1 is connected to HD3SS3220 Type-C port controller.
2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
for Bluetooth. This port is to be used only if user optionally replaces the
WiFi card with the NFA765 chip which uses USB for Bluetooth.

Remaining 2 ports will become functional when the interface plus mezzanine
board is stacked on top of corekit:

3) port-2 is connected to another hub which is present on the mezz through
which 4 type-A ports are connected.
4) port-3 is used for the M.2 B key for a 5G card when the mezz is
connected.

Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
 1 file changed, 208 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
index 074a1edd0334..a549f7fe53a1 100644
--- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
+++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
@@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
 		};
 	};
 
+	connector-1 {
+		compatible = "usb-c-connector";
+		label = "USB1-Type-C";
+		data-role = "host";
+		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";
@@ -141,6 +180,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";
 
@@ -536,6 +585,39 @@ 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>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				hd3ss3220_1_out_ep: endpoint {
+				};
+			};
+		};
+	};
+
 };
 
 &i2c18 {
@@ -699,6 +781,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 {
@@ -868,6 +958,12 @@ usb_id: usb-id-state {
 		function = "gpio";
 		bias-pull-up;
 	};
+
+	usb1_id: usb1-id-state {
+		pins = "gpio51";
+		function = "gpio";
+		bias-pull-up;
+	};
 };
 
 &uart10 {
@@ -922,6 +1018,118 @@ &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>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@1 {
+				reg = <1>;
+
+				usb_hub_2_1: endpoint {
+					remote-endpoint = <&usb1_hs_in>;
+				};
+			};
+
+			/*
+			 * Port-2 and port-3 are not connected to anything on corekit.
+			 */
+			port@2 {
+				reg = <2>;
+
+				usb_hub_2_2: endpoint {
+				};
+			};
+
+			port@3 {
+				reg = <3>;
+
+				usb_hub_2_3: endpoint {
+				};
+			};
+
+			/*
+			 * Port-4 is connected to M.2 E key connector on corekit.
+			 */
+			port@4 {
+				reg = <4>;
+
+				usb_hub_2_4: endpoint {
+				};
+			};
+		};
+	};
+
+	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>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+
+				usb_hub_3_2: endpoint {
+				};
+			};
+
+			port@3 {
+				reg = <3>;
+
+				usb_hub_3_3: endpoint {
+				};
+			};
+
+			port@4 {
+				reg = <4>;
+
+				usb_hub_3_4: endpoint {
+				};
+			};
+		};
+	};
+};
+
+&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


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-01-22  9:28 ` [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode Swati Agarwal
@ 2026-01-22 10:31   ` Dmitry Baryshkov
  2026-01-27  5:23     ` Swati Agarwal
  0 siblings, 1 reply; 17+ messages in thread
From: Dmitry Baryshkov @ 2026-01-22 10:31 UTC (permalink / raw)
  To: Swati Agarwal
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J . Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> Enable secondary USB controller in host mode on lemans EVK Platform.
> 
> Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> having 4 ports. The ports of hub that are present on lemans EVK standalone
> board are used as follows:-
> 1) port-1 is connected to HD3SS3220 Type-C port controller.
> 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> for Bluetooth. This port is to be used only if user optionally replaces the
> WiFi card with the NFA765 chip which uses USB for Bluetooth.
> 
> Remaining 2 ports will become functional when the interface plus mezzanine
> board is stacked on top of corekit:
> 
> 3) port-2 is connected to another hub which is present on the mezz through
> which 4 type-A ports are connected.
> 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> connected.
> 
> Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
>  1 file changed, 208 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> index 074a1edd0334..a549f7fe53a1 100644
> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
>  		};
>  	};
>  
> +	connector-1 {
> +		compatible = "usb-c-connector";
> +		label = "USB1-Type-C";
> +		data-role = "host";
> +		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 {

This contradicts USB-C connector bindings. Why?

> +					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 {

port@2 is for the SBU signals. It can't be connected to the hub.

> +					remote-endpoint = <&usb_hub_3_1>;
> +				};
> +			};
> +		};
> +	};
> +
>  	edp0-connector {
>  		compatible = "dp-connector";
>  		label = "EDP0";
> @@ -141,6 +180,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";
>  
> @@ -536,6 +585,39 @@ 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>;
> +				};
> +			};
> +
> +			port@1 {
> +				reg = <1>;
> +
> +				hd3ss3220_1_out_ep: endpoint {
> +				};

Why is this port disconnected? It it really N/C?

> +			};
> +		};
> +	};
> +
>  };
>  
>  &i2c18 {
> @@ -699,6 +781,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 {
> @@ -868,6 +958,12 @@ usb_id: usb-id-state {
>  		function = "gpio";
>  		bias-pull-up;
>  	};
> +
> +	usb1_id: usb1-id-state {
> +		pins = "gpio51";
> +		function = "gpio";
> +		bias-pull-up;
> +	};
>  };
>  
>  &uart10 {
> @@ -922,6 +1018,118 @@ &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>;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port@1 {
> +				reg = <1>;
> +
> +				usb_hub_2_1: endpoint {
> +					remote-endpoint = <&usb1_hs_in>;
> +				};
> +			};
> +
> +			/*
> +			 * Port-2 and port-3 are not connected to anything on corekit.

I thought that they are routed to the HS connectors. Are they not?

> +			 */
> +			port@2 {
> +				reg = <2>;
> +
> +				usb_hub_2_2: endpoint {
> +				};
> +			};
> +
> +			port@3 {
> +				reg = <3>;
> +
> +				usb_hub_2_3: endpoint {
> +				};
> +			};
> +
> +			/*
> +			 * Port-4 is connected to M.2 E key connector on corekit.
> +			 */
> +			port@4 {
> +				reg = <4>;
> +
> +				usb_hub_2_4: endpoint {
> +				};
> +			};
> +		};
> +	};
> +
> +	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>;
> +				};
> +			};
> +
> +			port@2 {
> +				reg = <2>;
> +
> +				usb_hub_3_2: endpoint {
> +				};
> +			};
> +
> +			port@3 {
> +				reg = <3>;
> +
> +				usb_hub_3_3: endpoint {
> +				};
> +			};
> +
> +			port@4 {
> +				reg = <4>;
> +
> +				usb_hub_3_4: endpoint {
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&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

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub
  2026-01-22  9:28 ` [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub Swati Agarwal
@ 2026-01-22 17:06   ` Rob Herring
  0 siblings, 0 replies; 17+ messages in thread
From: Rob Herring @ 2026-01-22 17:06 UTC (permalink / raw)
  To: Swati Agarwal
  Cc: Greg Kroah-Hartman, Krzysztof Kozlowski, Conor Dooley,
	Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans, Stephen Boyd,
	Dmitry Baryshkov, Jens Glathe, Chaoyi Chen, J . Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On Thu, Jan 22, 2026 at 02:58:49PM +0530, Swati Agarwal wrote:
> Add the binding for the USB3.2 Genesys Logic GL3590 hub.
> GL3590 hub requires 1.2V and 3.3V supplies for operation.
> 
> Signed-off-by: Swati Agarwal <swati.agarwal@oss.qualcomm.com>
> ---
>  .../bindings/usb/genesys,gl850g.yaml          | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> index 9a94b2a74a1e..6ab13785e832 100644
> --- a/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> +++ b/Documentation/devicetree/bindings/usb/genesys,gl850g.yaml
> @@ -15,6 +15,7 @@ properties:
>        - usb5e3,608
>        - usb5e3,610
>        - usb5e3,620
> +      - usb5e3,625
>        - usb5e3,626
>  
>    reg: true
> @@ -26,6 +27,10 @@ properties:
>      description:
>        The regulator that provides 3.3V or 5.0V core power to the hub.
>  
> +  vdd12-supply:
> +    description:
> +      The regulator that provides 1.2V power to the hub.
> +
>    peer-hub: true
>  
>    ports:
> @@ -56,6 +61,7 @@ allOf:
>        properties:
>          peer-hub: false
>          vdd-supply: false
> +        vdd12-supply: false
>  
>    - if:
>        properties:
> @@ -68,6 +74,19 @@ allOf:
>        properties:
>          peer-hub: true
>          vdd-supply: true
> +        vdd12-supply: false
> +
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - usb5e3,625
> +    then:
> +      properties:
> +        peer-hub: true
> +        vdd-supply: true
> +        vdd12-supply: true

Comment on v4 still applies. All the 'true' lines are pointless.

Rob

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-01-22 10:31   ` Dmitry Baryshkov
@ 2026-01-27  5:23     ` Swati Agarwal
  2026-02-03  6:25       ` Swati Agarwal
  2026-02-04  1:33       ` Dmitry Baryshkov
  0 siblings, 2 replies; 17+ messages in thread
From: Swati Agarwal @ 2026-01-27  5:23 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J . Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> > Enable secondary USB controller in host mode on lemans EVK Platform.
> >
> > Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> > having 4 ports. The ports of hub that are present on lemans EVK standalone
> > board are used as follows:-
> > 1) port-1 is connected to HD3SS3220 Type-C port controller.
> > 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> > for Bluetooth. This port is to be used only if user optionally replaces the
> > WiFi card with the NFA765 chip which uses USB for Bluetooth.
> >
> > Remaining 2 ports will become functional when the interface plus mezzanine
> > board is stacked on top of corekit:
> >
> > 3) port-2 is connected to another hub which is present on the mezz through
> > which 4 type-A ports are connected.
> > 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> > connected.
> >
> > Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
> >  1 file changed, 208 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > index 074a1edd0334..a549f7fe53a1 100644
> > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
> >               };
> >       };
> >
> > +     connector-1 {
> > +             compatible = "usb-c-connector";
> > +             label = "USB1-Type-C";
> > +             data-role = "host";
> > +             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 {
>
> This contradicts USB-C connector bindings. Why?
>
> > +                                     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 {
>
> port@2 is for the SBU signals. It can't be connected to the hub.
>
> > +                                     remote-endpoint = <&usb_hub_3_1>;
> > +                             };
> > +                     };
> > +             };
> > +     };
> > +
> >       edp0-connector {
> >               compatible = "dp-connector";
> >               label = "EDP0";
> > @@ -141,6 +180,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";
> >
> > @@ -536,6 +585,39 @@ 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>;
> > +                             };
> > +                     };
> > +
> > +                     port@1 {
> > +                             reg = <1>;
> > +
> > +                             hd3ss3220_1_out_ep: endpoint {
> > +                             };
>
> Why is this port disconnected? It it really N/C?

Hi Dmitry,

Sorry for the confusion, Can we do it as follows:

hub:                    Hd3ss3220   typec-connector

usb_hub_2_1 <-> port@1       port@1 <-> empty
usb_hub_3_1 <-> port@2       port@2 <-> <empty>
                             port@0 <-> port@0

Regards,
Swati
>
> > +                     };
> > +             };
> > +     };
> > +
> >  };
> >
> >  &i2c18 {
> > @@ -699,6 +781,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 {
> > @@ -868,6 +958,12 @@ usb_id: usb-id-state {
> >               function = "gpio";
> >               bias-pull-up;
> >       };
> > +
> > +     usb1_id: usb1-id-state {
> > +             pins = "gpio51";
> > +             function = "gpio";
> > +             bias-pull-up;
> > +     };
> >  };
> >
> >  &uart10 {
> > @@ -922,6 +1018,118 @@ &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>;
> > +
> > +             ports {
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +
> > +                     port@1 {
> > +                             reg = <1>;
> > +
> > +                             usb_hub_2_1: endpoint {
> > +                                     remote-endpoint = <&usb1_hs_in>;
> > +                             };
> > +                     };
> > +
> > +                     /*
> > +                      * Port-2 and port-3 are not connected to anything on corekit.
>
> I thought that they are routed to the HS connectors. Are they not?
>
> > +                      */
> > +                     port@2 {
> > +                             reg = <2>;
> > +
> > +                             usb_hub_2_2: endpoint {
> > +                             };
> > +                     };
> > +
> > +                     port@3 {
> > +                             reg = <3>;
> > +
> > +                             usb_hub_2_3: endpoint {
> > +                             };
> > +                     };
> > +
> > +                     /*
> > +                      * Port-4 is connected to M.2 E key connector on corekit.
> > +                      */
> > +                     port@4 {
> > +                             reg = <4>;
> > +
> > +                             usb_hub_2_4: endpoint {
> > +                             };
> > +                     };
> > +             };
> > +     };
> > +
> > +     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>;
> > +                             };
> > +                     };
> > +
> > +                     port@2 {
> > +                             reg = <2>;
> > +
> > +                             usb_hub_3_2: endpoint {
> > +                             };
> > +                     };
> > +
> > +                     port@3 {
> > +                             reg = <3>;
> > +
> > +                             usb_hub_3_3: endpoint {
> > +                             };
> > +                     };
> > +
> > +                     port@4 {
> > +                             reg = <4>;
> > +
> > +                             usb_hub_3_4: endpoint {
> > +                             };
> > +                     };
> > +             };
> > +     };
> > +};
> > +
> > +&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

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-01-27  5:23     ` Swati Agarwal
@ 2026-02-03  6:25       ` Swati Agarwal
  2026-02-04  1:33       ` Dmitry Baryshkov
  1 sibling, 0 replies; 17+ messages in thread
From: Swati Agarwal @ 2026-02-03  6:25 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J . Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On Tue, Jan 27, 2026 at 10:53 AM Swati Agarwal
<swati.agarwal@oss.qualcomm.com> wrote:
>
> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > >
> > > Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> > > having 4 ports. The ports of hub that are present on lemans EVK standalone
> > > board are used as follows:-
> > > 1) port-1 is connected to HD3SS3220 Type-C port controller.
> > > 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> > > for Bluetooth. This port is to be used only if user optionally replaces the
> > > WiFi card with the NFA765 chip which uses USB for Bluetooth.
> > >
> > > Remaining 2 ports will become functional when the interface plus mezzanine
> > > board is stacked on top of corekit:
> > >
> > > 3) port-2 is connected to another hub which is present on the mezz through
> > > which 4 type-A ports are connected.
> > > 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> > > connected.
> > >
> > > Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
> > >  1 file changed, 208 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > index 074a1edd0334..a549f7fe53a1 100644
> > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
> > >               };
> > >       };
> > >
> > > +     connector-1 {
> > > +             compatible = "usb-c-connector";
> > > +             label = "USB1-Type-C";
> > > +             data-role = "host";
> > > +             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 {
> >
> > This contradicts USB-C connector bindings. Why?
> >
> > > +                                     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 {
> >
> > port@2 is for the SBU signals. It can't be connected to the hub.
> >
> > > +                                     remote-endpoint = <&usb_hub_3_1>;
> > > +                             };
> > > +                     };
> > > +             };
> > > +     };
> > > +
> > >       edp0-connector {
> > >               compatible = "dp-connector";
> > >               label = "EDP0";
> > > @@ -141,6 +180,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";
> > >
> > > @@ -536,6 +585,39 @@ 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>;
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@1 {
> > > +                             reg = <1>;
> > > +
> > > +                             hd3ss3220_1_out_ep: endpoint {
> > > +                             };
> >
> > Why is this port disconnected? It it really N/C?
>
> Hi Dmitry,
>
> Sorry for the confusion, Can we do it as follows:
>
> hub:                    Hd3ss3220   typec-connector
>
> usb_hub_2_1 <-> port@1       port@1 <-> empty
> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
>                              port@0 <-> port@0
>
> Regards,
> Swati

Hi Dmitry,

Gentle ping.
Let me know if the above remote endpoint connections look good to go.

Regards,
Swati


> >
> > > +                     };
> > > +             };
> > > +     };
> > > +
> > >  };
> > >
> > >  &i2c18 {
> > > @@ -699,6 +781,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 {
> > > @@ -868,6 +958,12 @@ usb_id: usb-id-state {
> > >               function = "gpio";
> > >               bias-pull-up;
> > >       };
> > > +
> > > +     usb1_id: usb1-id-state {
> > > +             pins = "gpio51";
> > > +             function = "gpio";
> > > +             bias-pull-up;
> > > +     };
> > >  };
> > >
> > >  &uart10 {
> > > @@ -922,6 +1018,118 @@ &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>;
> > > +
> > > +             ports {
> > > +                     #address-cells = <1>;
> > > +                     #size-cells = <0>;
> > > +
> > > +                     port@1 {
> > > +                             reg = <1>;
> > > +
> > > +                             usb_hub_2_1: endpoint {
> > > +                                     remote-endpoint = <&usb1_hs_in>;
> > > +                             };
> > > +                     };
> > > +
> > > +                     /*
> > > +                      * Port-2 and port-3 are not connected to anything on corekit.
> >
> > I thought that they are routed to the HS connectors. Are they not?
> >
> > > +                      */
> > > +                     port@2 {
> > > +                             reg = <2>;
> > > +
> > > +                             usb_hub_2_2: endpoint {
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@3 {
> > > +                             reg = <3>;
> > > +
> > > +                             usb_hub_2_3: endpoint {
> > > +                             };
> > > +                     };
> > > +
> > > +                     /*
> > > +                      * Port-4 is connected to M.2 E key connector on corekit.
> > > +                      */
> > > +                     port@4 {
> > > +                             reg = <4>;
> > > +
> > > +                             usb_hub_2_4: endpoint {
> > > +                             };
> > > +                     };
> > > +             };
> > > +     };
> > > +
> > > +     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>;
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@2 {
> > > +                             reg = <2>;
> > > +
> > > +                             usb_hub_3_2: endpoint {
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@3 {
> > > +                             reg = <3>;
> > > +
> > > +                             usb_hub_3_3: endpoint {
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@4 {
> > > +                             reg = <4>;
> > > +
> > > +                             usb_hub_3_4: endpoint {
> > > +                             };
> > > +                     };
> > > +             };
> > > +     };
> > > +};
> > > +
> > > +&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

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-01-27  5:23     ` Swati Agarwal
  2026-02-03  6:25       ` Swati Agarwal
@ 2026-02-04  1:33       ` Dmitry Baryshkov
  2026-02-04  5:56         ` Krishna Kurapati
  1 sibling, 1 reply; 17+ messages in thread
From: Dmitry Baryshkov @ 2026-02-04  1:33 UTC (permalink / raw)
  To: Swati Agarwal
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J . Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > >
> > > Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> > > having 4 ports. The ports of hub that are present on lemans EVK standalone
> > > board are used as follows:-
> > > 1) port-1 is connected to HD3SS3220 Type-C port controller.
> > > 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> > > for Bluetooth. This port is to be used only if user optionally replaces the
> > > WiFi card with the NFA765 chip which uses USB for Bluetooth.
> > >
> > > Remaining 2 ports will become functional when the interface plus mezzanine
> > > board is stacked on top of corekit:
> > >
> > > 3) port-2 is connected to another hub which is present on the mezz through
> > > which 4 type-A ports are connected.
> > > 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> > > connected.
> > >
> > > Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
> > >  1 file changed, 208 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > index 074a1edd0334..a549f7fe53a1 100644
> > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
> > >               };
> > >       };
> > >
> > > +     connector-1 {
> > > +             compatible = "usb-c-connector";
> > > +             label = "USB1-Type-C";
> > > +             data-role = "host";
> > > +             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 {
> >
> > This contradicts USB-C connector bindings. Why?
> >
> > > +                                     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 {
> >
> > port@2 is for the SBU signals. It can't be connected to the hub.
> >
> > > +                                     remote-endpoint = <&usb_hub_3_1>;
> > > +                             };
> > > +                     };
> > > +             };
> > > +     };
> > > +
> > >       edp0-connector {
> > >               compatible = "dp-connector";
> > >               label = "EDP0";
> > > @@ -141,6 +180,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";
> > >
> > > @@ -536,6 +585,39 @@ 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>;
> > > +                             };
> > > +                     };
> > > +
> > > +                     port@1 {
> > > +                             reg = <1>;
> > > +
> > > +                             hd3ss3220_1_out_ep: endpoint {
> > > +                             };
> >
> > Why is this port disconnected? It it really N/C?
> 
> Hi Dmitry,
> 
> Sorry for the confusion, Can we do it as follows:
> 
> hub:                    Hd3ss3220   typec-connector
> 
> usb_hub_2_1 <-> port@1       port@1 <-> empty
> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
>                              port@0 <-> port@0
> 

You still missed the _why_. Why port@1 of HD3SS3220 is not connected?

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04  1:33       ` Dmitry Baryshkov
@ 2026-02-04  5:56         ` Krishna Kurapati
  2026-02-04  9:34           ` Konrad Dybcio
  2026-02-04 10:32           ` Dmitry Baryshkov
  0 siblings, 2 replies; 17+ messages in thread
From: Krishna Kurapati @ 2026-02-04  5:56 UTC (permalink / raw)
  To: Dmitry Baryshkov, Swati Agarwal
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J. Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm



On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
> On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
>> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>
>>> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
>>>> Enable secondary USB controller in host mode on lemans EVK Platform.
>>>>
>>>> Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
>>>> having 4 ports. The ports of hub that are present on lemans EVK standalone
>>>> board are used as follows:-
>>>> 1) port-1 is connected to HD3SS3220 Type-C port controller.
>>>> 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
>>>> for Bluetooth. This port is to be used only if user optionally replaces the
>>>> WiFi card with the NFA765 chip which uses USB for Bluetooth.
>>>>
>>>> Remaining 2 ports will become functional when the interface plus mezzanine
>>>> board is stacked on top of corekit:
>>>>
>>>> 3) port-2 is connected to another hub which is present on the mezz through
>>>> which 4 type-A ports are connected.
>>>> 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
>>>> connected.
>>>>
>>>> Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
>>>>   1 file changed, 208 insertions(+)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>> index 074a1edd0334..a549f7fe53a1 100644
>>>> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>> @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
>>>>                };
>>>>        };
>>>>
>>>> +     connector-1 {
>>>> +             compatible = "usb-c-connector";
>>>> +             label = "USB1-Type-C";
>>>> +             data-role = "host";
>>>> +             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 {
>>>
>>> This contradicts USB-C connector bindings. Why?
>>>
>>>> +                                     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 {
>>>
>>> port@2 is for the SBU signals. It can't be connected to the hub.
>>>
>>>> +                                     remote-endpoint = <&usb_hub_3_1>;
>>>> +                             };
>>>> +                     };
>>>> +             };
>>>> +     };
>>>> +
>>>>        edp0-connector {
>>>>                compatible = "dp-connector";
>>>>                label = "EDP0";
>>>> @@ -141,6 +180,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";
>>>>
>>>> @@ -536,6 +585,39 @@ 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>;
>>>> +                             };
>>>> +                     };
>>>> +
>>>> +                     port@1 {
>>>> +                             reg = <1>;
>>>> +
>>>> +                             hd3ss3220_1_out_ep: endpoint {
>>>> +                             };
>>>
>>> Why is this port disconnected? It it really N/C?
>>
>> Hi Dmitry,
>>
>> Sorry for the confusion, Can we do it as follows:
>>
>> hub:                    Hd3ss3220   typec-connector
>>
>> usb_hub_2_1 <-> port@1       port@1 <-> empty
>> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
>>                               port@0 <-> port@0
>>
> 
> You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
> 

There are no remote endpoints added in dwc3 node. Since we are making 
dr_mode host. Hence keeping this remore endpoint empty.

Regards,
Krishna,

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04  5:56         ` Krishna Kurapati
@ 2026-02-04  9:34           ` Konrad Dybcio
  2026-02-12  9:00             ` Krishna Kurapati PSSNV
  2026-02-04 10:32           ` Dmitry Baryshkov
  1 sibling, 1 reply; 17+ messages in thread
From: Konrad Dybcio @ 2026-02-04  9:34 UTC (permalink / raw)
  To: Krishna Kurapati, Dmitry Baryshkov, Swati Agarwal
  Cc: Greg Kroah-Hartman, Rob Herring, Krzysztof Kozlowski,
	Conor Dooley, Icenowy Zheng, Matthias Kaehlcke, Mike Looijmans,
	Stephen Boyd, Jens Glathe, Chaoyi Chen, J. Neuschäfer,
	Pin-yen Lin, Catalin Popescu, Bjorn Andersson, Konrad Dybcio,
	linux-usb, devicetree, linux-kernel, linux-arm-msm

On 2/4/26 6:56 AM, Krishna Kurapati wrote:
> 
> 
> On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
>> On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
>>> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
>>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>>
>>>> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
>>>>> Enable secondary USB controller in host mode on lemans EVK Platform.
>>>>>
>>>>> Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
>>>>> having 4 ports. The ports of hub that are present on lemans EVK standalone
>>>>> board are used as follows:-
>>>>> 1) port-1 is connected to HD3SS3220 Type-C port controller.
>>>>> 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
>>>>> for Bluetooth. This port is to be used only if user optionally replaces the
>>>>> WiFi card with the NFA765 chip which uses USB for Bluetooth.
>>>>>
>>>>> Remaining 2 ports will become functional when the interface plus mezzanine
>>>>> board is stacked on top of corekit:
>>>>>
>>>>> 3) port-2 is connected to another hub which is present on the mezz through
>>>>> which 4 type-A ports are connected.
>>>>> 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
>>>>> connected.
>>>>>
>>>>> Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
>>>>>   1 file changed, 208 insertions(+)
>>>>>
>>>>> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>> index 074a1edd0334..a549f7fe53a1 100644
>>>>> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>> @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
>>>>>                };
>>>>>        };
>>>>>
>>>>> +     connector-1 {
>>>>> +             compatible = "usb-c-connector";
>>>>> +             label = "USB1-Type-C";
>>>>> +             data-role = "host";
>>>>> +             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 {
>>>>
>>>> This contradicts USB-C connector bindings. Why?
>>>>
>>>>> +                                     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 {
>>>>
>>>> port@2 is for the SBU signals. It can't be connected to the hub.
>>>>
>>>>> +                                     remote-endpoint = <&usb_hub_3_1>;
>>>>> +                             };
>>>>> +                     };
>>>>> +             };
>>>>> +     };
>>>>> +
>>>>>        edp0-connector {
>>>>>                compatible = "dp-connector";
>>>>>                label = "EDP0";
>>>>> @@ -141,6 +180,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";
>>>>>
>>>>> @@ -536,6 +585,39 @@ 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>;
>>>>> +                             };
>>>>> +                     };
>>>>> +
>>>>> +                     port@1 {
>>>>> +                             reg = <1>;
>>>>> +
>>>>> +                             hd3ss3220_1_out_ep: endpoint {
>>>>> +                             };
>>>>
>>>> Why is this port disconnected? It it really N/C?
>>>
>>> Hi Dmitry,
>>>
>>> Sorry for the confusion, Can we do it as follows:
>>>
>>> hub:                    Hd3ss3220   typec-connector
>>>
>>> usb_hub_2_1 <-> port@1       port@1 <-> empty
>>> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
>>>                               port@0 <-> port@0
>>>
>>
>> You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
>>
> 
> There are no remote endpoints added in dwc3 node. Since we are making dr_mode host. Hence keeping this remore endpoint empty.

So can you like.. add the endpoints under that node and problem
solved?

Konrad

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04  5:56         ` Krishna Kurapati
  2026-02-04  9:34           ` Konrad Dybcio
@ 2026-02-04 10:32           ` Dmitry Baryshkov
  2026-02-04 19:07             ` Krishna Kurapati
  1 sibling, 1 reply; 17+ messages in thread
From: Dmitry Baryshkov @ 2026-02-04 10:32 UTC (permalink / raw)
  To: Krishna Kurapati
  Cc: Swati Agarwal, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Icenowy Zheng,
	Matthias Kaehlcke, Mike Looijmans, Stephen Boyd, Jens Glathe,
	Chaoyi Chen, J. Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio, linux-usb, devicetree,
	linux-kernel, linux-arm-msm

On Wed, Feb 04, 2026 at 11:26:37AM +0530, Krishna Kurapati wrote:
> 
> 
> On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
> > On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
> > > On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > 
> > > > On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > > 
> > > > > Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> > > > > having 4 ports. The ports of hub that are present on lemans EVK standalone
> > > > > board are used as follows:-
> > > > > 1) port-1 is connected to HD3SS3220 Type-C port controller.
> > > > > 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> > > > > for Bluetooth. This port is to be used only if user optionally replaces the
> > > > > WiFi card with the NFA765 chip which uses USB for Bluetooth.
> > > > > 
> > > > > Remaining 2 ports will become functional when the interface plus mezzanine
> > > > > board is stacked on top of corekit:
> > > > > 
> > > > > 3) port-2 is connected to another hub which is present on the mezz through
> > > > > which 4 type-A ports are connected.
> > > > > 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> > > > > connected.
> > > > > 
> > > > > Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
> > > > >   1 file changed, 208 insertions(+)
> > > > > 
> > > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > index 074a1edd0334..a549f7fe53a1 100644
> > > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
> > > > >                };
> > > > >        };
> > > > > 
> > > > > +     connector-1 {
> > > > > +             compatible = "usb-c-connector";
> > > > > +             label = "USB1-Type-C";
> > > > > +             data-role = "host";
> > > > > +             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 {
> > > > 
> > > > This contradicts USB-C connector bindings. Why?
> > > > 
> > > > > +                                     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 {
> > > > 
> > > > port@2 is for the SBU signals. It can't be connected to the hub.
> > > > 
> > > > > +                                     remote-endpoint = <&usb_hub_3_1>;
> > > > > +                             };
> > > > > +                     };
> > > > > +             };
> > > > > +     };
> > > > > +
> > > > >        edp0-connector {
> > > > >                compatible = "dp-connector";
> > > > >                label = "EDP0";
> > > > > @@ -141,6 +180,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";
> > > > > 
> > > > > @@ -536,6 +585,39 @@ 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>;
> > > > > +                             };
> > > > > +                     };
> > > > > +
> > > > > +                     port@1 {
> > > > > +                             reg = <1>;
> > > > > +
> > > > > +                             hd3ss3220_1_out_ep: endpoint {
> > > > > +                             };
> > > > 
> > > > Why is this port disconnected? It it really N/C?
> > > 
> > > Hi Dmitry,
> > > 
> > > Sorry for the confusion, Can we do it as follows:
> > > 
> > > hub:                    Hd3ss3220   typec-connector
> > > 
> > > usb_hub_2_1 <-> port@1       port@1 <-> empty
> > > usb_hub_3_1 <-> port@2       port@2 <-> <empty>
> > >                               port@0 <-> port@0
> > > 
> > 
> > You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
> > 
> 
> There are no remote endpoints added in dwc3 node. Since we are making
> dr_mode host. Hence keeping this remore endpoint empty.

How is the link between HD3SS3220 and Type-C affected by the DWC3? What
does port@1 of it represent? Do we have SS lanes between HD3SS3220 and
the connector?

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04 10:32           ` Dmitry Baryshkov
@ 2026-02-04 19:07             ` Krishna Kurapati
  2026-02-04 19:40               ` Dmitry Baryshkov
  0 siblings, 1 reply; 17+ messages in thread
From: Krishna Kurapati @ 2026-02-04 19:07 UTC (permalink / raw)
  To: Dmitry Baryshkov
  Cc: Swati Agarwal, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Icenowy Zheng,
	Matthias Kaehlcke, Mike Looijmans, Stephen Boyd, Jens Glathe,
	Chaoyi Chen, J. Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio, linux-usb, devicetree,
	linux-kernel, linux-arm-msm



On 2/4/2026 4:02 PM, Dmitry Baryshkov wrote:
> On Wed, Feb 04, 2026 at 11:26:37AM +0530, Krishna Kurapati wrote:
>>
>>
>> On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
>>> On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
>>>> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
>>>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
>>>>>
>>>>> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
>>>>>> Enable secondary USB controller in host mode on lemans EVK Platform.
>>>>>>
>>>>>> Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
>>>>>> having 4 ports. The ports of hub that are present on lemans EVK standalone
>>>>>> board are used as follows:-
>>>>>> 1) port-1 is connected to HD3SS3220 Type-C port controller.
>>>>>> 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
>>>>>> for Bluetooth. This port is to be used only if user optionally replaces the
>>>>>> WiFi card with the NFA765 chip which uses USB for Bluetooth.
>>>>>>
>>>>>> Remaining 2 ports will become functional when the interface plus mezzanine
>>>>>> board is stacked on top of corekit:
>>>>>>
>>>>>> 3) port-2 is connected to another hub which is present on the mezz through
>>>>>> which 4 type-A ports are connected.
>>>>>> 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
>>>>>> connected.
>>>>>>
>>>>>> Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
>>>>>>    1 file changed, 208 insertions(+)
>>>>>>
>>>>>> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>>> index 074a1edd0334..a549f7fe53a1 100644
>>>>>> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>>> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>>>>>> @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
>>>>>>                 };
>>>>>>         };
>>>>>>
>>>>>> +     connector-1 {
>>>>>> +             compatible = "usb-c-connector";
>>>>>> +             label = "USB1-Type-C";
>>>>>> +             data-role = "host";
>>>>>> +             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 {
>>>>>
>>>>> This contradicts USB-C connector bindings. Why?
>>>>>
>>>>>> +                                     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 {
>>>>>
>>>>> port@2 is for the SBU signals. It can't be connected to the hub.
>>>>>
>>>>>> +                                     remote-endpoint = <&usb_hub_3_1>;
>>>>>> +                             };
>>>>>> +                     };
>>>>>> +             };
>>>>>> +     };
>>>>>> +
>>>>>>         edp0-connector {
>>>>>>                 compatible = "dp-connector";
>>>>>>                 label = "EDP0";
>>>>>> @@ -141,6 +180,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";
>>>>>>
>>>>>> @@ -536,6 +585,39 @@ 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>;
>>>>>> +                             };
>>>>>> +                     };
>>>>>> +
>>>>>> +                     port@1 {
>>>>>> +                             reg = <1>;
>>>>>> +
>>>>>> +                             hd3ss3220_1_out_ep: endpoint {
>>>>>> +                             };
>>>>>
>>>>> Why is this port disconnected? It it really N/C?
>>>>
>>>> Hi Dmitry,
>>>>
>>>> Sorry for the confusion, Can we do it as follows:
>>>>
>>>> hub:                    Hd3ss3220   typec-connector
>>>>
>>>> usb_hub_2_1 <-> port@1       port@1 <-> empty
>>>> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
>>>>                                port@0 <-> port@0
>>>>
>>>
>>> You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
>>>
>>
>> There are no remote endpoints added in dwc3 node. Since we are making
>> dr_mode host. Hence keeping this remore endpoint empty.
> 
> How is the link between HD3SS3220 and Type-C affected by the DWC3? What
> does port@1 of it represent? Do we have SS lanes between HD3SS3220 and
> the connector?
> 

Yes.

The lines go from Soc -> Hub -> Port controller -> Connector

Hence I didn't add any special endpoint mapping between usb controller 
and port controller in above provided diagram.

  One port of port-controller goes to connector and the other goes to 
where the lanes are coming from. Usually its only one endpoint from dwc3 
usb controller to hd3 port-controller. In this case, since its a hub, we 
added two ports (one for Hs and the other for ss lines) to hd3 port 
controller.

Regards,
Krishna,

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04 19:07             ` Krishna Kurapati
@ 2026-02-04 19:40               ` Dmitry Baryshkov
  0 siblings, 0 replies; 17+ messages in thread
From: Dmitry Baryshkov @ 2026-02-04 19:40 UTC (permalink / raw)
  To: Krishna Kurapati
  Cc: Swati Agarwal, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Icenowy Zheng,
	Matthias Kaehlcke, Mike Looijmans, Stephen Boyd, Jens Glathe,
	Chaoyi Chen, J. Neuschäfer, Pin-yen Lin, Catalin Popescu,
	Bjorn Andersson, Konrad Dybcio, linux-usb, devicetree,
	linux-kernel, linux-arm-msm

On Thu, Feb 05, 2026 at 12:37:25AM +0530, Krishna Kurapati wrote:
> 
> 
> On 2/4/2026 4:02 PM, Dmitry Baryshkov wrote:
> > On Wed, Feb 04, 2026 at 11:26:37AM +0530, Krishna Kurapati wrote:
> > > 
> > > 
> > > On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
> > > > On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
> > > > > On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> > > > > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > > > > > 
> > > > > > On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> > > > > > > Enable secondary USB controller in host mode on lemans EVK Platform.
> > > > > > > 
> > > > > > > Secondary USB controller is connected to a Genesys Logic USB HUB GL3590
> > > > > > > having 4 ports. The ports of hub that are present on lemans EVK standalone
> > > > > > > board are used as follows:-
> > > > > > > 1) port-1 is connected to HD3SS3220 Type-C port controller.
> > > > > > > 2) port-4 is used for the M.2 E key on corekit. Standard core kit uses UART
> > > > > > > for Bluetooth. This port is to be used only if user optionally replaces the
> > > > > > > WiFi card with the NFA765 chip which uses USB for Bluetooth.
> > > > > > > 
> > > > > > > Remaining 2 ports will become functional when the interface plus mezzanine
> > > > > > > board is stacked on top of corekit:
> > > > > > > 
> > > > > > > 3) port-2 is connected to another hub which is present on the mezz through
> > > > > > > which 4 type-A ports are connected.
> > > > > > > 4) port-3 is used for the M.2 B key for a 5G card when the mezz is
> > > > > > > connected.
> > > > > > > 
> > > > > > > Mark the second USB controller as host only capable and add the 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 | 208 ++++++++++++++++++++++++
> > > > > > >    1 file changed, 208 insertions(+)
> > > > > > > 
> > > > > > > diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > index 074a1edd0334..a549f7fe53a1 100644
> > > > > > > --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> > > > > > > @@ -68,6 +68,45 @@ usb0_con_ss_ep: endpoint {
> > > > > > >                 };
> > > > > > >         };
> > > > > > > 
> > > > > > > +     connector-1 {
> > > > > > > +             compatible = "usb-c-connector";
> > > > > > > +             label = "USB1-Type-C";
> > > > > > > +             data-role = "host";
> > > > > > > +             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 {
> > > > > > 
> > > > > > This contradicts USB-C connector bindings. Why?
> > > > > > 
> > > > > > > +                                     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 {
> > > > > > 
> > > > > > port@2 is for the SBU signals. It can't be connected to the hub.
> > > > > > 
> > > > > > > +                                     remote-endpoint = <&usb_hub_3_1>;
> > > > > > > +                             };
> > > > > > > +                     };
> > > > > > > +             };
> > > > > > > +     };
> > > > > > > +
> > > > > > >         edp0-connector {
> > > > > > >                 compatible = "dp-connector";
> > > > > > >                 label = "EDP0";
> > > > > > > @@ -141,6 +180,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";
> > > > > > > 
> > > > > > > @@ -536,6 +585,39 @@ 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>;
> > > > > > > +                             };
> > > > > > > +                     };
> > > > > > > +
> > > > > > > +                     port@1 {
> > > > > > > +                             reg = <1>;
> > > > > > > +
> > > > > > > +                             hd3ss3220_1_out_ep: endpoint {
> > > > > > > +                             };
> > > > > > 
> > > > > > Why is this port disconnected? It it really N/C?
> > > > > 
> > > > > Hi Dmitry,
> > > > > 
> > > > > Sorry for the confusion, Can we do it as follows:
> > > > > 
> > > > > hub:                    Hd3ss3220   typec-connector
> > > > > 
> > > > > usb_hub_2_1 <-> port@1       port@1 <-> empty
> > > > > usb_hub_3_1 <-> port@2       port@2 <-> <empty>
> > > > >                                port@0 <-> port@0
> > > > > 
> > > > 
> > > > You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
> > > > 
> > > 
> > > There are no remote endpoints added in dwc3 node. Since we are making
> > > dr_mode host. Hence keeping this remore endpoint empty.
> > 
> > How is the link between HD3SS3220 and Type-C affected by the DWC3? What
> > does port@1 of it represent? Do we have SS lanes between HD3SS3220 and
> > the connector?
> > 
> 
> Yes.
> 
> The lines go from Soc -> Hub -> Port controller -> Connector
> 
> Hence I didn't add any special endpoint mapping between usb controller and
> port controller in above provided diagram.
> 
>  One port of port-controller goes to connector and the other goes to where
> the lanes are coming from. Usually its only one endpoint from dwc3 usb
> controller to hd3 port-controller. In this case, since its a hub, we added
> two ports (one for Hs and the other for ss lines) to hd3 port controller.

One needs to describe both HS and SS lanes being routed to the Type-C
connector. Please make sure that all signals are described.

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-04  9:34           ` Konrad Dybcio
@ 2026-02-12  9:00             ` Krishna Kurapati PSSNV
  2026-02-13 18:14               ` Dmitry Baryshkov
  0 siblings, 1 reply; 17+ messages in thread
From: Krishna Kurapati PSSNV @ 2026-02-12  9:00 UTC (permalink / raw)
  To: Konrad Dybcio
  Cc: Dmitry Baryshkov, Swati Agarwal, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Icenowy Zheng,
	Matthias Kaehlcke, Mike Looijmans, Stephen Boyd, Jens Glathe,
	Chaoyi Chen, J. Neuschäfer, Pin-yen Lin, Bjorn Andersson,
	Konrad Dybcio, linux-usb, devicetree, linux-kernel, linux-arm-msm

On Wed, Feb 4, 2026 at 3:04 PM Konrad Dybcio
<konrad.dybcio@oss.qualcomm.com> wrote:
>
> On 2/4/26 6:56 AM, Krishna Kurapati wrote:
> >
> >
> > On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
> >> On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
> >>> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> >>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >>>>
> >>>> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:

[...]

> >>>>> +
> >>>>>        edp0-connector {
> >>>>>                compatible = "dp-connector";
> >>>>>                label = "EDP0";
> >>>>> @@ -141,6 +180,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";
> >>>>>
> >>>>> @@ -536,6 +585,39 @@ 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>;
> >>>>> +                             };
> >>>>> +                     };
> >>>>> +
> >>>>> +                     port@1 {
> >>>>> +                             reg = <1>;
> >>>>> +
> >>>>> +                             hd3ss3220_1_out_ep: endpoint {
> >>>>> +                             };
> >>>>
> >>>> Why is this port disconnected? It it really N/C?
> >>>
> >>> Hi Dmitry,
> >>>
> >>> Sorry for the confusion, Can we do it as follows:
> >>>
> >>> hub:                    Hd3ss3220   typec-connector
> >>>
> >>> usb_hub_2_1 <-> port@1       port@1 <-> empty
> >>> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
> >>>                               port@0 <-> port@0
> >>>
> >>
> >> You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
> >>
> >
> > There are no remote endpoints added in dwc3 node. Since we are making dr_mode host. Hence keeping this remore endpoint empty.
>
> So can you like.. add the endpoints under that node and problem
> solved?
>

> solved?
>

The lines go from SoC to Hub directly and not the port controller. And
hence can't connect remote endpoints of dwc3 controller to the hd3
node.

Regards,
Krishna,

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode
  2026-02-12  9:00             ` Krishna Kurapati PSSNV
@ 2026-02-13 18:14               ` Dmitry Baryshkov
  0 siblings, 0 replies; 17+ messages in thread
From: Dmitry Baryshkov @ 2026-02-13 18:14 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV
  Cc: Konrad Dybcio, Swati Agarwal, Greg Kroah-Hartman, Rob Herring,
	Krzysztof Kozlowski, Conor Dooley, Icenowy Zheng,
	Matthias Kaehlcke, Mike Looijmans, Stephen Boyd, Jens Glathe,
	Chaoyi Chen, J. Neuschäfer, Pin-yen Lin, Bjorn Andersson,
	Konrad Dybcio, linux-usb, devicetree, linux-kernel, linux-arm-msm

On Thu, Feb 12, 2026 at 02:30:36PM +0530, Krishna Kurapati PSSNV wrote:
> On Wed, Feb 4, 2026 at 3:04 PM Konrad Dybcio
> <konrad.dybcio@oss.qualcomm.com> wrote:
> >
> > On 2/4/26 6:56 AM, Krishna Kurapati wrote:
> > >
> > >
> > > On 2/4/2026 7:03 AM, Dmitry Baryshkov wrote:
> > >> On Tue, Jan 27, 2026 at 10:53:46AM +0530, Swati Agarwal wrote:
> > >>> On Thu, Jan 22, 2026 at 4:02 PM Dmitry Baryshkov
> > >>> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > >>>>
> > >>>> On Thu, Jan 22, 2026 at 02:58:52PM +0530, Swati Agarwal wrote:
> 
> [...]
> 
> > >>>>> +
> > >>>>>        edp0-connector {
> > >>>>>                compatible = "dp-connector";
> > >>>>>                label = "EDP0";
> > >>>>> @@ -141,6 +180,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";
> > >>>>>
> > >>>>> @@ -536,6 +585,39 @@ 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>;
> > >>>>> +                             };
> > >>>>> +                     };
> > >>>>> +
> > >>>>> +                     port@1 {
> > >>>>> +                             reg = <1>;
> > >>>>> +
> > >>>>> +                             hd3ss3220_1_out_ep: endpoint {
> > >>>>> +                             };
> > >>>>
> > >>>> Why is this port disconnected? It it really N/C?
> > >>>
> > >>> Hi Dmitry,
> > >>>
> > >>> Sorry for the confusion, Can we do it as follows:
> > >>>
> > >>> hub:                    Hd3ss3220   typec-connector
> > >>>
> > >>> usb_hub_2_1 <-> port@1       port@1 <-> empty
> > >>> usb_hub_3_1 <-> port@2       port@2 <-> <empty>
> > >>>                               port@0 <-> port@0
> > >>>
> > >>
> > >> You still missed the _why_. Why port@1 of HD3SS3220 is not connected?
> > >>
> > >
> > > There are no remote endpoints added in dwc3 node. Since we are making dr_mode host. Hence keeping this remore endpoint empty.
> >
> > So can you like.. add the endpoints under that node and problem
> > solved?
> >
> 
> > solved?
> >
> 
> The lines go from SoC to Hub directly and not the port controller. And
> hence can't connect remote endpoints of dwc3 controller to the hd3
> node.

A comment in the commit message (and/or in the DTSI) would be nice.

> 
> Regards,
> Krishna,

-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2026-02-13 18:14 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-22  9:28 [PATCH v5 0/4] Enable secondary USB controller in host mode Swati Agarwal
2026-01-22  9:28 ` [PATCH v5 1/4] dt-bindings: usb: Add binding for Genesys Logic GL3590 hub Swati Agarwal
2026-01-22 17:06   ` Rob Herring
2026-01-22  9:28 ` [PATCH v5 2/4] usb: misc: onboard_usb_hub: Add Genesys Logic GL3590 hub support Swati Agarwal
2026-01-22  9:28 ` [PATCH v5 3/4] arm64: dts: qcom: lemans-evk: Rename hd3ss3220_ instance for primary port controller Swati Agarwal
2026-01-22  9:28 ` [PATCH v5 4/4] arm64: dts: qcom: lemans-evk: Enable secondary USB controller in host mode Swati Agarwal
2026-01-22 10:31   ` Dmitry Baryshkov
2026-01-27  5:23     ` Swati Agarwal
2026-02-03  6:25       ` Swati Agarwal
2026-02-04  1:33       ` Dmitry Baryshkov
2026-02-04  5:56         ` Krishna Kurapati
2026-02-04  9:34           ` Konrad Dybcio
2026-02-12  9:00             ` Krishna Kurapati PSSNV
2026-02-13 18:14               ` Dmitry Baryshkov
2026-02-04 10:32           ` Dmitry Baryshkov
2026-02-04 19:07             ` Krishna Kurapati
2026-02-04 19:40               ` Dmitry Baryshkov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox