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
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
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
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
© 2016 - 2026 Red Hat, Inc.