* [PATCH v3 1/4] dt-bindings: arm: qcom: Document HAMOA-IOT-EVK board
2025-07-29 1:31 [PATCH v3 0/4] Initial support for Qualcomm Hamoa IOT EVK board Yijie Yang
@ 2025-07-29 1:31 ` Yijie Yang
2025-07-30 7:14 ` Krzysztof Kozlowski
2025-07-29 1:31 ` [PATCH v3 2/4] firmware: qcom: scm: Allow QSEECOM on HAMOA-IOT-EVK Yijie Yang
` (2 subsequent siblings)
3 siblings, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-07-29 1:31 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Yijie Yang, linux-arm-msm, devicetree, linux-kernel
Document the device tree binding for the HAMOA-IOT-EVK board, which uses
the Qualcomm X1E80100 SoC.
The EVK consists of a carrier board and a modular System-on-Module (SoM).
The SoM integrates the SoC, PMICs, and essential GPIOs, while the EVK
carrier board provides additional peripherals such as UART and USB
interfaces.
Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 47a7b1cb3cac1150bcde8c2e2e23f2db256ab082..65003e16fe72dd4eec9423030fed6078b4a79959 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -1165,6 +1165,12 @@ properties:
- qcom,x1e80100-qcp
- const: qcom,x1e80100
+ - items:
+ - enum:
+ - qcom,hamoa-iot-evk
+ - const: qcom,hamoa-iot-som
+ - const: qcom,x1e80100
+
- items:
- enum:
- asus,zenbook-a14-ux3407qa
--
2.34.1
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 1/4] dt-bindings: arm: qcom: Document HAMOA-IOT-EVK board
2025-07-29 1:31 ` [PATCH v3 1/4] dt-bindings: arm: qcom: Document HAMOA-IOT-EVK board Yijie Yang
@ 2025-07-30 7:14 ` Krzysztof Kozlowski
0 siblings, 0 replies; 25+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-30 7:14 UTC (permalink / raw)
To: Yijie Yang
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Tue, Jul 29, 2025 at 09:31:57AM +0800, Yijie Yang wrote:
> Document the device tree binding for the HAMOA-IOT-EVK board, which uses
> the Qualcomm X1E80100 SoC.
>
> The EVK consists of a carrier board and a modular System-on-Module (SoM).
> The SoM integrates the SoC, PMICs, and essential GPIOs, while the EVK
> carrier board provides additional peripherals such as UART and USB
> interfaces.
>
> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> ---
> Documentation/devicetree/bindings/arm/qcom.yaml | 6 ++++++
> 1 file changed, 6 insertions(+)
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 2/4] firmware: qcom: scm: Allow QSEECOM on HAMOA-IOT-EVK
2025-07-29 1:31 [PATCH v3 0/4] Initial support for Qualcomm Hamoa IOT EVK board Yijie Yang
2025-07-29 1:31 ` [PATCH v3 1/4] dt-bindings: arm: qcom: Document HAMOA-IOT-EVK board Yijie Yang
@ 2025-07-29 1:31 ` Yijie Yang
2025-07-29 1:31 ` [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform Yijie Yang
2025-07-29 1:32 ` [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board Yijie Yang
3 siblings, 0 replies; 25+ messages in thread
From: Yijie Yang @ 2025-07-29 1:31 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Yijie Yang, linux-arm-msm, devicetree, linux-kernel
Add the Hamoa-IoT-EVK board to the list to enable access to EFI variables.
Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
---
drivers/firmware/qcom/qcom_scm.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/firmware/qcom/qcom_scm.c b/drivers/firmware/qcom/qcom_scm.c
index 26cd0458aacd67dcd36f065675e969cea97eb465..27c9d4a0912646415efac2df089ddedaf971fcb1 100644
--- a/drivers/firmware/qcom/qcom_scm.c
+++ b/drivers/firmware/qcom/qcom_scm.c
@@ -2006,6 +2006,7 @@ static const struct of_device_id qcom_scm_qseecom_allowlist[] __maybe_unused = {
{ .compatible = "microsoft,blackrock" },
{ .compatible = "microsoft,romulus13", },
{ .compatible = "microsoft,romulus15", },
+ { .compatible = "qcom,hamoa-iot-evk" },
{ .compatible = "qcom,sc8180x-primus" },
{ .compatible = "qcom,x1e001de-devkit" },
{ .compatible = "qcom,x1e80100-crd" },
--
2.34.1
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-29 1:31 [PATCH v3 0/4] Initial support for Qualcomm Hamoa IOT EVK board Yijie Yang
2025-07-29 1:31 ` [PATCH v3 1/4] dt-bindings: arm: qcom: Document HAMOA-IOT-EVK board Yijie Yang
2025-07-29 1:31 ` [PATCH v3 2/4] firmware: qcom: scm: Allow QSEECOM on HAMOA-IOT-EVK Yijie Yang
@ 2025-07-29 1:31 ` Yijie Yang
2025-07-29 8:36 ` Konrad Dybcio
` (2 more replies)
2025-07-29 1:32 ` [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board Yijie Yang
3 siblings, 3 replies; 25+ messages in thread
From: Yijie Yang @ 2025-07-29 1:31 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Yijie Yang, linux-arm-msm, devicetree, linux-kernel
The HAMOA-IOT-SOM is a compact computing module that integrates a System
on Chip (SoC) — specifically the x1e80100 — along with essential
components optimized for IoT applications. It is designed to be mounted on
carrier boards, enabling the development of complete embedded systems.
This change enables and overlays the following components:
- Regulators on the SOM
- Reserved memory regions
- PCIe6a and its PHY
- PCIe4 and its PHY
- USB0 through USB6 and their PHYs
- ADSP, CDSP
- WLAN, Bluetooth (M.2 interface)
Written with contributions from Yingying Tang (added PCIe4 and its PHY to
enable WLAN).
Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
---
arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 609 ++++++++++++++++++++++++++++
1 file changed, 609 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
new file mode 100644
index 0000000000000000000000000000000000000000..5facc5544c3df05b89b25fbcb5cd331e93040f15
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
@@ -0,0 +1,609 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ */
+
+#include "x1e80100.dtsi"
+#include "x1e80100-pmics.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
+
+/ {
+ compatible = "hamoa-iot-som", "qcom,x1e80100";
+
+ reserved-memory {
+ linux,cma {
+ compatible = "shared-dma-pool";
+ size = <0x0 0x8000000>;
+ reusable;
+ linux,cma-default;
+ };
+ };
+};
+
+&apps_rsc {
+ /* PMC8380C_B */
+ regulators-0 {
+ compatible = "qcom,pm8550-rpmh-regulators";
+ qcom,pmic-id = "b";
+
+ vdd-bob1-supply = <&vph_pwr>;
+ vdd-bob2-supply = <&vph_pwr>;
+ vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
+ vdd-l2-l13-l14-supply = <&vreg_bob1>;
+ vdd-l5-l16-supply = <&vreg_bob1>;
+ vdd-l6-l7-supply = <&vreg_bob2>;
+ vdd-l8-l9-supply = <&vreg_bob1>;
+ vdd-l12-supply = <&vreg_s5j_1p2>;
+ vdd-l15-supply = <&vreg_s4c_1p8>;
+ vdd-l17-supply = <&vreg_bob2>;
+
+ vreg_bob1: bob1 {
+ regulator-name = "vreg_bob1";
+ regulator-min-microvolt = <3008000>;
+ regulator-max-microvolt = <3960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_bob2: bob2 {
+ regulator-name = "vreg_bob2";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <3008000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1b_1p8: ldo1 {
+ regulator-name = "vreg_l1b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2b_3p0: ldo2 {
+ regulator-name = "vreg_l2b_3p0";
+ regulator-min-microvolt = <3072000>;
+ regulator-max-microvolt = <3100000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l4b_1p8: ldo4 {
+ regulator-name = "vreg_l4b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l5b_3p0: ldo5 {
+ regulator-name = "vreg_l5b_3p0";
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l6b_1p8: ldo6 {
+ regulator-name = "vreg_l6b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l7b_2p8: ldo7 {
+ regulator-name = "vreg_l7b_2p8";
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l8b_3p0: ldo8 {
+ regulator-name = "vreg_l8b_3p0";
+ regulator-min-microvolt = <3072000>;
+ regulator-max-microvolt = <3072000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l9b_2p9: ldo9 {
+ regulator-name = "vreg_l9b_2p9";
+ regulator-min-microvolt = <2960000>;
+ regulator-max-microvolt = <2960000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l10b_1p8: ldo10 {
+ regulator-name = "vreg_l10b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l12b_1p2: ldo12 {
+ regulator-name = "vreg_l12b_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-always-on;
+ };
+
+ vreg_l13b_3p0: ldo13 {
+ regulator-name = "vreg_l13b_3p0";
+ regulator-min-microvolt = <3072000>;
+ regulator-max-microvolt = <3100000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l14b_3p0: ldo14 {
+ regulator-name = "vreg_l14b_3p0";
+ regulator-min-microvolt = <3072000>;
+ regulator-max-microvolt = <3072000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l15b_1p8: ldo15 {
+ regulator-name = "vreg_l15b_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ regulator-always-on;
+ };
+
+ vreg_l16b_2p9: ldo16 {
+ regulator-name = "vreg_l16b_2p9";
+ regulator-min-microvolt = <2912000>;
+ regulator-max-microvolt = <2912000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l17b_2p5: ldo17 {
+ regulator-name = "vreg_l17b_2p5";
+ regulator-min-microvolt = <2504000>;
+ regulator-max-microvolt = <2504000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380VE_C */
+ regulators-1 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "c";
+
+ vdd-l1-supply = <&vreg_s5j_1p2>;
+ vdd-l2-supply = <&vreg_s1f_0p7>;
+ vdd-l3-supply = <&vreg_s1f_0p7>;
+ vdd-s4-supply = <&vph_pwr>;
+
+ vreg_s4c_1p8: smps4 {
+ regulator-name = "vreg_s4c_1p8";
+ regulator-min-microvolt = <1856000>;
+ regulator-max-microvolt = <2000000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1c_1p2: ldo1 {
+ regulator-name = "vreg_l1c_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2c_0p8: ldo2 {
+ regulator-name = "vreg_l2c_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3c_0p8: ldo3 {
+ regulator-name = "vreg_l3c_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380_D */
+ regulators-2 {
+ compatible = "qcom,pmc8380-rpmh-regulators";
+ qcom,pmic-id = "d";
+
+ vdd-l1-supply = <&vreg_s1f_0p7>;
+ vdd-l2-supply = <&vreg_s1f_0p7>;
+ vdd-l3-supply = <&vreg_s4c_1p8>;
+ vdd-s1-supply = <&vph_pwr>;
+
+ vreg_l1d_0p8: ldo1 {
+ regulator-name = "vreg_l1d_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2d_0p9: ldo2 {
+ regulator-name = "vreg_l2d_0p9";
+ regulator-min-microvolt = <912000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3d_1p8: ldo3 {
+ regulator-name = "vreg_l3d_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380_E */
+ regulators-3 {
+ compatible = "qcom,pmc8380-rpmh-regulators";
+ qcom,pmic-id = "e";
+
+ vdd-l2-supply = <&vreg_s1f_0p7>;
+ vdd-l3-supply = <&vreg_s5j_1p2>;
+
+ vreg_l2e_0p8: ldo2 {
+ regulator-name = "vreg_l2e_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3e_1p2: ldo3 {
+ regulator-name = "vreg_l3e_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380_F */
+ regulators-4 {
+ compatible = "qcom,pmc8380-rpmh-regulators";
+ qcom,pmic-id = "f";
+
+ vdd-l1-supply = <&vreg_s5j_1p2>;
+ vdd-l2-supply = <&vreg_s5j_1p2>;
+ vdd-l3-supply = <&vreg_s5j_1p2>;
+ vdd-s1-supply = <&vph_pwr>;
+
+ vreg_s1f_0p7: smps1 {
+ regulator-name = "vreg_s1f_0p7";
+ regulator-min-microvolt = <700000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1f_1p0: ldo1 {
+ regulator-name = "vreg_l1f_1p0";
+ regulator-min-microvolt = <1024000>;
+ regulator-max-microvolt = <1024000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2f_1p0: ldo2 {
+ regulator-name = "vreg_l2f_1p0";
+ regulator-min-microvolt = <1024000>;
+ regulator-max-microvolt = <1024000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3f_1p0: ldo3 {
+ regulator-name = "vreg_l3f_1p0";
+ regulator-min-microvolt = <1024000>;
+ regulator-max-microvolt = <1024000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380VE_I */
+ regulators-6 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "i";
+
+ vdd-l1-supply = <&vreg_s4c_1p8>;
+ vdd-l2-supply = <&vreg_s5j_1p2>;
+ vdd-l3-supply = <&vreg_s1f_0p7>;
+ vdd-s1-supply = <&vph_pwr>;
+ vdd-s2-supply = <&vph_pwr>;
+
+ vreg_s1i_0p9: smps1 {
+ regulator-name = "vreg_s1i_0p9";
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_s2i_1p0: smps2 {
+ regulator-name = "vreg_s2i_1p0";
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1i_1p8: ldo1 {
+ regulator-name = "vreg_l1i_1p8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2i_1p2: ldo2 {
+ regulator-name = "vreg_l2i_1p2";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3i_0p8: ldo3 {
+ regulator-name = "vreg_l3i_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+
+ /* PMC8380VE_J */
+ regulators-7 {
+ compatible = "qcom,pm8550ve-rpmh-regulators";
+ qcom,pmic-id = "j";
+
+ vdd-l1-supply = <&vreg_s1f_0p7>;
+ vdd-l2-supply = <&vreg_s5j_1p2>;
+ vdd-l3-supply = <&vreg_s1f_0p7>;
+ vdd-s5-supply = <&vph_pwr>;
+
+ vreg_s5j_1p2: smps5 {
+ regulator-name = "vreg_s5j_1p2";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1304000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l1j_0p8: ldo1 {
+ regulator-name = "vreg_l1j_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l2j_1p2: ldo2 {
+ regulator-name = "vreg_l2j_1p2";
+ regulator-min-microvolt = <1256000>;
+ regulator-max-microvolt = <1256000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+
+ vreg_l3j_0p8: ldo3 {
+ regulator-name = "vreg_l3j_0p8";
+ regulator-min-microvolt = <880000>;
+ regulator-max-microvolt = <920000>;
+ regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
+ };
+ };
+};
+
+&pcie4 {
+ perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie4_default>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcie4_phy {
+ vdda-phy-supply = <&vreg_l3i_0p8>;
+ vdda-pll-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&pcie6a {
+ perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
+ wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
+
+ pinctrl-0 = <&pcie6a_default>;
+ pinctrl-names = "default";
+
+ status = "okay";
+};
+
+&pcie6a_phy {
+ vdda-phy-supply = <&vreg_l1d_0p8>;
+ vdda-pll-supply = <&vreg_l2j_1p2>;
+
+ status = "okay";
+};
+
+&qupv3_0 {
+ status = "okay";
+};
+
+&qupv3_1 {
+ status = "okay";
+};
+
+&qupv3_2 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/x1e80100/adsp.mbn",
+ "qcom/x1e80100/adsp_dtb.mbn";
+
+ status = "okay";
+};
+
+&remoteproc_cdsp {
+ firmware-name = "qcom/x1e80100/cdsp.mbn",
+ "qcom/x1e80100/cdsp_dtb.mbn";
+
+ status = "okay";
+};
+
+&tlmm {
+ gpio-reserved-ranges = <34 2>, /* TPM LP & INT */
+ <44 4>; /* SPI (TPM) */
+
+ pcie4_default: pcie4-default-state {
+ clkreq-n-pins {
+ pins = "gpio147";
+ function = "pcie4_clk";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ perst-n-pins {
+ pins = "gpio146";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ wake-n-pins {
+ pins = "gpio148";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+ };
+
+ pcie6a_default: pcie6a-default-state {
+ clkreq-n-pins {
+ pins = "gpio153";
+ function = "pcie6a_clk";
+ drive-strength = <2>;
+ bias-pull-up;
+ };
+
+ perst-n-pins {
+ pins = "gpio152";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ wake-n-pins {
+ pins = "gpio154";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-up;
+
+ };
+ };
+};
+
+&usb_1_ss0 {
+ status = "okay";
+};
+
+&usb_1_ss0_dwc3 {
+ dr_mode = "otg";
+ usb-role-switch;
+};
+
+&usb_1_ss0_hsphy {
+ vdd-supply = <&vreg_l3j_0p8>;
+ vdda12-supply = <&vreg_l2j_1p2>;
+
+ status = "okay";
+};
+
+&usb_1_ss0_qmpphy {
+ vdda-phy-supply = <&vreg_l2j_1p2>;
+ vdda-pll-supply = <&vreg_l1j_0p8>;
+
+ status = "okay";
+};
+
+&usb_1_ss1 {
+ status = "okay";
+};
+
+&usb_1_ss1_dwc3 {
+ dr_mode = "otg";
+ usb-role-switch;
+};
+
+&usb_1_ss1_hsphy {
+ vdd-supply = <&vreg_l3j_0p8>;
+ vdda12-supply = <&vreg_l2j_1p2>;
+
+ status = "okay";
+};
+
+&usb_1_ss1_qmpphy {
+ vdda-phy-supply = <&vreg_l2j_1p2>;
+ vdda-pll-supply = <&vreg_l2d_0p9>;
+
+ status = "okay";
+};
+
+&usb_1_ss2 {
+ status = "okay";
+};
+
+&usb_1_ss2_dwc3 {
+ dr_mode = "otg";
+ usb-role-switch;
+};
+
+&usb_1_ss2_hsphy {
+ vdd-supply = <&vreg_l3j_0p8>;
+ vdda12-supply = <&vreg_l2j_1p2>;
+
+ status = "okay";
+};
+
+&usb_1_ss2_qmpphy {
+ vdda-phy-supply = <&vreg_l2j_1p2>;
+ vdda-pll-supply = <&vreg_l2d_0p9>;
+
+ status = "okay";
+};
+
+&usb_2 {
+ status = "okay";
+};
+
+&usb_2_dwc3 {
+ dr_mode = "host";
+};
+
+&usb_2_hsphy {
+ vdd-supply = <&vreg_l2e_0p8>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_mp {
+ status = "okay";
+};
+
+&usb_mp_hsphy0 {
+ vdd-supply = <&vreg_l2e_0p8>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_mp_hsphy1 {
+ vdd-supply = <&vreg_l2e_0p8>;
+ vdda12-supply = <&vreg_l3e_1p2>;
+
+ status = "okay";
+};
+
+&usb_mp_qmpphy0 {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3c_0p8>;
+
+ status = "okay";
+};
+
+&usb_mp_qmpphy1 {
+ vdda-phy-supply = <&vreg_l3e_1p2>;
+ vdda-pll-supply = <&vreg_l3c_0p8>;
+
+ status = "okay";
+};
--
2.34.1
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-29 1:31 ` [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform Yijie Yang
@ 2025-07-29 8:36 ` Konrad Dybcio
2025-07-29 10:44 ` Dmitry Baryshkov
2025-07-31 15:02 ` Krzysztof Kozlowski
2 siblings, 0 replies; 25+ messages in thread
From: Konrad Dybcio @ 2025-07-29 8:36 UTC (permalink / raw)
To: Yijie Yang, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 7/29/25 3:31 AM, Yijie Yang wrote:
> The HAMOA-IOT-SOM is a compact computing module that integrates a System
> on Chip (SoC) — specifically the x1e80100 — along with essential
> components optimized for IoT applications. It is designed to be mounted on
> carrier boards, enabling the development of complete embedded systems.
>
> This change enables and overlays the following components:
> - Regulators on the SOM
> - Reserved memory regions
> - PCIe6a and its PHY
> - PCIe4 and its PHY
> - USB0 through USB6 and their PHYs
> - ADSP, CDSP
> - WLAN, Bluetooth (M.2 interface)
>
> Written with contributions from Yingying Tang (added PCIe4 and its PHY to
> enable WLAN).
>
> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-29 1:31 ` [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform Yijie Yang
2025-07-29 8:36 ` Konrad Dybcio
@ 2025-07-29 10:44 ` Dmitry Baryshkov
2025-07-30 1:11 ` Yijie Yang
2025-07-31 15:02 ` Krzysztof Kozlowski
2 siblings, 1 reply; 25+ messages in thread
From: Dmitry Baryshkov @ 2025-07-29 10:44 UTC (permalink / raw)
To: Yijie Yang
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Tue, Jul 29, 2025 at 09:31:59AM +0800, Yijie Yang wrote:
> The HAMOA-IOT-SOM is a compact computing module that integrates a System
> on Chip (SoC) — specifically the x1e80100 — along with essential
> components optimized for IoT applications. It is designed to be mounted on
> carrier boards, enabling the development of complete embedded systems.
>
> This change enables and overlays the following components:
What does this mean, how can it overlay something?
> - Regulators on the SOM
> - Reserved memory regions
> - PCIe6a and its PHY
> - PCIe4 and its PHY
> - USB0 through USB6 and their PHYs
> - ADSP, CDSP
> - WLAN, Bluetooth (M.2 interface)
>
> Written with contributions from Yingying Tang (added PCIe4 and its PHY to
> enable WLAN).
>
> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 609 ++++++++++++++++++++++++++++
> 1 file changed, 609 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
> new file mode 100644
> index 0000000000000000000000000000000000000000..5facc5544c3df05b89b25fbcb5cd331e93040f15
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
> @@ -0,0 +1,609 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
> + */
> +
> +#include "x1e80100.dtsi"
> +#include "x1e80100-pmics.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
> +
> +/ {
> + compatible = "hamoa-iot-som", "qcom,x1e80100";
> +
> + reserved-memory {
> + linux,cma {
> + compatible = "shared-dma-pool";
> + size = <0x0 0x8000000>;
> + reusable;
> + linux,cma-default;
> + };
> + };
> +};
> +
> +&apps_rsc {
> + /* PMC8380C_B */
> + regulators-0 {
> + compatible = "qcom,pm8550-rpmh-regulators";
> + qcom,pmic-id = "b";
> +
> + vdd-bob1-supply = <&vph_pwr>;
> + vdd-bob2-supply = <&vph_pwr>;
> + vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
> + vdd-l2-l13-l14-supply = <&vreg_bob1>;
> + vdd-l5-l16-supply = <&vreg_bob1>;
> + vdd-l6-l7-supply = <&vreg_bob2>;
> + vdd-l8-l9-supply = <&vreg_bob1>;
> + vdd-l12-supply = <&vreg_s5j_1p2>;
> + vdd-l15-supply = <&vreg_s4c_1p8>;
> + vdd-l17-supply = <&vreg_bob2>;
> +
> + vreg_bob1: bob1 {
> + regulator-name = "vreg_bob1";
> + regulator-min-microvolt = <3008000>;
> + regulator-max-microvolt = <3960000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_bob2: bob2 {
> + regulator-name = "vreg_bob2";
> + regulator-min-microvolt = <2504000>;
> + regulator-max-microvolt = <3008000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l1b_1p8: ldo1 {
> + regulator-name = "vreg_l1b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2b_3p0: ldo2 {
> + regulator-name = "vreg_l2b_3p0";
> + regulator-min-microvolt = <3072000>;
> + regulator-max-microvolt = <3100000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l4b_1p8: ldo4 {
> + regulator-name = "vreg_l4b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l5b_3p0: ldo5 {
> + regulator-name = "vreg_l5b_3p0";
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3000000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l6b_1p8: ldo6 {
> + regulator-name = "vreg_l6b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2960000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l7b_2p8: ldo7 {
> + regulator-name = "vreg_l7b_2p8";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l8b_3p0: ldo8 {
> + regulator-name = "vreg_l8b_3p0";
> + regulator-min-microvolt = <3072000>;
> + regulator-max-microvolt = <3072000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l9b_2p9: ldo9 {
> + regulator-name = "vreg_l9b_2p9";
> + regulator-min-microvolt = <2960000>;
> + regulator-max-microvolt = <2960000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l10b_1p8: ldo10 {
> + regulator-name = "vreg_l10b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l12b_1p2: ldo12 {
> + regulator-name = "vreg_l12b_1p2";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + regulator-always-on;
> + };
> +
> + vreg_l13b_3p0: ldo13 {
> + regulator-name = "vreg_l13b_3p0";
> + regulator-min-microvolt = <3072000>;
> + regulator-max-microvolt = <3100000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l14b_3p0: ldo14 {
> + regulator-name = "vreg_l14b_3p0";
> + regulator-min-microvolt = <3072000>;
> + regulator-max-microvolt = <3072000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l15b_1p8: ldo15 {
> + regulator-name = "vreg_l15b_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + regulator-always-on;
> + };
> +
> + vreg_l16b_2p9: ldo16 {
> + regulator-name = "vreg_l16b_2p9";
> + regulator-min-microvolt = <2912000>;
> + regulator-max-microvolt = <2912000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l17b_2p5: ldo17 {
> + regulator-name = "vreg_l17b_2p5";
> + regulator-min-microvolt = <2504000>;
> + regulator-max-microvolt = <2504000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380VE_C */
> + regulators-1 {
> + compatible = "qcom,pm8550ve-rpmh-regulators";
> + qcom,pmic-id = "c";
> +
> + vdd-l1-supply = <&vreg_s5j_1p2>;
> + vdd-l2-supply = <&vreg_s1f_0p7>;
> + vdd-l3-supply = <&vreg_s1f_0p7>;
> + vdd-s4-supply = <&vph_pwr>;
> +
> + vreg_s4c_1p8: smps4 {
> + regulator-name = "vreg_s4c_1p8";
> + regulator-min-microvolt = <1856000>;
> + regulator-max-microvolt = <2000000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l1c_1p2: ldo1 {
> + regulator-name = "vreg_l1c_1p2";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2c_0p8: ldo2 {
> + regulator-name = "vreg_l2c_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3c_0p8: ldo3 {
> + regulator-name = "vreg_l3c_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380_D */
> + regulators-2 {
> + compatible = "qcom,pmc8380-rpmh-regulators";
> + qcom,pmic-id = "d";
> +
> + vdd-l1-supply = <&vreg_s1f_0p7>;
> + vdd-l2-supply = <&vreg_s1f_0p7>;
> + vdd-l3-supply = <&vreg_s4c_1p8>;
> + vdd-s1-supply = <&vph_pwr>;
> +
> + vreg_l1d_0p8: ldo1 {
> + regulator-name = "vreg_l1d_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2d_0p9: ldo2 {
> + regulator-name = "vreg_l2d_0p9";
> + regulator-min-microvolt = <912000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3d_1p8: ldo3 {
> + regulator-name = "vreg_l3d_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380_E */
> + regulators-3 {
> + compatible = "qcom,pmc8380-rpmh-regulators";
> + qcom,pmic-id = "e";
> +
> + vdd-l2-supply = <&vreg_s1f_0p7>;
> + vdd-l3-supply = <&vreg_s5j_1p2>;
> +
> + vreg_l2e_0p8: ldo2 {
> + regulator-name = "vreg_l2e_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3e_1p2: ldo3 {
> + regulator-name = "vreg_l3e_1p2";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380_F */
> + regulators-4 {
> + compatible = "qcom,pmc8380-rpmh-regulators";
> + qcom,pmic-id = "f";
> +
> + vdd-l1-supply = <&vreg_s5j_1p2>;
> + vdd-l2-supply = <&vreg_s5j_1p2>;
> + vdd-l3-supply = <&vreg_s5j_1p2>;
> + vdd-s1-supply = <&vph_pwr>;
> +
> + vreg_s1f_0p7: smps1 {
> + regulator-name = "vreg_s1f_0p7";
> + regulator-min-microvolt = <700000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l1f_1p0: ldo1 {
> + regulator-name = "vreg_l1f_1p0";
> + regulator-min-microvolt = <1024000>;
> + regulator-max-microvolt = <1024000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2f_1p0: ldo2 {
> + regulator-name = "vreg_l2f_1p0";
> + regulator-min-microvolt = <1024000>;
> + regulator-max-microvolt = <1024000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3f_1p0: ldo3 {
> + regulator-name = "vreg_l3f_1p0";
> + regulator-min-microvolt = <1024000>;
> + regulator-max-microvolt = <1024000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380VE_I */
> + regulators-6 {
> + compatible = "qcom,pm8550ve-rpmh-regulators";
> + qcom,pmic-id = "i";
> +
> + vdd-l1-supply = <&vreg_s4c_1p8>;
> + vdd-l2-supply = <&vreg_s5j_1p2>;
> + vdd-l3-supply = <&vreg_s1f_0p7>;
> + vdd-s1-supply = <&vph_pwr>;
> + vdd-s2-supply = <&vph_pwr>;
> +
> + vreg_s1i_0p9: smps1 {
> + regulator-name = "vreg_s1i_0p9";
> + regulator-min-microvolt = <900000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_s2i_1p0: smps2 {
> + regulator-name = "vreg_s2i_1p0";
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1100000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l1i_1p8: ldo1 {
> + regulator-name = "vreg_l1i_1p8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2i_1p2: ldo2 {
> + regulator-name = "vreg_l2i_1p2";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3i_0p8: ldo3 {
> + regulator-name = "vreg_l3i_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + /* PMC8380VE_J */
> + regulators-7 {
> + compatible = "qcom,pm8550ve-rpmh-regulators";
> + qcom,pmic-id = "j";
> +
> + vdd-l1-supply = <&vreg_s1f_0p7>;
> + vdd-l2-supply = <&vreg_s5j_1p2>;
> + vdd-l3-supply = <&vreg_s1f_0p7>;
> + vdd-s5-supply = <&vph_pwr>;
> +
> + vreg_s5j_1p2: smps5 {
> + regulator-name = "vreg_s5j_1p2";
> + regulator-min-microvolt = <1256000>;
> + regulator-max-microvolt = <1304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l1j_0p8: ldo1 {
> + regulator-name = "vreg_l1j_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2j_1p2: ldo2 {
> + regulator-name = "vreg_l2j_1p2";
> + regulator-min-microvolt = <1256000>;
> + regulator-max-microvolt = <1256000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3j_0p8: ldo3 {
> + regulator-name = "vreg_l3j_0p8";
> + regulator-min-microvolt = <880000>;
> + regulator-max-microvolt = <920000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +};
> +
> +&pcie4 {
> + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
> + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&pcie4_default>;
> + pinctrl-names = "default";
> +
> + status = "okay";
> +};
> +
> +&pcie4_phy {
> + vdda-phy-supply = <&vreg_l3i_0p8>;
> + vdda-pll-supply = <&vreg_l3e_1p2>;
> +
> + status = "okay";
> +};
> +
> +&pcie6a {
> + perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
> + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&pcie6a_default>;
> + pinctrl-names = "default";
> +
> + status = "okay";
> +};
> +
> +&pcie6a_phy {
> + vdda-phy-supply = <&vreg_l1d_0p8>;
> + vdda-pll-supply = <&vreg_l2j_1p2>;
> +
> + status = "okay";
> +};
> +
> +&qupv3_0 {
> + status = "okay";
> +};
> +
> +&qupv3_1 {
> + status = "okay";
> +};
> +
> +&qupv3_2 {
> + status = "okay";
> +};
> +
> +&remoteproc_adsp {
> + firmware-name = "qcom/x1e80100/adsp.mbn",
> + "qcom/x1e80100/adsp_dtb.mbn";
> +
> + status = "okay";
> +};
> +
> +&remoteproc_cdsp {
> + firmware-name = "qcom/x1e80100/cdsp.mbn",
> + "qcom/x1e80100/cdsp_dtb.mbn";
> +
> + status = "okay";
> +};
> +
> +&tlmm {
> + gpio-reserved-ranges = <34 2>, /* TPM LP & INT */
> + <44 4>; /* SPI (TPM) */
> +
> + pcie4_default: pcie4-default-state {
> + clkreq-n-pins {
> + pins = "gpio147";
> + function = "pcie4_clk";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> +
> + perst-n-pins {
> + pins = "gpio146";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + wake-n-pins {
> + pins = "gpio148";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> + };
> +
> + pcie6a_default: pcie6a-default-state {
> + clkreq-n-pins {
> + pins = "gpio153";
> + function = "pcie6a_clk";
> + drive-strength = <2>;
> + bias-pull-up;
> + };
> +
> + perst-n-pins {
> + pins = "gpio152";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + wake-n-pins {
> + pins = "gpio154";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-up;
> +
> + };
> + };
> +};
> +
> +&usb_1_ss0 {
> + status = "okay";
> +};
> +
> +&usb_1_ss0_dwc3 {
> + dr_mode = "otg";
Should not be necessary, otg is a default.
> + usb-role-switch;
This should be a part of the x1e80100.dtsi, but please see commit
7db0ba3e6e6c ("Revert "arm64: dts: qcom: x1e80100: enable OTG on USB-C
controllers"")
> +};
> +
> +&usb_1_ss0_hsphy {
> + vdd-supply = <&vreg_l3j_0p8>;
> + vdda12-supply = <&vreg_l2j_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss0_qmpphy {
> + vdda-phy-supply = <&vreg_l2j_1p2>;
> + vdda-pll-supply = <&vreg_l1j_0p8>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss1 {
> + status = "okay";
> +};
> +
> +&usb_1_ss1_dwc3 {
> + dr_mode = "otg";
> + usb-role-switch;
> +};
> +
> +&usb_1_ss1_hsphy {
> + vdd-supply = <&vreg_l3j_0p8>;
> + vdda12-supply = <&vreg_l2j_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss1_qmpphy {
> + vdda-phy-supply = <&vreg_l2j_1p2>;
> + vdda-pll-supply = <&vreg_l2d_0p9>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss2 {
> + status = "okay";
> +};
> +
> +&usb_1_ss2_dwc3 {
> + dr_mode = "otg";
> + usb-role-switch;
> +};
> +
> +&usb_1_ss2_hsphy {
> + vdd-supply = <&vreg_l3j_0p8>;
> + vdda12-supply = <&vreg_l2j_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_ss2_qmpphy {
> + vdda-phy-supply = <&vreg_l2j_1p2>;
> + vdda-pll-supply = <&vreg_l2d_0p9>;
> +
> + status = "okay";
> +};
> +
> +&usb_2 {
> + status = "okay";
> +};
> +
> +&usb_2_dwc3 {
> + dr_mode = "host";
Why? Is it actually host-only?
> +};
> +
> +&usb_2_hsphy {
> + vdd-supply = <&vreg_l2e_0p8>;
> + vdda12-supply = <&vreg_l3e_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_mp {
> + status = "okay";
> +};
> +
> +&usb_mp_hsphy0 {
> + vdd-supply = <&vreg_l2e_0p8>;
> + vdda12-supply = <&vreg_l3e_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_mp_hsphy1 {
> + vdd-supply = <&vreg_l2e_0p8>;
> + vdda12-supply = <&vreg_l3e_1p2>;
> +
> + status = "okay";
> +};
> +
> +&usb_mp_qmpphy0 {
> + vdda-phy-supply = <&vreg_l3e_1p2>;
> + vdda-pll-supply = <&vreg_l3c_0p8>;
> +
> + status = "okay";
> +};
> +
> +&usb_mp_qmpphy1 {
> + vdda-phy-supply = <&vreg_l3e_1p2>;
> + vdda-pll-supply = <&vreg_l3c_0p8>;
> +
> + status = "okay";
> +};
>
> --
> 2.34.1
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-29 10:44 ` Dmitry Baryshkov
@ 2025-07-30 1:11 ` Yijie Yang
2025-07-30 6:44 ` Krzysztof Kozlowski
0 siblings, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-07-30 1:11 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-07-29 18:44, Dmitry Baryshkov wrote:
> On Tue, Jul 29, 2025 at 09:31:59AM +0800, Yijie Yang wrote:
>> The HAMOA-IOT-SOM is a compact computing module that integrates a System
>> on Chip (SoC) — specifically the x1e80100 — along with essential
>> components optimized for IoT applications. It is designed to be mounted on
>> carrier boards, enabling the development of complete embedded systems.
>>
>> This change enables and overlays the following components:
>
> What does this mean, how can it overlay something?
What I want to convey here is that I referenced some nodes defined in
x1e80100.dtsi within this file to add additional properties. I’ll revise
the wording to make this clearer.
>
>> - Regulators on the SOM
>> - Reserved memory regions
>> - PCIe6a and its PHY
>> - PCIe4 and its PHY
>> - USB0 through USB6 and their PHYs
>> - ADSP, CDSP
>> - WLAN, Bluetooth (M.2 interface)
>>
>> Written with contributions from Yingying Tang (added PCIe4 and its PHY to
>> enable WLAN).
>>
>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
>> ---
>> arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 609 ++++++++++++++++++++++++++++
>> 1 file changed, 609 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
>> new file mode 100644
>> index 0000000000000000000000000000000000000000..5facc5544c3df05b89b25fbcb5cd331e93040f15
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
>> @@ -0,0 +1,609 @@
>> +// SPDX-License-Identifier: BSD-3-Clause
>> +/*
>> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
>> + */
>> +
>> +#include "x1e80100.dtsi"
>> +#include "x1e80100-pmics.dtsi"
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>> +
>> +/ {
>> + compatible = "hamoa-iot-som", "qcom,x1e80100";
>> +
>> + reserved-memory {
>> + linux,cma {
>> + compatible = "shared-dma-pool";
>> + size = <0x0 0x8000000>;
>> + reusable;
>> + linux,cma-default;
>> + };
>> + };
>> +};
>> +
>> +&apps_rsc {
>> + /* PMC8380C_B */
>> + regulators-0 {
>> + compatible = "qcom,pm8550-rpmh-regulators";
>> + qcom,pmic-id = "b";
>> +
>> + vdd-bob1-supply = <&vph_pwr>;
>> + vdd-bob2-supply = <&vph_pwr>;
>> + vdd-l1-l4-l10-supply = <&vreg_s4c_1p8>;
>> + vdd-l2-l13-l14-supply = <&vreg_bob1>;
>> + vdd-l5-l16-supply = <&vreg_bob1>;
>> + vdd-l6-l7-supply = <&vreg_bob2>;
>> + vdd-l8-l9-supply = <&vreg_bob1>;
>> + vdd-l12-supply = <&vreg_s5j_1p2>;
>> + vdd-l15-supply = <&vreg_s4c_1p8>;
>> + vdd-l17-supply = <&vreg_bob2>;
>> +
>> + vreg_bob1: bob1 {
>> + regulator-name = "vreg_bob1";
>> + regulator-min-microvolt = <3008000>;
>> + regulator-max-microvolt = <3960000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_bob2: bob2 {
>> + regulator-name = "vreg_bob2";
>> + regulator-min-microvolt = <2504000>;
>> + regulator-max-microvolt = <3008000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l1b_1p8: ldo1 {
>> + regulator-name = "vreg_l1b_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2b_3p0: ldo2 {
>> + regulator-name = "vreg_l2b_3p0";
>> + regulator-min-microvolt = <3072000>;
>> + regulator-max-microvolt = <3100000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l4b_1p8: ldo4 {
>> + regulator-name = "vreg_l4b_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l5b_3p0: ldo5 {
>> + regulator-name = "vreg_l5b_3p0";
>> + regulator-min-microvolt = <3000000>;
>> + regulator-max-microvolt = <3000000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l6b_1p8: ldo6 {
>> + regulator-name = "vreg_l6b_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <2960000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l7b_2p8: ldo7 {
>> + regulator-name = "vreg_l7b_2p8";
>> + regulator-min-microvolt = <2800000>;
>> + regulator-max-microvolt = <2800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l8b_3p0: ldo8 {
>> + regulator-name = "vreg_l8b_3p0";
>> + regulator-min-microvolt = <3072000>;
>> + regulator-max-microvolt = <3072000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l9b_2p9: ldo9 {
>> + regulator-name = "vreg_l9b_2p9";
>> + regulator-min-microvolt = <2960000>;
>> + regulator-max-microvolt = <2960000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l10b_1p8: ldo10 {
>> + regulator-name = "vreg_l10b_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l12b_1p2: ldo12 {
>> + regulator-name = "vreg_l12b_1p2";
>> + regulator-min-microvolt = <1200000>;
>> + regulator-max-microvolt = <1200000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + regulator-always-on;
>> + };
>> +
>> + vreg_l13b_3p0: ldo13 {
>> + regulator-name = "vreg_l13b_3p0";
>> + regulator-min-microvolt = <3072000>;
>> + regulator-max-microvolt = <3100000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l14b_3p0: ldo14 {
>> + regulator-name = "vreg_l14b_3p0";
>> + regulator-min-microvolt = <3072000>;
>> + regulator-max-microvolt = <3072000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l15b_1p8: ldo15 {
>> + regulator-name = "vreg_l15b_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + regulator-always-on;
>> + };
>> +
>> + vreg_l16b_2p9: ldo16 {
>> + regulator-name = "vreg_l16b_2p9";
>> + regulator-min-microvolt = <2912000>;
>> + regulator-max-microvolt = <2912000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l17b_2p5: ldo17 {
>> + regulator-name = "vreg_l17b_2p5";
>> + regulator-min-microvolt = <2504000>;
>> + regulator-max-microvolt = <2504000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380VE_C */
>> + regulators-1 {
>> + compatible = "qcom,pm8550ve-rpmh-regulators";
>> + qcom,pmic-id = "c";
>> +
>> + vdd-l1-supply = <&vreg_s5j_1p2>;
>> + vdd-l2-supply = <&vreg_s1f_0p7>;
>> + vdd-l3-supply = <&vreg_s1f_0p7>;
>> + vdd-s4-supply = <&vph_pwr>;
>> +
>> + vreg_s4c_1p8: smps4 {
>> + regulator-name = "vreg_s4c_1p8";
>> + regulator-min-microvolt = <1856000>;
>> + regulator-max-microvolt = <2000000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l1c_1p2: ldo1 {
>> + regulator-name = "vreg_l1c_1p2";
>> + regulator-min-microvolt = <1200000>;
>> + regulator-max-microvolt = <1200000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2c_0p8: ldo2 {
>> + regulator-name = "vreg_l2c_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3c_0p8: ldo3 {
>> + regulator-name = "vreg_l3c_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380_D */
>> + regulators-2 {
>> + compatible = "qcom,pmc8380-rpmh-regulators";
>> + qcom,pmic-id = "d";
>> +
>> + vdd-l1-supply = <&vreg_s1f_0p7>;
>> + vdd-l2-supply = <&vreg_s1f_0p7>;
>> + vdd-l3-supply = <&vreg_s4c_1p8>;
>> + vdd-s1-supply = <&vph_pwr>;
>> +
>> + vreg_l1d_0p8: ldo1 {
>> + regulator-name = "vreg_l1d_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2d_0p9: ldo2 {
>> + regulator-name = "vreg_l2d_0p9";
>> + regulator-min-microvolt = <912000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3d_1p8: ldo3 {
>> + regulator-name = "vreg_l3d_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380_E */
>> + regulators-3 {
>> + compatible = "qcom,pmc8380-rpmh-regulators";
>> + qcom,pmic-id = "e";
>> +
>> + vdd-l2-supply = <&vreg_s1f_0p7>;
>> + vdd-l3-supply = <&vreg_s5j_1p2>;
>> +
>> + vreg_l2e_0p8: ldo2 {
>> + regulator-name = "vreg_l2e_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3e_1p2: ldo3 {
>> + regulator-name = "vreg_l3e_1p2";
>> + regulator-min-microvolt = <1200000>;
>> + regulator-max-microvolt = <1200000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380_F */
>> + regulators-4 {
>> + compatible = "qcom,pmc8380-rpmh-regulators";
>> + qcom,pmic-id = "f";
>> +
>> + vdd-l1-supply = <&vreg_s5j_1p2>;
>> + vdd-l2-supply = <&vreg_s5j_1p2>;
>> + vdd-l3-supply = <&vreg_s5j_1p2>;
>> + vdd-s1-supply = <&vph_pwr>;
>> +
>> + vreg_s1f_0p7: smps1 {
>> + regulator-name = "vreg_s1f_0p7";
>> + regulator-min-microvolt = <700000>;
>> + regulator-max-microvolt = <1100000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l1f_1p0: ldo1 {
>> + regulator-name = "vreg_l1f_1p0";
>> + regulator-min-microvolt = <1024000>;
>> + regulator-max-microvolt = <1024000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2f_1p0: ldo2 {
>> + regulator-name = "vreg_l2f_1p0";
>> + regulator-min-microvolt = <1024000>;
>> + regulator-max-microvolt = <1024000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3f_1p0: ldo3 {
>> + regulator-name = "vreg_l3f_1p0";
>> + regulator-min-microvolt = <1024000>;
>> + regulator-max-microvolt = <1024000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380VE_I */
>> + regulators-6 {
>> + compatible = "qcom,pm8550ve-rpmh-regulators";
>> + qcom,pmic-id = "i";
>> +
>> + vdd-l1-supply = <&vreg_s4c_1p8>;
>> + vdd-l2-supply = <&vreg_s5j_1p2>;
>> + vdd-l3-supply = <&vreg_s1f_0p7>;
>> + vdd-s1-supply = <&vph_pwr>;
>> + vdd-s2-supply = <&vph_pwr>;
>> +
>> + vreg_s1i_0p9: smps1 {
>> + regulator-name = "vreg_s1i_0p9";
>> + regulator-min-microvolt = <900000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_s2i_1p0: smps2 {
>> + regulator-name = "vreg_s2i_1p0";
>> + regulator-min-microvolt = <1000000>;
>> + regulator-max-microvolt = <1100000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l1i_1p8: ldo1 {
>> + regulator-name = "vreg_l1i_1p8";
>> + regulator-min-microvolt = <1800000>;
>> + regulator-max-microvolt = <1800000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2i_1p2: ldo2 {
>> + regulator-name = "vreg_l2i_1p2";
>> + regulator-min-microvolt = <1200000>;
>> + regulator-max-microvolt = <1200000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3i_0p8: ldo3 {
>> + regulator-name = "vreg_l3i_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +
>> + /* PMC8380VE_J */
>> + regulators-7 {
>> + compatible = "qcom,pm8550ve-rpmh-regulators";
>> + qcom,pmic-id = "j";
>> +
>> + vdd-l1-supply = <&vreg_s1f_0p7>;
>> + vdd-l2-supply = <&vreg_s5j_1p2>;
>> + vdd-l3-supply = <&vreg_s1f_0p7>;
>> + vdd-s5-supply = <&vph_pwr>;
>> +
>> + vreg_s5j_1p2: smps5 {
>> + regulator-name = "vreg_s5j_1p2";
>> + regulator-min-microvolt = <1256000>;
>> + regulator-max-microvolt = <1304000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l1j_0p8: ldo1 {
>> + regulator-name = "vreg_l1j_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l2j_1p2: ldo2 {
>> + regulator-name = "vreg_l2j_1p2";
>> + regulator-min-microvolt = <1256000>;
>> + regulator-max-microvolt = <1256000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> +
>> + vreg_l3j_0p8: ldo3 {
>> + regulator-name = "vreg_l3j_0p8";
>> + regulator-min-microvolt = <880000>;
>> + regulator-max-microvolt = <920000>;
>> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
>> + };
>> + };
>> +};
>> +
>> +&pcie4 {
>> + perst-gpios = <&tlmm 146 GPIO_ACTIVE_LOW>;
>> + wake-gpios = <&tlmm 148 GPIO_ACTIVE_LOW>;
>> +
>> + pinctrl-0 = <&pcie4_default>;
>> + pinctrl-names = "default";
>> +
>> + status = "okay";
>> +};
>> +
>> +&pcie4_phy {
>> + vdda-phy-supply = <&vreg_l3i_0p8>;
>> + vdda-pll-supply = <&vreg_l3e_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&pcie6a {
>> + perst-gpios = <&tlmm 152 GPIO_ACTIVE_LOW>;
>> + wake-gpios = <&tlmm 154 GPIO_ACTIVE_LOW>;
>> +
>> + pinctrl-0 = <&pcie6a_default>;
>> + pinctrl-names = "default";
>> +
>> + status = "okay";
>> +};
>> +
>> +&pcie6a_phy {
>> + vdda-phy-supply = <&vreg_l1d_0p8>;
>> + vdda-pll-supply = <&vreg_l2j_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&qupv3_0 {
>> + status = "okay";
>> +};
>> +
>> +&qupv3_1 {
>> + status = "okay";
>> +};
>> +
>> +&qupv3_2 {
>> + status = "okay";
>> +};
>> +
>> +&remoteproc_adsp {
>> + firmware-name = "qcom/x1e80100/adsp.mbn",
>> + "qcom/x1e80100/adsp_dtb.mbn";
>> +
>> + status = "okay";
>> +};
>> +
>> +&remoteproc_cdsp {
>> + firmware-name = "qcom/x1e80100/cdsp.mbn",
>> + "qcom/x1e80100/cdsp_dtb.mbn";
>> +
>> + status = "okay";
>> +};
>> +
>> +&tlmm {
>> + gpio-reserved-ranges = <34 2>, /* TPM LP & INT */
>> + <44 4>; /* SPI (TPM) */
>> +
>> + pcie4_default: pcie4-default-state {
>> + clkreq-n-pins {
>> + pins = "gpio147";
>> + function = "pcie4_clk";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> +
>> + perst-n-pins {
>> + pins = "gpio146";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + wake-n-pins {
>> + pins = "gpio148";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> + };
>> +
>> + pcie6a_default: pcie6a-default-state {
>> + clkreq-n-pins {
>> + pins = "gpio153";
>> + function = "pcie6a_clk";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> +
>> + perst-n-pins {
>> + pins = "gpio152";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + wake-n-pins {
>> + pins = "gpio154";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> +
>> + };
>> + };
>> +};
>> +
>> +&usb_1_ss0 {
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss0_dwc3 {
>> + dr_mode = "otg";
>
> Should not be necessary, otg is a default.
>
>> + usb-role-switch;
>
> This should be a part of the x1e80100.dtsi, but please see commit
> 7db0ba3e6e6c ("Revert "arm64: dts: qcom: x1e80100: enable OTG on USB-C
> controllers"")
>
>> +};
>> +
>> +&usb_1_ss0_hsphy {
>> + vdd-supply = <&vreg_l3j_0p8>;
>> + vdda12-supply = <&vreg_l2j_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss0_qmpphy {
>> + vdda-phy-supply = <&vreg_l2j_1p2>;
>> + vdda-pll-supply = <&vreg_l1j_0p8>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss1 {
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss1_dwc3 {
>> + dr_mode = "otg";
>> + usb-role-switch;
>> +};
>> +
>> +&usb_1_ss1_hsphy {
>> + vdd-supply = <&vreg_l3j_0p8>;
>> + vdda12-supply = <&vreg_l2j_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss1_qmpphy {
>> + vdda-phy-supply = <&vreg_l2j_1p2>;
>> + vdda-pll-supply = <&vreg_l2d_0p9>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss2 {
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss2_dwc3 {
>> + dr_mode = "otg";
>> + usb-role-switch;
>> +};
>> +
>> +&usb_1_ss2_hsphy {
>> + vdd-supply = <&vreg_l3j_0p8>;
>> + vdda12-supply = <&vreg_l2j_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_ss2_qmpphy {
>> + vdda-phy-supply = <&vreg_l2j_1p2>;
>> + vdda-pll-supply = <&vreg_l2d_0p9>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_2 {
>> + status = "okay";
>> +};
>> +
>> +&usb_2_dwc3 {
>> + dr_mode = "host";
>
> Why? Is it actually host-only?
>
>> +};
>> +
>> +&usb_2_hsphy {
>> + vdd-supply = <&vreg_l2e_0p8>;
>> + vdda12-supply = <&vreg_l3e_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_mp {
>> + status = "okay";
>> +};
>> +
>> +&usb_mp_hsphy0 {
>> + vdd-supply = <&vreg_l2e_0p8>;
>> + vdda12-supply = <&vreg_l3e_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_mp_hsphy1 {
>> + vdd-supply = <&vreg_l2e_0p8>;
>> + vdda12-supply = <&vreg_l3e_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_mp_qmpphy0 {
>> + vdda-phy-supply = <&vreg_l3e_1p2>;
>> + vdda-pll-supply = <&vreg_l3c_0p8>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_mp_qmpphy1 {
>> + vdda-phy-supply = <&vreg_l3e_1p2>;
>> + vdda-pll-supply = <&vreg_l3c_0p8>;
>> +
>> + status = "okay";
>> +};
>>
>> --
>> 2.34.1
>>
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-30 1:11 ` Yijie Yang
@ 2025-07-30 6:44 ` Krzysztof Kozlowski
2025-07-30 7:13 ` Yijie Yang
0 siblings, 1 reply; 25+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-30 6:44 UTC (permalink / raw)
To: Yijie Yang, Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 30/07/2025 03:11, Yijie Yang wrote:
>
>
> On 2025-07-29 18:44, Dmitry Baryshkov wrote:
>> On Tue, Jul 29, 2025 at 09:31:59AM +0800, Yijie Yang wrote:
>>> The HAMOA-IOT-SOM is a compact computing module that integrates a System
>>> on Chip (SoC) — specifically the x1e80100 — along with essential
>>> components optimized for IoT applications. It is designed to be mounted on
>>> carrier boards, enabling the development of complete embedded systems.
>>>
>>> This change enables and overlays the following components:
>>
>> What does this mean, how can it overlay something?
>
> What I want to convey here is that I referenced some nodes defined in
> x1e80100.dtsi within this file to add additional properties. I’ll revise
> the wording to make this clearer.
That is not an overlay. Use proper, not misleading terms.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-30 6:44 ` Krzysztof Kozlowski
@ 2025-07-30 7:13 ` Yijie Yang
0 siblings, 0 replies; 25+ messages in thread
From: Yijie Yang @ 2025-07-30 7:13 UTC (permalink / raw)
To: Krzysztof Kozlowski, Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-07-30 14:44, Krzysztof Kozlowski wrote:
> On 30/07/2025 03:11, Yijie Yang wrote:
>>
>>
>> On 2025-07-29 18:44, Dmitry Baryshkov wrote:
>>> On Tue, Jul 29, 2025 at 09:31:59AM +0800, Yijie Yang wrote:
>>>> The HAMOA-IOT-SOM is a compact computing module that integrates a System
>>>> on Chip (SoC) — specifically the x1e80100 — along with essential
>>>> components optimized for IoT applications. It is designed to be mounted on
>>>> carrier boards, enabling the development of complete embedded systems.
>>>>
>>>> This change enables and overlays the following components:
>>>
>>> What does this mean, how can it overlay something?
>>
>> What I want to convey here is that I referenced some nodes defined in
>> x1e80100.dtsi within this file to add additional properties. I’ll revise
>> the wording to make this clearer.
>
> That is not an overlay. Use proper, not misleading terms.
Thanks for pointing that out. I take care of it.
>
> Best regards,
> Krzysztof
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform
2025-07-29 1:31 ` [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform Yijie Yang
2025-07-29 8:36 ` Konrad Dybcio
2025-07-29 10:44 ` Dmitry Baryshkov
@ 2025-07-31 15:02 ` Krzysztof Kozlowski
2 siblings, 0 replies; 25+ messages in thread
From: Krzysztof Kozlowski @ 2025-07-31 15:02 UTC (permalink / raw)
To: Yijie Yang, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 29/07/2025 03:31, Yijie Yang wrote:
> The HAMOA-IOT-SOM is a compact computing module that integrates a System
> on Chip (SoC) — specifically the x1e80100 — along with essential
> components optimized for IoT applications. It is designed to be mounted on
> carrier boards, enabling the development of complete embedded systems.
>
> This change enables and overlays the following components:
> - Regulators on the SOM
> - Reserved memory regions
> - PCIe6a and its PHY
> - PCIe4 and its PHY
> - USB0 through USB6 and their PHYs
> - ADSP, CDSP
> - WLAN, Bluetooth (M.2 interface)
>
> Written with contributions from Yingying Tang (added PCIe4 and its PHY to
> enable WLAN).
>
> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
> ---
> arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi | 609 ++++++++++++++++++++++++++++
> 1 file changed, 609 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
> new file mode 100644
> index 0000000000000000000000000000000000000000..5facc5544c3df05b89b25fbcb5cd331e93040f15
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-som.dtsi
> @@ -0,0 +1,609 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
There is some discussion inside, so maybe you already resolved it. If
not: please use copyright format as requested by GPL FAQ, so provide
date of first publication of this patch on mailing lists.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 1:31 [PATCH v3 0/4] Initial support for Qualcomm Hamoa IOT EVK board Yijie Yang
` (2 preceding siblings ...)
2025-07-29 1:31 ` [PATCH v3 3/4] arm64: dts: qcom: Add HAMOA-IOT-SOM platform Yijie Yang
@ 2025-07-29 1:32 ` Yijie Yang
2025-07-29 5:51 ` Yijie Yang
2025-07-29 10:37 ` Dmitry Baryshkov
3 siblings, 2 replies; 25+ messages in thread
From: Yijie Yang @ 2025-07-29 1:32 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: Yijie Yang, linux-arm-msm, devicetree, linux-kernel
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 and overlays 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
Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
Mou (added USB DisplayPorts).
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 | 992 +++++++++++++++++++++++++++++
2 files changed, 993 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..c5994b75d3e56e74ffb64b2389ee1bcc086f3065 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 0000000000000000000000000000000000000000..02daec04f933c0b3ab9bd329f56ac1ba0401ddef
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
@@ -0,0 +1,992 @@
+// 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>;
+ };
+ };
+ };
+ };
+ };
+
+ 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_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-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;
+ };
+
+ 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;
+ };
+
+ 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>;
+ };
+ };
+ };
+
+ 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-boot-on;
+ };
+
+ /*
+ * 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;
+ };
+
+ 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";
+ };
+ };
+ };
+};
+
+&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>;
+ };
+ };
+ };
+ };
+};
+
+&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>;
+ };
+ };
+ };
+ };
+
+ ports {
+ port@1 {
+ reg = <1>;
+
+ mdss_dp3_out: endpoint {
+ 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>;
+};
+
+&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>;
+ };
+ };
+
+ 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;
+ };
+
+ 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
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 1:32 ` [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board Yijie Yang
@ 2025-07-29 5:51 ` Yijie Yang
2025-07-29 8:37 ` Konrad Dybcio
2025-07-29 10:37 ` Dmitry Baryshkov
1 sibling, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-07-29 5:51 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 2025-07-29 09:32, 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 and overlays 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
>
> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
> Mou (added USB DisplayPorts).
>
> 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 | 992 +++++++++++++++++++++++++++++
> 2 files changed, 993 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..c5994b75d3e56e74ffb64b2389ee1bcc086f3065 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 0000000000000000000000000000000000000000..02daec04f933c0b3ab9bd329f56ac1ba0401ddef
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
> @@ -0,0 +1,992 @@
> +// 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>;
> + };
> + };
> + };
> + };
> + };
> +
> + 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_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-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;
> + };
> +
> + 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;
> + };
> +
> + 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>;
> + };
> + };
> + };
> +
> + 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-boot-on;
It should be set to 'regulator-always-on'.
> + };
> +
> + /*
> + * 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;
> + };
> +
> + 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";
> + };
> + };
> + };
> +};
> +
> +&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>;
> + };
> + };
> + };
> + };
> +};
> +
> +&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>;
> + };
> + };
> + };
> + };
> +
> + ports {
> + port@1 {
> + reg = <1>;
> +
> + mdss_dp3_out: endpoint {
> + 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>;
> +};
> +
> +&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>;
> + };
> + };
> +
> + 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;
> + };
> +
> + 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>;
> +};
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 5:51 ` Yijie Yang
@ 2025-07-29 8:37 ` Konrad Dybcio
2025-07-29 9:39 ` Yingying Tang
0 siblings, 1 reply; 25+ messages in thread
From: Konrad Dybcio @ 2025-07-29 8:37 UTC (permalink / raw)
To: Yijie Yang, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel
On 7/29/25 7:51 AM, Yijie Yang wrote:
>
>
> On 2025-07-29 09:32, 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 and overlays 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
>>
>> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
>> Mou (added USB DisplayPorts).
>>
>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
>> ---
[...]>> + 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-boot-on;
>
> It should be set to 'regulator-always-on'.
Are you sure? Turning off Wi-Fi sounds like a valid usecase..
Konrad
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 8:37 ` Konrad Dybcio
@ 2025-07-29 9:39 ` Yingying Tang
2025-07-31 11:33 ` Konrad Dybcio
0 siblings, 1 reply; 25+ messages in thread
From: Yingying Tang @ 2025-07-29 9:39 UTC (permalink / raw)
To: Konrad Dybcio, Yijie Yang, Bjorn Andersson, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Shuai Zhang,
quic_miaoqing, quic_zhichen
On 7/29/2025 4:37 PM, Konrad Dybcio wrote:
> On 7/29/25 7:51 AM, Yijie Yang wrote:
>>
>>
>> On 2025-07-29 09:32, 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 and overlays 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
>>>
>>> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
>>> Mou (added USB DisplayPorts).
>>>
>>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
>>> ---
>
> [...]>> + 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-boot-on;
>>
>> It should be set to 'regulator-always-on'.
>
> Are you sure? Turning off Wi-Fi sounds like a valid usecase..
Hi Konard, It is m.2 interface on Hamoa. The PCIe power of m.2 should be always on.
Even on QCOM's B2B interface, we are unable to dynamically control the power of PCIe devices on upstream kernel.
The PCIe specification does not support dynamic power control between the PCIe device and the RC.
PCIe power should be always on here.
>
> Konrad
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 9:39 ` Yingying Tang
@ 2025-07-31 11:33 ` Konrad Dybcio
0 siblings, 0 replies; 25+ messages in thread
From: Konrad Dybcio @ 2025-07-31 11:33 UTC (permalink / raw)
To: Yingying Tang, Yijie Yang, Bjorn Andersson, Konrad Dybcio,
Rob Herring, Krzysztof Kozlowski, Conor Dooley
Cc: linux-arm-msm, devicetree, linux-kernel, Shuai Zhang,
quic_miaoqing, quic_zhichen
On 7/29/25 11:39 AM, Yingying Tang wrote:
>
>
> On 7/29/2025 4:37 PM, Konrad Dybcio wrote:
>> On 7/29/25 7:51 AM, Yijie Yang wrote:
>>>
>>>
>>> On 2025-07-29 09:32, 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 and overlays 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
>>>>
>>>> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
>>>> Mou (added USB DisplayPorts).
>>>>
>>>> Signed-off-by: Yijie Yang <yijie.yang@oss.qualcomm.com>
>>>> ---
>>
>> [...]>> + 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-boot-on;
>>>
>>> It should be set to 'regulator-always-on'.
>>
>> Are you sure? Turning off Wi-Fi sounds like a valid usecase..
>
> Hi Konard, It is m.2 interface on Hamoa. The PCIe power of m.2 should be always on.
>
> Even on QCOM's B2B interface, we are unable to dynamically control the power of PCIe devices on upstream kernel.
> The PCIe specification does not support dynamic power control between the PCIe device and the RC.
> PCIe power should be always on here.
I see, I was confused by the name
Konrad
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 1:32 ` [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board Yijie Yang
2025-07-29 5:51 ` Yijie Yang
@ 2025-07-29 10:37 ` Dmitry Baryshkov
2025-07-30 1:07 ` Yijie Yang
2025-07-30 6:28 ` Yijie Yang
1 sibling, 2 replies; 25+ messages in thread
From: Dmitry Baryshkov @ 2025-07-29 10:37 UTC (permalink / raw)
To: Yijie Yang
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>
> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
> Mou (added USB DisplayPorts).
Please use S-o-B + Co-developed-by instead. You can add comments on the
tag line after the hash sign.
>
> 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 | 992 +++++++++++++++++++++++++++++
> 2 files changed, 993 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..c5994b75d3e56e74ffb64b2389ee1bcc086f3065 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 0000000000000000000000000000000000000000..02daec04f933c0b3ab9bd329f56ac1ba0401ddef
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
> @@ -0,0 +1,992 @@
> +// 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>;
No retimers on SS0?
> + };
> + };
> +
> + 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>;
> + };
> + };
> + };
> + };
> + };
> +
> + 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_edp_3p3: regulator-edp-3p3 {
regulator-edp-3p3 < regulator-vph-pwr
> + 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-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;
> + };
> +
> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
Hmm, so there are regulators for the retimer, but they are not used.
Could you please point out, why?
> + 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;
> + };
> +
> + 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>;
> + };
> + };
> + };
> +
> + vreg_wcn_3p3: regulator-wcn-3p3 {
regulator-wcn-3p3 < usb-1-ss0-sbu-mux
> + 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-boot-on;
> + };
> +
> + /*
> + * 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;
> + };
> +
> + 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";
> + };
> + };
> + };
> +};
> +
> +&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>;
> + };
> + };
> + };
> + };
> +};
> +
> +&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>;
> + };
> + };
> + };
> + };
> +
> + ports {
> + port@1 {
Rebase on top of https://lore.kernel.org/r/20250724-move-edp-endpoints-v1-0-6ca569812838@oss.qualcomm.com
> + reg = <1>;
> +
> + mdss_dp3_out: endpoint {
> + 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>;
> +};
> +
> +&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;
What does this pin do? It's not recommended to set GPIO values through
pinctrl.
> + };
> +
> + oe-n-pins {
> + pins = "gpio168";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <2>;
> + };
> +
> + sel-pins {
> + pins = "gpio167";
> + function = "gpio";
> + bias-disable;
> + drive-strength = <2>;
> + };
> + };
> +
> + 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;
> + };
> +
> + wcn_usb_sw_n: wcn-usb-sw-n-state {
What does this pin do? Using pinctrl to set GPIO values is not
recommended AFAIR.
> + 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
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 10:37 ` Dmitry Baryshkov
@ 2025-07-30 1:07 ` Yijie Yang
2025-07-30 6:28 ` Yijie Yang
1 sibling, 0 replies; 25+ messages in thread
From: Yijie Yang @ 2025-07-30 1:07 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-07-29 18:37, Dmitry Baryshkov wrote:
> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>>
>> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
>> Mou (added USB DisplayPorts).
>
> Please use S-o-B + Co-developed-by instead. You can add comments on the
> tag line after the hash sign.
Sure, I'll take care of it.
>
>>
>> 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 | 992 +++++++++++++++++++++++++++++
>> 2 files changed, 993 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
>> index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..c5994b75d3e56e74ffb64b2389ee1bcc086f3065 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 0000000000000000000000000000000000000000..02daec04f933c0b3ab9bd329f56ac1ba0401ddef
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
>> @@ -0,0 +1,992 @@
>> +// 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>;
>
> No retimers on SS0?
>
>> + };
>> + };
>> +
>> + 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>;
>> + };
>> + };
>> + };
>> + };
>> + };
>> +
>> + 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_edp_3p3: regulator-edp-3p3 {
>
> regulator-edp-3p3 < regulator-vph-pwr
>
>> + 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-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;
>> + };
>> +
>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
>
> Hmm, so there are regulators for the retimer, but they are not used.
> Could you please point out, why?
>
>> + 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;
>> + };
>> +
>> + 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>;
>> + };
>> + };
>> + };
>> +
>> + vreg_wcn_3p3: regulator-wcn-3p3 {
>
> regulator-wcn-3p3 < usb-1-ss0-sbu-mux
>
>> + 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-boot-on;
>> + };
>> +
>> + /*
>> + * 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;
>> + };
>> +
>> + 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";
>> + };
>> + };
>> + };
>> +};
>> +
>> +&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>;
>> + };
>> + };
>> + };
>> + };
>> +};
>> +
>> +&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>;
>> + };
>> + };
>> + };
>> + };
>> +
>> + ports {
>> + port@1 {
>
> Rebase on top of https://lore.kernel.org/r/20250724-move-edp-endpoints-v1-0-6ca569812838@oss.qualcomm.com
>
>> + reg = <1>;
>> +
>> + mdss_dp3_out: endpoint {
>> + 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>;
>> +};
>> +
>> +&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;
>
> What does this pin do? It's not recommended to set GPIO values through
> pinctrl.
>
>> + };
>> +
>> + oe-n-pins {
>> + pins = "gpio168";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <2>;
>> + };
>> +
>> + sel-pins {
>> + pins = "gpio167";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <2>;
>> + };
>> + };
>> +
>> + 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;
>> + };
>> +
>> + wcn_usb_sw_n: wcn-usb-sw-n-state {
>
> What does this pin do? Using pinctrl to set GPIO values is not
> recommended AFAIR.
>
>> + 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
>>
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-29 10:37 ` Dmitry Baryshkov
2025-07-30 1:07 ` Yijie Yang
@ 2025-07-30 6:28 ` Yijie Yang
2025-07-30 18:42 ` Dmitry Baryshkov
1 sibling, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-07-30 6:28 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-07-29 18:37, Dmitry Baryshkov wrote:
> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>>
>> Written with contributions from Shuai Zhang (added Bluetooth) and Yongxing
>> Mou (added USB DisplayPorts).
>
> Please use S-o-B + Co-developed-by instead. You can add comments on the
> tag line after the hash sign.
>
>>
>> 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 | 992 +++++++++++++++++++++++++++++
>> 2 files changed, 993 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
>> index 4bfa926b6a0850c3c459bcba28129c559d50a7cf..c5994b75d3e56e74ffb64b2389ee1bcc086f3065 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 0000000000000000000000000000000000000000..02daec04f933c0b3ab9bd329f56ac1ba0401ddef
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/qcom/hamoa-iot-evk.dts
>> @@ -0,0 +1,992 @@
>> +// 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>;
>
> No retimers on SS0?
Similar to the QCP, the EVK does not use Parade PS8830 retimers on the
SS0. Instead, each port uses an FSUSB42 USB switch to handle orientation
switching for the SBU lines.
>
>> + };
>> + };
>> +
>> + 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>;
>> + };
>> + };
>> + };
>> + };
>> + };
>> +
>> + 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_edp_3p3: regulator-edp-3p3 {
>
> regulator-edp-3p3 < regulator-vph-pwr
I will update.
>
>> + 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-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;
>> + };
>> +
>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
>
> Hmm, so there are regulators for the retimer, but they are not used.
> Could you please point out, why?
According to the schematic, there is a regulator and a retimer (PS8830).
However, as mentioned above, the retimer is not connected to USB 0 and
is therefore not used in the EVK. As a result, the regulator is left
unused in this context.
>
>> + 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;
>> + };
>> +
>> + 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>;
>> + };
>> + };
>> + };
>> +
>> + vreg_wcn_3p3: regulator-wcn-3p3 {
>
> regulator-wcn-3p3 < usb-1-ss0-sbu-mux
I will update.
>
>> + 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-boot-on;
>> + };
>> +
>> + /*
>> + * 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;
>> + };
>> +
>> + 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";
>> + };
>> + };
>> + };
>> +};
>> +
>> +&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>;
>> + };
>> + };
>> + };
>> + };
>> +};
>> +
>> +&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>;
>> + };
>> + };
>> + };
>> + };
>> +
>> + ports {
>> + port@1 {
>
> Rebase on top of https://lore.kernel.org/r/20250724-move-edp-endpoints-v1-0-6ca569812838@oss.qualcomm.com
I will update.
>
>> + reg = <1>;
>> +
>> + mdss_dp3_out: endpoint {
>> + 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>;
>> +};
>> +
>> +&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;
>
> What does this pin do? It's not recommended to set GPIO values through
> pinctrl.
It is used to switch data lines between USB Type-C orientation detection
and DisplayPort AUX channels. When this GPIO is high, USB0 operates in
orientation detection mode.
>
>> + };
>> +
>> + oe-n-pins {
>> + pins = "gpio168";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <2>;
>> + };
>> +
>> + sel-pins {
>> + pins = "gpio167";
>> + function = "gpio";
>> + bias-disable;
>> + drive-strength = <2>;
>> + };
>> + };
>> +
>> + 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;
>> + };
>> +
>> + wcn_usb_sw_n: wcn-usb-sw-n-state {
>
> What does this pin do? Using pinctrl to set GPIO values is not
> recommended AFAIR.
This pin functions similarly to usb-1-ss0-sbu-state; it controls the
data switch between signals from the USB connector and WLAN data.
>
>> + 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
>>
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-30 6:28 ` Yijie Yang
@ 2025-07-30 18:42 ` Dmitry Baryshkov
2025-07-31 8:45 ` Yijie Yang
0 siblings, 1 reply; 25+ messages in thread
From: Dmitry Baryshkov @ 2025-07-30 18:42 UTC (permalink / raw)
To: Yijie Yang
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
>
>
> On 2025-07-29 18:37, Dmitry Baryshkov wrote:
> > On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
> > >
> > > + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
> >
> > Hmm, so there are regulators for the retimer, but they are not used.
> > Could you please point out, why?
>
> According to the schematic, there is a regulator and a retimer (PS8830).
> However, as mentioned above, the retimer is not connected to USB 0 and is
> therefore not used in the EVK. As a result, the regulator is left unused in
> this context.
What is connected to the retimer then?
>
> >
> > > + compatible = "regulator-fixed";
> > > +
[...]
> > > +
> > > + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
> > > + mode-pins {
> > > + pins = "gpio166";
> > > + function = "gpio";
> > > + bias-disable;
> > > + drive-strength = <2>;
> > > + output-high;
> >
> > What does this pin do? It's not recommended to set GPIO values through
> > pinctrl.
>
> It is used to switch data lines between USB Type-C orientation detection and
> DisplayPort AUX channels.
I don't think I follow it here. Which data lines? Type-C orientation
detection uses CC1 / CC2, DP AUX use SBU lines.
> When this GPIO is high, USB0 operates in
> orientation detection mode.
What does this mean?
>
> >
> > > + };
> > > +
> > > + oe-n-pins {
> > > + pins = "gpio168";
> > > + function = "gpio";
> > > + bias-disable;
> > > + drive-strength = <2>;
> > > + };
> > > +
> > > + sel-pins {
> > > + pins = "gpio167";
> > > + function = "gpio";
> > > + bias-disable;
> > > + drive-strength = <2>;
> > > + };
> > > + };
> > > +
> > > + 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;
> > > + };
> > > +
> > > + wcn_usb_sw_n: wcn-usb-sw-n-state {
> >
> > What does this pin do? Using pinctrl to set GPIO values is not
> > recommended AFAIR.
>
> This pin functions similarly to usb-1-ss0-sbu-state; it controls the data
> switch between signals from the USB connector and WLAN data.
Could you please explain it? Does it toggle USB2 signals(you've added it
to the USB2 PHY) being routed either to the USB connector or to the WiFi
card? Or do you mean something else?
> > > +&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
> > >
> >
>
> --
> Best Regards,
> Yijie
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-30 18:42 ` Dmitry Baryshkov
@ 2025-07-31 8:45 ` Yijie Yang
2025-07-31 20:22 ` Dmitry Baryshkov
0 siblings, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-07-31 8:45 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-07-31 02:42, Dmitry Baryshkov wrote:
> On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
>>
>>
>> On 2025-07-29 18:37, Dmitry Baryshkov wrote:
>>> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>>>>
>
>
>>>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
>>>
>>> Hmm, so there are regulators for the retimer, but they are not used.
>>> Could you please point out, why?
>>
>> According to the schematic, there is a regulator and a retimer (PS8830).
>> However, as mentioned above, the retimer is not connected to USB 0 and is
>> therefore not used in the EVK. As a result, the regulator is left unused in
>> this context.
>
> What is connected to the retimer then?
All data lines are broken, except for some power lines.
>
>>
>>>
>>>> + compatible = "regulator-fixed";
>>>> +
>
> [...]
>
>>>> +
>>>> + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
>>>> + mode-pins {
>>>> + pins = "gpio166";
>>>> + function = "gpio";
>>>> + bias-disable;
>>>> + drive-strength = <2>;
>>>> + output-high;
>>>
>>> What does this pin do? It's not recommended to set GPIO values through
>>> pinctrl.
>>
>> It is used to switch data lines between USB Type-C orientation detection and
>> DisplayPort AUX channels.
>
> I don't think I follow it here. Which data lines? Type-C orientation
> detection uses CC1 / CC2, DP AUX use SBU lines.
I made a mistake here — this pin switches between two data sources: one
is DP AUX, and the other is a GPIO pair configured with the function
usb0_sbrx/usb0_sbtx. Both data sources originate from the SoC and are
routed to the USB0_SBU1 and USB0_SBU2 lines of the USB Type-C connector.
>
>> When this GPIO is high, USB0 operates in
>> orientation detection mode.
>
> What does this mean?
This means the switch will select the GPIO pair configured as
usb0_sbrx/usb0_sbtx.
>
>>
>>>
>>>> + };
>>>> +
>>>> + oe-n-pins {
>>>> + pins = "gpio168";
>>>> + function = "gpio";
>>>> + bias-disable;
>>>> + drive-strength = <2>;
>>>> + };
>>>> +
>>>> + sel-pins {
>>>> + pins = "gpio167";
>>>> + function = "gpio";
>>>> + bias-disable;
>>>> + drive-strength = <2>;
>>>> + };
>>>> + };
>>>> +
>>>> + 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;
>>>> + };
>>>> +
>>>> + wcn_usb_sw_n: wcn-usb-sw-n-state {
>>>
>>> What does this pin do? Using pinctrl to set GPIO values is not
>>> recommended AFAIR.
>>
>> This pin functions similarly to usb-1-ss0-sbu-state; it controls the data
>> switch between signals from the USB connector and WLAN data.
>
> Could you please explain it? Does it toggle USB2 signals(you've added it
> to the USB2 PHY) being routed either to the USB connector or to the WiFi
> card? Or do you mean something else?
Yes, that's right. It routes signals between the USB connector and the
M.2 Wi-Fi card.
>
>>>> +&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
>>>>
>>>
>>
>> --
>> Best Regards,
>> Yijie
>>
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-31 8:45 ` Yijie Yang
@ 2025-07-31 20:22 ` Dmitry Baryshkov
2025-08-01 1:48 ` Yijie Yang
0 siblings, 1 reply; 25+ messages in thread
From: Dmitry Baryshkov @ 2025-07-31 20:22 UTC (permalink / raw)
To: Yijie Yang
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On Thu, Jul 31, 2025 at 04:45:33PM +0800, Yijie Yang wrote:
>
>
> On 2025-07-31 02:42, Dmitry Baryshkov wrote:
> > On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
> > >
> > >
> > > On 2025-07-29 18:37, Dmitry Baryshkov wrote:
> > > > On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
> > > > >
> >
> >
> > > > > + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
> > > >
> > > > Hmm, so there are regulators for the retimer, but they are not used.
> > > > Could you please point out, why?
> > >
> > > According to the schematic, there is a regulator and a retimer (PS8830).
> > > However, as mentioned above, the retimer is not connected to USB 0 and is
> > > therefore not used in the EVK. As a result, the regulator is left unused in
> > > this context.
> >
> > What is connected to the retimer then?
>
> All data lines are broken, except for some power lines.
Ok. please add a comment. If the retimer is connected to I2C bus, please
define it too.
>
> >
> > >
> > > >
> > > > > + compatible = "regulator-fixed";
> > > > > +
> >
> > [...]
> >
> > > > > +
> > > > > + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
> > > > > + mode-pins {
> > > > > + pins = "gpio166";
> > > > > + function = "gpio";
> > > > > + bias-disable;
> > > > > + drive-strength = <2>;
> > > > > + output-high;
> > > >
> > > > What does this pin do? It's not recommended to set GPIO values through
> > > > pinctrl.
> > >
> > > It is used to switch data lines between USB Type-C orientation detection and
> > > DisplayPort AUX channels.
> >
> > I don't think I follow it here. Which data lines? Type-C orientation
> > detection uses CC1 / CC2, DP AUX use SBU lines.
>
> I made a mistake here — this pin switches between two data sources: one is
> DP AUX, and the other is a GPIO pair configured with the function
> usb0_sbrx/usb0_sbtx. Both data sources originate from the SoC and are routed
> to the USB0_SBU1 and USB0_SBU2 lines of the USB Type-C connector.
So, it's some USB4 stuff. Ideally it should be described via the
gpio-sbu-mux, but I don't think we can do that for now. I'd let Bjorn,
Konrad or Abel comment on this.
>
> >
> > > When this GPIO is high, USB0 operates in
> > > orientation detection mode.
> >
> > What does this mean?
>
> This means the switch will select the GPIO pair configured as
> usb0_sbrx/usb0_sbtx.
>
> >
> > >
> > > >
> > > > > + };
> > > > > +
> > > > > + oe-n-pins {
> > > > > + pins = "gpio168";
> > > > > + function = "gpio";
> > > > > + bias-disable;
> > > > > + drive-strength = <2>;
> > > > > + };
> > > > > +
> > > > > + sel-pins {
> > > > > + pins = "gpio167";
> > > > > + function = "gpio";
> > > > > + bias-disable;
> > > > > + drive-strength = <2>;
> > > > > + };
> > > > > + };
> > > > > +
> > > > > + 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;
> > > > > + };
> > > > > +
> > > > > + wcn_usb_sw_n: wcn-usb-sw-n-state {
> > > >
> > > > What does this pin do? Using pinctrl to set GPIO values is not
> > > > recommended AFAIR.
> > >
> > > This pin functions similarly to usb-1-ss0-sbu-state; it controls the data
> > > switch between signals from the USB connector and WLAN data.
> >
> > Could you please explain it? Does it toggle USB2 signals(you've added it
> > to the USB2 PHY) being routed either to the USB connector or to the WiFi
> > card? Or do you mean something else?
>
> Yes, that's right. It routes signals between the USB connector and the M.2
> Wi-Fi card.
Ack. Please add a comment.
>
> >
> > > > > +&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
> > > > >
> > > >
> > >
> > > --
> > > Best Regards,
> > > Yijie
> > >
> >
>
> --
> Best Regards,
> Yijie
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-07-31 20:22 ` Dmitry Baryshkov
@ 2025-08-01 1:48 ` Yijie Yang
2025-08-01 10:39 ` Konrad Dybcio
0 siblings, 1 reply; 25+ messages in thread
From: Yijie Yang @ 2025-08-01 1:48 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 2025-08-01 04:22, Dmitry Baryshkov wrote:
> On Thu, Jul 31, 2025 at 04:45:33PM +0800, Yijie Yang wrote:
>>
>>
>> On 2025-07-31 02:42, Dmitry Baryshkov wrote:
>>> On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
>>>>
>>>>
>>>> On 2025-07-29 18:37, Dmitry Baryshkov wrote:
>>>>> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>>>>>>
>>>
>>>
>>>>>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
>>>>>
>>>>> Hmm, so there are regulators for the retimer, but they are not used.
>>>>> Could you please point out, why?
>>>>
>>>> According to the schematic, there is a regulator and a retimer (PS8830).
>>>> However, as mentioned above, the retimer is not connected to USB 0 and is
>>>> therefore not used in the EVK. As a result, the regulator is left unused in
>>>> this context.
>>>
>>> What is connected to the retimer then?
>>
>> All data lines are broken, except for some power lines.
>
> Ok. please add a comment. If the retimer is connected to I2C bus, please
> define it too.
It’s not connected to I2C. I will add a comment here.
>
>>
>>>
>>>>
>>>>>
>>>>>> + compatible = "regulator-fixed";
>>>>>> +
>>>
>>> [...]
>>>
>>>>>> +
>>>>>> + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
>>>>>> + mode-pins {
>>>>>> + pins = "gpio166";
>>>>>> + function = "gpio";
>>>>>> + bias-disable;
>>>>>> + drive-strength = <2>;
>>>>>> + output-high;
>>>>>
>>>>> What does this pin do? It's not recommended to set GPIO values through
>>>>> pinctrl.
>>>>
>>>> It is used to switch data lines between USB Type-C orientation detection and
>>>> DisplayPort AUX channels.
>>>
>>> I don't think I follow it here. Which data lines? Type-C orientation
>>> detection uses CC1 / CC2, DP AUX use SBU lines.
>>
>> I made a mistake here — this pin switches between two data sources: one is
>> DP AUX, and the other is a GPIO pair configured with the function
>> usb0_sbrx/usb0_sbtx. Both data sources originate from the SoC and are routed
>> to the USB0_SBU1 and USB0_SBU2 lines of the USB Type-C connector.
>
> So, it's some USB4 stuff. Ideally it should be described via the
> gpio-sbu-mux, but I don't think we can do that for now. I'd let Bjorn,
> Konrad or Abel comment on this.
Sure.
>
>>
>>>
>>>> When this GPIO is high, USB0 operates in
>>>> orientation detection mode.
>>>
>>> What does this mean?
>>
>> This means the switch will select the GPIO pair configured as
>> usb0_sbrx/usb0_sbtx.
>>
>>>
>>>>
>>>>>
>>>>>> + };
>>>>>> +
>>>>>> + oe-n-pins {
>>>>>> + pins = "gpio168";
>>>>>> + function = "gpio";
>>>>>> + bias-disable;
>>>>>> + drive-strength = <2>;
>>>>>> + };
>>>>>> +
>>>>>> + sel-pins {
>>>>>> + pins = "gpio167";
>>>>>> + function = "gpio";
>>>>>> + bias-disable;
>>>>>> + drive-strength = <2>;
>>>>>> + };
>>>>>> + };
>>>>>> +
>>>>>> + 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;
>>>>>> + };
>>>>>> +
>>>>>> + wcn_usb_sw_n: wcn-usb-sw-n-state {
>>>>>
>>>>> What does this pin do? Using pinctrl to set GPIO values is not
>>>>> recommended AFAIR.
>>>>
>>>> This pin functions similarly to usb-1-ss0-sbu-state; it controls the data
>>>> switch between signals from the USB connector and WLAN data.
>>>
>>> Could you please explain it? Does it toggle USB2 signals(you've added it
>>> to the USB2 PHY) being routed either to the USB connector or to the WiFi
>>> card? Or do you mean something else?
>>
>> Yes, that's right. It routes signals between the USB connector and the M.2
>> Wi-Fi card.
>
> Ack. Please add a comment.
Sure, I will.
>
>>
>>>
>>>>>> +&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
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Best Regards,
>>>> Yijie
>>>>
>>>
>>
>> --
>> Best Regards,
>> Yijie
>>
>
--
Best Regards,
Yijie
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-08-01 1:48 ` Yijie Yang
@ 2025-08-01 10:39 ` Konrad Dybcio
2025-08-01 17:54 ` Dmitry Baryshkov
0 siblings, 1 reply; 25+ messages in thread
From: Konrad Dybcio @ 2025-08-01 10:39 UTC (permalink / raw)
To: Yijie Yang, Dmitry Baryshkov
Cc: Bjorn Andersson, Konrad Dybcio, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, linux-arm-msm, devicetree, linux-kernel
On 8/1/25 3:48 AM, Yijie Yang wrote:
>
>
> On 2025-08-01 04:22, Dmitry Baryshkov wrote:
>> On Thu, Jul 31, 2025 at 04:45:33PM +0800, Yijie Yang wrote:
>>>
>>>
>>> On 2025-07-31 02:42, Dmitry Baryshkov wrote:
>>>> On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
>>>>>
>>>>>
>>>>> On 2025-07-29 18:37, Dmitry Baryshkov wrote:
>>>>>> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
>>>>>>>
>>>>
>>>>
>>>>>>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
>>>>>>
>>>>>> Hmm, so there are regulators for the retimer, but they are not used.
>>>>>> Could you please point out, why?
>>>>>
>>>>> According to the schematic, there is a regulator and a retimer (PS8830).
>>>>> However, as mentioned above, the retimer is not connected to USB 0 and is
>>>>> therefore not used in the EVK. As a result, the regulator is left unused in
>>>>> this context.
>>>>
>>>> What is connected to the retimer then?
>>>
>>> All data lines are broken, except for some power lines.
>>
>> Ok. please add a comment. If the retimer is connected to I2C bus, please
>> define it too.
>
> It’s not connected to I2C. I will add a comment here.
>
>>
>>>
>>>>
>>>>>
>>>>>>
>>>>>>> + compatible = "regulator-fixed";
>>>>>>> +
>>>>
>>>> [...]
>>>>
>>>>>>> +
>>>>>>> + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
>>>>>>> + mode-pins {
>>>>>>> + pins = "gpio166";
>>>>>>> + function = "gpio";
>>>>>>> + bias-disable;
>>>>>>> + drive-strength = <2>;
>>>>>>> + output-high;
>>>>>>
>>>>>> What does this pin do? It's not recommended to set GPIO values through
>>>>>> pinctrl.
>>>>>
>>>>> It is used to switch data lines between USB Type-C orientation detection and
>>>>> DisplayPort AUX channels.
>>>>
>>>> I don't think I follow it here. Which data lines? Type-C orientation
>>>> detection uses CC1 / CC2, DP AUX use SBU lines.
>>>
>>> I made a mistake here — this pin switches between two data sources: one is
>>> DP AUX, and the other is a GPIO pair configured with the function
>>> usb0_sbrx/usb0_sbtx. Both data sources originate from the SoC and are routed
>>> to the USB0_SBU1 and USB0_SBU2 lines of the USB Type-C connector.
>>
>> So, it's some USB4 stuff. Ideally it should be described via the
>> gpio-sbu-mux, but I don't think we can do that for now. I'd let Bjorn,
>> Konrad or Abel comment on this.
>
> Sure.
There is no DT representation of USB4 hardware at the moment, feel
free to pretend it doesn't exist for now.
If we wanted to be hyper-correct, the way USB(3) is plugged into the
bigger picture isn't quite pristine either, but that's a story for
another day - need some puzzle pieces to come together first
Konrad
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: [PATCH v3 4/4] arm64: dts: qcom: Add base HAMOA-IOT-EVK board
2025-08-01 10:39 ` Konrad Dybcio
@ 2025-08-01 17:54 ` Dmitry Baryshkov
0 siblings, 0 replies; 25+ messages in thread
From: Dmitry Baryshkov @ 2025-08-01 17:54 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Yijie Yang, Bjorn Andersson, Konrad Dybcio, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, linux-arm-msm, devicetree,
linux-kernel
On Fri, Aug 01, 2025 at 12:39:09PM +0200, Konrad Dybcio wrote:
> On 8/1/25 3:48 AM, Yijie Yang wrote:
> >
> >
> > On 2025-08-01 04:22, Dmitry Baryshkov wrote:
> >> On Thu, Jul 31, 2025 at 04:45:33PM +0800, Yijie Yang wrote:
> >>>
> >>>
> >>> On 2025-07-31 02:42, Dmitry Baryshkov wrote:
> >>>> On Wed, Jul 30, 2025 at 02:28:25PM +0800, Yijie Yang wrote:
> >>>>>
> >>>>>
> >>>>> On 2025-07-29 18:37, Dmitry Baryshkov wrote:
> >>>>>> On Tue, Jul 29, 2025 at 09:32:00AM +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 and overlays 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
> >>>>>>>
> >>>>
> >>>>
> >>>>>>> + vreg_rtmr0_1p15: regulator-rtmr0-1p15 {
> >>>>>>
> >>>>>> Hmm, so there are regulators for the retimer, but they are not used.
> >>>>>> Could you please point out, why?
> >>>>>
> >>>>> According to the schematic, there is a regulator and a retimer (PS8830).
> >>>>> However, as mentioned above, the retimer is not connected to USB 0 and is
> >>>>> therefore not used in the EVK. As a result, the regulator is left unused in
> >>>>> this context.
> >>>>
> >>>> What is connected to the retimer then?
> >>>
> >>> All data lines are broken, except for some power lines.
> >>
> >> Ok. please add a comment. If the retimer is connected to I2C bus, please
> >> define it too.
> >
> > It’s not connected to I2C. I will add a comment here.
> >
> >>
> >>>
> >>>>
> >>>>>
> >>>>>>
> >>>>>>> + compatible = "regulator-fixed";
> >>>>>>> +
> >>>>
> >>>> [...]
> >>>>
> >>>>>>> +
> >>>>>>> + usb_1_ss0_sbu_default: usb-1-ss0-sbu-state {
> >>>>>>> + mode-pins {
> >>>>>>> + pins = "gpio166";
> >>>>>>> + function = "gpio";
> >>>>>>> + bias-disable;
> >>>>>>> + drive-strength = <2>;
> >>>>>>> + output-high;
> >>>>>>
> >>>>>> What does this pin do? It's not recommended to set GPIO values through
> >>>>>> pinctrl.
> >>>>>
> >>>>> It is used to switch data lines between USB Type-C orientation detection and
> >>>>> DisplayPort AUX channels.
> >>>>
> >>>> I don't think I follow it here. Which data lines? Type-C orientation
> >>>> detection uses CC1 / CC2, DP AUX use SBU lines.
> >>>
> >>> I made a mistake here — this pin switches between two data sources: one is
> >>> DP AUX, and the other is a GPIO pair configured with the function
> >>> usb0_sbrx/usb0_sbtx. Both data sources originate from the SoC and are routed
> >>> to the USB0_SBU1 and USB0_SBU2 lines of the USB Type-C connector.
> >>
> >> So, it's some USB4 stuff. Ideally it should be described via the
> >> gpio-sbu-mux, but I don't think we can do that for now. I'd let Bjorn,
> >> Konrad or Abel comment on this.
> >
> > Sure.
>
> There is no DT representation of USB4 hardware at the moment, feel
> free to pretend it doesn't exist for now.
>
> If we wanted to be hyper-correct, the way USB(3) is plugged into the
> bigger picture isn't quite pristine either, but that's a story for
> another day - need some puzzle pieces to come together first
Ack. Then the current description is fine.
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 25+ messages in thread