The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of
the Hamoa IoT SoM and a carrier board. Together, they form a complete
embedded system capable of booting to UART.
This change enables the following peripherals on the carrier board:
- UART
- On-board regulators
- USB Type-C mux
- Pinctrl
- Embedded USB (EUSB) repeaters
- NVMe
- pmic-glink
- USB DisplayPorts
- Bluetooth
- Graphic
- Audio
Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>,
Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth)
<quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts)
<quic_yongmou@quicinc.com>.
Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++
2 files changed, 1248 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 94a84770b080..5e19535ad63d 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb
dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb
+dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5018-rdp432-c2.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5018-tplink-archer-ax55-v1.dtb
dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp441.dtb
diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
new file mode 100644
index 000000000000..b1a8380d6639
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
@@ -0,0 +1,1247 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+/dts-v1/;
+
+#include "hamoa-iot-som.dtsi"
+
+/ {
+ model = "Qualcomm Technologies, Inc. Hamoa IoT EVK";
+ compatible = "qcom,hamoa-iot-evk", "qcom,hamoa-iot-som", "qcom,x1e80100";
+ chassis-type = "embedded";
+
+ aliases {
+ serial0 = &uart21;
+ serial1 = &uart14;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ pmic-glink {
+ compatible = "qcom,x1e80100-pmic-glink",
+ "qcom,sm8550-pmic-glink",
+ "qcom,pmic-glink";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>,
+ <&tlmm 123 GPIO_ACTIVE_HIGH>,
+ <&tlmm 125 GPIO_ACTIVE_HIGH>;
+
+ connector@0 {
+ compatible = "usb-c-connector";
+ reg = <0>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_ss0_hs_in: endpoint {
+ remote-endpoint = <&usb_1_ss0_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss0_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss0_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss0_sbu: endpoint {
+ remote-endpoint = <&usb_1_ss0_sbu_mux>;
+ };
+ };
+ };
+ };
+
+ connector@1 {
+ compatible = "usb-c-connector";
+ reg = <1>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_ss1_hs_in: endpoint {
+ remote-endpoint = <&usb_1_ss1_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss1_ss_in: endpoint {
+ remote-endpoint = <&retimer_ss1_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss1_con_sbu_in: endpoint {
+ remote-endpoint = <&retimer_ss1_con_sbu_out>;
+ };
+ };
+ };
+ };
+
+ connector@2 {
+ compatible = "usb-c-connector";
+ reg = <2>;
+ power-role = "dual";
+ data-role = "dual";
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ pmic_glink_ss2_hs_in: endpoint {
+ remote-endpoint = <&usb_1_ss2_dwc3_hs>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ pmic_glink_ss2_ss_in: endpoint {
+ remote-endpoint = <&retimer_ss2_ss_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ pmic_glink_ss2_con_sbu_in: endpoint {
+ remote-endpoint = <&retimer_ss2_con_sbu_out>;
+ };
+ };
+ };
+ };
+ };
+
+ vreg_edp_3p3: regulator-edp-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_EDP_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 70 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&edp_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ sound {
+ compatible = "qcom,x1e80100-sndcard";
+ model = "X1E80100-EVK";
+ audio-routing = "WooferLeft IN",
+ "WSA WSA_SPK1 OUT",
+ "TweeterLeft IN",
+ "WSA WSA_SPK2 OUT",
+ "WooferRight IN",
+ "WSA2 WSA_SPK2 OUT",
+ "TweeterRight IN",
+ "WSA2 WSA_SPK2 OUT",
+ "IN1_HPHL",
+ "HPHL_OUT",
+ "IN2_HPHR",
+ "HPHR_OUT",
+ "AMIC2",
+ "MIC BIAS2",
+ "VA DMIC0",
+ "MIC BIAS3",
+ "VA DMIC1",
+ "MIC BIAS3",
+ "VA DMIC2",
+ "MIC BIAS1",
+ "VA DMIC3",
+ "MIC BIAS1",
+ "VA DMIC0",
+ "VA MIC BIAS3",
+ "VA DMIC1",
+ "VA MIC BIAS3",
+ "VA DMIC2",
+ "VA MIC BIAS1",
+ "VA DMIC3",
+ "VA MIC BIAS1",
+ "TX SWR_INPUT1",
+ "ADC2_OUTPUT";
+
+ wcd-playback-dai-link {
+ link-name = "WCD Playback";
+
+ codec {
+ sound-dai = <&wcd938x 0>, <&swr1 0>, <&lpass_rxmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai RX_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wcd-capture-dai-link {
+ link-name = "WCD Capture";
+
+ codec {
+ sound-dai = <&wcd938x 1>, <&swr2 1>, <&lpass_txmacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai TX_CODEC_DMA_TX_3>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ wsa-dai-link {
+ link-name = "WSA Playback";
+
+ codec {
+ sound-dai = <&left_woofer>,
+ <&left_tweeter>,
+ <&swr0 0>,
+ <&lpass_wsamacro 0>,
+ <&right_woofer>,
+ <&right_tweeter>,
+ <&swr3 0>,
+ <&lpass_wsa2macro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai WSA_CODEC_DMA_RX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+
+ va-dai-link {
+ link-name = "VA Capture";
+
+ codec {
+ sound-dai = <&lpass_vamacro 0>;
+ };
+
+ cpu {
+ sound-dai = <&q6apmbedai VA_CODEC_DMA_TX_0>;
+ };
+
+ platform {
+ sound-dai = <&q6apm>;
+ };
+ };
+ };
+
+ vph_pwr: regulator-vph-pwr {
+ compatible = "regulator-fixed";
+
+ regulator-name = "vph_pwr";
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ vreg_nvme: regulator-nvme {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_NVME_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 18 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&nvme_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ /* Left unused as the retimer is not used on this board. */
+ vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&pmc8380_5_gpios 8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb0_pwr_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr0_1p8: regulator-rtmr0-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&pm8550ve_9_gpios 8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb0_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr0_3p3: regulator-rtmr0-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR0_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb0_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_1p15: regulator-rtmr1-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&tlmm 188 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb1_pwr_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_1p8: regulator-rtmr1-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 175 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb1_pwr_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr1_3p3: regulator-rtmr1-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR1_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 186 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb1_pwr_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_1p15: regulator-rtmr2-1p15 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_1P15";
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+
+ gpio = <&tlmm 189 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb2_pwr_1p15_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_1p8: regulator-rtmr2-1p8 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_1P8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 126 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb2_pwr_1p8_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_rtmr2_3p3: regulator-rtmr2-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_RTMR2_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 187 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&usb2_pwr_3p3_reg_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ vreg_wcn_3p3: regulator-wcn-3p3 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_WCN_3P3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 214 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&wcn_sw_en>;
+ pinctrl-names = "default";
+
+ regulator-always-on;
+ };
+
+ 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>;
+ };
+ };
+ };
+
+ /*
+ * TODO: These two regulators are actually part of the removable M.2
+ * card and not the CRD mainboard. Need to describe this differently.
+ * Functionally it works correctly, because all we need to do is to
+ * turn on the actual 3.3V supply above.
+ */
+ vreg_wcn_0p95: regulator-wcn-0p95 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_WCN_0P95";
+ regulator-min-microvolt = <950000>;
+ regulator-max-microvolt = <950000>;
+
+ vin-supply = <&vreg_wcn_3p3>;
+ };
+
+ vreg_wcn_1p9: regulator-wcn-1p9 {
+ compatible = "regulator-fixed";
+
+ regulator-name = "VREG_WCN_1P9";
+ regulator-min-microvolt = <1900000>;
+ regulator-max-microvolt = <1900000>;
+
+ vin-supply = <&vreg_wcn_3p3>;
+ };
+
+ vreg_wwan: regulator-wwan {
+ compatible = "regulator-fixed";
+
+ regulator-name = "SDX_VPH_PWR";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 221 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-0 = <&wwan_sw_en>;
+ pinctrl-names = "default";
+
+ regulator-boot-on;
+ };
+
+ wcd938x: audio-codec {
+ compatible = "qcom,wcd9385-codec";
+
+ pinctrl-0 = <&wcd_default>;
+ pinctrl-names = "default";
+
+ reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>;
+
+ qcom,micbias1-microvolt = <1800000>;
+ qcom,micbias2-microvolt = <1800000>;
+ qcom,micbias3-microvolt = <1800000>;
+ qcom,micbias4-microvolt = <1800000>;
+ qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000
+ 500000 500000 500000 500000>;
+ qcom,mbhc-headset-vthreshold-microvolt = <1700000>;
+ qcom,mbhc-headphone-vthreshold-microvolt = <50000>;
+ qcom,rx-device = <&wcd_rx>;
+ qcom,tx-device = <&wcd_tx>;
+
+ vdd-buck-supply = <&vreg_l15b_1p8>;
+ vdd-rxtx-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l15b_1p8>;
+ vdd-mic-bias-supply = <&vreg_bob1>;
+
+ #sound-dai-cells = <1>;
+ };
+
+ wcn7850-pmu {
+ compatible = "qcom,wcn7850-pmu";
+
+ vdd-supply = <&vreg_wcn_0p95>;
+ vddio-supply = <&vreg_l15b_1p8>;
+ vddaon-supply = <&vreg_wcn_0p95>;
+ vdddig-supply = <&vreg_wcn_0p95>;
+ vddrfa1p2-supply = <&vreg_wcn_1p9>;
+ vddrfa1p8-supply = <&vreg_wcn_1p9>;
+
+ bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+
+ pinctrl-0 = <&wcn_bt_en>;
+ pinctrl-names = "default";
+
+ regulators {
+ vreg_pmu_rfa_cmn: ldo0 {
+ regulator-name = "vreg_pmu_rfa_cmn";
+ };
+
+ vreg_pmu_aon_0p59: ldo1 {
+ regulator-name = "vreg_pmu_aon_0p59";
+ };
+
+ vreg_pmu_wlcx_0p8: ldo2 {
+ regulator-name = "vreg_pmu_wlcx_0p8";
+ };
+
+ vreg_pmu_wlmx_0p85: ldo3 {
+ regulator-name = "vreg_pmu_wlmx_0p85";
+ };
+
+ vreg_pmu_btcmx_0p85: ldo4 {
+ regulator-name = "vreg_pmu_btcmx_0p85";
+ };
+
+ vreg_pmu_rfa_0p8: ldo5 {
+ regulator-name = "vreg_pmu_rfa_0p8";
+ };
+
+ vreg_pmu_rfa_1p2: ldo6 {
+ regulator-name = "vreg_pmu_rfa_1p2";
+ };
+
+ vreg_pmu_rfa_1p8: ldo7 {
+ regulator-name = "vreg_pmu_rfa_1p8";
+ };
+
+ vreg_pmu_pcie_0p9: ldo8 {
+ regulator-name = "vreg_pmu_pcie_0p9";
+ };
+
+ vreg_pmu_pcie_1p8: ldo9 {
+ regulator-name = "vreg_pmu_pcie_1p8";
+ };
+ };
+ };
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/x1e80100/gen70500_zap.mbn";
+};
+
+&i2c1 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x08>;
+
+ clocks = <&rpmhcc RPMH_RF_CLK5>;
+
+ vdd-supply = <&vreg_rtmr2_1p15>;
+ vdd33-supply = <&vreg_rtmr2_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr2_3p3>;
+ vddar-supply = <&vreg_rtmr2_1p15>;
+ vddat-supply = <&vreg_rtmr2_1p15>;
+ vddio-supply = <&vreg_rtmr2_1p8>;
+
+ reset-gpios = <&tlmm 185 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&rtmr2_default>;
+ pinctrl-names = "default";
+
+ orientation-switch;
+ retimer-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ retimer_ss2_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss2_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ retimer_ss2_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss2_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ retimer_ss2_con_sbu_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss2_con_sbu_in>;
+ };
+ };
+ };
+ };
+};
+
+&i2c5 {
+ clock-frequency = <400000>;
+ status = "okay";
+
+ eusb3_repeater: redriver@47 {
+ compatible = "nxp,ptn3222";
+ reg = <0x47>;
+ #phy-cells = <0>;
+
+ vdd3v3-supply = <&vreg_l13b_3p0>;
+ vdd1v8-supply = <&vreg_l4b_1p8>;
+
+ reset-gpios = <&tlmm 6 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&eusb3_reset_n>;
+ pinctrl-names = "default";
+ };
+
+ eusb5_repeater: redriver@43 {
+ compatible = "nxp,ptn3222";
+ reg = <0x43>;
+ #phy-cells = <0>;
+
+ vdd3v3-supply = <&vreg_l13b_3p0>;
+ vdd1v8-supply = <&vreg_l4b_1p8>;
+
+ reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&eusb5_reset_n>;
+ pinctrl-names = "default";
+ };
+
+ eusb6_repeater: redriver@4f {
+ compatible = "nxp,ptn3222";
+ reg = <0x4f>;
+ #phy-cells = <0>;
+
+ vdd3v3-supply = <&vreg_l13b_3p0>;
+ vdd1v8-supply = <&vreg_l4b_1p8>;
+
+ reset-gpios = <&tlmm 184 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&eusb6_reset_n>;
+ pinctrl-names = "default";
+ };
+};
+
+&i2c7 {
+ clock-frequency = <400000>;
+
+ status = "okay";
+
+ typec-mux@8 {
+ compatible = "parade,ps8830";
+ reg = <0x8>;
+
+ clocks = <&rpmhcc RPMH_RF_CLK4>;
+
+ vdd-supply = <&vreg_rtmr1_1p15>;
+ vdd33-supply = <&vreg_rtmr1_3p3>;
+ vdd33-cap-supply = <&vreg_rtmr1_3p3>;
+ vddar-supply = <&vreg_rtmr1_1p15>;
+ vddat-supply = <&vreg_rtmr1_1p15>;
+ vddio-supply = <&vreg_rtmr1_1p8>;
+
+ reset-gpios = <&tlmm 176 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&rtmr1_default>;
+ pinctrl-names = "default";
+
+ retimer-switch;
+ orientation-switch;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ retimer_ss1_ss_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss1_ss_in>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ retimer_ss1_ss_in: endpoint {
+ remote-endpoint = <&usb_1_ss1_qmpphy_out>;
+ };
+ };
+
+ port@2 {
+ reg = <2>;
+
+ retimer_ss1_con_sbu_out: endpoint {
+ remote-endpoint = <&pmic_glink_ss1_con_sbu_in>;
+ };
+ };
+ };
+ };
+};
+
+&lpass_tlmm {
+ spkr_01_sd_n_active: spkr-01-sd-n-active-state {
+ pins = "gpio12";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-low;
+ };
+
+ spkr_23_sd_n_active: spkr-23-sd-n-active-state {
+ pins = "gpio13";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-low;
+ };
+};
+
+&lpass_vamacro {
+ pinctrl-0 = <&dmic01_default>, <&dmic23_default>;
+ pinctrl-names = "default";
+
+ vdd-micb-supply = <&vreg_l1b_1p8>;
+ qcom,dmic-sample-rate = <4800000>;
+};
+
+&mdss {
+ status = "okay";
+};
+
+&mdss_dp0 {
+ status = "okay";
+};
+
+&mdss_dp0_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp1 {
+ status = "okay";
+};
+
+&mdss_dp1_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp2 {
+ status = "okay";
+};
+
+&mdss_dp2_out {
+ data-lanes = <0 1>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+};
+
+&mdss_dp3 {
+ /delete-property/ #sound-dai-cells;
+
+ status = "okay";
+
+ aux-bus {
+ panel {
+ compatible = "edp-panel";
+ power-supply = <&vreg_edp_3p3>;
+
+ port {
+ edp_panel_in: endpoint {
+ remote-endpoint = <&mdss_dp3_out>;
+ };
+ };
+ };
+ };
+};
+
+&mdss_dp3_out {
+ data-lanes = <0 1 2 3>;
+ link-frequencies = /bits/ 64 <1620000000 2700000000 5400000000 8100000000>;
+
+ remote-endpoint = <&edp_panel_in>;
+};
+
+&mdss_dp3_phy {
+ vdda-phy-supply = <&vreg_l3j_0p8>;
+ vdda-pll-supply = <&vreg_l2j_1p2>;
+
+ status = "okay";
+};
+
+&pcie6a {
+ vddpe-3v3-supply = <&vreg_nvme>;
+};
+
+&pm8550_gpios {
+ rtmr0_default: rtmr0-reset-n-active-state {
+ pins = "gpio10";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ bias-disable;
+ input-disable;
+ output-enable;
+ };
+
+ usb0_3p3_reg_en: usb0-3p3-reg-en-state {
+ pins = "gpio11";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ bias-disable;
+ input-disable;
+ output-enable;
+ };
+};
+
+&pm8550ve_9_gpios {
+ usb0_1p8_reg_en: usb0-1p8-reg-en-state {
+ pins = "gpio8";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ bias-disable;
+ input-disable;
+ output-enable;
+ };
+};
+
+&pmc8380_5_gpios {
+ usb0_pwr_1p15_reg_en: usb0-pwr-1p15-reg-en-state {
+ pins = "gpio8";
+ function = "normal";
+ power-source = <1>; /* 1.8V */
+ bias-disable;
+ input-disable;
+ output-enable;
+ };
+};
+
+&smb2360_0 {
+ status = "okay";
+};
+
+&smb2360_0_eusb2_repeater {
+ vdd18-supply = <&vreg_l3d_1p8>;
+ vdd3-supply = <&vreg_l2b_3p0>;
+};
+
+&smb2360_1 {
+ status = "okay";
+};
+
+&smb2360_1_eusb2_repeater {
+ vdd18-supply = <&vreg_l3d_1p8>;
+ vdd3-supply = <&vreg_l14b_3p0>;
+};
+
+&smb2360_2 {
+ status = "okay";
+};
+
+&smb2360_2_eusb2_repeater {
+ vdd18-supply = <&vreg_l3d_1p8>;
+ vdd3-supply = <&vreg_l8b_3p0>;
+};
+
+&swr0 {
+ status = "okay";
+
+ pinctrl-0 = <&wsa_swr_active>, <&spkr_01_sd_n_active>;
+ pinctrl-names = "default";
+
+ /* WSA8845, Left Woofer */
+ left_woofer: speaker@0,0 {
+ compatible = "sdw20217020400";
+ reg = <0 0>;
+ reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "WooferLeft";
+ vdd-1p8-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l12b_1p2>;
+ qcom,port-mapping = <1 2 3 7 10 13>;
+ };
+
+ /* WSA8845, Left Tweeter */
+ left_tweeter: speaker@0,1 {
+ compatible = "sdw20217020400";
+ reg = <0 1>;
+ reset-gpios = <&lpass_tlmm 12 GPIO_ACTIVE_LOW>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TweeterLeft";
+ vdd-1p8-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l12b_1p2>;
+ qcom,port-mapping = <4 5 6 7 11 13>;
+ };
+};
+
+&swr1 {
+ status = "okay";
+
+ /* WCD9385 RX */
+ wcd_rx: codec@0,4 {
+ compatible = "sdw20217010d00";
+ reg = <0 4>;
+ qcom,rx-port-mapping = <1 2 3 4 5>;
+ };
+};
+
+&swr2 {
+ status = "okay";
+
+ /* WCD9385 TX */
+ wcd_tx: codec@0,3 {
+ compatible = "sdw20217010d00";
+ reg = <0 3>;
+ qcom,tx-port-mapping = <2 2 3 4>;
+ };
+};
+
+&swr3 {
+ status = "okay";
+
+ pinctrl-0 = <&wsa2_swr_active>, <&spkr_23_sd_n_active>;
+ pinctrl-names = "default";
+
+ /* WSA8845, Right Woofer */
+ right_woofer: speaker@0,0 {
+ compatible = "sdw20217020400";
+ reg = <0 0>;
+ reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "WooferRight";
+ vdd-1p8-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l12b_1p2>;
+ qcom,port-mapping = <1 2 3 7 10 13>;
+ };
+
+ /* WSA8845, Right Tweeter */
+ right_tweeter: speaker@0,1 {
+ compatible = "sdw20217020400";
+ reg = <0 1>;
+ reset-gpios = <&lpass_tlmm 13 GPIO_ACTIVE_LOW>;
+ #sound-dai-cells = <0>;
+ sound-name-prefix = "TweeterRight";
+ vdd-1p8-supply = <&vreg_l15b_1p8>;
+ vdd-io-supply = <&vreg_l12b_1p2>;
+ qcom,port-mapping = <4 5 6 7 11 13>;
+ };
+};
+
+&tlmm {
+ edp_reg_en: edp-reg-en-state {
+ pins = "gpio70";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ };
+
+ eusb3_reset_n: eusb3-reset-n-state {
+ pins = "gpio6";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ output-low;
+ };
+
+ eusb5_reset_n: eusb5-reset-n-state {
+ pins = "gpio7";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ output-low;
+ };
+
+ eusb6_reset_n: eusb6-reset-n-state {
+ pins = "gpio184";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ output-low;
+ };
+
+ nvme_reg_en: nvme-reg-en-state {
+ pins = "gpio18";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr1_default: rtmr1-reset-n-active-state {
+ pins = "gpio176";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ rtmr2_default: rtmr2-reset-n-active-state {
+ pins = "gpio185";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb1_pwr_1p15_reg_en: usb1-pwr-1p15-reg-en-state {
+ pins = "gpio188";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb1_pwr_1p8_reg_en: usb1-pwr-1p8-reg-en-state {
+ pins = "gpio175";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb1_pwr_3p3_reg_en: usb1-pwr-3p3-reg-en-state {
+ pins = "gpio186";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb2_pwr_1p15_reg_en: usb2-pwr-1p15-reg-en-state {
+ pins = "gpio189";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb2_pwr_1p8_reg_en: usb2-pwr-1p8-reg-en-state {
+ pins = "gpio126";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb2_pwr_3p3_reg_en: usb2-pwr-3p3-reg-en-state {
+ pins = "gpio187";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
+ mode-pins {
+ pins = "gpio166";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <2>;
+ output-high;
+ };
+
+ oe-n-pins {
+ pins = "gpio168";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <2>;
+ };
+
+ sel-pins {
+ pins = "gpio167";
+ function = "gpio";
+ bias-disable;
+ drive-strength = <2>;
+ };
+ };
+
+ wcd_default: wcd-reset-n-active-state {
+ pins = "gpio191";
+ function = "gpio";
+ drive-strength = <16>;
+ bias-disable;
+ output-low;
+ };
+
+ wcn_bt_en: wcn-bt-en-state {
+ pins = "gpio116";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ wwan_sw_en: wwan-sw-en-state {
+ pins = "gpio221";
+ function = "gpio";
+ drive-strength = <4>;
+ bias-disable;
+ };
+
+ wcn_sw_en: wcn-sw-en-state {
+ pins = "gpio214";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ /* Switches USB signal routing between the USB connector and the Wi-Fi card. */
+ wcn_usb_sw_n: wcn-usb-sw-n-state {
+ pins = "gpio225";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ output-high;
+ };
+};
+
+&uart14 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn7850-bt";
+ max-speed = <3200000>;
+
+ vddaon-supply = <&vreg_pmu_aon_0p59>;
+ vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+ vddwlmx-supply = <&vreg_pmu_wlmx_0p85>;
+ vddrfacmn-supply = <&vreg_pmu_rfa_cmn>;
+ vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+ vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+ vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>;
+ };
+};
+
+&uart21 {
+ compatible = "qcom,geni-debug-uart";
+
+ status = "okay";
+};
+
+&usb_1_ss0_dwc3_hs {
+ remote-endpoint = <&pmic_glink_ss0_hs_in>;
+};
+
+&usb_1_ss0_hsphy {
+ phys = <&smb2360_0_eusb2_repeater>;
+};
+
+&usb_1_ss0_qmpphy_out {
+ remote-endpoint = <&pmic_glink_ss0_ss_in>;
+};
+
+&usb_1_ss1_dwc3_hs {
+ remote-endpoint = <&pmic_glink_ss1_hs_in>;
+};
+
+&usb_1_ss1_hsphy {
+ phys = <&smb2360_1_eusb2_repeater>;
+};
+
+&usb_1_ss1_qmpphy_out {
+ remote-endpoint = <&retimer_ss1_ss_in>;
+};
+
+&usb_1_ss2_dwc3_hs {
+ remote-endpoint = <&pmic_glink_ss2_hs_in>;
+};
+
+&usb_1_ss2_hsphy {
+ phys = <&smb2360_2_eusb2_repeater>;
+};
+
+&usb_1_ss2_qmpphy_out {
+ remote-endpoint = <&retimer_ss2_ss_in>;
+};
+
+&usb_2_hsphy {
+ phys = <&eusb5_repeater>;
+
+ pinctrl-0 = <&wcn_usb_sw_n>;
+ pinctrl-names = "default";
+};
+
+&usb_mp_hsphy0 {
+ phys = <&eusb6_repeater>;
+};
+
+&usb_mp_hsphy1 {
+ phys = <&eusb3_repeater>;
+};
--
2.34.1
On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: > The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of > the Hamoa IoT SoM and a carrier board. Together, they form a complete > embedded system capable of booting to UART. > > This change enables the following peripherals on the carrier board: > - UART > - On-board regulators > - USB Type-C mux > - Pinctrl > - Embedded USB (EUSB) repeaters > - NVMe > - pmic-glink > - USB DisplayPorts > - Bluetooth > - Graphic > - Audio > > Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, > Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) > <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) > <quic_yongmou@quicinc.com>. > > Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ > 2 files changed, 1248 insertions(+) > > + > + wcd938x: audio-codec { > + compatible = "qcom,wcd9385-codec"; > + > + pinctrl-0 = <&wcd_default>; > + pinctrl-names = "default"; > + > + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; > + > + qcom,micbias1-microvolt = <1800000>; > + qcom,micbias2-microvolt = <1800000>; > + qcom,micbias3-microvolt = <1800000>; > + qcom,micbias4-microvolt = <1800000>; > + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 > + 500000 500000 500000 500000>; Other platforms use a single line here. If you don't want to do it, align data to start from the same column rather than restarting from the column 1. > + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; > + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; > + qcom,rx-device = <&wcd_rx>; > + qcom,tx-device = <&wcd_tx>; > + > + vdd-buck-supply = <&vreg_l15b_1p8>; > + vdd-rxtx-supply = <&vreg_l15b_1p8>; > + vdd-io-supply = <&vreg_l15b_1p8>; > + vdd-mic-bias-supply = <&vreg_bob1>; > + > + #sound-dai-cells = <1>; > + }; > + > + wcn7850-pmu { > + compatible = "qcom,wcn7850-pmu"; > + > + vdd-supply = <&vreg_wcn_0p95>; > + vddio-supply = <&vreg_l15b_1p8>; > + vddaon-supply = <&vreg_wcn_0p95>; > + vdddig-supply = <&vreg_wcn_0p95>; > + vddrfa1p2-supply = <&vreg_wcn_1p9>; > + vddrfa1p8-supply = <&vreg_wcn_1p9>; > + > + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; Okay, so how is WiFi controlled? Is there a GPIO? The DT should be describing the hardware, not the UEFI behaviour. > + > + pinctrl-0 = <&wcn_bt_en>; > + pinctrl-names = "default"; > + -- With best wishes Dmitry
On 2025-08-28 19:18, Dmitry Baryshkov wrote: > On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: >> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of >> the Hamoa IoT SoM and a carrier board. Together, they form a complete >> embedded system capable of booting to UART. >> >> This change enables the following peripherals on the carrier board: >> - UART >> - On-board regulators >> - USB Type-C mux >> - Pinctrl >> - Embedded USB (EUSB) repeaters >> - NVMe >> - pmic-glink >> - USB DisplayPorts >> - Bluetooth >> - Graphic >> - Audio >> >> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, >> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) >> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) >> <quic_yongmou@quicinc.com>. >> >> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/Makefile | 1 + >> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ >> 2 files changed, 1248 insertions(+) >> >> + >> + wcd938x: audio-codec { >> + compatible = "qcom,wcd9385-codec"; >> + >> + pinctrl-0 = <&wcd_default>; >> + pinctrl-names = "default"; >> + >> + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; >> + >> + qcom,micbias1-microvolt = <1800000>; >> + qcom,micbias2-microvolt = <1800000>; >> + qcom,micbias3-microvolt = <1800000>; >> + qcom,micbias4-microvolt = <1800000>; >> + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 >> + 500000 500000 500000 500000>; > > Other platforms use a single line here. If you don't want to do it, > align data to start from the same column rather than restarting from the > column 1. I will update it to a single line. > >> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; >> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; >> + qcom,rx-device = <&wcd_rx>; >> + qcom,tx-device = <&wcd_tx>; >> + >> + vdd-buck-supply = <&vreg_l15b_1p8>; >> + vdd-rxtx-supply = <&vreg_l15b_1p8>; >> + vdd-io-supply = <&vreg_l15b_1p8>; >> + vdd-mic-bias-supply = <&vreg_bob1>; >> + >> + #sound-dai-cells = <1>; >> + }; >> + >> + wcn7850-pmu { >> + compatible = "qcom,wcn7850-pmu"; >> + >> + vdd-supply = <&vreg_wcn_0p95>; >> + vddio-supply = <&vreg_l15b_1p8>; >> + vddaon-supply = <&vreg_wcn_0p95>; >> + vdddig-supply = <&vreg_wcn_0p95>; >> + vddrfa1p2-supply = <&vreg_wcn_1p9>; >> + vddrfa1p8-supply = <&vreg_wcn_1p9>; >> + >> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; > > Okay, so how is WiFi controlled? Is there a GPIO? The DT should be > describing the hardware, not the UEFI behaviour. > >> + >> + pinctrl-0 = <&wcn_bt_en>; >> + pinctrl-names = "default"; >> + > -- Best Regards, Yijie
On 8/28/2025 7:18 PM, Dmitry Baryshkov wrote: > On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: >> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of >> the Hamoa IoT SoM and a carrier board. Together, they form a complete >> embedded system capable of booting to UART. >> >> This change enables the following peripherals on the carrier board: >> - UART >> - On-board regulators >> - USB Type-C mux >> - Pinctrl >> - Embedded USB (EUSB) repeaters >> - NVMe >> - pmic-glink >> - USB DisplayPorts >> - Bluetooth >> - Graphic >> - Audio >> >> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, >> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) >> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) >> <quic_yongmou@quicinc.com>. >> >> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/Makefile | 1 + >> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ >> 2 files changed, 1248 insertions(+) >> >> + >> + wcd938x: audio-codec { >> + compatible = "qcom,wcd9385-codec"; >> + >> + pinctrl-0 = <&wcd_default>; >> + pinctrl-names = "default"; >> + >> + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; >> + >> + qcom,micbias1-microvolt = <1800000>; >> + qcom,micbias2-microvolt = <1800000>; >> + qcom,micbias3-microvolt = <1800000>; >> + qcom,micbias4-microvolt = <1800000>; >> + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 >> + 500000 500000 500000 500000>; > > Other platforms use a single line here. If you don't want to do it, > align data to start from the same column rather than restarting from the > column 1. > >> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; >> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; >> + qcom,rx-device = <&wcd_rx>; >> + qcom,tx-device = <&wcd_tx>; >> + >> + vdd-buck-supply = <&vreg_l15b_1p8>; >> + vdd-rxtx-supply = <&vreg_l15b_1p8>; >> + vdd-io-supply = <&vreg_l15b_1p8>; >> + vdd-mic-bias-supply = <&vreg_bob1>; >> + >> + #sound-dai-cells = <1>; >> + }; >> + >> + wcn7850-pmu { >> + compatible = "qcom,wcn7850-pmu"; >> + >> + vdd-supply = <&vreg_wcn_0p95>; >> + vddio-supply = <&vreg_l15b_1p8>; >> + vddaon-supply = <&vreg_wcn_0p95>; >> + vdddig-supply = <&vreg_wcn_0p95>; >> + vddrfa1p2-supply = <&vreg_wcn_1p9>; >> + vddrfa1p8-supply = <&vreg_wcn_1p9>; >> + >> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; > > Okay, so how is WiFi controlled? Is there a GPIO? The DT should be > describing the hardware, not the UEFI behaviour. > Hi Dmitry, as I described in previous mail, On hamoa platfrom whole wifi module's power supply and enable gpio are voted in UEFI. Hamoa is PC platform, so BIOS/UEFI behavior is compatible with Windows/ACPI architecture. UEFI is responsible for enabling power supply for all devices which may be used in boot phase (such as WLAN may be used to boot from network). So we need not Wifi chip's power and control GPIO in kernel side, thanks >> + >> + pinctrl-0 = <&wcn_bt_en>; >> + pinctrl-names = "default"; >> + >
On Mon, Sep 01, 2025 at 11:02:24AM +0800, Yingying Tang wrote: > > > On 8/28/2025 7:18 PM, Dmitry Baryshkov wrote: > > On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: > >> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of > >> the Hamoa IoT SoM and a carrier board. Together, they form a complete > >> embedded system capable of booting to UART. > >> > >> This change enables the following peripherals on the carrier board: > >> - UART > >> - On-board regulators > >> - USB Type-C mux > >> - Pinctrl > >> - Embedded USB (EUSB) repeaters > >> - NVMe > >> - pmic-glink > >> - USB DisplayPorts > >> - Bluetooth > >> - Graphic > >> - Audio > >> > >> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, > >> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) > >> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) > >> <quic_yongmou@quicinc.com>. > >> > >> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> > >> --- > >> arch/arm64/boot/dts/qcom/Makefile | 1 + > >> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ > >> 2 files changed, 1248 insertions(+) > >> > >> + > >> + wcd938x: audio-codec { > >> + compatible = "qcom,wcd9385-codec"; > >> + > >> + pinctrl-0 = <&wcd_default>; > >> + pinctrl-names = "default"; > >> + > >> + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; > >> + > >> + qcom,micbias1-microvolt = <1800000>; > >> + qcom,micbias2-microvolt = <1800000>; > >> + qcom,micbias3-microvolt = <1800000>; > >> + qcom,micbias4-microvolt = <1800000>; > >> + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 > >> + 500000 500000 500000 500000>; > > > > Other platforms use a single line here. If you don't want to do it, > > align data to start from the same column rather than restarting from the > > column 1. > > > >> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; > >> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; > >> + qcom,rx-device = <&wcd_rx>; > >> + qcom,tx-device = <&wcd_tx>; > >> + > >> + vdd-buck-supply = <&vreg_l15b_1p8>; > >> + vdd-rxtx-supply = <&vreg_l15b_1p8>; > >> + vdd-io-supply = <&vreg_l15b_1p8>; > >> + vdd-mic-bias-supply = <&vreg_bob1>; > >> + > >> + #sound-dai-cells = <1>; > >> + }; > >> + > >> + wcn7850-pmu { > >> + compatible = "qcom,wcn7850-pmu"; > >> + > >> + vdd-supply = <&vreg_wcn_0p95>; > >> + vddio-supply = <&vreg_l15b_1p8>; > >> + vddaon-supply = <&vreg_wcn_0p95>; > >> + vdddig-supply = <&vreg_wcn_0p95>; > >> + vddrfa1p2-supply = <&vreg_wcn_1p9>; > >> + vddrfa1p8-supply = <&vreg_wcn_1p9>; > >> + > >> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; > > > > Okay, so how is WiFi controlled? Is there a GPIO? The DT should be > > describing the hardware, not the UEFI behaviour. > > > Hi Dmitry, as I described in previous mail, On hamoa platfrom whole wifi module's power supply and enable gpio are voted in UEFI. > Hamoa is PC platform, so BIOS/UEFI behavior is compatible with Windows/ACPI architecture. UEFI is responsible for enabling power supply > for all devices which may be used in boot phase (such as WLAN may be used to boot from network). This is not completely relevant. You are describing driver / Linux / bootloader behaviour. I asked if there is a GPIO in the hardware. If there is one, please add it here. > > So we need not Wifi chip's power and control GPIO in kernel side, thanks What if someone requests this GPIO from userspace and pulls it down? > >> + > >> + pinctrl-0 = <&wcn_bt_en>; > >> + pinctrl-names = "default"; > >> + > > > -- With best wishes Dmitry
On 9/2/2025 10:37 AM, Dmitry Baryshkov wrote: > On Mon, Sep 01, 2025 at 11:02:24AM +0800, Yingying Tang wrote: >> >> >> On 8/28/2025 7:18 PM, Dmitry Baryshkov wrote: >>> On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: >>>> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of >>>> the Hamoa IoT SoM and a carrier board. Together, they form a complete >>>> embedded system capable of booting to UART. >>>> >>>> This change enables the following peripherals on the carrier board: >>>> - UART >>>> - On-board regulators >>>> - USB Type-C mux >>>> - Pinctrl >>>> - Embedded USB (EUSB) repeaters >>>> - NVMe >>>> - pmic-glink >>>> - USB DisplayPorts >>>> - Bluetooth >>>> - Graphic >>>> - Audio >>>> >>>> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, >>>> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) >>>> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) >>>> <quic_yongmou@quicinc.com>. >>>> >>>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> >>>> --- >>>> arch/arm64/boot/dts/qcom/Makefile | 1 + >>>> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ >>>> 2 files changed, 1248 insertions(+) >>>> >>>> + >>>> + wcd938x: audio-codec { >>>> + compatible = "qcom,wcd9385-codec"; >>>> + >>>> + pinctrl-0 = <&wcd_default>; >>>> + pinctrl-names = "default"; >>>> + >>>> + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; >>>> + >>>> + qcom,micbias1-microvolt = <1800000>; >>>> + qcom,micbias2-microvolt = <1800000>; >>>> + qcom,micbias3-microvolt = <1800000>; >>>> + qcom,micbias4-microvolt = <1800000>; >>>> + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 >>>> + 500000 500000 500000 500000>; >>> >>> Other platforms use a single line here. If you don't want to do it, >>> align data to start from the same column rather than restarting from the >>> column 1. >>> >>>> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; >>>> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; >>>> + qcom,rx-device = <&wcd_rx>; >>>> + qcom,tx-device = <&wcd_tx>; >>>> + >>>> + vdd-buck-supply = <&vreg_l15b_1p8>; >>>> + vdd-rxtx-supply = <&vreg_l15b_1p8>; >>>> + vdd-io-supply = <&vreg_l15b_1p8>; >>>> + vdd-mic-bias-supply = <&vreg_bob1>; >>>> + >>>> + #sound-dai-cells = <1>; >>>> + }; >>>> + >>>> + wcn7850-pmu { >>>> + compatible = "qcom,wcn7850-pmu"; >>>> + >>>> + vdd-supply = <&vreg_wcn_0p95>; >>>> + vddio-supply = <&vreg_l15b_1p8>; >>>> + vddaon-supply = <&vreg_wcn_0p95>; >>>> + vdddig-supply = <&vreg_wcn_0p95>; >>>> + vddrfa1p2-supply = <&vreg_wcn_1p9>; >>>> + vddrfa1p8-supply = <&vreg_wcn_1p9>; >>>> + >>>> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; >>> >>> Okay, so how is WiFi controlled? Is there a GPIO? The DT should be >>> describing the hardware, not the UEFI behaviour. >>> >> Hi Dmitry, as I described in previous mail, On hamoa platfrom whole wifi module's power supply and enable gpio are voted in UEFI. >> Hamoa is PC platform, so BIOS/UEFI behavior is compatible with Windows/ACPI architecture. UEFI is responsible for enabling power supply >> for all devices which may be used in boot phase (such as WLAN may be used to boot from network). > > This is not completely relevant. You are describing driver / Linux / > bootloader behaviour. I asked if there is a GPIO in the hardware. If > there is one, please add it here. Hi Dimitry, During the UEFI boot phase, the WLAN enable GPIO has already been asserted, and the WLAN chip is functioning normally. If we include this GPIO in the kernel device tree, when the kernel configures this GPIO, its voltage level may experience a brief glitch, which could cause the WLAN chip to reset and result in a PCIe link down. So I didn't add wlan-en-gpio in this hamoa's device tree. > >> >> So we need not Wifi chip's power and control GPIO in kernel side, thanks > > What if someone requests this GPIO from userspace and pulls it down? > >>>> + >>>> + pinctrl-0 = <&wcn_bt_en>; >>>> + pinctrl-names = "default"; >>>> + >>> >> >
On 9/2/25 8:56 AM, Yingying Tang wrote: > > > On 9/2/2025 10:37 AM, Dmitry Baryshkov wrote: >> On Mon, Sep 01, 2025 at 11:02:24AM +0800, Yingying Tang wrote: >>> >>> >>> On 8/28/2025 7:18 PM, Dmitry Baryshkov wrote: >>>> On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: >>>>> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of >>>>> the Hamoa IoT SoM and a carrier board. Together, they form a complete >>>>> embedded system capable of booting to UART. [...] >>>>> + wcn7850-pmu { >>>>> + compatible = "qcom,wcn7850-pmu"; >>>>> + >>>>> + vdd-supply = <&vreg_wcn_0p95>; >>>>> + vddio-supply = <&vreg_l15b_1p8>; >>>>> + vddaon-supply = <&vreg_wcn_0p95>; >>>>> + vdddig-supply = <&vreg_wcn_0p95>; >>>>> + vddrfa1p2-supply = <&vreg_wcn_1p9>; >>>>> + vddrfa1p8-supply = <&vreg_wcn_1p9>; >>>>> + >>>>> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; >>>> >>>> Okay, so how is WiFi controlled? Is there a GPIO? The DT should be >>>> describing the hardware, not the UEFI behaviour. >>>> >>> Hi Dmitry, as I described in previous mail, On hamoa platfrom whole wifi module's power supply and enable gpio are voted in UEFI. >>> Hamoa is PC platform, so BIOS/UEFI behavior is compatible with Windows/ACPI architecture. UEFI is responsible for enabling power supply >>> for all devices which may be used in boot phase (such as WLAN may be used to boot from network). >> >> This is not completely relevant. You are describing driver / Linux / >> bootloader behaviour. I asked if there is a GPIO in the hardware. If >> there is one, please add it here. > > Hi Dimitry, > > During the UEFI boot phase, the WLAN enable GPIO has already been asserted, and the WLAN chip is functioning normally. > If we include this GPIO in the kernel device tree, when the kernel configures this GPIO, its voltage level may experience a brief glitch, which could cause the WLAN chip to reset and result in a PCIe link down. The WCN pwrseq code handles this already, please simply describe the hardware like the platform firmware description which you're creating is supposed to Konrad
On Tue, Sep 02, 2025 at 02:56:37PM +0800, Yingying Tang wrote: > > > On 9/2/2025 10:37 AM, Dmitry Baryshkov wrote: > > On Mon, Sep 01, 2025 at 11:02:24AM +0800, Yingying Tang wrote: > >> > >> > >> On 8/28/2025 7:18 PM, Dmitry Baryshkov wrote: > >>> On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: > >>>> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of > >>>> the Hamoa IoT SoM and a carrier board. Together, they form a complete > >>>> embedded system capable of booting to UART. > >>>> > >>>> This change enables the following peripherals on the carrier board: > >>>> - UART > >>>> - On-board regulators > >>>> - USB Type-C mux > >>>> - Pinctrl > >>>> - Embedded USB (EUSB) repeaters > >>>> - NVMe > >>>> - pmic-glink > >>>> - USB DisplayPorts > >>>> - Bluetooth > >>>> - Graphic > >>>> - Audio > >>>> > >>>> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, > >>>> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) > >>>> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) > >>>> <quic_yongmou@quicinc.com>. > >>>> > >>>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> > >>>> --- > >>>> arch/arm64/boot/dts/qcom/Makefile | 1 + > >>>> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ > >>>> 2 files changed, 1248 insertions(+) > >>>> > >>>> + > >>>> + wcd938x: audio-codec { > >>>> + compatible = "qcom,wcd9385-codec"; > >>>> + > >>>> + pinctrl-0 = <&wcd_default>; > >>>> + pinctrl-names = "default"; > >>>> + > >>>> + reset-gpios = <&tlmm 191 GPIO_ACTIVE_LOW>; > >>>> + > >>>> + qcom,micbias1-microvolt = <1800000>; > >>>> + qcom,micbias2-microvolt = <1800000>; > >>>> + qcom,micbias3-microvolt = <1800000>; > >>>> + qcom,micbias4-microvolt = <1800000>; > >>>> + qcom,mbhc-buttons-vthreshold-microvolt = <75000 150000 237000 500000 > >>>> + 500000 500000 500000 500000>; > >>> > >>> Other platforms use a single line here. If you don't want to do it, > >>> align data to start from the same column rather than restarting from the > >>> column 1. > >>> > >>>> + qcom,mbhc-headset-vthreshold-microvolt = <1700000>; > >>>> + qcom,mbhc-headphone-vthreshold-microvolt = <50000>; > >>>> + qcom,rx-device = <&wcd_rx>; > >>>> + qcom,tx-device = <&wcd_tx>; > >>>> + > >>>> + vdd-buck-supply = <&vreg_l15b_1p8>; > >>>> + vdd-rxtx-supply = <&vreg_l15b_1p8>; > >>>> + vdd-io-supply = <&vreg_l15b_1p8>; > >>>> + vdd-mic-bias-supply = <&vreg_bob1>; > >>>> + > >>>> + #sound-dai-cells = <1>; > >>>> + }; > >>>> + > >>>> + wcn7850-pmu { > >>>> + compatible = "qcom,wcn7850-pmu"; > >>>> + > >>>> + vdd-supply = <&vreg_wcn_0p95>; > >>>> + vddio-supply = <&vreg_l15b_1p8>; > >>>> + vddaon-supply = <&vreg_wcn_0p95>; > >>>> + vdddig-supply = <&vreg_wcn_0p95>; > >>>> + vddrfa1p2-supply = <&vreg_wcn_1p9>; > >>>> + vddrfa1p8-supply = <&vreg_wcn_1p9>; > >>>> + > >>>> + bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>; > >>> > >>> Okay, so how is WiFi controlled? Is there a GPIO? The DT should be > >>> describing the hardware, not the UEFI behaviour. > >>> > >> Hi Dmitry, as I described in previous mail, On hamoa platfrom whole wifi module's power supply and enable gpio are voted in UEFI. > >> Hamoa is PC platform, so BIOS/UEFI behavior is compatible with Windows/ACPI architecture. UEFI is responsible for enabling power supply > >> for all devices which may be used in boot phase (such as WLAN may be used to boot from network). > > > > This is not completely relevant. You are describing driver / Linux / > > bootloader behaviour. I asked if there is a GPIO in the hardware. If > > there is one, please add it here. > > Hi Dimitry, > > During the UEFI boot phase, the WLAN enable GPIO has already been asserted, and the WLAN chip is functioning normally. > If we include this GPIO in the kernel device tree, when the kernel configures this GPIO, its voltage level may experience a brief glitch, which could cause the WLAN chip to reset and result in a PCIe link down. Here you are describing driver behaviour. It's a software issue and can be handled in the driver. I'm asking you to describe the hardware. From the hardware perspective there is a GPIO pin. Please describe it in the DT. > So I didn't add wlan-en-gpio in this hamoa's device tree. > > > > > > >> > >> So we need not Wifi chip's power and control GPIO in kernel side, thanks > > > > What if someone requests this GPIO from userspace and pulls it down? > > > >>>> + > >>>> + pinctrl-0 = <&wcn_bt_en>; > >>>> + pinctrl-names = "default"; > >>>> + > >>> > >> > > > -- With best wishes Dmitry
On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: > The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of > the Hamoa IoT SoM and a carrier board. Together, they form a complete > embedded system capable of booting to UART. > > This change enables the following peripherals on the carrier board: > - UART > - On-board regulators > - USB Type-C mux > - Pinctrl > - Embedded USB (EUSB) repeaters > - NVMe > - pmic-glink > - USB DisplayPorts > - Bluetooth > - Graphic > - Audio > > Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, > Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) > <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) > <quic_yongmou@quicinc.com>. > > Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> > --- > arch/arm64/boot/dts/qcom/Makefile | 1 + > arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ > 2 files changed, 1248 insertions(+) > > diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile > index 94a84770b080..5e19535ad63d 100644 > --- a/arch/arm64/boot/dts/qcom/Makefile > +++ b/arch/arm64/boot/dts/qcom/Makefile > @@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb > dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb > dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb > dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb > +dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5018-rdp432-c2.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5018-tplink-archer-ax55-v1.dtb > dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp441.dtb > diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts > new file mode 100644 > index 000000000000..b1a8380d6639 > --- /dev/null > +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts > @@ -0,0 +1,1247 @@ > +// SPDX-License-Identifier: BSD-3-Clause > +/* > + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. > + */ > + > +/dts-v1/; > + > +#include "hamoa-iot-som.dtsi" > + > +/ { > + model = "Qualcomm Technologies, Inc. Hamoa IoT EVK"; > + compatible = "qcom,hamoa-iot-evk", "qcom,hamoa-iot-som", "qcom,x1e80100"; > + chassis-type = "embedded"; > + > + aliases { > + serial0 = &uart21; > + serial1 = &uart14; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + pmic-glink { > + compatible = "qcom,x1e80100-pmic-glink", > + "qcom,sm8550-pmic-glink", > + "qcom,pmic-glink"; > + #address-cells = <1>; > + #size-cells = <0>; > + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, > + <&tlmm 123 GPIO_ACTIVE_HIGH>, > + <&tlmm 125 GPIO_ACTIVE_HIGH>; > + > + connector@0 { > + compatible = "usb-c-connector"; > + reg = <0>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_ss0_hs_in: endpoint { > + remote-endpoint = <&usb_1_ss0_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss0_ss_in: endpoint { > + remote-endpoint = <&usb_1_ss0_qmpphy_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + > + pmic_glink_ss0_sbu: endpoint { > + remote-endpoint = <&usb_1_ss0_sbu_mux>; > + }; > + }; > + }; > + }; > + > + connector@1 { > + compatible = "usb-c-connector"; > + reg = <1>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_ss1_hs_in: endpoint { > + remote-endpoint = <&usb_1_ss1_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss1_ss_in: endpoint { > + remote-endpoint = <&retimer_ss1_ss_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + > + pmic_glink_ss1_con_sbu_in: endpoint { > + remote-endpoint = <&retimer_ss1_con_sbu_out>; > + }; > + }; > + }; > + }; > + > + connector@2 { > + compatible = "usb-c-connector"; > + reg = <2>; > + power-role = "dual"; > + data-role = "dual"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + > + pmic_glink_ss2_hs_in: endpoint { > + remote-endpoint = <&usb_1_ss2_dwc3_hs>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + > + pmic_glink_ss2_ss_in: endpoint { > + remote-endpoint = <&retimer_ss2_ss_out>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + > + pmic_glink_ss2_con_sbu_in: endpoint { > + remote-endpoint = <&retimer_ss2_con_sbu_out>; > + }; > + }; > + }; > + }; > + }; > + > + vreg_edp_3p3: regulator-edp-3p3 { Here is a list of the top-level nodes defined in this DT. Does it look sorted? aliases chosen pmic-glink regulator-edp-3p3 sound regulator-vph-pwr regulator-nvme regulator-rtmr0-1p15 regulator-rtmr0-1p8 regulator-rtmr0-3p3 regulator-rtmr1-1p15 regulator-rtmr1-1p8 regulator-rtmr1-3p3 regulator-rtmr2-1p15 regulator-rtmr2-1p8 regulator-rtmr2-3p3 regulator-wcn-3p3 usb-1-ss0-sbu-mux regulator-wcn-0p95 regulator-wcn-1p9 regulator-wwan audio-codec wcn7850-pmu -- With best wishes Dmitry
On 2025-08-28 19:15, Dmitry Baryshkov wrote: > On Thu, Aug 28, 2025 at 12:48:47PM +0800, Yijie Yang wrote: >> The HAMOA-IOT-EVK is an evaluation platform for IoT products, composed of >> the Hamoa IoT SoM and a carrier board. Together, they form a complete >> embedded system capable of booting to UART. >> >> This change enables the following peripherals on the carrier board: >> - UART >> - On-board regulators >> - USB Type-C mux >> - Pinctrl >> - Embedded USB (EUSB) repeaters >> - NVMe >> - pmic-glink >> - USB DisplayPorts >> - Bluetooth >> - Graphic >> - Audio >> >> Written in collaboration with Quill Qi (Audio) <le.qi@oss.qualcomm.com>, >> Jie Zhang (Graphics) <quic_jiezh@quicinc.com>, Shuai Zhang (Bluetooth) >> <quic_shuaz@quicinc.com>, and Yongxing Mou (USB DisplayPorts) >> <quic_yongmou@quicinc.com>. >> >> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com> >> --- >> arch/arm64/boot/dts/qcom/Makefile | 1 + >> arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts | 1247 ++++++++++++++++++++++++++++ >> 2 files changed, 1248 insertions(+) >> >> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile >> index 94a84770b080..5e19535ad63d 100644 >> --- a/arch/arm64/boot/dts/qcom/Makefile >> +++ b/arch/arm64/boot/dts/qcom/Makefile >> @@ -13,6 +13,7 @@ dtb-$(CONFIG_ARCH_QCOM) += apq8039-t2.dtb >> dtb-$(CONFIG_ARCH_QCOM) += apq8094-sony-xperia-kitakami-karin_windy.dtb >> dtb-$(CONFIG_ARCH_QCOM) += apq8096-db820c.dtb >> dtb-$(CONFIG_ARCH_QCOM) += apq8096-ifc6640.dtb >> +dtb-$(CONFIG_ARCH_QCOM) += hamoa-iot-evk.dtb >> dtb-$(CONFIG_ARCH_QCOM) += ipq5018-rdp432-c2.dtb >> dtb-$(CONFIG_ARCH_QCOM) += ipq5018-tplink-archer-ax55-v1.dtb >> dtb-$(CONFIG_ARCH_QCOM) += ipq5332-rdp441.dtb >> diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts >> new file mode 100644 >> index 000000000000..b1a8380d6639 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts >> @@ -0,0 +1,1247 @@ >> +// SPDX-License-Identifier: BSD-3-Clause >> +/* >> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. >> + */ >> + >> +/dts-v1/; >> + >> +#include "hamoa-iot-som.dtsi" >> + >> +/ { >> + model = "Qualcomm Technologies, Inc. Hamoa IoT EVK"; >> + compatible = "qcom,hamoa-iot-evk", "qcom,hamoa-iot-som", "qcom,x1e80100"; >> + chassis-type = "embedded"; >> + >> + aliases { >> + serial0 = &uart21; >> + serial1 = &uart14; >> + }; >> + >> + chosen { >> + stdout-path = "serial0:115200n8"; >> + }; >> + >> + pmic-glink { >> + compatible = "qcom,x1e80100-pmic-glink", >> + "qcom,sm8550-pmic-glink", >> + "qcom,pmic-glink"; >> + #address-cells = <1>; >> + #size-cells = <0>; >> + orientation-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>, >> + <&tlmm 123 GPIO_ACTIVE_HIGH>, >> + <&tlmm 125 GPIO_ACTIVE_HIGH>; >> + >> + connector@0 { >> + compatible = "usb-c-connector"; >> + reg = <0>; >> + power-role = "dual"; >> + data-role = "dual"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + >> + pmic_glink_ss0_hs_in: endpoint { >> + remote-endpoint = <&usb_1_ss0_dwc3_hs>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + pmic_glink_ss0_ss_in: endpoint { >> + remote-endpoint = <&usb_1_ss0_qmpphy_out>; >> + }; >> + }; >> + >> + port@2 { >> + reg = <2>; >> + >> + pmic_glink_ss0_sbu: endpoint { >> + remote-endpoint = <&usb_1_ss0_sbu_mux>; >> + }; >> + }; >> + }; >> + }; >> + >> + connector@1 { >> + compatible = "usb-c-connector"; >> + reg = <1>; >> + power-role = "dual"; >> + data-role = "dual"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + >> + pmic_glink_ss1_hs_in: endpoint { >> + remote-endpoint = <&usb_1_ss1_dwc3_hs>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + pmic_glink_ss1_ss_in: endpoint { >> + remote-endpoint = <&retimer_ss1_ss_out>; >> + }; >> + }; >> + >> + port@2 { >> + reg = <2>; >> + >> + pmic_glink_ss1_con_sbu_in: endpoint { >> + remote-endpoint = <&retimer_ss1_con_sbu_out>; >> + }; >> + }; >> + }; >> + }; >> + >> + connector@2 { >> + compatible = "usb-c-connector"; >> + reg = <2>; >> + power-role = "dual"; >> + data-role = "dual"; >> + >> + ports { >> + #address-cells = <1>; >> + #size-cells = <0>; >> + >> + port@0 { >> + reg = <0>; >> + >> + pmic_glink_ss2_hs_in: endpoint { >> + remote-endpoint = <&usb_1_ss2_dwc3_hs>; >> + }; >> + }; >> + >> + port@1 { >> + reg = <1>; >> + >> + pmic_glink_ss2_ss_in: endpoint { >> + remote-endpoint = <&retimer_ss2_ss_out>; >> + }; >> + }; >> + >> + port@2 { >> + reg = <2>; >> + >> + pmic_glink_ss2_con_sbu_in: endpoint { >> + remote-endpoint = <&retimer_ss2_con_sbu_out>; >> + }; >> + }; >> + }; >> + }; >> + }; >> + >> + vreg_edp_3p3: regulator-edp-3p3 { > > Here is a list of the top-level nodes defined in this DT. Does it look > sorted? > > aliases > chosen > pmic-glink > regulator-edp-3p3 > sound > regulator-vph-pwr > regulator-nvme > regulator-rtmr0-1p15 > regulator-rtmr0-1p8 > regulator-rtmr0-3p3 > regulator-rtmr1-1p15 > regulator-rtmr1-1p8 > regulator-rtmr1-3p3 > regulator-rtmr2-1p15 > regulator-rtmr2-1p8 > regulator-rtmr2-3p3 > regulator-wcn-3p3 > usb-1-ss0-sbu-mux > regulator-wcn-0p95 > regulator-wcn-1p9 > regulator-wwan > audio-codec > wcn7850-pmu > I'll get them sorted. > -- Best Regards, Yijie
© 2016 - 2025 Red Hat, Inc.