[PATCH v3] arm64: dts: qcom: shikra: Add CYPD6129/CYPD6229 Type-C controller support

From: Akash Kumar

Date: Mon Oct 12 2026 - 05:49:05 EST


This series adds support for the Cypress cypd6129/cypd6229 dual
Type-C PD controllers used on the Shikra CQM/CQS/IQS platforms to
handle usb-role-switch, and wires up the corresponding DT nodes.

Signed-off-by: Akash Kumar <akakum@xxxxxxxxxxxxxxxx>
---
Patch v3 adds the Shikra board-specific Device Tree changes required to
connect the CYPD6129/CYPD6229 Type-C PD controllers to the USB controllers.

On the CQM and CQS platforms, enable the CYPD6129 controller on I2C3,
configure its GPIO136 interrupt, and connect its Type-C connector to USB2.
Both USB controllers are configured in OTG mode to allow role switching.

On the IQS platform, enable the CYPD6229 controller with the CYPD6129
fallback compatible, configure its GPIO50 interrupt, and describe both
Type-C connectors. The first connector is connected to USB2, while the
second connector is connected to USB1, including its SuperSpeed path.

The changes also add the required pinctrl configuration, wakeup-source
property, I2C alias, VBUS boost GPIO hog, and USB endpoint
remote-endpoint connections.

Link to v2: Link: https://lore.kernel.org/all/20260820145036.2035641-1-akash.kumar@xxxxxxxxxxxxxxxx/

Link to v1: https://lore.kernel.org/all/20260820145036.2035641-1-akash.kumar@xxxxxxxxxxxxxxxx/

Link to Driver and DT-binding change:
https://lore.kernel.org/all/20261012091658.635441-1-akash.kumar@xxxxxxxxxxxxxxxx/

base commit Link: https://lore.kernel.org/all/20260912-usb-shikra-v7-v9-0-c7b507a0ec27@xxxxxxxxxxxxxxxx/
commit e77b5e2b5816bfb8fab930156a320550ee5a0ffe

---
arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts | 57 ++++++++++
arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts | 57 ++++++++++
arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts | 109 ++++++++++++++++++++
3 files changed, 223 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
index 2d26435b257a..508c24a2ce99 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-cqm-evk.dts
@@ -14,6 +14,7 @@ / {
chassis-type = "embedded";

aliases {
+ i2c3 = &i2c3;
mmc0 = &sdhc_1;
serial0 = &uart0;
};
@@ -23,6 +24,43 @@ chosen {
};
};

+&i2c3 {
+ status = "okay";
+
+ typec@40 {
+ compatible = "cypress,cypd6129";
+ reg = <0x40>;
+ interrupts-extended = <&tlmm 136 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-0 = <&usb0_intr_state>;
+ pinctrl-names = "default";
+ wakeup-source;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ccg_typec_con0: connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ ucsi_ccg_port: endpoint {
+ remote-endpoint = <&usb_2_dwc3_hs>;
+ };
+ };
+ };
+ };
+ };
+};
+
&pm4125_hs_in {
remote-endpoint = <&usb_1_dwc3_hs>;
};
@@ -66,6 +104,15 @@ &sdhc_1 {
status = "okay";
};

+&tlmm {
+ usb0_intr_state: usb0-intr-state {
+ pins = "gpio136";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+};
+
&usb_1 {
dr_mode = "otg";
};
@@ -82,6 +129,16 @@ &usb_1_hsphy {
status = "okay";
};

+&usb_2 {
+ dr_mode = "otg";
+
+ port {
+ usb_2_dwc3_hs: endpoint {
+ remote-endpoint = <&ucsi_ccg_port>;
+ };
+ };
+};
+
&usb_2_hsphy {
vdd-supply = <&pm4125_l12>;
vdda-pll-supply = <&pm4125_l13>;
diff --git a/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts b/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
index fcafd8aa6384..eaa79b2960a9 100644
--- a/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-cqs-evk.dts
@@ -14,6 +14,7 @@ / {
chassis-type = "embedded";

aliases {
+ i2c3 = &i2c3;
mmc0 = &sdhc_1;
serial0 = &uart0;
};
@@ -23,6 +24,43 @@ chosen {
};
};

+&i2c3 {
+ status = "okay";
+
+ typec@40 {
+ compatible = "cypress,cypd6129";
+ reg = <0x40>;
+ interrupts-extended = <&tlmm 136 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-0 = <&usb0_intr_state>;
+ pinctrl-names = "default";
+ wakeup-source;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ccg_typec_con0: connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "USB-C";
+ data-role = "dual";
+ power-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ ucsi_ccg_port: endpoint {
+ remote-endpoint = <&usb_2_dwc3_hs>;
+ };
+ };
+ };
+ };
+ };
+};
+
&pm4125_hs_in {
remote-endpoint = <&usb_1_dwc3_hs>;
};
@@ -66,6 +104,15 @@ &sdhc_1 {
status = "okay";
};

