arch/arm64/boot/dts/qcom/lemans-evk.dts | 122 +++++++++++++++++++++++- arch/arm64/boot/dts/qcom/lemans.dtsi | 1 + 2 files changed, 121 insertions(+), 2 deletions(-)
Enable OTG support for primary USB controller on EVK Platform. Add
HD3SS3220 Type-C port controller present between Type-C port and SoC
that provides role switch notifications to controller.
Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
---
Changes in v3:
- Moved "usb-role-switch" to lemans dtsi file
- Moved vbus supply to connector node
Link to v3 bindings and driver support:
https://lore.kernel.org/all/20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com/
Link to v2:
https://lore.kernel.org/all/20251008180036.1770735-1-krishna.kurapati@oss.qualcomm.com/
arch/arm64/boot/dts/qcom/lemans-evk.dts | 122 +++++++++++++++++++++++-
arch/arm64/boot/dts/qcom/lemans.dtsi | 1 +
2 files changed, 121 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
index c7dc9b8f4457..2baad2612b16 100644
--- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
+++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
@@ -37,6 +37,35 @@ chosen {
stdout-path = "serial0:115200n8";
};
+ connector0 {
+ compatible = "usb-c-connector";
+ label = "USB0-Type-C";
+ data-role = "dual";
+ power-role = "dual";
+
+ vbus-supply = <&vbus_supply_regulator_0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb0_con_hs_ep: endpoint {
+ remote-endpoint = <&usb3_hs_ep>;
+ };
+ };
+ port@1 {
+ reg = <1>;
+
+ usb0_con_ss_ep: endpoint {
+ remote-endpoint = <&hd3ss3220_in_ep>;
+ };
+ };
+ };
+ };
+
edp0-connector {
compatible = "dp-connector";
label = "EDP0";
@@ -101,6 +130,15 @@ platform {
};
};
+ vbus_supply_regulator_0: vbus-supply-regulator-0 {
+ compatible = "regulator-fixed";
+ regulator-name = "vbus_supply_0";
+ gpio = <&expander1 2 GPIO_ACTIVE_HIGH>;
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ enable-active-high;
+ };
+
vmmc_sdc: regulator-vmmc-sdc {
compatible = "regulator-fixed";
@@ -453,6 +491,53 @@ &gpi_dma2 {
status = "okay";
};
+&pmm8654au_2_gpios {
+ usb0_intr_state: usb0-intr-state {
+ pins = "gpio5";
+ function = "normal";
+ input-enable;
+ bias-pull-up;
+ power-source = <0>;
+ };
+};
+
+&i2c11 {
+ status = "okay";
+
+ hd3ss3220@67 {
+ compatible = "ti,hd3ss3220";
+ reg = <0x67>;
+
+ interrupts-extended = <&pmm8654au_2_gpios 5 IRQ_TYPE_EDGE_FALLING>;
+
+ id-gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&usb_id>, <&usb0_intr_state>;
+ pinctrl-names = "default";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ hd3ss3220_in_ep: endpoint {
+ remote-endpoint = <&usb0_con_ss_ep>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ hd3ss3220_out_ep: endpoint {
+ remote-endpoint = <&usb3_ss_ep>;
+ };
+ };
+ };
+ };
+};
+
&i2c18 {
status = "okay";
@@ -718,11 +803,24 @@ wake-pins {
};
};
+ qup_i2c11_default: qup-i2c11-state {
+ pins = "gpio48", "gpio49";
+ function = "qup1_se4";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
sd_cd: sd-cd-state {
pins = "gpio36";
function = "gpio";
bias-pull-up;
};
+
+ usb_id: usb-id-state {
+ pins = "gpio50";
+ function = "gpio";
+ bias-pull-up;
+ };
};
&uart10 {
@@ -751,9 +849,29 @@ &ufs_mem_phy {
};
&usb_0 {
- dr_mode = "peripheral";
-
status = "okay";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ usb3_hs_ep: endpoint {
+ remote-endpoint = <&usb0_con_hs_ep>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ usb3_ss_ep: endpoint {
+ remote-endpoint = <&hd3ss3220_out_ep>;
+ };
+ };
+
+ };
};
&usb_0_hsphy {
diff --git a/arch/arm64/boot/dts/qcom/lemans.dtsi b/arch/arm64/boot/dts/qcom/lemans.dtsi
index cf685cb186ed..f624d8d4aa9d 100644
--- a/arch/arm64/boot/dts/qcom/lemans.dtsi
+++ b/arch/arm64/boot/dts/qcom/lemans.dtsi
@@ -3970,6 +3970,7 @@ usb_0: usb@a600000 {
snps,dis-u1-entry-quirk;
snps,dis-u2-entry-quirk;
+ usb-role-switch;
status = "disabled";
};
--
2.34.1
On 10/24/25 8:21 PM, Krishna Kurapati wrote:
> Enable OTG support for primary USB controller on EVK Platform. Add
> HD3SS3220 Type-C port controller present between Type-C port and SoC
> that provides role switch notifications to controller.
>
> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
> ---
> Changes in v3:
> - Moved "usb-role-switch" to lemans dtsi file
> - Moved vbus supply to connector node
>
> Link to v3 bindings and driver support:
> https://lore.kernel.org/all/20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com/
>
> Link to v2:
> https://lore.kernel.org/all/20251008180036.1770735-1-krishna.kurapati@oss.qualcomm.com/
>
> arch/arm64/boot/dts/qcom/lemans-evk.dts | 122 +++++++++++++++++++++++-
> arch/arm64/boot/dts/qcom/lemans.dtsi | 1 +
> 2 files changed, 121 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> index c7dc9b8f4457..2baad2612b16 100644
> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
> @@ -37,6 +37,35 @@ chosen {
> stdout-path = "serial0:115200n8";
> };
>
> + connector0 {
"connector-0"
[...]
> + vbus_supply_regulator_0: vbus-supply-regulator-0 {
Other regulators (as can be seen in the diff context below) are
named regulator-xyz-abc, please follow
> + compatible = "regulator-fixed";
> + regulator-name = "vbus_supply_0";
> + gpio = <&expander1 2 GPIO_ACTIVE_HIGH>;
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + enable-active-high;
> + };
> +
> vmmc_sdc: regulator-vmmc-sdc {
> compatible = "regulator-fixed";
[...]
> &usb_0 {
> - dr_mode = "peripheral";
> -
> status = "okay";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + usb3_hs_ep: endpoint {
Please define these ports in the SoC DTSI and plumb them through &labels
in this one
Konrad
On 10/27/2025 2:06 PM, Konrad Dybcio wrote:
> On 10/24/25 8:21 PM, Krishna Kurapati wrote:
>> Enable OTG support for primary USB controller on EVK Platform. Add
>> HD3SS3220 Type-C port controller present between Type-C port and SoC
>> that provides role switch notifications to controller.
>>
>> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
>> ---
>> Changes in v3:
>> - Moved "usb-role-switch" to lemans dtsi file
>> - Moved vbus supply to connector node
>>
>> Link to v3 bindings and driver support:
>> https://lore.kernel.org/all/20251024181832.2744502-1-krishna.kurapati@oss.qualcomm.com/
>>
>> Link to v2:
>> https://lore.kernel.org/all/20251008180036.1770735-1-krishna.kurapati@oss.qualcomm.com/
>>
>> arch/arm64/boot/dts/qcom/lemans-evk.dts | 122 +++++++++++++++++++++++-
>> arch/arm64/boot/dts/qcom/lemans.dtsi | 1 +
>> 2 files changed, 121 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/lemans-evk.dts b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>> index c7dc9b8f4457..2baad2612b16 100644
>> --- a/arch/arm64/boot/dts/qcom/lemans-evk.dts
>> +++ b/arch/arm64/boot/dts/qcom/lemans-evk.dts
>> @@ -37,6 +37,35 @@ chosen {
>> stdout-path = "serial0:115200n8";
>> };
>>
>> + connector0 {
>
> "connector-0"
>
> [...]
>
ACK.
>> + vbus_supply_regulator_0: vbus-supply-regulator-0 {
>
> Other regulators (as can be seen in the diff context below) are
> named regulator-xyz-abc, please follow
>
ACK.
>> + compatible = "regulator-fixed";
>> + regulator-name = "vbus_supply_0";
>> + gpio = <&expander1 2 GPIO_ACTIVE_HIGH>;
>> + regulator-min-microvolt = <5000000>;
>> + regulator-max-microvolt = <5000000>;
>> + enable-active-high;
>> + };
>> +
>> vmmc_sdc: regulator-vmmc-sdc {
>> compatible = "regulator-fixed";
>
> [...]
>
>> &usb_0 {
>> - dr_mode = "peripheral";
>> -
>> status = "okay";
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> +
>> + usb3_hs_ep: endpoint {
>
> Please define these ports in the SoC DTSI and plumb them through &labels
> in this one
>
ACK.
Will update in v4.
Regards,
Krishna,
© 2016 - 2026 Red Hat, Inc.