[PATCH v3 4/4] arm64: dts: qcom: Add base PURWA-IOT-EVK board

YijieYang posted 4 patches 3 weeks, 6 days ago
There is a newer version of this series
[PATCH v3 4/4] arm64: dts: qcom: Add base PURWA-IOT-EVK board
Posted by YijieYang 3 weeks, 6 days ago
From: Yijie Yang <yijie.yang@oss.qualcomm.com>

The PURWA-IOT-EVK is an evaluation platform for IoT products, composed of
the Purwa IoT SoM and a carrier board. Together, they form a complete
embedded system capable of booting to UART.

PURWA-IOT-EVK uses the PS8833 as a retimer for USB0, unlike HAMOA-IOT-EVK.
Meanwhile, USB0 bypasses the SBU selector FSUSB42. As a result, the glink
topology differs from that of HAMOA-IOT-EVK.

Make the following peripherals on the carrier board enabled:
- UART
- On-board regulators
- USB Type-C mux
- Pinctrl
- Embedded USB (EUSB) repeaters
- NVMe
- pmic-glink
- USB DisplayPorts
- Bluetooth
- WLAN
- Audio
- PCIe ports for PCIe3 through PCIe6a

Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../{hamoa-iot-evk.dts => purwa-iot-evk.dts}  | 102 +++++++++++-------
 2 files changed, 65 insertions(+), 38 deletions(-)
 copy arch/arm64/boot/dts/qcom/{hamoa-iot-evk.dts => purwa-iot-evk.dts} (95%)

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index a5d6f451f85c..d276b3cf14ee 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -126,6 +126,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-sony-xperia-yoshino-lilac.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-sony-xperia-yoshino-maple.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-sony-xperia-yoshino-poplar.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8998-xiaomi-sagit.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= purwa-iot-evk.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-fairphone-fp5.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-idp.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= qcm6490-particle-tachyon.dtb
diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/purwa-iot-evk.dts
similarity index 95%
copy from arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
copy to arch/arm64/boot/dts/qcom/purwa-iot-evk.dts
index 2390648a248f..6f779be3c6d7 100644
--- a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
+++ b/arch/arm64/boot/dts/qcom/purwa-iot-evk.dts
@@ -6,12 +6,12 @@
 /dts-v1/;
 
 #include <dt-bindings/leds/common.h>
-#include "hamoa-iot-som.dtsi"
+#include "purwa-iot-som.dtsi"
 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
 
 / {
-	model = "Qualcomm Technologies, Inc. Hamoa IoT EVK";
-	compatible = "qcom,hamoa-iot-evk", "qcom,hamoa-iot-som", "qcom,x1e80100";
+	model = "Qualcomm Technologies, Inc. Purwa IoT EVK";
+	compatible = "qcom,purwa-iot-evk", "qcom,purwa-iot-som", "qcom,x1p42100";
 	chassis-type = "embedded";
 
 	aliases {
@@ -118,15 +118,15 @@ port@1 {
 					reg = <1>;
 
 					pmic_glink_ss0_ss_in: endpoint {
-						remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+						remote-endpoint = <&retimer_ss0_ss_out>;
 					};
 				};
 
 				port@2 {
 					reg = <2>;
 
-					pmic_glink_ss0_sbu: endpoint {
-						remote-endpoint = <&usb_1_ss0_sbu_mux>;
+					pmic_glink_ss0_con_sbu_in: endpoint {
+						remote-endpoint = <&retimer_ss0_con_sbu_out>;
 					};
 				};
 			};
@@ -618,25 +618,6 @@ platform {
 		};
 	};
 
-	usb-1-ss0-sbu-mux {
-		compatible = "onnn,fsusb42", "gpio-sbu-mux";
-
-		enable-gpios = <&tlmm 168 GPIO_ACTIVE_LOW>;
-		select-gpios = <&tlmm 167 GPIO_ACTIVE_HIGH>;
-
-		pinctrl-0 = <&usb_1_ss0_sbu_default>;
-		pinctrl-names = "default";
-
-		mode-switch;
-		orientation-switch;
-
-		port {
-			usb_1_ss0_sbu_mux: endpoint {
-				remote-endpoint = <&pmic_glink_ss0_sbu>;
-			};
-		};
-	};
-
 	wcn7850-pmu {
 		compatible = "qcom,wcn7850-pmu";
 
@@ -753,6 +734,63 @@ retimer_ss2_con_sbu_out: endpoint {
 	};
 };
 
+&i2c3 {
+	clock-frequency = <400000>;
+
+	status = "okay";
+
+	typec-mux@8 {
+		compatible = "parade,ps8830";
+		reg = <0x8>;
+
+		clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+		vdd-supply = <&vreg_rtmr0_1p15>;
+		vdd33-supply = <&vreg_rtmr0_3p3>;
+		vdd33-cap-supply = <&vreg_rtmr0_3p3>;
+		vddar-supply = <&vreg_rtmr0_1p15>;
+		vddat-supply = <&vreg_rtmr0_1p15>;
+		vddio-supply = <&vreg_rtmr0_1p8>;
+
+		reset-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_LOW>;
+
+		pinctrl-0 = <&rtmr0_default>;
+		pinctrl-names = "default";
+
+		retimer-switch;
+		orientation-switch;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+
+				retimer_ss0_ss_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss0_ss_in>;
+				};
+			};
+
+			port@1 {
+				reg = <1>;
+
+				retimer_ss0_ss_in: endpoint {
+					remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+				};
+			};
+
+			port@2 {
+				reg = <2>;
+
+				retimer_ss0_con_sbu_out: endpoint {
+					remote-endpoint = <&pmic_glink_ss0_con_sbu_in>;
+				};
+			};
+		};
+	};
+};
+
 &i2c5 {
 	clock-frequency = <400000>;
 
@@ -1102,9 +1140,7 @@ edp_bl_reg_en: edp-bl-reg-en-state {
 		pins = "gpio10";
 		function = "normal";
 	};
-};
 