+&tlmm {
+ usb0_intr_state: usb0-intr-state {
+ pins = "gpio136";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+};
+
&usb_1 {
dr_mode = "otg";
};
@@ -82,6 +129,16 @@ &usb_1_hsphy {
status = "okay";
};

+&usb_2 {
+ dr_mode = "otg";
+
+ port {
+ usb_2_dwc3_hs: endpoint {
+ remote-endpoint = <&ucsi_ccg_port>;
+ };
+ };
+};
+
&usb_2_hsphy {
vdd-supply = <&pm4125_l12>;
vdda-pll-supply = <&pm4125_l13>;
diff --git a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
index 779b9582c011..f7dc3026d028 100644
--- a/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
+++ b/arch/arm64/boot/dts/qcom/shikra-iqs-evk.dts
@@ -14,6 +14,7 @@ / {
chassis-type = "embedded";

aliases {
+ i2c3 = &i2c3;
mmc0 = &sdhc_1;
serial0 = &uart0;
};
@@ -23,6 +24,72 @@ chosen {
};
};

+&i2c3 {
+ status = "okay";
+
+ typec@40 {
+ compatible = "cypress,cypd6229", "cypress,cypd6129";
+ reg = <0x40>;
+ interrupts-extended = <&tlmm 50 IRQ_TYPE_LEVEL_LOW>;
+ pinctrl-0 = <&usb0_intr_state>;
+ pinctrl-names = "default";
+ wakeup-source;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ccg_typec_con0: connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ label = "USB2-Type-C";
+ data-role = "dual";
+ power-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ ucsi_ccg_port0_hs: endpoint {
+ remote-endpoint = <&usb_2_dwc3_hs>;
+ };
+ };
+ };
+ };
+
+ ccg_typec_con1: connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ label = "USB3-Type-C";
+ data-role = "dual";
+ power-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ ucsi_ccg_port_1_hs: endpoint {
+ remote-endpoint = <&usb_1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ ucsi_ccg_port_1_ss: endpoint {
+ remote-endpoint = <&usb_qmpphy_out>;
+ };
+ };
+ };
+ };
+ };
+};
+
&remoteproc_cdsp {
firmware-name = "qcom/shikra/cdsp.mbn";

@@ -58,6 +125,32 @@ &sdhc_1 {
status = "okay";
};

+&tlmm {
+ vbus_boost_5v: vbus-boost-5v-hog {
+ gpio-hog;
+ gpios = <79 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "vbus-boost-5v";
+ };
+
+ usb0_intr_state: usb0-intr-state {
+ pins = "gpio50";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+};
+
+&usb_1 {
+ dr_mode = "otg";
+
+ status = "okay";
+};
+
+&usb_1_dwc3_hs {
+ remote-endpoint = <&ucsi_ccg_port_1_hs>;
+};
+
&usb_1_hsphy {
vdd-supply = <&pm8150_l4>;
vdda-pll-supply = <&pm8150_l12>;
@@ -66,6 +159,18 @@ &usb_1_hsphy {
status = "okay";
};

+&usb_2 {
+ dr_mode = "otg";
+
+ status = "okay";
+
+ port {
+ usb_2_dwc3_hs: endpoint {
+ remote-endpoint = <&ucsi_ccg_port0_hs>;
+ };
+ };
+};
+
&usb_2_hsphy {
vdd-supply = <&pm8150_l4>;
vdda-pll-supply = <&pm8150_l12>;
@@ -80,3 +185,7 @@ &usb_qmpphy {

status = "okay";
};
+
+&usb_qmpphy_out {
+ remote-endpoint = <&ucsi_ccg_port_1_ss>;
+};
--
2.43.0