-&pmc8380_3_gpios {
 	pm_sde7_aux_3p3_en: pcie-aux-3p3-default-state {
 		pins = "gpio8";
 		function = "normal";
@@ -1171,16 +1207,6 @@ &smb2360_2_eusb2_repeater {
 	vdd3-supply = <&vreg_l8b_3p0>;
 };
 
-&spi11 {
-	status = "okay";
-
-	tpm@0 {
-		compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
-		reg = <0>;
-		spi-max-frequency = <20000000>;
-	};
-};
-
 &swr0 {
 	status = "okay";
 
@@ -1470,7 +1496,7 @@ &usb_1_ss0_hsphy {
 };
 
 &usb_1_ss0_qmpphy_out {
-	remote-endpoint = <&pmic_glink_ss0_ss_in>;
+	remote-endpoint = <&retimer_ss0_ss_in>;
 };
 
 &usb_1_ss1_dwc3_hs {
-- 
2.34.1
Re: [PATCH v3 4/4] arm64: dts: qcom: Add base PURWA-IOT-EVK board
Posted by Dmitry Baryshkov 3 weeks, 6 days ago
On Tue, Jan 13, 2026 at 06:28:16PM +0800, YijieYang wrote:
> From: Yijie Yang <yijie.yang@oss.qualcomm.com>
> 
> The PURWA-IOT-EVK is an evaluation platform for IoT products, composed of
> the Purwa IoT SoM and a carrier board. Together, they form a complete
> embedded system capable of booting to UART.
> 
> PURWA-IOT-EVK uses the PS8833 as a retimer for USB0, unlike HAMOA-IOT-EVK.
> Meanwhile, USB0 bypasses the SBU selector FSUSB42. As a result, the glink
> topology differs from that of HAMOA-IOT-EVK.

What is "glink topology"?

> 
> Make the following peripherals on the carrier board enabled:
> - UART
> - On-board regulators
> - USB Type-C mux
> - Pinctrl
> - Embedded USB (EUSB) repeaters
> - NVMe
> - pmic-glink
> - USB DisplayPorts
> - Bluetooth
> - WLAN
> - Audio
> - PCIe ports for PCIe3 through PCIe6a
> 
> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../{hamoa-iot-evk.dts => purwa-iot-evk.dts}  | 102 +++++++++++-------
>  2 files changed, 65 insertions(+), 38 deletions(-)
>  copy arch/arm64/boot/dts/qcom/{hamoa-iot-evk.dts => purwa-iot-evk.dts} (95%)
> 
> @@ -1102,9 +1140,7 @@ edp_bl_reg_en: edp-bl-reg-en-state {
>  		pins = "gpio10";
>  		function = "normal";
>  	};
> -};
>  
> -&pmc8380_3_gpios {

This needs to be fixed in hamoa-iot-evk.dtsi.

>  	pm_sde7_aux_3p3_en: pcie-aux-3p3-default-state {
>  		pins = "gpio8";
>  		function = "normal";
> @@ -1171,16 +1207,6 @@ &smb2360_2_eusb2_repeater {
>  	vdd3-supply = <&vreg_l8b_3p0>;
>  };
>  
> -&spi11 {
> -	status = "okay";
> -
> -	tpm@0 {
> -		compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";

No TPM on the board?

> -		reg = <0>;
> -		spi-max-frequency = <20000000>;
> -	};
> -};
> -
>  &swr0 {
>  	status = "okay";
>  
> @@ -1470,7 +1496,7 @@ &usb_1_ss0_hsphy {
>  };
>  
>  &usb_1_ss0_qmpphy_out {
> -	remote-endpoint = <&pmic_glink_ss0_ss_in>;
> +	remote-endpoint = <&retimer_ss0_ss_in>;
>  };
>  
>  &usb_1_ss1_dwc3_hs {
> -- 
> 2.34.1
> 

-- 
With best wishes
Dmitry
Re: [PATCH v3 4/4] arm64: dts: qcom: Add base PURWA-IOT-EVK board
Posted by Yijie Yang 3 weeks, 5 days ago

On 1/13/2026 6:52 PM, Dmitry Baryshkov wrote:
> On Tue, Jan 13, 2026 at 06:28:16PM +0800, YijieYang wrote:
>> From: Yijie Yang <yijie.yang@oss.qualcomm.com>
>>
>> The PURWA-IOT-EVK is an evaluation platform for IoT products, composed of
>> the Purwa IoT SoM and a carrier board. Together, they form a complete
>> embedded system capable of booting to UART.
>>
>> PURWA-IOT-EVK uses the PS8833 as a retimer for USB0, unlike HAMOA-IOT-EVK.
>> Meanwhile, USB0 bypasses the SBU selector FSUSB42. As a result, the glink
>> topology differs from that of HAMOA-IOT-EVK.
> 
> What is "glink topology"?

What I’m referring to here is that the graph composed of glink nodes and 
their peers.

> 
>>
>> Make the following peripherals on the carrier board enabled:
>> - UART
>> - On-board regulators
>> - USB Type-C mux
>> - Pinctrl
>> - Embedded USB (EUSB) repeaters
>> - NVMe
>> - pmic-glink
>> - USB DisplayPorts
>> - Bluetooth
>> - WLAN
>> - Audio
>> - PCIe ports for PCIe3 through PCIe6a
>>
>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
>> ---
>>   arch/arm64/boot/dts/qcom/Makefile             |   1 +
>>   .../{hamoa-iot-evk.dts => purwa-iot-evk.dts}  | 102 +++++++++++-------
>>   2 files changed, 65 insertions(+), 38 deletions(-)
>>   copy arch/arm64/boot/dts/qcom/{hamoa-iot-evk.dts => purwa-iot-evk.dts} (95%)
>>
>> @@ -1102,9 +1140,7 @@ edp_bl_reg_en: edp-bl-reg-en-state {
>>   		pins = "gpio10";
>>   		function = "normal";
>>   	};
>> -};
>>   
>> -&pmc8380_3_gpios {
> 
> This needs to be fixed in hamoa-iot-evk.dtsi.

Will do.

> 
>>   	pm_sde7_aux_3p3_en: pcie-aux-3p3-default-state {
>>   		pins = "gpio8";
>>   		function = "normal";
>> @@ -1171,16 +1207,6 @@ &smb2360_2_eusb2_repeater {
>>   	vdd3-supply = <&vreg_l8b_3p0>;
>>   };
>>   
>> -&spi11 {
>> -	status = "okay";
>> -
>> -	tpm@0 {
>> -		compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
> 
> No TPM on the board?

It has not been verified yet since this patch set was sent out; I will 
add it.

> 
>> -		reg = <0>;
>> -		spi-max-frequency = <20000000>;
>> -	};
>> -};
>> -
>>   &swr0 {
>>   	status = "okay";
>>   
>> @@ -1470,7 +1496,7 @@ &usb_1_ss0_hsphy {
>>   };
>>   
>>   &usb_1_ss0_qmpphy_out {
>> -	remote-endpoint = <&pmic_glink_ss0_ss_in>;
>> +	remote-endpoint = <&retimer_ss0_ss_in>;
>>   };
>>   
>>   &usb_1_ss1_dwc3_hs {
>> -- 
>> 2.34.1
>>
> 

-- 
Best Regards,
Yijie

Re: [PATCH v3 4/4] arm64: dts: qcom: Add base PURWA-IOT-EVK board
Posted by Dmitry Baryshkov 3 weeks, 5 days ago
On Wed, Jan 14, 2026 at 10:27:16AM +0800, Yijie Yang wrote:
> 
> 
> On 1/13/2026 6:52 PM, Dmitry Baryshkov wrote:
> > On Tue, Jan 13, 2026 at 06:28:16PM +0800, YijieYang wrote:
> > > From: Yijie Yang <yijie.yang@oss.qualcomm.com>
> > > 
> > > The PURWA-IOT-EVK is an evaluation platform for IoT products, composed of
> > > the Purwa IoT SoM and a carrier board. Together, they form a complete
> > > embedded system capable of booting to UART.
> > > 
> > > PURWA-IOT-EVK uses the PS8833 as a retimer for USB0, unlike HAMOA-IOT-EVK.
> > > Meanwhile, USB0 bypasses the SBU selector FSUSB42. As a result, the glink
> > > topology differs from that of HAMOA-IOT-EVK.
> > 
> > What is "glink topology"?
> 
> What I’m referring to here is that the graph composed of glink nodes and
> their peers.

Then:

As a result, implement corresponding changes to OF graph connections
between USB-C connectors and USB host controllers.

Or just drop this phrase completely.

> 
> > 
> > > 
> > > Make the following peripherals on the carrier board enabled:
> > > - UART
> > > - On-board regulators
> > > - USB Type-C mux
> > > - Pinctrl
> > > - Embedded USB (EUSB) repeaters
> > > - NVMe
> > > - pmic-glink
> > > - USB DisplayPorts
> > > - Bluetooth
> > > - WLAN
> > > - Audio
> > > - PCIe ports for PCIe3 through PCIe6a
> > > 
> > > Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> > > ---
> > >   arch/arm64/boot/dts/qcom/Makefile             |   1 +
> > >   .../{hamoa-iot-evk.dts => purwa-iot-evk.dts}  | 102 +++++++++++-------
> > >   2 files changed, 65 insertions(+), 38 deletions(-)
> > >   copy arch/arm64/boot/dts/qcom/{hamoa-iot-evk.dts => purwa-iot-evk.dts} (95%)
> > > 
> > > @@ -1102,9 +1140,7 @@ edp_bl_reg_en: edp-bl-reg-en-state {
> > >   		pins = "gpio10";
> > >   		function = "normal";
> > >   	};
> > > -};
> > > -&pmc8380_3_gpios {
> > 
> > This needs to be fixed in hamoa-iot-evk.dtsi.
> 
> Will do.
> 
> > 
> > >   	pm_sde7_aux_3p3_en: pcie-aux-3p3-default-state {
> > >   		pins = "gpio8";
> > >   		function = "normal";
> > > @@ -1171,16 +1207,6 @@ &smb2360_2_eusb2_repeater {
> > >   	vdd3-supply = <&vreg_l8b_3p0>;
> > >   };
> > > -&spi11 {
> > > -	status = "okay";
> > > -
> > > -	tpm@0 {
> > > -		compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
> > 
> > No TPM on the board?
> 
> It has not been verified yet since this patch set was sent out; I will add
> it.
> 
> > 
> > > -		reg = <0>;
> > > -		spi-max-frequency = <20000000>;
> > > -	};
> > > -};
> > > -
> > >   &swr0 {
> > >   	status = "okay";
> > > @@ -1470,7 +1496,7 @@ &usb_1_ss0_hsphy {
> > >   };
> > >   &usb_1_ss0_qmpphy_out {
> > > -	remote-endpoint = <&pmic_glink_ss0_ss_in>;
> > > +	remote-endpoint = <&retimer_ss0_ss_in>;
> > >   };
> > >   &usb_1_ss1_dwc3_hs {
> > > -- 
> > > 2.34.1
> > > 
> > 
> 
> -- 
> Best Regards,
> Yijie
> 

-- 
With best wishes
Dmitry