All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/4] Add MSM8939 SoC support with two devices
@ 2022-04-19  1:08 Bryan O'Donoghue
  2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
                   ` (3 more replies)
  0 siblings, 4 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  1:08 UTC (permalink / raw)
  To: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, bryan.odonoghue

This series adds in MSM8939 SoC support with two supported devices.

- CPU
  MSM8939 is a non-PSCI compliant device. As such in the downstreaming
  shipped image custom code is used to bring non-boot cores out of reset.

  This drop specifies the boot-method as spin-table instead and is
  completely standard. To accomplish this, we rely on lk2nd.

  https://github.com/msm8916-mainline/lk2nd/pull/142

- Serial
- i2c
- USB
- eMMC
- MDP/DSI
- WiFi
- Bluetooth

What's not included 

- CPR
  We have CPR working in a 4.19 kernel quite well but for now it feels like
  putting the cart before the horse to gate the SoC and boards on CPR.

- Venus
  I've been told this works but I haven't tried it myself and right now
  consider it maybe working but probably not 100%.

- Sound
  We have a copy-exactly from the 4.19 kernel here in the DTS.
  I haven't run the sound through any sort of reasonable test.
  Vincent Knecht has some PostmarketOS kernels which use a 5.17 version of
  this DTS to get sound up so, I think sound is in good shape.

- CAMSS
  There are slight differences between msm8916 and msm8939 for CAMSS. It
  doesn't feel like tons of work but, right now it is work we haven't even
  started.

- Devices
  I've booted on the Square device obviously and this is my regular
  hardware for upstream development. I've also booted on the Sony Xperia M4
  Aqua including mutli-core bring-up, WiFi and ADB.

Dependencies for this drop:

qcom-cpufreq-nvmem: Add msm8939 with some fixups
link: https://lore.kernel.org/linux-arm-msm/20220418162226.2983117-1-bryan.odonoghue@linaro.org/T/#t

Fix apq8016 compat string
link: https://lore.kernel.org/linux-arm-msm/20220418230956.3059563-1-bryan.odonoghue@linaro.org/T/#t

dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible
link: https://lore.kernel.org/linux-arm-msm/20220418231857.3061053-1-bryan.odonoghue@linaro.org/T/#u

Bootable tree here:
https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=v5.18-rc2%2bapq8039-without-cpr

Bryan O'Donoghue (4):
  dt-bindings: arm: qcom: Document MSM8939 SoC binding
  arm64: dts: Add msm8939 SoC
  arm64: dts: Add aqp8039-t2 board
  arm64: dts: Add msm8939 Sony Xperia M4 Aqua

 .../devicetree/bindings/arm/qcom.yaml         |    7 +
 arch/arm64/boot/dts/qcom/Makefile             |    3 +
 .../boot/dts/qcom/apq8039-t2-pinctl.dtsi      |  277 +++
 arch/arm64/boot/dts/qcom/apq8039-t2.dts       |  326 +++
 .../qcom/msm8939-sony-xperia-kanuti-tulip.dts |  489 ++++
 arch/arm64/boot/dts/qcom/msm8939.dtsi         | 2017 +++++++++++++++++
 6 files changed, 3119 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2.dts
 create mode 100644 arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
 create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi

-- 
2.35.1


^ permalink raw reply	[flat|nested] 34+ messages in thread

* [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding
  2022-04-19  1:08 [PATCH v1 0/4] Add MSM8939 SoC support with two devices Bryan O'Donoghue
@ 2022-04-19  1:09 ` Bryan O'Donoghue
  2022-04-19  7:13   ` Krzysztof Kozlowski
  2022-04-19 12:12   ` Rob Herring
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  1:09 UTC (permalink / raw)
  To: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, bryan.odonoghue

Document the MSM8939 and supported boards in upstream Sony "Tulip" M4 Aqua
and Square APQ8039 T2.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 129cdd246223..0e4f3a4d1a58 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -34,6 +34,7 @@ description: |
         mdm9615
         msm8226
         msm8916
+	msm8939
         msm8974
         msm8992
         msm8994
@@ -133,6 +134,12 @@ properties:
               - samsung,s3ve3g
           - const: qcom,msm8226
 
+    - items:
+          - enum:
+              - square,apq8039-t2
+              - sony,kanuti-tulip
+          - const: qcom,msm8939
+
       - items:
           - enum:
               - qcom,msm8960-cdp
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:08 [PATCH v1 0/4] Add MSM8939 SoC support with two devices Bryan O'Donoghue
  2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
@ 2022-04-19  1:09 ` Bryan O'Donoghue
  2022-04-19  7:33   ` Krzysztof Kozlowski
                     ` (4 more replies)
  2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
  2022-04-19  1:09 ` [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua Bryan O'Donoghue
  3 siblings, 5 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  1:09 UTC (permalink / raw)
  To: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac,
	bryan.odonoghue, Leo Yan

Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
differences to msm8916.

- big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
- DRAM 1x800 LPDDR3
- Camera 4+4 lane CSI
- Venus @ 1080p60 HEVC
- DSI x 2
- Adreno A405
- WiFi wcn3660/wcn3680b 802.11ac

Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Co-developed-by: Jun Nie <jun.nie@linaro.org>
Signed-off-by: Jun Nie <jun.nie@linaro.org>
Co-developed-by: Benjamin Li <benl@squareup.com>
Signed-off-by: Benjamin Li <benl@squareup.com>
Co-developed-by: James Willcox <jwillcox@squareup.com>
Signed-off-by: James Willcox <jwillcox@squareup.com>
Co-developed-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Co-developed-by: Joseph Gates <jgates@squareup.com>
Signed-off-by: Joseph Gates <jgates@squareup.com>
Co-developed-by: Max Chen <mchen@squareup.com>
Signed-off-by: Max Chen <mchen@squareup.com>
Co-developed-by: Zac Crosby <zac@squareup.com>
Signed-off-by: Zac Crosby <zac@squareup.com>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
 1 file changed, 2017 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi

diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
new file mode 100644
index 000000000000..f1aa79b7d0e9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
@@ -0,0 +1,2017 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2020-2022, Linaro Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <dt-bindings/interconnect/qcom,msm8939.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/clock/qcom,gcc-msm8939.h>
+#include <dt-bindings/reset/qcom,gcc-msm8939.h>
+#include <dt-bindings/clock/qcom,rpmcc.h>
+#include <dt-bindings/power/qcom-rpmpd.h>
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+	model = "Qualcomm Technologies, Inc. MSM8939";
+	compatible = "qcom,msm8939";
+	qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
+
+	interrupt-parent = <&intc>;
+
+	#address-cells = <2>;
+	#size-cells = <2>;
+
+	memory {
+		device_type = "memory";
+		/* We expect the bootloader to fill in the reg */
+		reg = <0 0 0 0>;
+	};
+
+	reserved-memory {
+		#address-cells = <2>;
+		#size-cells = <2>;
+		ranges;
+
+		tz-apps@86000000 {
+			reg = <0x0 0x86000000 0x0 0x300000>;
+			no-map;
+		};
+
+		smem_mem: smem_region@86300000 {
+			reg = <0x0 0x86300000 0x0 0x100000>;
+			no-map;
+		};
+
+		hypervisor@86400000 {
+			reg = <0x0 0x86400000 0x0 0x100000>;
+			no-map;
+		};
+
+		tz@86500000 {
+			reg = <0x0 0x86500000 0x0 0x180000>;
+			no-map;
+		};
+
+		reserved@8668000 {
+			reg = <0x0 0x86680000 0x0 0x80000>;
+			no-map;
+		};
+
+		rmtfs@86700000 {
+			compatible = "qcom,rmtfs-mem";
+			reg = <0x0 0x86700000 0x0 0xe0000>;
+			no-map;
+
+			qcom,client-id = <1>;
+		};
+
+		rfsa@867e00000 {
+			reg = <0x0 0x867e0000 0x0 0x20000>;
+			no-map;
+		};
+
+		mpss_mem: mpss@86800000 {
+			reg = <0x0 0x86800000 0x0 0x2b00000>;
+			no-map;
+		};
+
+		wcnss_mem: wcnss@89300000 {
+			reg = <0x0 0x89300000 0x0 0x600000>;
+			no-map;
+		};
+
+		venus_mem: venus@89900000 {
+			reg = <0x0 0x89900000 0x0 0x500000>;
+			no-map;
+		};
+
+		mba_mem: mba@8ea00000 {
+			no-map;
+			reg = <0 0x8ea00000 0 0x100000>;
+		};
+	};
+
+	/*
+	 * MSM8939 has a big.LITTLE hetrogeneous computing architecture,
+	 * consisting of two clusters of four ARM Cortex-A53s each. The
+	 * LITTLE cluster runs at 1.0-1.2GHz, and the big cluster runs
+	 * at 1.5-1.7GHz.
+	 *
+	 * The enable method used here is spin-table which pre-supposes use
+	 * of a 2nd stage boot shim such as lk2nd to have installed a
+	 * spin-table, the downstream non-psci/non-spin-table method that
+	 * default msm8916/msm8936/msm8939 will not be supported upstream.
+	 */
+	cpu-map {
+		/* LITTLE (efficiency) cluster */
+		cluster0 {
+			core0 {
+				cpu = <&CPU4>;
+			};
+
+			core1 {
+				cpu = <&CPU5>;
+			};
+
+			core2 {
+				cpu = <&CPU6>;
+			};
+
+			core3 {
+				cpu = <&CPU7>;
+			};
+		};
+
+		/* big (performance) cluster */
+		/* Boot CPU is cluster 1 core 0 */
+		cluster1 {
+			core0 {
+				cpu = <&CPU0>;
+			};
+
+			core1 {
+				cpu = <&CPU1>;
+			};
+
+			core2 {
+				cpu = <&CPU2>;
+			};
+
+			core3 {
+				cpu = <&CPU3>;
+			};
+		};
+	};
+
+	cpus {
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		CPU0: cpu@100 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x100>;
+			next-level-cache = <&L2_1>;
+			qcom,acc = <&acc0>;
+			qcom,saw = <&saw0>;
+			cpu-idle-states = <&CPU_SPC>;
+			clocks = <&apcs1_mbox>;
+			/* operating-points-v2 = <&cluster1_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+			L2_1: l2-cache-cluster1 {
+				compatible = "cache";
+				cache-level = <2>;
+			};
+		};
+
+		CPU1: cpu@101 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x101>;
+			next-level-cache = <&L2_1>;
+			qcom,acc = <&acc1>;
+			qcom,saw = <&saw1>;
+			clocks = <&apcs1_mbox>;
+			/* operating-points-v2 = <&cluster1_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		CPU2: cpu@102 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x102>;
+			next-level-cache = <&L2_1>;
+			qcom,acc = <&acc2>;
+			qcom,saw = <&saw2>;
+			clocks = <&apcs1_mbox>;
+			/* operating-points-v2 = <&cluster1_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		CPU3: cpu@103 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x103>;
+			next-level-cache = <&L2_1>;
+			qcom,acc = <&acc3>;
+			qcom,saw = <&saw3>;
+			clocks = <&apcs1_mbox>;
+			/* operating-points-v2 = <&cluster1_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		CPU4: cpu@0 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x0>;
+			qcom,acc = <&acc4>;
+			qcom,saw = <&saw4>;
+			clocks = <&apcs0>;
+			/* operating-points-v2 = <&cluster0_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+			next-level-cache = <&L2_0>;
+			L2_0: l2-cache-cluster0 {
+				compatible = "cache";
+				cache-level = <2>;
+			};
+		};
+
+		CPU5: cpu@1 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x1>;
+			next-level-cache = <&L2_0>;
+			qcom,acc = <&acc5>;
+			qcom,saw = <&saw5>;
+			clocks = <&apcs0>;
+			/* operating-points-v2 = <&cluster0_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		CPU6: cpu@2 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x2>;
+			next-level-cache = <&L2_0>;
+			qcom,acc = <&acc6>;
+			qcom,saw = <&saw6>;
+			clocks = <&apcs0>;
+			/* operating-points-v2 = <&cluster0_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		CPU7: cpu@3 {
+			device_type = "cpu";
+			compatible = "arm,cortex-a53", "arm,armv8";
+			enable-method = "spin-table";
+			reg = <0x3>;
+			next-level-cache = <&L2_0>;
+			qcom,acc = <&acc7>;
+			qcom,saw = <&saw7>;
+			clocks = <&apcs0>;
+			/* operating-points-v2 = <&cluster0_opp_table>;
+			 * power-domains = <&cpr>;
+			 * power-domain-names = "cpr";
+			 */
+			#cooling-cells = <2>;
+		};
+
+		idle-states {
+			CPU_SPC: spc {
+				compatible = "arm,idle-state";
+				arm,psci-suspend-param = <0x40000002>;
+				entry-latency-us = <130>;
+				exit-latency-us = <150>;
+				min-residency-us = <2000>;
+				local-timer-stop;
+			};
+		};
+	};
+
+	cluster0_opp_table: cluster0-opp-table {
+		compatible = "operating-points-v2-kryo-cpu";
+		opp-shared;
+
+		opp-249600000 {
+			opp-hz = /bits/ 64 <249600000>;
+			required-opps = <&cpr_opp1>;
+		};
+
+		opp-499200000 {
+			opp-hz = /bits/ 64 <499200000>;
+			required-opps = <&cpr_opp3>;
+		};
+
+		opp-800000000 {
+			opp-hz = /bits/ 64 <800000000>;
+			required-opps = <&cpr_opp6>;
+		};
+
+		opp-1113600000 {
+			opp-hz = /bits/ 64 <1113600000>;
+			required-opps = <&cpr_opp9>;
+		};
+	};
+
+	cluster1_opp_table: cluster1-opp-table {
+		compatible = "operating-points-v2-kryo-cpu";
+		opp-shared;
+
+		opp-200000000 {
+			opp-hz = /bits/ 64 <200000000>;
+			required-opps = <&cpr_opp1>;
+		};
+
+		opp-400000000 {
+			opp-hz = /bits/ 64 <400000000>;
+			required-opps = <&cpr_opp2>;
+		};
+
+		opp-533330000 {
+			opp-hz = /bits/ 64 <533330000>;
+			required-opps = <&cpr_opp4>;
+		};
+
+		opp-800000000 {
+			opp-hz = /bits/ 64 <800000000>;
+			required-opps = <&cpr_opp5>;
+		};
+
+		opp-1113600000 {
+			opp-hz = /bits/ 64 <1113600000>;
+			required-opps = <&cpr_opp7>;
+		};
+
+		opp-1497600000 {
+			opp-hz = /bits/ 64 <1497600000>;
+			required-opps = <&cpr_opp8>;
+		};
+	};
+
+	/* Frequencies in below opp is for cpr_opp virtual corner calculation,
+	 * not strictly coupled with frquencies in CPU opp for CPUs may require
+	 * different cpr_opp for specific frquency.
+	 */
+	cpr_opp_table: cpr-opp-table {
+		compatible = "operating-points-v2-qcom-level";
+
+		cpr_opp1: opp1 {
+			opp-hz = /bits/ 64 <200000000>;
+			opp-level = <1>;
+			qcom,opp-fuse-level = <1>;
+		};
+		cpr_opp2: opp2 {
+			opp-hz = /bits/ 64 <400000000>;
+			opp-level = <2>;
+			qcom,opp-fuse-level = <1>;
+		};
+		cpr_opp3: opp3 {
+			opp-hz = /bits/ 64 <499200000>;
+			opp-level = <3>;
+			qcom,opp-fuse-level = <2>;
+		};
+		cpr_opp4: opp4 {
+			opp-hz = /bits/ 64 <533330000>;
+			opp-level = <4>;
+			qcom,opp-fuse-level = <2>;
+		};
+		cpr_opp5: opp5 {
+			opp-hz = /bits/ 64 <800000000>;
+			opp-level = <5>;
+			qcom,opp-fuse-level = <2>;
+		};
+		cpr_opp6: opp6 {
+			opp-hz = /bits/ 64 <960000000>;
+			opp-level = <6>;
+			qcom,opp-fuse-level = <2>;
+		};
+		cpr_opp7: opp7 {
+			opp-hz = /bits/ 64 <1113600000>;
+			opp-level = <7>;
+			qcom,opp-fuse-level = <2>;
+		};
+		cpr_opp8: opp8 {
+			opp-hz = /bits/ 64 <1497600000>;
+			opp-level = <8>;
+			qcom,opp-fuse-level = <3>;
+		};
+		cpr_opp9: opp9 {
+			opp-hz = /bits/ 64 <1497500000>;
+			opp-level = <9>;
+			qcom,opp-fuse-level = <3>;
+		};
+	};
+
+	cci_opp_table: cci-opp-table {
+		compatible = "operating-points-v2";
+
+		opp-200000000 {
+			opp-hz = /bits/ 64 <200000000>;
+		};
+
+		opp-297600000 {
+			opp-hz = /bits/ 64 <297600000>;
+		};
+
+		opp-400000000 {
+			opp-hz = /bits/ 64 <400000000>;
+		};
+
+		opp-595200000 {
+			opp-hz = /bits/ 64 <595200000>;
+		};
+	};
+
+	gpu_opp_table: gpu-opp-table {
+		compatible = "operating-points-v2";
+
+		opp-550000000 {
+			opp-hz = /bits/ 64 <550000000>;
+		};
+
+		opp-465000000 {
+			opp-hz = /bits/ 64 <465000000>;
+		};
+
+		opp-400000000 {
+			opp-hz = /bits/ 64 <400000000>;
+		};
+
+		opp-220000000 {
+			opp-hz = /bits/ 64 <220000000>;
+		};
+
+		opp-19200000 {
+			opp-hz = /bits/ 64 <19200000>;
+		};
+	};
+
+	pmu {
+		compatible = "arm,cortex-a53-pmu";
+		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4)| IRQ_TYPE_LEVEL_HIGH)>;
+	};
+
+	thermal_zones: thermal-zones {
+		cpu0-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 5>;
+
+			trips {
+				cpu0_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu0_crit: trip1 {
+					temperature = <115000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu0_alert>;
+					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cpu1-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 6>;
+
+			trips {
+				cpu1_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu1_crit: trip1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu1_alert>;
+					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cpu2-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 7>;
+
+			trips {
+				cpu2_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu2_crit: trip1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu2_alert>;
+					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cpu3-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 8>;
+
+			trips {
+				cpu3_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu3_crit: trip1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu3_alert>;
+					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cpu4567-thermal {
+			polling-delay-passive = <250>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&tsens 9>;
+
+			trips {
+				cpu4567_alert: trip0 {
+					temperature = <75000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+				cpu4567_crit: trip1 {
+					temperature = <110000>;
+					hysteresis = <2000>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				map0 {
+					trip = <&cpu4567_alert>;
+					cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		gpu-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+
+			thermal-sensors = <&tsens 3>;
+		};
+
+		modem1-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+
+			thermal-sensors = <&tsens 0>;
+		};
+
+		modem2-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+
+			thermal-sensors = <&tsens 2>;
+		};
+
+		venus_camera-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+
+			thermal-sensors = <&tsens 1>;
+		};
+	};
+
+	timer {
+		compatible = "arm,armv8-timer";
+		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+	};
+
+	clocks {
+		xo_board: xo_board {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <19200000>;
+		};
+
+		sleep_clk: sleep_clk {
+			compatible = "fixed-clock";
+			#clock-cells = <0>;
+			clock-frequency = <32768>;
+		};
+	};
+
+	smem {
+		compatible = "qcom,smem";
+
+		memory-region = <&smem_mem>;
+		qcom,rpm-msg-ram = <&rpm_msg_ram>;
+
+		hwlocks = <&tcsr_mutex 3>;
+	};
+
+	firmware {
+		scm: scm {
+			compatible = "qcom,scm";
+			clocks = <&gcc GCC_CRYPTO_CLK>,
+				 <&gcc GCC_CRYPTO_AXI_CLK>,
+				 <&gcc GCC_CRYPTO_AHB_CLK>;
+			clock-names = "core", "bus", "iface";
+			#reset-cells = <1>;
+
+			qcom,dload-mode = <&tcsr 0x6100>;
+		};
+	};
+
+	soc: soc {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges = <0 0 0 0xffffffff>;
+		compatible = "simple-bus";
+
+		qfprom_cpr: qfprom_cpr@58000 {
+			compatible = "qcom,qfprom";
+			reg = <0x00058000 0x1000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			cpr_efuse_init_voltage1: ivoltage1@dc {
+				reg = <0xdc 0x4>;
+				bits = <4 6>;
+			};
+			cpr_efuse_init_voltage2: ivoltage2@da {
+				reg = <0xda 0x4>;
+				bits = <2 6>;
+			};
+			cpr_efuse_init_voltage3: ivoltage3@d8 {
+				reg = <0xd8 0x4>;
+				bits = <0 6>;
+			};
+			cpr_efuse_quot1: quot1@dc {
+				reg = <0xdd 0x8>;
+				bits = <2 12>;
+			};
+			cpr_efuse_quot2: quot2@da {
+				reg = <0xdb 0x8>;
+				bits = <0x0 12>;
+			};
+			cpr_efuse_quot3: quot3@d8 {
+				reg = <0xd8 0x8>;
+				bits = <6 12>;
+			};
+			cpr_efuse_ring1: ring1@de {
+				reg = <0xde 0x4>;
+				bits = <6 3>;
+			};
+			cpr_efuse_ring2: ring2@de {
+				reg = <0xde 0x4>;
+				bits = <6 3>;
+			};
+			cpr_efuse_ring3: ring3@de {
+				reg = <0xde 0x4>;
+				bits = <6 3>;
+			};
+			cpr_efuse_revision: revision@4 {
+				reg = <0x5 0x1>;
+				bits = <5 1>;
+			};
+			cpr_efuse_revision_high: revision_high@4 {
+				reg = <0x7 0x1>;
+				bits = <0 1>;
+			};
+			cpr_efuse_pvs_version: pvs@4 {
+				reg = <0x3 0x1>;
+				bits = <5 1>;
+			};
+			cpr_efuse_pvs_version_high: pvs_high@4 {
+				reg = <0x6 0x1>;
+				bits = <2 2>;
+			};
+			cpr_efuse_speedbin: speedbin@c {
+				reg = <0xc 0x1>;
+				bits = <2 3>;
+			};
+
+		};
+
+		acc0: clock-controller@b088000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb088000 0x1000>;
+		};
+
+		saw0: power-controller@b089000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb089000 0x1000>;
+		};
+
+		acc1: clock-controller@b098000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb098000 0x1000>;
+		};
+
+		saw1: power-controller@b099000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb099000 0x1000>;
+		};
+
+		acc2: clock-controller@b0a8000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb0a8000 0x1000>;
+		};
+
+		saw2: power-controller@b0a9000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb0a9000 0x1000>;
+		};
+
+		acc3: clock-controller@b0b8000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb0b8000 0x1000>;
+		};
+
+		saw3: power-domain@b0b9000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb0b9000 0x1000>;
+		};
+
+		acc4: clock-controller@b188000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb188000 0x1000>;
+		};
+
+		saw4: power-controller@b189000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb189000 0x1000>;
+		};
+
+		acc5: clock-controller@b198000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb198000 0x1000>;
+		};
+
+		saw5: power-controller@b199000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb199000 0x1000>;
+		};
+
+		acc6: clock-controller@b1a8000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb1a8000 0x1000>;
+		};
+
+		saw6: power-controller@b1a9000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb1a9000 0x1000>;
+		};
+
+		acc7: clock-controller@b1b8000 {
+			compatible = "qcom,kpss-acc-v2";
+			reg = <0xb1b8000 0x1000>;
+		};
+
+		saw7: power-controller@b1b9000 {
+			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
+			reg = <0xb1b9000 0x1000>;
+		};
+
+		restart@4ab000 {
+			compatible = "qcom,pshold";
+			reg = <0x4ab000 0x4>;
+		};
+
+		msmgpio: pinctrl@1000000 {
+			compatible = "qcom,msm8916-pinctrl";
+			reg = <0x1000000 0x300000>;
+			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
+			gpio-controller;
+			#gpio-cells = <2>;
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		gcc: clock-controller@1800000 {
+			compatible = "qcom,gcc-msm8939";
+			#clock-cells = <1>;
+			#reset-cells = <1>;
+			#power-domain-cells = <1>;
+			reg = <0x1800000 0x80000>;
+			clocks = <&xo_board>, <&sleep_clk>;
+			clock-names = "xo", "sleep_clk";
+		};
+
+		tcsr_mutex_regs: syscon@1905000 {
+			compatible = "syscon";
+			reg = <0x1905000 0x20000>;
+		};
+
+		tcsr: syscon@1937000 {
+			compatible = "qcom,tcsr-msm8916", "syscon";
+			reg = <0x1937000 0x30000>;
+		};
+
+		tcsr_mutex: hwlock {
+			compatible = "qcom,tcsr-mutex";
+			syscon = <&tcsr_mutex_regs 0 0x1000>;
+			#hwlock-cells = <1>;
+		};
+
+		rpm_msg_ram: memory@60000 {
+			compatible = "qcom,rpm-msg-ram";
+			reg = <0x60000 0x8000>;
+		};
+
+		blsp1_uart1: serial@78af000 {
+			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+			reg = <0x78af000 0x200>;
+			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 1>, <&blsp_dma 0>;
+			dma-names = "rx", "tx";
+			status = "disabled";
+		};
+
+		a53pll_c1: clock@b016000 {
+			compatible = "qcom,msm8939-a53pll";
+			reg = <0xb016000 0x40>;
+			#clock-cells = <0>;
+		};
+
+		a53pll_c0: clock@b116000 {
+			compatible = "qcom,msm8939-a53pll";
+			reg = <0xb116000 0x40>;
+			#clock-cells = <0>;
+		};
+
+		a53pll_cci: clock@b1d0000 {
+			compatible = "qcom,msm8939-a53pll";
+			reg = <0xb1d0000 0x40>;
+			#clock-cells = <0>;
+		};
+
+		apcs2: mailbox@b1d1000 {
+			compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
+			reg = <0xb1d1000 0x1000>;
+			#mbox-cells = <1>;
+			clocks = <&a53pll_cci>, <&gcc GPLL0_VOTE>, <&xo_board>;
+			clock-names = "pll", "aux", "ref";
+			#clock-cells = <0>;
+			clock-output-names = "a53mux_cci";
+		};
+
+		apcs1_mbox: mailbox@b011000 {
+			compatible = "qcom,msm8916-apcs-kpss-global";
+			reg = <0xb011000 0x1000>;
+			#mbox-cells = <1>;
+			clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
+			clock-names = "pll", "aux", "ref";
+			#clock-cells = <0>;
+			clock-output-names = "a53mux_c1";
+			/* Set a nominal frequency on a53mux_cci */
+			assigned-clocks = <&apcs2>;
+			assigned-clock-rates = <297600000>;
+		};
+
+		apcs1: syscon@b111000 {
+			compatible = "syscon";
+			reg = <0xb011000 0x1000>;
+		};
+
+		apcs0: mailbox@b111000 {
+			compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
+			reg = <0xb111000 0x1000>;
+			#mbox-cells = <1>;
+			clocks = <&a53pll_c0>, <&gcc GPLL0_VOTE>, <&xo_board>;
+			clock-names = "pll", "aux", "ref";
+			#clock-cells = <0>;
+			clock-output-names = "a53mux_c0";
+		};
+
+		blsp1_uart2: serial@78b0000 {
+			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
+			reg = <0x78b0000 0x200>;
+			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 3>, <&blsp_dma 2>;
+			dma-names = "rx", "tx";
+			status = "disabled";
+		};
+
+		blsp_dma: dma@7884000 {
+			compatible = "qcom,bam-v1.7.0";
+			reg = <0x07884000 0x23000>;
+			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "bam_clk";
+			#dma-cells = <1>;
+			qcom,ee = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi1: spi@78b5000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078b5000 0x500>;
+			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 5>, <&blsp_dma 4>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi1_default>;
+			pinctrl-1 = <&spi1_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi2: spi@78b6000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078b6000 0x500>;
+			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 7>, <&blsp_dma 6>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi2_default>;
+			pinctrl-1 = <&spi2_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi3: spi@78b7000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078b7000 0x500>;
+			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 9>, <&blsp_dma 8>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi3_default>;
+			pinctrl-1 = <&spi3_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi4: spi@78b8000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078b8000 0x500>;
+			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 11>, <&blsp_dma 10>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi4_default>;
+			pinctrl-1 = <&spi4_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi5: spi@78b9000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078b9000 0x500>;
+			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 13>, <&blsp_dma 12>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi5_default>;
+			pinctrl-1 = <&spi5_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_spi6: spi@78ba000 {
+			compatible = "qcom,spi-qup-v2.2.1";
+			reg = <0x078ba000 0x500>;
+			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
+				 <&gcc GCC_BLSP1_AHB_CLK>;
+			clock-names = "core", "iface";
+			dmas = <&blsp_dma 15>, <&blsp_dma 14>;
+			dma-names = "rx", "tx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&spi6_default>;
+			pinctrl-1 = <&spi6_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c1: i2c@78b5000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078b5000 0x500>;
+			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 4>, <&blsp_dma 5>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c1_default>;
+			pinctrl-1 = <&i2c1_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c2: i2c@78b6000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078b6000 0x500>;
+			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 6>, <&blsp_dma 7>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c2_default>;
+			pinctrl-1 = <&i2c2_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c3: i2c@78b7000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078b7000 0x500>;
+			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 8>, <&blsp_dma 9>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c3_default>;
+			pinctrl-1 = <&i2c3_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c4: i2c@78b8000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078b8000 0x500>;
+			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 10>, <&blsp_dma 11>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c4_default>;
+			pinctrl-1 = <&i2c4_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c5: i2c@78b9000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078b9000 0x500>;
+			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 12>, <&blsp_dma 13>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c5_default>;
+			pinctrl-1 = <&i2c5_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		blsp_i2c6: i2c@78ba000 {
+			compatible = "qcom,i2c-qup-v2.2.1";
+			reg = <0x078ba000 0x500>;
+			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
+				 <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
+			clock-names = "iface", "core";
+			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
+			dma-names = "tx", "rx";
+			pinctrl-names = "default", "sleep";
+			pinctrl-0 = <&i2c6_default>;
+			pinctrl-1 = <&i2c6_sleep>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		lpass: lpass@7708000 {
+			status = "disabled";
+			compatible = "qcom,apq8016-lpass-cpu";
+			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
+				 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
+				 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
+				 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
+				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
+				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
+				 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
+
+			clock-names = "ahbix-clk",
+					"pcnoc-mport-clk",
+					"pcnoc-sway-clk",
+					"mi2s-bit-clk0",
+					"mi2s-bit-clk1",
+					"mi2s-bit-clk2",
+					"mi2s-bit-clk3";
+			#sound-dai-cells = <1>;
+
+			interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "lpass-irq-lpaif";
+			reg = <0x07708000 0x10000>;
+			reg-names = "lpass-lpaif";
+
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		lpass_codec: codec{
+			compatible = "qcom,msm8916-wcd-digital-codec";
+			reg = <0x0771c000 0x400>;
+			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
+				 <&gcc GCC_CODEC_DIGCODEC_CLK>;
+			clock-names = "ahbix-clk", "mclk";
+			#sound-dai-cells = <1>;
+		};
+
+		sdhc_1: sdhci@7824000 {
+			compatible = "qcom,sdhci-msm-v4";
+			reg = <0x07824900 0x11c>, <0x07824000 0x800>;
+			reg-names = "hc_mem", "core_mem";
+
+			interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>, <0 138 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "hc_irq", "pwr_irq";
+			clocks = <&gcc GCC_SDCC1_APPS_CLK>,
+				 <&gcc GCC_SDCC1_AHB_CLK>,
+				 <&xo_board>;
+			clock-names = "core", "iface", "xo";
+			mmc-ddr-1_8v;
+			bus-width = <8>;
+			non-removable;
+			status = "disabled";
+		};
+
+		sdhc_2: sdhci@7864000 {
+			compatible = "qcom,sdhci-msm-v4";
+			reg = <0x07864900 0x11c>, <0x07864000 0x800>;
+			reg-names = "hc_mem", "core_mem";
+
+			interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>, <0 221 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "hc_irq", "pwr_irq";
+			clocks = <&gcc GCC_SDCC2_APPS_CLK>,
+				 <&gcc GCC_SDCC2_AHB_CLK>,
+				 <&xo_board>;
+			clock-names = "core", "iface", "xo";
+			bus-width = <4>;
+			status = "disabled";
+		};
+
+		otg: usb@78d9000 {
+			compatible = "qcom,ci-hdrc";
+			reg = <0x78d9000 0x200>,
+			      <0x78d9200 0x200>;
+			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&gcc GCC_USB_HS_AHB_CLK>,
+				 <&gcc GCC_USB_HS_SYSTEM_CLK>;
+			clock-names = "iface", "core";
+			assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
+			assigned-clock-rates = <80000000>;
+			resets = <&gcc GCC_USB_HS_BCR>;
+			reset-names = "core";
+			phy_type = "ulpi";
+			dr_mode = "otg";
+			ahb-burst-config = <0>;
+			phy-names = "usb-phy";
+			phys = <&usb_hs_phy>;
+			status = "disabled";
+			#reset-cells = <1>;
+
+			ulpi {
+				usb_hs_phy: phy {
+					compatible = "qcom,usb-hs-phy-msm8916",
+						     "qcom,usb-hs-phy";
+					#phy-cells = <0>;
+					clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
+					clock-names = "ref", "sleep";
+					resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>;
+					reset-names = "phy", "por";
+					qcom,init-seq = /bits/ 8 <0x0 0x44
+						0x1 0x6b 0x2 0x24 0x3 0x13>;
+				};
+			};
+		};
+
+		intc: interrupt-controller@b000000 {
+			compatible = "qcom,msm-qgic2";
+			interrupt-controller;
+			#interrupt-cells = <3>;
+			reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
+		};
+
+		timer@b020000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges;
+			compatible = "arm,armv7-timer-mem";
+			reg = <0xb020000 0x1000>;
+			clock-frequency = <19200000>;
+
+			frame@b021000 {
+				frame-number = <0>;
+				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb021000 0x1000>,
+				      <0xb022000 0x1000>;
+			};
+
+			frame@b023000 {
+				frame-number = <1>;
+				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb023000 0x1000>;
+				status = "disabled";
+			};
+
+			frame@b024000 {
+				frame-number = <2>;
+				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb024000 0x1000>;
+				status = "disabled";
+			};
+
+			frame@b025000 {
+				frame-number = <3>;
+				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb025000 0x1000>;
+				status = "disabled";
+			};
+
+			frame@b026000 {
+				frame-number = <4>;
+				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb026000 0x1000>;
+				status = "disabled";
+			};
+
+			frame@b027000 {
+				frame-number = <5>;
+				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb027000 0x1000>;
+				status = "disabled";
+			};
+
+			frame@b028000 {
+				frame-number = <6>;
+				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+				reg = <0xb028000 0x1000>;
+				status = "disabled";
+			};
+		};
+
+		spmi_bus: spmi@200f000 {
+			compatible = "qcom,spmi-pmic-arb";
+			reg = <0x200f000 0x001000>,
+			      <0x2400000 0x400000>,
+			      <0x2c00000 0x400000>,
+			      <0x3800000 0x200000>,
+			      <0x200a000 0x002100>;
+			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
+			interrupt-names = "periph_irq";
+			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
+			qcom,ee = <0>;
+			qcom,channel = <0>;
+			#address-cells = <2>;
+			#size-cells = <0>;
+			interrupt-controller;
+			#interrupt-cells = <4>;
+		};
+
+		rng@22000 {
+			compatible = "qcom,prng";
+			reg = <0x00022000 0x200>;
+			clocks = <&gcc GCC_PRNG_AHB_CLK>;
+			clock-names = "core";
+		};
+
+		qfprom: qfprom@5c000 {
+			compatible = "qcom,qfprom";
+			reg = <0x5c000 0x1000>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+			tsens_caldata: caldata@a0 {
+				reg = <0xa0 0x5c>;
+			};
+		};
+
+		tsens: thermal-sensor@4a9000 {
+			compatible = "qcom,msm8939-tsens";
+			reg = <0x4a9000 0x1000>, /* TM */
+			      <0x4a8000 0x1000>; /* SROT */
+			nvmem-cells = <&tsens_caldata>;
+			nvmem-cell-names = "calib";
+			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "uplow";
+			#thermal-sensor-cells = <1>;
+		};
+
+		apps_iommu: iommu@1ef0000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			#iommu-cells = <1>;
+			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
+			ranges = <0 0x1e20000 0x40000>;
+			reg = <0x1ef0000 0x3000>;
+			clocks = <&gcc GCC_SMMU_CFG_CLK>,
+				 <&gcc GCC_APSS_TCU_CLK>;
+			clock-names = "iface", "bus";
+			qcom,iommu-secure-id = <17>;
+
+			/* mdp_0: */
+			iommu-ctx@4000 {
+				compatible = "qcom,msm-iommu-v1-ns";
+				reg = <0x4000 0x1000>;
+				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+			};
+
+			/* venus_ns: */
+			iommu-ctx@5000 {
+				compatible = "qcom,msm-iommu-v1-sec";
+				reg = <0x5000 0x1000>;
+				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+			};
+		};
+
+		gpu_iommu: iommu@1f08000 {
+			#address-cells = <1>;
+			#size-cells = <1>;
+			#iommu-cells = <1>;
+			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
+			ranges = <0 0x1f08000 0x10000>;
+			clocks = <&gcc GCC_SMMU_CFG_CLK>,
+				 <&gcc GCC_GFX_TCU_CLK>,
+				 <&gcc GCC_GFX_TBU_CLK>;
+			clock-names = "iface", "bus", "tlb";
+			qcom,iommu-secure-id = <18>;
+
+			/* gfx3d_user: */
+			iommu-ctx@1000 {
+				compatible = "qcom,msm-iommu-v1-ns";
+				reg = <0x1000 0x1000>;
+				interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
+			};
+
+			/* gfx3d_priv: */
+			iommu-ctx@2000 {
+				compatible = "qcom,msm-iommu-v1-ns";
+				reg = <0x2000 0x1000>;
+				interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
+			};
+		};
+
+		gpu@1c00000 {
+			compatible = "qcom,adreno-405.0", "qcom,adreno";
+			reg = <0x01c00000 0x10000>;
+			reg-names = "kgsl_3d0_reg_memory";
+			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "kgsl_3d0_irq";
+			clock-names =
+			    "core",
+			    "iface",
+			    "mem",
+			    "mem_iface",
+			    "alt_mem_iface",
+			    "gfx3d",
+			    "rbbmtimer";
+			clocks =
+			    <&gcc GCC_OXILI_GFX3D_CLK>,
+			    <&gcc GCC_OXILI_AHB_CLK>,
+			    <&gcc GCC_OXILI_GMEM_CLK>,
+			    <&gcc GCC_BIMC_GFX_CLK>,
+			    <&gcc GCC_BIMC_GPU_CLK>,
+			    <&gcc GFX3D_CLK_SRC>,
+			    <&gcc GCC_OXILI_TIMER_CLK>;
+			power-domains = <&gcc OXILI_GDSC>;
+			operating-points-v2 = <&gpu_opp_table>;
+			iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
+		};
+
+		mdss: mdss@1a00000 {
+			compatible = "qcom,mdss";
+			reg = <0x1a00000 0x1000>,
+			      <0x1ac8000 0x3000>;
+			reg-names = "mdss_phys", "vbif_phys";
+
+			power-domains = <&gcc MDSS_GDSC>;
+
+			clocks = <&gcc GCC_MDSS_AHB_CLK>,
+				 <&gcc GCC_MDSS_AXI_CLK>,
+				 <&gcc GCC_MDSS_VSYNC_CLK>;
+			clock-names = "iface",
+				      "bus",
+				      "vsync";
+
+			interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
+
+			interrupt-controller;
+			#interrupt-cells = <1>;
+
+			#address-cells = <1>;
+			#size-cells = <1>;
+			ranges;
+
+			mdp: mdp@1a01000 {
+				compatible = "qcom,mdp5";
+				reg = <0x1a01000 0x89000>;
+				reg-names = "mdp_phys";
+
+				interrupt-parent = <&mdss>;
+				interrupts = <0 0>;
+
+				clocks = <&gcc GCC_MDSS_AHB_CLK>,
+					 <&gcc GCC_MDSS_AXI_CLK>,
+					 <&gcc GCC_MDSS_MDP_CLK>,
+					 <&gcc GCC_MDSS_VSYNC_CLK>,
+					 <&gcc GCC_MDP_TBU_CLK>,
+					 <&gcc GCC_MDP_RT_TBU_CLK>;
+				clock-names = "iface",
+					      "bus",
+					      "core",
+					      "vsync",
+					      "tbu",
+					      "tbu_rt";
+
+				iommus = <&apps_iommu 4>;
+
+				interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
+						<&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
+				interconnect-names = "mdp0-mem", "mdp1-mem";
+
+				ports {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					port@0 {
+						reg = <0>;
+						mdp5_intf1_out: endpoint {
+							remote-endpoint = <&dsi0_in>;
+						};
+					};
+
+					port@1 {
+						reg = <1>;
+						mdp5_intf2_out: endpoint {
+							remote-endpoint = <&dsi1_in>;
+						};
+					};
+				};
+			};
+
+			dsi0: dsi@1a98000 {
+				compatible = "qcom,mdss-dsi-ctrl";
+				reg = <0x1a98000 0x25c>;
+				reg-names = "dsi_ctrl";
+
+				interrupt-parent = <&mdss>;
+				interrupts = <4 0>;
+
+				assigned-clocks = <&gcc BYTE0_CLK_SRC>,
+						  <&gcc PCLK0_CLK_SRC>;
+				assigned-clock-parents = <&dsi0_phy 0>,
+							 <&dsi0_phy 1>;
+
+				clocks = <&gcc GCC_MDSS_MDP_CLK>,
+					 <&gcc GCC_MDSS_AHB_CLK>,
+					 <&gcc GCC_MDSS_AXI_CLK>,
+					 <&gcc GCC_MDSS_BYTE0_CLK>,
+					 <&gcc GCC_MDSS_PCLK0_CLK>,
+					 <&gcc GCC_MDSS_ESC0_CLK>;
+				clock-names = "mdp_core",
+					      "iface",
+					      "bus",
+					      "byte",
+					      "pixel",
+					      "core";
+				phys = <&dsi0_phy>;
+				phy-names = "dsi-phy";
+				status = "disabled";
+
+				ports {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					port@0 {
+						reg = <0>;
+						dsi0_in: endpoint {
+							remote-endpoint = <&mdp5_intf1_out>;
+						};
+					};
+
+					port@1 {
+						reg = <1>;
+						dsi0_out: endpoint {
+						};
+					};
+				};
+			};
+
+			dsi1: dsi@1aa0000 {
+				compatible = "qcom,mdss-dsi-ctrl";
+				reg = <0x1aa0000 0x25c>;
+				reg-names = "dsi_ctrl";
+
+				interrupt-parent = <&mdss>;
+				interrupts = <5 0>;
+
+				assigned-clocks = <&gcc BYTE1_CLK_SRC>,
+						  <&gcc PCLK1_CLK_SRC>;
+				assigned-clock-parents = <&dsi1_phy 0>,
+							 <&dsi1_phy 1>;
+
+				clocks = <&gcc GCC_MDSS_MDP_CLK>,
+					 <&gcc GCC_MDSS_AHB_CLK>,
+					 <&gcc GCC_MDSS_AXI_CLK>,
+					 <&gcc GCC_MDSS_BYTE1_CLK>,
+					 <&gcc GCC_MDSS_PCLK1_CLK>,
+					 <&gcc GCC_MDSS_ESC1_CLK>;
+				clock-names = "mdp_core",
+					      "iface",
+					      "bus",
+					      "byte",
+					      "pixel",
+					      "core";
+				phys = <&dsi1_phy>;
+				phy-names = "dsi-phy";
+				status = "disabled";
+
+				ports {
+					#address-cells = <1>;
+					#size-cells = <0>;
+
+					port@0 {
+						reg = <0>;
+						dsi1_in: endpoint {
+							remote-endpoint = <&mdp5_intf2_out>;
+						};
+					};
+
+					port@1 {
+						reg = <1>;
+						dsi1_out: endpoint {
+						};
+					};
+				};
+			};
+
+			dsi0_phy: dsi-phy@1a98300 {
+				compatible = "qcom,dsi-phy-28nm-lp";
+				reg = <0x1a98300 0xd4>,
+				      <0x1a98500 0x280>,
+				      <0x1a98780 0x30>;
+				reg-names = "dsi_pll",
+					    "dsi_phy",
+					    "dsi_phy_regulator";
+
+				#clock-cells = <1>;
+				#phy-cells = <0>;
+
+				clocks = <&gcc GCC_MDSS_AHB_CLK>;
+				clock-names = "iface";
+				qcom,dsi-phy-regulator-ldo-mode;
+				status = "disabled";
+			};
+
+			dsi1_phy: dsi-phy@1aa0300 {
+				compatible = "qcom,dsi-phy-28nm-lp";
+				reg = <0x1aa0300 0xd4>,
+				      <0x1aa0500 0x280>,
+				      <0x1aa0780 0x30>;
+				reg-names = "dsi_pll",
+					    "dsi_phy",
+					    "dsi_phy_regulator";
+
+				#clock-cells = <1>;
+				#phy-cells = <0>;
+
+				clocks = <&gcc GCC_MDSS_AHB_CLK>;
+				clock-names = "iface";
+				qcom,dsi-phy-regulator-ldo-mode;
+				status = "disabled";
+			};
+		};
+
+		hexagon@4080000 {
+			compatible = "qcom,q6v5-pil";
+			reg = <0x04080000 0x100>,
+			      <0x04020000 0x040>;
+
+			reg-names = "qdsp6", "rmb";
+
+			interrupts-extended = <&intc 0 24 1>,
+					      <&hexagon_smp2p_in 0 0>,
+					      <&hexagon_smp2p_in 1 0>,
+					      <&hexagon_smp2p_in 2 0>,
+					      <&hexagon_smp2p_in 3 0>;
+			interrupt-names = "wdog", "fatal", "ready",
+					  "handover", "stop-ack";
+
+			clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
+				 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
+				 <&gcc GCC_BOOT_ROM_AHB_CLK>,
+				 <&xo_board>;
+			clock-names = "iface", "bus", "mem", "xo";
+
+			qcom,smem-states = <&hexagon_smp2p_out 0>;
+			qcom,smem-state-names = "stop";
+
+			resets = <&scm 0>;
+			reset-names = "mss_restart";
+
+			power-domains = <&rpmpd MSM8939_VDDMDCX_AO>,
+					<&rpmpd MSM8939_VDDMX>;
+			power-domain-names = "cx", "mx";
+			pll-supply = <&pm8916_l7>;
+
+			qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
+
+			status = "disabled";
+
+			mba {
+				memory-region = <&mba_mem>;
+			};
+
+			mpss {
+				memory-region = <&mpss_mem>;
+			};
+
+			smd-edge {
+				interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
+
+				qcom,smd-edge = <0>;
+				mboxes = <&apcs1_mbox 12>;
+				qcom,remote-pid = <1>;
+
+				label = "hexagon";
+			};
+		};
+
+		pronto: wcnss@a204000 {
+			compatible = "qcom,pronto-v2-pil", "qcom,pronto";
+			reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
+			reg-names = "ccu", "dxe", "pmu";
+
+			memory-region = <&wcnss_mem>;
+
+			interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
+					      <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+					      <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+					      <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+					      <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+			interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
+
+			power-domains = <&rpmpd MSM8939_VDDCX>,
+					<&rpmpd MSM8939_VDDMX_AO>;
+			power-domain-names = "cx", "mx";
+			vddpx-supply = <&pm8916_l7>;
+
+			qcom,state = <&wcnss_smp2p_out 0>;
+			qcom,state-names = "stop";
+
+			pinctrl-names = "default";
+			pinctrl-0 = <&wcnss_pin_a>;
+
+			status = "disabled";
+
+			iris {
+				compatible = "qcom,wcn3660";
+
+				clocks = <&rpmcc RPM_SMD_RF_CLK2>;
+				clock-names = "xo";
+
+				vddxo-supply = <&pm8916_l7>;
+				vddrfa-supply = <&pm8916_s3>;
+				vddpa-supply = <&pm8916_l9>;
+				vdddig-supply = <&pm8916_l5>;
+			};
+
+			smd-edge {
+				interrupts = <0 142 1>;
+
+				qcom,ipc = <&apcs1 8 17>;
+				qcom,smd-edge = <6>;
+				qcom,remote-pid = <4>;
+
+				label = "pronto";
+
+				wcnss {
+					compatible = "qcom,wcnss";
+					qcom,smd-channels = "WCNSS_CTRL";
+
+					qcom,mmio = <&pronto>;
+
+					bt {
+						compatible = "qcom,wcnss-bt";
+					};
+
+					wifi {
+						compatible = "qcom,wcnss-wlan";
+
+						interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
+							     <0 146 IRQ_TYPE_LEVEL_HIGH>;
+						interrupt-names = "tx", "rx";
+
+						qcom,smem-states = <&apps_smsm 10>,
+								   <&apps_smsm 9>;
+						qcom,smem-state-names = "tx-enable",
+									"tx-rings-empty";
+					};
+				};
+			};
+		};
+
+		venus: video-codec@1d00000 {
+			compatible = "qcom,msm8916-venus";
+			reg = <0x01d00000 0xff000>;
+			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+			power-domains = <&gcc VENUS_GDSC>;
+			clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
+				 <&gcc GCC_VENUS0_AHB_CLK>,
+				 <&gcc GCC_VENUS0_AXI_CLK>;
+			clock-names = "core", "iface", "bus";
+			iommus = <&apps_iommu 5>;
+			memory-region = <&venus_mem>;
+			status = "okay";
+
+			video-decoder {
+				compatible = "venus-decoder";
+			};
+
+			video-encoder {
+				compatible = "venus-encoder";
+			};
+		};
+
+		bimc: interconnect@400000 {
+			compatible = "qcom,msm8939-bimc";
+			#interconnect-cells = <1>;
+			reg = <0x400000 0x62000>;
+			clock-names = "bus", "bus_a";
+			clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
+				 <&rpmcc RPM_SMD_BIMC_A_CLK>;
+			status = "okay";
+		};
+
+		pcnoc: interconnect@500000 {
+			compatible = "qcom,msm8939-pcnoc";
+			#interconnect-cells = <1>;
+			reg = <0x500000 0x11000>;
+			clock-names = "bus", "bus_a";
+			clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
+				 <&rpmcc RPM_SMD_PCNOC_A_CLK>;
+			status = "okay";
+		};
+
+		snoc: interconnect@580000 {
+			compatible = "qcom,msm8939-snoc";
+			#interconnect-cells = <1>;
+			reg = <0x580000 0x14080>;
+			clock-names = "bus", "bus_a";
+			clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
+				 <&rpmcc RPM_SMD_SNOC_A_CLK>;
+			status = "okay";
+
+			snoc_mm: interconnect-snoc-mm {
+				compatible = "qcom,msm8939-snoc-mm";
+				#interconnect-cells = <1>;
+				clock-names = "bus", "bus_a";
+				clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
+					 <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
+				status = "okay";
+			};
+
+		};
+	};
+
+	smd {
+		compatible = "qcom,smd";
+
+		rpm {
+			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
+			qcom,ipc = <&apcs1 8 0>;
+			qcom,smd-edge = <15>;
+
+			rpm_requests: rpm_requests {
+				compatible = "qcom,rpm-msm8936";
+				qcom,smd-channels = "rpm_requests";
+
+				rpmcc: qcom,rpmcc {
+					compatible = "qcom,rpmcc-msm8936";
+					#clock-cells = <1>;
+				};
+
+				rpmpd: power-controller {
+					compatible = "qcom,msm8939-rpmpd";
+					#power-domain-cells = <1>;
+					operating-points-v2 = <&rpmpd_opp_table>;
+
+					rpmpd_opp_table: opp-table {
+						compatible = "operating-points-v2";
+
+						rpmpd_opp_ret: opp1 {
+							opp-level = <1>;
+						};
+
+						rpmpd_opp_svs_krait: opp2 {
+							opp-level = <2>;
+						};
+
+						rpmpd_opp_svs_soc: opp3 {
+							opp-level = <3>;
+						};
+
+						rpmpd_opp_nom: opp4 {
+							opp-level = <4>;
+						};
+
+						rpmpd_opp_turbo: opp5 {
+							opp-level = <5>;
+						};
+
+						rpmpd_opp_super_turbo: opp6 {
+							opp-level = <6>;
+						};
+					};
+				};
+			};
+		};
+	};
+
+	hexagon-smp2p {
+		compatible = "qcom,smp2p";
+		qcom,smem = <435>, <428>;
+
+		interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
+
+		mboxes = <&apcs1_mbox 14>;
+
+		qcom,local-pid = <0>;
+		qcom,remote-pid = <1>;
+
+		hexagon_smp2p_out: master-kernel {
+			qcom,entry-name = "master-kernel";
+
+			#qcom,smem-state-cells = <1>;
+		};
+
+		hexagon_smp2p_in: slave-kernel {
+			qcom,entry-name = "slave-kernel";
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+	};
+
+	wcnss-smp2p {
+		compatible = "qcom,smp2p";
+		qcom,smem = <451>, <431>;
+
+		interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
+
+		mboxes = <&apcs1_mbox 18>;
+
+		qcom,local-pid = <0>;
+		qcom,remote-pid = <4>;
+
+		wcnss_smp2p_out: master-kernel {
+			qcom,entry-name = "master-kernel";
+
+			#qcom,smem-state-cells = <1>;
+		};
+
+		wcnss_smp2p_in: slave-kernel {
+			qcom,entry-name = "slave-kernel";
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+	};
+
+	smsm {
+		compatible = "qcom,smsm";
+
+		#address-cells = <1>;
+		#size-cells = <0>;
+
+		qcom,ipc-1 = <&apcs1 8 13>;
+		qcom,ipc-3 = <&apcs1 8 19>;
+
+		apps_smsm: apps@0 {
+			reg = <0>;
+
+			#qcom,smem-state-cells = <1>;
+		};
+
+		hexagon_smsm: hexagon@1 {
+			reg = <1>;
+			interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+
+		wcnss_smsm: wcnss@6 {
+			reg = <6>;
+			interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
+
+			interrupt-controller;
+			#interrupt-cells = <2>;
+		};
+	};
+};
+
+#include "msm8916-pins.dtsi"
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19  1:08 [PATCH v1 0/4] Add MSM8939 SoC support with two devices Bryan O'Donoghue
  2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
@ 2022-04-19  1:09 ` Bryan O'Donoghue
  2022-04-19  7:35   ` Krzysztof Kozlowski
                     ` (2 more replies)
  2022-04-19  1:09 ` [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua Bryan O'Donoghue
  3 siblings, 3 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  1:09 UTC (permalink / raw)
  To: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac,
	bryan.odonoghue, Leo Yan

The apq8039-t2 is an apq8039/msm8939 based board paired with a wcn3680b
WiFi chipset.

Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Co-developed-by: Jun Nie <jun.nie@linaro.org>
Signed-off-by: Jun Nie <jun.nie@linaro.org>
Co-developed-by: Benjamin Li <benl@squareup.com>
Signed-off-by: Benjamin Li <benl@squareup.com>
Co-developed-by: James Willcox <jwillcox@squareup.com>
Signed-off-by: James Willcox <jwillcox@squareup.com>
Co-developed-by: Leo Yan <leo.yan@linaro.org>
Signed-off-by: Leo Yan <leo.yan@linaro.org>
Co-developed-by: Joseph Gates <jgates@squareup.com>
Signed-off-by: Joseph Gates <jgates@squareup.com>
Co-developed-by: Max Chen <mchen@squareup.com>
Signed-off-by: Max Chen <mchen@squareup.com>
Co-developed-by: Zac Crosby <zac@squareup.com>
Signed-off-by: Zac Crosby <zac@squareup.com>
Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../boot/dts/qcom/apq8039-t2-pinctl.dtsi      | 277 +++++++++++++++
 arch/arm64/boot/dts/qcom/apq8039-t2.dts       | 326 ++++++++++++++++++
 3 files changed, 604 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
 create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index f9e6343acd03..5b8a0eb34733 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -1,5 +1,6 @@
 # SPDX-License-Identifier: GPL-2.0
 dtb-$(CONFIG_ARCH_QCOM)	+= apq8016-sbc.dtb
+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
diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
new file mode 100644
index 000000000000..60adb3da826a
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
@@ -0,0 +1,277 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+/*
+ * Line names are taken from the schematic of T2, Ver X03.
+ * July 14, 2018. Page 4 in particular.
+ */
+
+&msmgpio {
+	gpio-line-names =
+		"APQ_UART1_TX",		/* GPIO_0 */
+		"APQ_UART1_RX",
+		"APQ_I2C1_SDA",
+		"APQ_I2C1_SCL",
+		"APQ_UART2_TX_1V8",
+		"APQ_UART2_RX_1V8",
+		"APQ_I2C2_SDA",
+		"APQ_I2C2_SCL",
+		"NC",
+		"APQ_LCD_IOVCC_EN",
+		"APQ_I2C3_SDA",		/* GPIO_10 */
+		"APQ_I2C3_SCL",
+		"TOUCH_RST_1V8_L",
+		"NC",
+		"APQ_I2C4_SDA",
+		"APQ_I2C4_SCL",
+		"APQ_ID5",
+		"USB_DISCONNECT",
+		"APQ_I2C5_SDA",
+		"APQ_I2C5_SCL",
+		"APQ_USBC_SPI_MOSI",	/* GPIO_20 */
+		"APQ_USBC_SPI_MISO",
+		"APQ_USBC_SPI_SS_L",
+		"APQ_USBC_SPI_CLK",
+		"APQ_LCD_TE0",
+		"APQ_LCD_RST_L",
+		"NC",
+		"NC",
+		"ACCELEROMETER_INT1",
+		"APQ_CAM_I2C0_SDA",
+		"APQ_CAM_I2C0_SCL",	/* GPIO_30 */
+		"ACCELEROMETER_INT2",
+		"NC",
+		"NC",
+		"NC",
+		"APQ_K21_RST_1V8_L",
+		"NC",
+		"APQ_EDL_1V8",
+		"TP145",
+		"BT_SSBI",
+		"NC",			/* GPIO_40 */
+		"NC",
+		"NC",
+		"NC",
+		"NC",
+		"NC",
+		"NC",
+		"BT_CTRL",
+		"BT_DAT",
+		"PWR_GPIO_IN",
+		"PWR_GPIO_OUT",		/* GPIO_50 */
+		"CARD_DET_MLB_L",
+		"HALL_SENSOR",
+		"TP63",
+		"TP64",
+		"TP65",
+		"NC",
+		"NC",
+		"NC",
+		"NC",
+		"NC",			/* GPIO_60 */
+		"NC",
+		"APQ_K21_GPIO0_1V8",
+		"CDC_PDM_CLK",
+		"CDC_PDM_SYNC",
+		"CDC_PDM_TX",
+		"CDC_PDM_RX0",
+		"CDC_PDM_RX1",
+		"CDC_PDM_RX2",
+		"APQ_K21_GPIO1_1V8",
+		"NC",			/* GPIO_70 */
+		"APQ_HUB_SEL_1V8",
+		"APQ_K21_GPIO2_1V8",
+		"APQ_K21_GPIO3_1V8",
+		"APQ_ID0",
+		"APQ_ID1",
+		"APQ_ID2",
+		"APQ_ID3",
+		"APQ_ID4",
+		"APQ_HUB_SUSP_IND",
+		"BOOT_CONFIG_0",	/* GPIO_80 */
+		"BOOT_CONFIG_1",
+		"BOOT_CONFIG_2",
+		"BOOT_CONFIG_3",
+		"NC",
+		"NC",
+		"APQ_LCD_AVDD_EN",
+		"APQ_LCD_AVEE_EN",
+		"TP70",
+		"NC",
+		"APQ_DEBUG0",		/* GPIO_90 */
+		"APQ_DEBUG1",
+		"APQ_DEBUG2",
+		"APQ_DEBUG3",
+		"TP165",
+		"NC",
+		"APQ_LNA_PWR_EN",
+		"NC",
+		"APQ_LCD_BL_EN",
+		"NC",
+		"APQ_LCD_ID0",		/* GPIO_100 */
+		"APQ_LCD_ID1",
+		"USBC_GPIO5_1V8",
+		"NC",
+		"NC",
+		"NC",
+		"APQ_HUB_RST_1V8_L",
+		"USBC_I2C_IRQ_1V8_L",
+		"SPE_PWR_EN",
+		"NC",
+		"APQ_USB_ID",		/* GPIO_110 */
+		"APQ_EXT_BUCK_VSEL",
+		"APQ_USB_ID_OUT",
+		"NC",
+		"PRNT_RST_L",
+		"APQ_CRQ_I2C_RDY_1V8",
+		"TYPEC_RST_1V8_H",
+		"CHG_BACKPWR_EN",
+		"CHG_PROCHOT_L",
+		"NC",
+		"USBC_GPIO7_1V8",	/* GPIO_120 */
+		"NC";
+
+	blsp1_uart1_default: blsp1-uart1-default {
+		pins = "gpio0", "gpio1";
+		function = "blsp_uart1";
+
+		drive-strength = <16>;
+		bias-disable;
+	};
+
+	blsp1_uart1_sleep: blsp1-uart1-sleep {
+		pins = "gpio0", "gpio1";
+		function = "gpio";
+
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	pinctrl_lcd_iovcc: lcd-iovcc {
+		pinmux {
+			pins = "gpio9";
+			function = "gpio";
+		};
+	};
+
+	pinctrl_lcd_avdd: lcd-avdd {
+		pinmux {
+			pins = "gpio86";
+			function = "gpio";
+		};
+	};
+
+	pinctrl_lcd_avee: lcd-avee {
+		pinmux {
+			pins = "gpio87";
+			function = "gpio";
+		};
+	};
+
+	pinctrl_backlight: backlight {
+		pinmux {
+			pins = "gpio98";
+			function = "gpio";
+		};
+	};
+
+	pinctrl_panel: panel {
+		pinmux {
+			pins = "gpio25";
+			function = "gpio";
+		};
+	};
+
+	msmgpio_spe_reg: msmgpio_spe_reg {
+		pinmux {
+			pins = "gpio108";
+			function = "gpio";
+			output-high;
+		};
+	};
+
+	sq_spe_enable: sq_spe_enable {
+		pinmux {
+			pins = "gpio35";
+			function = "gpio";
+			output-low;
+		};
+	};
+
+	msmgpio_crq_reg: msmgpio_crq_reg {
+		pinmux {
+			function = "gpio";
+			pins = "gpio12";
+			output-high;
+		};
+	};
+
+	typec_pins: typec_pins {
+		pinmux_irqz {
+			function = "gpio";
+			pins = "gpio107";
+		};
+		pinconf_irqz {
+			pins = "gpio107";
+			bias-pull-up;
+			input-enable;
+		};
+	};
+
+	pinctrl_otg_default: otg_default {
+		pinmux_usb_disconnect {
+			function = "gpio";
+			pins = "gpio17";
+			output-high;
+		};
+	};
+
+	pinctrl_otg_host: otg_host {
+		pinmux_usb_disconnect {
+			function = "gpio";
+			pins = "gpio17";
+			output-low;
+		};
+	};
+
+	pinctrl_otg_device: otg_device {
+		pinmux_usb_disconnect {
+			function = "gpio";
+			pins = "gpio17";
+			output-low;
+		};
+	};
+
+	ext_buck_vsel: ext_buck_vsel {
+		label = "ext-buck-vsel";
+		pinmux {
+			function = "gpio";
+			pins = "gpio111";
+		};
+		pinconf {
+			pins = "gpio111";
+			drive-strength = <2>;
+		};
+	};
+};
+
+&pm8916_gpios {
+	gpio-line-names =
+		"PM_GPIO1",     /* WIFI_GPIO1_PRE */
+		"PM_GPIO2",     /* WIFI_GPIO2_PRE */
+		"PM_GPIO3",
+		"PM_GPIO4";
+
+	wcnss_pin_antennae: wcnss_pin_antennae {
+		pinmux {
+			pins = "gpio1", "gpio2";
+		};
+		pinconf {
+			pins = "gpio1", "gpio2";
+			function = PMIC_GPIO_FUNC_NORMAL;
+			output-high;
+		};
+	};
+};
diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2.dts b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
new file mode 100644
index 000000000000..558f37945d94
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
@@ -0,0 +1,326 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Linaro Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8939.dtsi"
+#include "pm8916.dtsi"
+#include "apq8039-t2-pinctl.dtsi"
+
+/ {
+	model = "Square, Inc. T2 Devkit";
+	compat = "square,apq8039-t2", "qcom,msm8939";
+	qcom,board-id = <0x53 0x54>;
+
+	aliases {
+		serial0 = &blsp1_uart1;
+		serial1 = &blsp1_uart2;
+	};
+
+	chosen {
+		stdout-path = "serial1:115200n8";
+	};
+
+	lcd_iovcc_vreg: lcd-iovcc-vreg {
+		compatible = "regulator-fixed";
+		regulator-name = "lcd_iovcc";
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_lcd_iovcc>;
+		gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <300>;
+		enable-active-high;
+	};
+
+	lcd_avdd_vreg: lcd-avdd-vreg {
+		compatible = "regulator-fixed";
+		regulator-name = "lcd_avdd";
+		regulator-min-microvolt = <5600000>;
+		regulator-max-microvolt = <5600000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_lcd_avdd>;
+		gpios = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <300>;
+		enable-active-high;
+	};
+
+	lcd_avee_vreg: lcd-avee-vreg {
+		compatible = "regulator-fixed";
+		regulator-name = "lcd_avee";
+		regulator-min-microvolt = <5600000>;
+		regulator-max-microvolt = <5600000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_lcd_avee>;
+		gpios = <&msmgpio 87 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <300>;
+		enable-active-high;
+	};
+
+	bl: backlight {
+		compatible = "gpio-backlight";
+		pinctrl-names = "default";
+		pinctrl-0 = <&pinctrl_backlight>;
+		gpios = <&msmgpio 98 GPIO_ACTIVE_HIGH>;
+	};
+
+	pp_spe_3v3_vreg: pp_spe_3v3_vreg {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&msmgpio_spe_reg>;
+		regulator-name = "pp_spe_3v3";
+		gpios = <&msmgpio 108 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <0>;
+		enable-active-high;
+	};
+
+	pp_crq_3v3_vreg: pp_crq_3v3_vreg {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&msmgpio_crq_reg>;
+		regulator-name = "pp_crq_3v3";
+		gpios = <&msmgpio 12 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <0>;
+		enable-active-high;
+	};
+};
+
+&wcd_codec {
+	status = "okay";
+	qcom,hphl-jack-type-normally-open;
+	qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
+	qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
+};
+
+&blsp1_uart1 {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&blsp1_uart1_default>;
+	pinctrl-1 = <&blsp1_uart1_sleep>;
+	status = "okay";
+};
+
+&blsp1_uart2 {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&blsp1_uart2_default>;
+	pinctrl-1 = <&blsp1_uart2_sleep>;
+	status = "okay";
+};
+
+&dsi0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	vdda-supply = <&pm8916_l2>;
+	vddio-supply = <&pm8916_l6>;
+	status = "okay";
+};
+
+&dsi0_phy {
+	vddio-supply = <&pm8916_l6>;
+	status = "okay";
+};
+
+&sdhc_1 {
+	vmmc-supply = <&pm8916_l8>;
+	vqmmc-supply = <&pm8916_l5>;
+
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+	status = "okay";
+};
+
+&blsp_i2c1 {
+	status = "okay";
+};
+
+&blsp_i2c2 {
+	status = "okay";
+};
+
+&blsp_i2c3 {
+	status = "okay";
+	tps6598x: tps6598x@38 {
+		compatible = "ti,tps6598x";
+		reg = <0x38>;
+
+		interrupt-parent = <&msmgpio>;
+		interrupts = <107 IRQ_TYPE_LEVEL_LOW>;
+		interrupt-names = "irq";
+
+		pinctrl-names = "default";
+		pinctrl-0 = <&typec_pins>;
+
+		typec_con: connector {
+			compatible = "usb-c-connector";
+			label = "USB-C";
+			port {
+				typec_ep: endpoint {
+					remote-endpoint = <&otg_ep>;
+				};
+			};
+		};
+	};
+};
+
+&blsp_i2c5 {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&otg {
+	status = "okay";
+	usb-role-switch;
+
+	pinctrl-names = "default", "host", "device";
+	pinctrl-0 = <&pinctrl_otg_default>;
+	pinctrl-1 = <&pinctrl_otg_host>;
+	pinctrl-2 = <&pinctrl_otg_device>;
+	pin-switch-delay-us = <100000>;
+
+	ulpi {
+		usb_hs_phy: phy {
+			qcom,enable-vbus-pullup;
+			v1p8-supply = <&pm8916_l7>;
+			v3p3-supply = <&pm8916_l13>;
+		};
+	};
+	port {
+		otg_ep: endpoint {
+			remote-endpoint = <&typec_ep>;
+		};
+	};
+};
+
+&pronto {
+	pinctrl-names = "default";
+	pinctrl-0 = <&wcnss_pin_a &wcnss_pin_antennae>;
+	status = "okay";
+
+	iris {
+		compatible = "qcom,wcn3680";
+	};
+
+	smd-edge {
+		wcnss {
+			bt {
+				local-bd-address = [ 55 44 33 22 11 00 ];
+			};
+		};
+	};
+};
+
+&rpm_requests {
+	smd_rpm_regulators: pm8916-regulators {
+		compatible = "qcom,rpm-pm8916-regulators";
+		vdd_l1_l2_l3-supply = <&pm8916_s3>;
+		vdd_l4_l5_l6-supply = <&pm8916_s4>;
+		vdd_l7-supply = <&pm8916_s4>;
+
+		pm8916_s3: s3 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1300000>;
+		};
+
+		pm8916_s4: s4 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2100000>;
+		};
+
+		/* l1 is fixed to 1225000, but not connected in schematic */
+		pm8916_l2: l2 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1200000>;
+		};
+
+		pm8916_l4: l4 {
+			regulator-min-microvolt = <2050000>;
+			regulator-max-microvolt = <2050000>;
+		};
+
+		pm8916_l5: l5 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		pm8916_l6: l6 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on; /* copy from v3.10 */
+		};
+
+		pm8916_l7: l7 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		pm8916_l8: l8 {
+			regulator-min-microvolt = <2850000>;
+			regulator-max-microvolt = <2900000>;
+		};
+
+		pm8916_l9: l9 {
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l10: l10 {
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l11: l11 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2950000>;
+		};
+
+		pm8916_l12: l12 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2950000>;
+		};
+
+		pm8916_l13: l13 {
+			regulator-min-microvolt = <3075000>;
+			regulator-max-microvolt = <3075000>;
+		};
+
+		pm8916_l14: l14 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l15: l15 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l16: l16 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l17: l17 {
+			regulator-min-microvolt = <2850000>;
+			regulator-max-microvolt = <2850000>;
+		};
+
+		pm8916_l18: l18 {
+			regulator-min-microvolt = <2700000>;
+			regulator-max-microvolt = <2700000>;
+		};
+	};
+};
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19  1:08 [PATCH v1 0/4] Add MSM8939 SoC support with two devices Bryan O'Donoghue
                   ` (2 preceding siblings ...)
  2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
@ 2022-04-19  1:09 ` Bryan O'Donoghue
  2022-04-19 19:27   ` Stephan Gerhold
  2022-04-19 21:51   ` Bjorn Andersson
  3 siblings, 2 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  1:09 UTC (permalink / raw)
  To: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, bryan.odonoghue

Add a basic booting DTS for the Sony Xperia M4 Aqua aka "tulip".

Tulip is paired with:

- wcn3660
- smb1360 battery charger
- 720p Truly NT35521 Panel

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
 arch/arm64/boot/dts/qcom/Makefile             |   1 +
 .../qcom/msm8939-sony-xperia-kanuti-tulip.dts | 489 ++++++++++++++++++
 2 files changed, 490 insertions(+)
 create mode 100644 arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts

diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 5b8a0eb34733..3ac7f6876c09 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -19,6 +19,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-a5u-eur.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-j5.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-serranove.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-wingtech-wt88047.dtb
+dtb-$(CONFIG_ARCH_QCOM)	+= msm8939-sony-xperia-kanuti-tulip.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-lg-bullhead-rev-10.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-lg-bullhead-rev-101.dtb
 dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-msft-lumia-octagon-talkman.dtb
diff --git a/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
new file mode 100644
index 000000000000..336969f16bc9
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
@@ -0,0 +1,489 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2015, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022, Bryan O'Donoghue.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+/dts-v1/;
+
+#include "msm8939.dtsi"
+#include "pm8916.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
+
+/ {
+	model = "Sony Xperia M4 Aqua";
+	compatible = "sony,kanuti-tulip", "qcom,msm8939";
+	qcom,board-id = <8 0>;
+
+	aliases {
+		serial0 = &blsp1_uart2;
+		mmc0 = &sdhc_1; /* SDC1 eMMC slot */
+		mmc1 = &sdhc_2; /* SDC2 SD card slot */
+	};
+
+	chosen {
+		stdout-path = "serial0:115200n8";
+	};
+
+	positive5_vreg: positive5_vreg {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&msmgpio_positive5_vreg>;
+		regulator-name = "positive5_vreg";
+		gpios = <&msmgpio 114 GPIO_ACTIVE_LOW>;
+		startup-delay-us = <0>;
+		enable-active-low;
+	};
+
+	negative5_vreg: negative5_vreg {
+		compatible = "regulator-fixed";
+		pinctrl-names = "default";
+		pinctrl-0 = <&msmgpio_negative5_vreg>;
+		regulator-name = "negative5_vreg";
+		gpios = <&msmgpio 17 GPIO_ACTIVE_LOW>;
+		startup-delay-us = <0>;
+		enable-active-low;
+	};
+};
+
+&dsi0 {
+	#address-cells = <1>;
+	#size-cells = <0>;
+	vdda-supply = <&pm8916_l2>;
+	vddio-supply = <&pm8916_l16>;
+	status = "okay";
+
+	ports {
+		port@1 {
+			endpoint {
+				remote-endpoint = <&panel_in>;
+				data-lanes = <0 1 2 3>;
+			};
+		};
+	};
+
+	panel@0 {
+		compatible = "sony,tulip-truly-nt35521";
+		reg = <0>;
+		positive5-supply = <&positive5_vreg>;
+		negative5-supply = <&negative5_vreg>;
+		reset-gpios = <&msmgpio 25 GPIO_ACTIVE_LOW>;
+		enable-gpios = <&msmgpio 10 GPIO_ACTIVE_LOW>;
+
+		ports {
+			#address-cells = <1>;
+			#size-cells = <0>;
+
+			port@0 {
+				reg = <0>;
+				panel_in: endpoint {
+					remote-endpoint = <&dsi0_out>;
+				};
+			};
+		};
+
+	};
+};
+
+&dsi0_phy {
+	vddio-supply = <&pm8916_l16>;
+	status = "okay";
+};
+
+&sdhc_1 {
+	vmmc-supply = <&pm8916_l8>;
+	vqmmc-supply = <&pm8916_l5>;
+
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
+	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
+	status = "okay";
+};
+
+&sdhc_2 {
+	vmmc-supply = <&pm8916_l11>;
+	vqmmc-supply = <&pm8916_l12>;
+
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>;
+	pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
+	cd-gpios = <&msmgpio 38 GPIO_ACTIVE_HIGH>;
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&otg {
+	status = "okay";
+	usb-role-switch;
+
+	ulpi {
+		usb_hs_phy: phy {
+			qcom,enable-vbus-pullup;
+			v1p8-supply = <&pm8916_l7>;
+			v3p3-supply = <&pm8916_l13>;
+		};
+	};
+};
+
+&pronto {
+	status = "okay";
+	smd-edge {
+		wcnss {
+			bt {
+				local-bd-address = [ 55 44 33 22 11 00 ];
+			};
+		};
+	};
+};
+
+&msmgpio {
+
+	cdc_ext_spk_pa_active: cdc_ext_spk_pa_on {
+		pins = "gpio0";
+		function = "gpio";
+		drive-strength = <8>;
+		output-low;
+		bias-pull-none;
+	};
+
+	cdc_ext_spk_pa_sus: cdc_ext_spk_pa_off {
+		pins = "gpio0";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	nfc_int_active: nfc_int_active {
+		pins = "gpio21";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	nfc_int_suspend: nfc_int_suspend {
+		pins = "gpio21";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	nfc_disable_active: nfc_disable_active {
+		pins = "gpio20";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	nfc_disable_suspend: nfc_disable_suspend {
+		pins = "gpio20";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-disable;
+	};
+
+	smb_int: smb_int {
+		pins = "gpio62";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-up;
+	};
+
+	usbid: usbid {
+		pins = "gpio110";
+		function = "gpio";
+		drive-strength = <8>;
+		bias-pull-up;
+	};
+
+	gpio_key_suspend: gpio_key_suspend {
+		pins = "gpio107", "gpio108", "gpio109";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-up;
+	};
+
+	/* add pingrp for touchscreen */
+	ts_int_active: ts_int_active {
+		pins = "gpio13";
+		function = "gpio";
+		drive-strength = <16>;
+		bias-pull-up;
+	};
+
+	ts_int_suspend: ts_int_suspend {
+		pins = "gpio13";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	ts_reset_active: ts_reset_active {
+		pins = "gpio12";
+		function = "gpio";
+		drive-strength = <16>;
+		bias-pull-up;
+	};
+
+	ts_reset_suspend: ts_reset_suspend {
+		pins = "gpio12";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	ts_release: ts_release {
+		pins = "gpio13", "gpio12";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	ext_buck_vsel: vsel0 {
+		pins = "gpio111";
+		function = "gpio";
+		drive-strength = <2>;
+	};
+
+	ext_cdc_tlmm_lines_act: tlmm_lines_on {
+		pins = "gpio116", "gpio112", "gpio117", "gpio118", "gpio119";
+		function = "gpio";
+		drive-strength = <8>;
+	};
+
+	ext_cdc_tlmm_lines_sus: tlmm_lines_off {
+		pins = "gpio116", "gpio112", "gpio117", "gpio118", "gpio119";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	cdc_slim_lines_act: lines_on {
+		pins = "gpio63";
+		function = "cdc_pdm0";
+		drive-strength = <8>;
+		output-high;
+		bias-pull-none;
+	};
+
+	cdc_slim_lines_sus: lines_off {
+		pins = "gpio63";
+		function = "cdc_pdm0";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	cross_conn_det_act: lines_on {
+		pins = "gpio120";
+		function = "gpio";
+		drive-strength = <8>;
+		output-low;
+		bias-pull-down;
+	};
+
+	cross_conn_det_sus: lines_off {
+		pins = "gpio120";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	cci1_default: cci1-default {
+		pins = "gpio31", "gpio32";
+		function = "cci_i2c";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
+	cam_sensor_flash_default: default {
+		pins = "gpio98", "gpio97";
+		function = "gpio";
+		bias-disable;
+		drive-strength = <2>;
+	};
+
+	/* Gyroscope and accelerometer sensor combo */
+	mpu6050_default: mpu6050_default {
+		pins = "gpio115";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	mpu6050_sleep: mpu6050_sleep {
+		pins = "gpio115";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	/* Ambient light and proximity sensor apds9930 and apds9900 */
+	apds99xx_default: apds99xx_default {
+		pins = "gpio113";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	apds99xx_sleep: apds99xx_sleep {
+		pins = "gpio113";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	ak8963_default: ak8963_default {
+		pins = "gpio69";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-up;
+	};
+
+	ak8963_sleep: ak8963_sleep {
+		pins = "gpio69";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-pull-down;
+	};
+
+	nt35521_te_default: nt35521_te_default {
+		pins = "gpio24";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-down;
+	};
+
+	nt35521_backlight: nt35521_backlight {
+		pins = "gpio10";
+		function = "gpio";
+		drive-strength = <6>;
+		bias-pull-down;
+	};
+
+	msmgpio_positive5_vreg: msmgpio_positive5_vreg {
+		pins = "gpio114";
+		function = "gpio";
+		output-low;
+		bias-pull-none;
+	};
+
+	msmgpio_negative5_vreg: msmgpio_negative5_vreg {
+		pins = "gpio17";
+		function = "gpio";
+		output-low;
+		bias-pull-none;
+	};
+};
+
+&rpm_requests {
+	smd_rpm_regulators: pm8916-regulators {
+		compatible = "qcom,rpm-pm8916-regulators";
+		vdd_l1_l2_l3-supply = <&pm8916_s3>;
+		vdd_l4_l5_l6-supply = <&pm8916_s4>;
+		vdd_l7-supply = <&pm8916_s4>;
+
+		pm8916_s3: s3 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1300000>;
+		};
+
+		pm8916_s4: s4 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2100000>;
+		};
+
+		/* l1 is fixed to 1225000, but not connected in schematic */
+		pm8916_l2: l2 {
+			regulator-min-microvolt = <1200000>;
+			regulator-max-microvolt = <1200000>;
+		};
+
+		pm8916_l4: l4 {
+			regulator-min-microvolt = <2050000>;
+			regulator-max-microvolt = <2050000>;
+		};
+
+		pm8916_l5: l5 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		pm8916_l6: l6 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+			regulator-always-on; /* copy from v3.10 */
+		};
+
+		pm8916_l7: l7 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <1800000>;
+		};
+
+		pm8916_l8: l8 {
+			regulator-min-microvolt = <2850000>;
+			regulator-max-microvolt = <2900000>;
+		};
+
+		pm8916_l9: l9 {
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l10: l10 {
+			regulator-min-microvolt = <3300000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l11: l11 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2950000>;
+		};
+
+		pm8916_l12: l12 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <2950000>;
+		};
+
+		pm8916_l13: l13 {
+			regulator-min-microvolt = <3075000>;
+			regulator-max-microvolt = <3075000>;
+		};
+
+		pm8916_l14: l14 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l15: l15 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l16: l16 {
+			regulator-min-microvolt = <1800000>;
+			regulator-max-microvolt = <3300000>;
+		};
+
+		pm8916_l17: l17 {
+			regulator-min-microvolt = <2850000>;
+			regulator-max-microvolt = <2850000>;
+		};
+
+		pm8916_l18: l18 {
+			regulator-min-microvolt = <2700000>;
+			regulator-max-microvolt = <2700000>;
+		};
+	};
+};
-- 
2.35.1


^ permalink raw reply related	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding
  2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
@ 2022-04-19  7:13   ` Krzysztof Kozlowski
  2022-04-19 12:12   ` Rob Herring
  1 sibling, 0 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-19  7:13 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac

On 19/04/2022 03:09, Bryan O'Donoghue wrote:
> Document the MSM8939 and supported boards in upstream Sony "Tulip" M4 Aqua
> and Square APQ8039 T2.
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
> index 129cdd246223..0e4f3a4d1a58 100644
> --- a/Documentation/devicetree/bindings/arm/qcom.yaml
> +++ b/Documentation/devicetree/bindings/arm/qcom.yaml
> @@ -34,6 +34,7 @@ description: |
>          mdm9615
>          msm8226
>          msm8916
> +	msm8939

Some indentation mixup.

>          msm8974
>          msm8992
>          msm8994
> @@ -133,6 +134,12 @@ properties:
>                - samsung,s3ve3g
>            - const: qcom,msm8226
>  
> +    - items:

The same

> +          - enum:
> +              - square,apq8039-t2
> +              - sony,kanuti-tulip

Please put them in alphabetical order (so sony, square).

> +          - const: qcom,msm8939
> +
>        - items:
>            - enum:
>                - qcom,msm8960-cdp


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
@ 2022-04-19  7:33   ` Krzysztof Kozlowski
  2022-04-19  8:30     ` Bryan O'Donoghue
  2022-04-20  9:31     ` Jun Nie
  2022-04-19 17:21   ` Vincent Knecht
                     ` (3 subsequent siblings)
  4 siblings, 2 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-19  7:33 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 03:09, Bryan O'Donoghue wrote:
> Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> differences to msm8916.
> 
> - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> - DRAM 1x800 LPDDR3
> - Camera 4+4 lane CSI
> - Venus @ 1080p60 HEVC
> - DSI x 2
> - Adreno A405
> - WiFi wcn3660/wcn3680b 802.11ac
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
>  1 file changed, 2017 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> new file mode 100644
> index 000000000000..f1aa79b7d0e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -0,0 +1,2017 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2020-2022, Linaro Limited
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <dt-bindings/interconnect/qcom,msm8939.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> +#include <dt-bindings/clock/qcom,rpmcc.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
> +#include <dt-bindings/thermal/thermal.h>
> +
> +/ {
> +	model = "Qualcomm Technologies, Inc. MSM8939";
> +	compatible = "qcom,msm8939";
> +	qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
> +
> +	interrupt-parent = <&intc>;
> +
> +	#address-cells = <2>;
> +	#size-cells = <2>;
> +
> +	memory {
> +		device_type = "memory";
> +		/* We expect the bootloader to fill in the reg */
> +		reg = <0 0 0 0>;
> +	};
> +
> +	reserved-memory {
> +		#address-cells = <2>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		tz-apps@86000000 {
> +			reg = <0x0 0x86000000 0x0 0x300000>;
> +			no-map;
> +		};
> +
> +		smem_mem: smem_region@86300000 {

No underscores in node names. Why this is region (in node name) and
others are not?

> +			reg = <0x0 0x86300000 0x0 0x100000>;
> +			no-map;
> +		};
> +
> +		hypervisor@86400000 {
> +			reg = <0x0 0x86400000 0x0 0x100000>;
> +			no-map;
> +		};
> +
> +		tz@86500000 {
> +			reg = <0x0 0x86500000 0x0 0x180000>;
> +			no-map;
> +		};
> +
> +		reserved@8668000 {
> +			reg = <0x0 0x86680000 0x0 0x80000>;
> +			no-map;
> +		};
> +
> +		rmtfs@86700000 {
> +			compatible = "qcom,rmtfs-mem";
> +			reg = <0x0 0x86700000 0x0 0xe0000>;
> +			no-map;
> +
> +			qcom,client-id = <1>;
> +		};
> +
> +		rfsa@867e00000 {
> +			reg = <0x0 0x867e0000 0x0 0x20000>;
> +			no-map;
> +		};
> +
> +		mpss_mem: mpss@86800000 {
> +			reg = <0x0 0x86800000 0x0 0x2b00000>;
> +			no-map;
> +		};
> +
> +		wcnss_mem: wcnss@89300000 {
> +			reg = <0x0 0x89300000 0x0 0x600000>;
> +			no-map;
> +		};
> +
> +		venus_mem: venus@89900000 {
> +			reg = <0x0 0x89900000 0x0 0x500000>;
> +			no-map;
> +		};
> +
> +		mba_mem: mba@8ea00000 {
> +			no-map;
> +			reg = <0 0x8ea00000 0 0x100000>;
> +		};
> +	};
> +
> +	/*
> +	 * MSM8939 has a big.LITTLE hetrogeneous computing architecture,

s/hetrogeneous/heterogeneous/

> +	 * consisting of two clusters of four ARM Cortex-A53s each. The
> +	 * LITTLE cluster runs at 1.0-1.2GHz, and the big cluster runs
> +	 * at 1.5-1.7GHz.
> +	 *
> +	 * The enable method used here is spin-table which pre-supposes use

s/pre-supposes/presupposes/?

> +	 * of a 2nd stage boot shim such as lk2nd to have installed a
> +	 * spin-table, the downstream non-psci/non-spin-table method that
> +	 * default msm8916/msm8936/msm8939 will not be supported upstream.
> +	 */
> +	cpu-map {
> +		/* LITTLE (efficiency) cluster */
> +		cluster0 {
> +			core0 {
> +				cpu = <&CPU4>;
> +			};
> +
> +			core1 {
> +				cpu = <&CPU5>;
> +			};
> +
> +			core2 {
> +				cpu = <&CPU6>;
> +			};
> +
> +			core3 {
> +				cpu = <&CPU7>;
> +			};
> +		};
> +
> +		/* big (performance) cluster */
> +		/* Boot CPU is cluster 1 core 0 */
> +		cluster1 {
> +			core0 {
> +				cpu = <&CPU0>;
> +			};
> +
> +			core1 {
> +				cpu = <&CPU1>;
> +			};
> +
> +			core2 {
> +				cpu = <&CPU2>;
> +			};
> +
> +			core3 {
> +				cpu = <&CPU3>;
> +			};
> +		};
> +	};
> +
> +	cpus {
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +
> +		CPU0: cpu@100 {

lowercalse labels

> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x100>;
> +			next-level-cache = <&L2_1>;
> +			qcom,acc = <&acc0>;
> +			qcom,saw = <&saw0>;
> +			cpu-idle-states = <&CPU_SPC>;
> +			clocks = <&apcs1_mbox>;
> +			/* operating-points-v2 = <&cluster1_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +			L2_1: l2-cache-cluster1 {

lowercase labels, the same applies further.

> +				compatible = "cache";
> +				cache-level = <2>;
> +			};
> +		};
> +
> +		CPU1: cpu@101 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x101>;
> +			next-level-cache = <&L2_1>;
> +			qcom,acc = <&acc1>;
> +			qcom,saw = <&saw1>;
> +			clocks = <&apcs1_mbox>;
> +			/* operating-points-v2 = <&cluster1_opp_table>;

No dead code in the kernel. If you need it here, please document.  The
same applies further.

> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		CPU2: cpu@102 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x102>;
> +			next-level-cache = <&L2_1>;
> +			qcom,acc = <&acc2>;
> +			qcom,saw = <&saw2>;
> +			clocks = <&apcs1_mbox>;
> +			/* operating-points-v2 = <&cluster1_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		CPU3: cpu@103 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x103>;
> +			next-level-cache = <&L2_1>;
> +			qcom,acc = <&acc3>;
> +			qcom,saw = <&saw3>;
> +			clocks = <&apcs1_mbox>;
> +			/* operating-points-v2 = <&cluster1_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		CPU4: cpu@0 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x0>;
> +			qcom,acc = <&acc4>;
> +			qcom,saw = <&saw4>;
> +			clocks = <&apcs0>;
> +			/* operating-points-v2 = <&cluster0_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +			next-level-cache = <&L2_0>;
> +			L2_0: l2-cache-cluster0 {
> +				compatible = "cache";
> +				cache-level = <2>;
> +			};
> +		};
> +
> +		CPU5: cpu@1 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x1>;
> +			next-level-cache = <&L2_0>;
> +			qcom,acc = <&acc5>;
> +			qcom,saw = <&saw5>;
> +			clocks = <&apcs0>;
> +			/* operating-points-v2 = <&cluster0_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		CPU6: cpu@2 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x2>;
> +			next-level-cache = <&L2_0>;
> +			qcom,acc = <&acc6>;
> +			qcom,saw = <&saw6>;
> +			clocks = <&apcs0>;
> +			/* operating-points-v2 = <&cluster0_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		CPU7: cpu@3 {
> +			device_type = "cpu";
> +			compatible = "arm,cortex-a53", "arm,armv8";
> +			enable-method = "spin-table";
> +			reg = <0x3>;
> +			next-level-cache = <&L2_0>;
> +			qcom,acc = <&acc7>;
> +			qcom,saw = <&saw7>;
> +			clocks = <&apcs0>;
> +			/* operating-points-v2 = <&cluster0_opp_table>;
> +			 * power-domains = <&cpr>;
> +			 * power-domain-names = "cpr";
> +			 */
> +			#cooling-cells = <2>;
> +		};
> +
> +		idle-states {
> +			CPU_SPC: spc {
> +				compatible = "arm,idle-state";
> +				arm,psci-suspend-param = <0x40000002>;
> +				entry-latency-us = <130>;
> +				exit-latency-us = <150>;
> +				min-residency-us = <2000>;
> +				local-timer-stop;
> +			};
> +		};
> +	};
> +
> +	cluster0_opp_table: cluster0-opp-table {
> +		compatible = "operating-points-v2-kryo-cpu";
> +		opp-shared;
> +
> +		opp-249600000 {
> +			opp-hz = /bits/ 64 <249600000>;
> +			required-opps = <&cpr_opp1>;
> +		};
> +
> +		opp-499200000 {
> +			opp-hz = /bits/ 64 <499200000>;
> +			required-opps = <&cpr_opp3>;
> +		};
> +
> +		opp-800000000 {
> +			opp-hz = /bits/ 64 <800000000>;
> +			required-opps = <&cpr_opp6>;
> +		};
> +
> +		opp-1113600000 {
> +			opp-hz = /bits/ 64 <1113600000>;
> +			required-opps = <&cpr_opp9>;
> +		};
> +	};
> +
> +	cluster1_opp_table: cluster1-opp-table {
> +		compatible = "operating-points-v2-kryo-cpu";
> +		opp-shared;
> +
> +		opp-200000000 {
> +			opp-hz = /bits/ 64 <200000000>;
> +			required-opps = <&cpr_opp1>;
> +		};
> +
> +		opp-400000000 {
> +			opp-hz = /bits/ 64 <400000000>;
> +			required-opps = <&cpr_opp2>;
> +		};
> +
> +		opp-533330000 {
> +			opp-hz = /bits/ 64 <533330000>;
> +			required-opps = <&cpr_opp4>;
> +		};
> +
> +		opp-800000000 {
> +			opp-hz = /bits/ 64 <800000000>;
> +			required-opps = <&cpr_opp5>;
> +		};
> +
> +		opp-1113600000 {
> +			opp-hz = /bits/ 64 <1113600000>;
> +			required-opps = <&cpr_opp7>;
> +		};
> +
> +		opp-1497600000 {
> +			opp-hz = /bits/ 64 <1497600000>;
> +			required-opps = <&cpr_opp8>;
> +		};
> +	};
> +
> +	/* Frequencies in below opp is for cpr_opp virtual corner calculation,

Generic Linux coding style comments, so:
	/*
	 * Frequencies....
	 * ...
	 */

> +	 * not strictly coupled with frquencies in CPU opp for CPUs may require
> +	 * different cpr_opp for specific frquency.

Multiple typos. Please run spell check.

> +	 */
> +	cpr_opp_table: cpr-opp-table {
> +		compatible = "operating-points-v2-qcom-level";
> +
> +		cpr_opp1: opp1 {

Why these opps are named with numerical suffix but other with frequency
suffix?

> +			opp-hz = /bits/ 64 <200000000>;
> +			opp-level = <1>;
> +			qcom,opp-fuse-level = <1>;
> +		};
> +		cpr_opp2: opp2 {
> +			opp-hz = /bits/ 64 <400000000>;
> +			opp-level = <2>;
> +			qcom,opp-fuse-level = <1>;
> +		};
> +		cpr_opp3: opp3 {
> +			opp-hz = /bits/ 64 <499200000>;
> +			opp-level = <3>;
> +			qcom,opp-fuse-level = <2>;
> +		};
> +		cpr_opp4: opp4 {
> +			opp-hz = /bits/ 64 <533330000>;
> +			opp-level = <4>;
> +			qcom,opp-fuse-level = <2>;
> +		};
> +		cpr_opp5: opp5 {
> +			opp-hz = /bits/ 64 <800000000>;
> +			opp-level = <5>;
> +			qcom,opp-fuse-level = <2>;
> +		};
> +		cpr_opp6: opp6 {
> +			opp-hz = /bits/ 64 <960000000>;
> +			opp-level = <6>;
> +			qcom,opp-fuse-level = <2>;
> +		};
> +		cpr_opp7: opp7 {
> +			opp-hz = /bits/ 64 <1113600000>;
> +			opp-level = <7>;
> +			qcom,opp-fuse-level = <2>;
> +		};
> +		cpr_opp8: opp8 {
> +			opp-hz = /bits/ 64 <1497600000>;
> +			opp-level = <8>;
> +			qcom,opp-fuse-level = <3>;
> +		};
> +		cpr_opp9: opp9 {
> +			opp-hz = /bits/ 64 <1497500000>;
> +			opp-level = <9>;
> +			qcom,opp-fuse-level = <3>;
> +		};
> +	};
> +
> +	cci_opp_table: cci-opp-table {
> +		compatible = "operating-points-v2";
> +
> +		opp-200000000 {
> +			opp-hz = /bits/ 64 <200000000>;
> +		};
> +
> +		opp-297600000 {
> +			opp-hz = /bits/ 64 <297600000>;
> +		};
> +
> +		opp-400000000 {
> +			opp-hz = /bits/ 64 <400000000>;
> +		};
> +
> +		opp-595200000 {
> +			opp-hz = /bits/ 64 <595200000>;
> +		};
> +	};
> +
> +	gpu_opp_table: gpu-opp-table {

If table is used by only one device, define it inside that device node.

> +		compatible = "operating-points-v2";
> +
> +		opp-550000000 {
> +			opp-hz = /bits/ 64 <550000000>;
> +		};
> +
> +		opp-465000000 {
> +			opp-hz = /bits/ 64 <465000000>;
> +		};
> +
> +		opp-400000000 {
> +			opp-hz = /bits/ 64 <400000000>;
> +		};
> +
> +		opp-220000000 {
> +			opp-hz = /bits/ 64 <220000000>;
> +		};
> +
> +		opp-19200000 {
> +			opp-hz = /bits/ 64 <19200000>;
> +		};
> +	};
> +
> +	pmu {
> +		compatible = "arm,cortex-a53-pmu";
> +		interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4)| IRQ_TYPE_LEVEL_HIGH)>;

No PMU nodes for other cores?

> +	};
> +
> +	thermal_zones: thermal-zones {
> +		cpu0-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens 5>;
> +
> +			trips {
> +				cpu0_alert: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +				cpu0_crit: trip1 {
> +					temperature = <115000>;
> +					hysteresis = <0>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu0_alert>;
> +					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		cpu1-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens 6>;
> +
> +			trips {
> +				cpu1_alert: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +				cpu1_crit: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu1_alert>;
> +					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		cpu2-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens 7>;
> +
> +			trips {
> +				cpu2_alert: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +				cpu2_crit: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu2_alert>;
> +					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		cpu3-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens 8>;
> +
> +			trips {
> +				cpu3_alert: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +				cpu3_crit: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu3_alert>;
> +					cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		cpu4567-thermal {
> +			polling-delay-passive = <250>;
> +			polling-delay = <1000>;
> +
> +			thermal-sensors = <&tsens 9>;
> +
> +			trips {
> +				cpu4567_alert: trip0 {
> +					temperature = <75000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +				cpu4567_crit: trip1 {
> +					temperature = <110000>;
> +					hysteresis = <2000>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				map0 {
> +					trip = <&cpu4567_alert>;
> +					cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		gpu-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +
> +			thermal-sensors = <&tsens 3>;
> +		};
> +
> +		modem1-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +
> +			thermal-sensors = <&tsens 0>;
> +		};
> +
> +		modem2-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +
> +			thermal-sensors = <&tsens 2>;
> +		};
> +
> +		venus_camera-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +
> +			thermal-sensors = <&tsens 1>;
> +		};
> +	};
> +
> +	timer {
> +		compatible = "arm,armv8-timer";
> +		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> +	};
> +
> +	clocks {
> +		xo_board: xo_board {

Generic node names, no underscores in node names. This applies everywhere.

> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-frequency = <19200000>;
> +		};
> +
> +		sleep_clk: sleep_clk {
> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-frequency = <32768>;
> +		};
> +	};
> +
> +	smem {
> +		compatible = "qcom,smem";
> +
> +		memory-region = <&smem_mem>;
> +		qcom,rpm-msg-ram = <&rpm_msg_ram>;
> +
> +		hwlocks = <&tcsr_mutex 3>;
> +	};
> +
> +	firmware {
> +		scm: scm {
> +			compatible = "qcom,scm";
> +			clocks = <&gcc GCC_CRYPTO_CLK>,
> +				 <&gcc GCC_CRYPTO_AXI_CLK>,
> +				 <&gcc GCC_CRYPTO_AHB_CLK>;
> +			clock-names = "core", "bus", "iface";
> +			#reset-cells = <1>;
> +
> +			qcom,dload-mode = <&tcsr 0x6100>;
> +		};
> +	};
> +
> +	soc: soc {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0 0 0xffffffff>;
> +		compatible = "simple-bus";
> +
> +		qfprom_cpr: qfprom_cpr@58000 {

Generic node names, no underscores in node names. This applies everywhere.

> +			compatible = "qcom,qfprom";
> +			reg = <0x00058000 0x1000>;
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			cpr_efuse_init_voltage1: ivoltage1@dc {

s/ivoltageX/voltage/

> +				reg = <0xdc 0x4>;
> +				bits = <4 6>;
> +			};
> +			cpr_efuse_init_voltage2: ivoltage2@da {
> +				reg = <0xda 0x4>;
> +				bits = <2 6>;
> +			};
> +			cpr_efuse_init_voltage3: ivoltage3@d8 {
> +				reg = <0xd8 0x4>;
> +				bits = <0 6>;
> +			};
> +			cpr_efuse_quot1: quot1@dc {

Similar. Why do you need suffix number?

> +				reg = <0xdd 0x8>;
> +				bits = <2 12>;
> +			};
> +			cpr_efuse_quot2: quot2@da {
> +				reg = <0xdb 0x8>;
> +				bits = <0x0 12>;
> +			};
> +			cpr_efuse_quot3: quot3@d8 {
> +				reg = <0xd8 0x8>;
> +				bits = <6 12>;
> +			};
> +			cpr_efuse_ring1: ring1@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_ring2: ring2@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_ring3: ring3@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_revision: revision@4 {
> +				reg = <0x5 0x1>;
> +				bits = <5 1>;
> +			};
> +			cpr_efuse_revision_high: revision_high@4 {
> +				reg = <0x7 0x1>;
> +				bits = <0 1>;
> +			};
> +			cpr_efuse_pvs_version: pvs@4 {
> +				reg = <0x3 0x1>;
> +				bits = <5 1>;
> +			};
> +			cpr_efuse_pvs_version_high: pvs_high@4 {
> +				reg = <0x6 0x1>;
> +				bits = <2 2>;
> +			};
> +			cpr_efuse_speedbin: speedbin@c {
> +				reg = <0xc 0x1>;
> +				bits = <2 3>;
> +			};
> +
> +		};
> +
> +		acc0: clock-controller@b088000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb088000 0x1000>;
> +		};
> +
> +		saw0: power-controller@b089000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb089000 0x1000>;
> +		};
> +
> +		acc1: clock-controller@b098000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb098000 0x1000>;
> +		};
> +
> +		saw1: power-controller@b099000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb099000 0x1000>;
> +		};
> +
> +		acc2: clock-controller@b0a8000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb0a8000 0x1000>;
> +		};
> +
> +		saw2: power-controller@b0a9000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb0a9000 0x1000>;
> +		};
> +
> +		acc3: clock-controller@b0b8000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb0b8000 0x1000>;
> +		};
> +
> +		saw3: power-domain@b0b9000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb0b9000 0x1000>;
> +		};
> +
> +		acc4: clock-controller@b188000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb188000 0x1000>;
> +		};
> +
> +		saw4: power-controller@b189000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb189000 0x1000>;
> +		};
> +
> +		acc5: clock-controller@b198000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb198000 0x1000>;
> +		};
> +
> +		saw5: power-controller@b199000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb199000 0x1000>;
> +		};
> +
> +		acc6: clock-controller@b1a8000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb1a8000 0x1000>;
> +		};
> +
> +		saw6: power-controller@b1a9000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb1a9000 0x1000>;
> +		};
> +
> +		acc7: clock-controller@b1b8000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb1b8000 0x1000>;
> +		};
> +
> +		saw7: power-controller@b1b9000 {
> +			compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +			reg = <0xb1b9000 0x1000>;
> +		};
> +
> +		restart@4ab000 {
> +			compatible = "qcom,pshold";
> +			reg = <0x4ab000 0x4>;
> +		};
> +
> +		msmgpio: pinctrl@1000000 {
> +			compatible = "qcom,msm8916-pinctrl";
> +			reg = <0x1000000 0x300000>;
> +			interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
> +			gpio-controller;
> +			#gpio-cells = <2>;
> +			interrupt-controller;
> +			#interrupt-cells = <2>;
> +		};
> +
> +		gcc: clock-controller@1800000 {
> +			compatible = "qcom,gcc-msm8939";
> +			#clock-cells = <1>;
> +			#reset-cells = <1>;
> +			#power-domain-cells = <1>;
> +			reg = <0x1800000 0x80000>;
> +			clocks = <&xo_board>, <&sleep_clk>;
> +			clock-names = "xo", "sleep_clk";
> +		};
> +
> +		tcsr_mutex_regs: syscon@1905000 {
> +			compatible = "syscon";
> +			reg = <0x1905000 0x20000>;
> +		};
> +
> +		tcsr: syscon@1937000 {
> +			compatible = "qcom,tcsr-msm8916", "syscon";
> +			reg = <0x1937000 0x30000>;
> +		};
> +
> +		tcsr_mutex: hwlock {
> +			compatible = "qcom,tcsr-mutex";
> +			syscon = <&tcsr_mutex_regs 0 0x1000>;
> +			#hwlock-cells = <1>;
> +		};
> +
> +		rpm_msg_ram: memory@60000 {
> +			compatible = "qcom,rpm-msg-ram";
> +			reg = <0x60000 0x8000>;
> +		};
> +
> +		blsp1_uart1: serial@78af000 {
> +			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +			reg = <0x78af000 0x200>;
> +			interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 1>, <&blsp_dma 0>;
> +			dma-names = "rx", "tx";
> +			status = "disabled";
> +		};
> +
> +		a53pll_c1: clock@b016000 {
> +			compatible = "qcom,msm8939-a53pll";
> +			reg = <0xb016000 0x40>;
> +			#clock-cells = <0>;
> +		};
> +
> +		a53pll_c0: clock@b116000 {
> +			compatible = "qcom,msm8939-a53pll";
> +			reg = <0xb116000 0x40>;
> +			#clock-cells = <0>;
> +		};
> +
> +		a53pll_cci: clock@b1d0000 {
> +			compatible = "qcom,msm8939-a53pll";
> +			reg = <0xb1d0000 0x40>;
> +			#clock-cells = <0>;
> +		};
> +
> +		apcs2: mailbox@b1d1000 {
> +			compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +			reg = <0xb1d1000 0x1000>;
> +			#mbox-cells = <1>;
> +			clocks = <&a53pll_cci>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +			clock-names = "pll", "aux", "ref";
> +			#clock-cells = <0>;
> +			clock-output-names = "a53mux_cci";
> +		};
> +
> +		apcs1_mbox: mailbox@b011000 {
> +			compatible = "qcom,msm8916-apcs-kpss-global";
> +			reg = <0xb011000 0x1000>;
> +			#mbox-cells = <1>;
> +			clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +			clock-names = "pll", "aux", "ref";
> +			#clock-cells = <0>;
> +			clock-output-names = "a53mux_c1";
> +			/* Set a nominal frequency on a53mux_cci */
> +			assigned-clocks = <&apcs2>;
> +			assigned-clock-rates = <297600000>;
> +		};
> +
> +		apcs1: syscon@b111000 {
> +			compatible = "syscon";
> +			reg = <0xb011000 0x1000>;
> +		};
> +
> +		apcs0: mailbox@b111000 {
> +			compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +			reg = <0xb111000 0x1000>;
> +			#mbox-cells = <1>;
> +			clocks = <&a53pll_c0>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +			clock-names = "pll", "aux", "ref";
> +			#clock-cells = <0>;
> +			clock-output-names = "a53mux_c0";
> +		};
> +
> +		blsp1_uart2: serial@78b0000 {
> +			compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +			reg = <0x78b0000 0x200>;
> +			interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 3>, <&blsp_dma 2>;
> +			dma-names = "rx", "tx";
> +			status = "disabled";
> +		};
> +
> +		blsp_dma: dma@7884000 {
> +			compatible = "qcom,bam-v1.7.0";
> +			reg = <0x07884000 0x23000>;
> +			interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "bam_clk";
> +			#dma-cells = <1>;
> +			qcom,ee = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi1: spi@78b5000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078b5000 0x500>;
> +			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 5>, <&blsp_dma 4>;
> +			dma-names = "rx", "tx";

tx/rx. Please rebase on recent linux-next and run `make dtbs_check` and
fix all the errors.

> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi1_default>;
> +			pinctrl-1 = <&spi1_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi2: spi@78b6000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078b6000 0x500>;
> +			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 7>, <&blsp_dma 6>;
> +			dma-names = "rx", "tx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi2_default>;
> +			pinctrl-1 = <&spi2_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi3: spi@78b7000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078b7000 0x500>;
> +			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 9>, <&blsp_dma 8>;
> +			dma-names = "rx", "tx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi3_default>;
> +			pinctrl-1 = <&spi3_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi4: spi@78b8000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078b8000 0x500>;
> +			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 11>, <&blsp_dma 10>;
> +			dma-names = "rx", "tx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi4_default>;
> +			pinctrl-1 = <&spi4_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi5: spi@78b9000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078b9000 0x500>;
> +			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 13>, <&blsp_dma 12>;
> +			dma-names = "rx", "tx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi5_default>;
> +			pinctrl-1 = <&spi5_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_spi6: spi@78ba000 {
> +			compatible = "qcom,spi-qup-v2.2.1";
> +			reg = <0x078ba000 0x500>;
> +			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
> +				 <&gcc GCC_BLSP1_AHB_CLK>;
> +			clock-names = "core", "iface";
> +			dmas = <&blsp_dma 15>, <&blsp_dma 14>;
> +			dma-names = "rx", "tx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&spi6_default>;
> +			pinctrl-1 = <&spi6_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c1: i2c@78b5000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078b5000 0x500>;
> +			interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 4>, <&blsp_dma 5>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c1_default>;
> +			pinctrl-1 = <&i2c1_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c2: i2c@78b6000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078b6000 0x500>;
> +			interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 6>, <&blsp_dma 7>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c2_default>;
> +			pinctrl-1 = <&i2c2_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c3: i2c@78b7000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078b7000 0x500>;
> +			interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 8>, <&blsp_dma 9>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c3_default>;
> +			pinctrl-1 = <&i2c3_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c4: i2c@78b8000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078b8000 0x500>;
> +			interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 10>, <&blsp_dma 11>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c4_default>;
> +			pinctrl-1 = <&i2c4_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c5: i2c@78b9000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078b9000 0x500>;
> +			interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 12>, <&blsp_dma 13>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c5_default>;
> +			pinctrl-1 = <&i2c5_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		blsp_i2c6: i2c@78ba000 {
> +			compatible = "qcom,i2c-qup-v2.2.1";
> +			reg = <0x078ba000 0x500>;
> +			interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +				 <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
> +			clock-names = "iface", "core";
> +			dmas = <&blsp_dma 14>, <&blsp_dma 15>;
> +			dma-names = "tx", "rx";
> +			pinctrl-names = "default", "sleep";
> +			pinctrl-0 = <&i2c6_default>;
> +			pinctrl-1 = <&i2c6_sleep>;
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			status = "disabled";
> +		};
> +
> +		lpass: lpass@7708000 {
> +			status = "disabled";
> +			compatible = "qcom,apq8016-lpass-cpu";
> +			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +				 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
> +				 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
> +
> +			clock-names = "ahbix-clk",
> +					"pcnoc-mport-clk",
> +					"pcnoc-sway-clk",
> +					"mi2s-bit-clk0",
> +					"mi2s-bit-clk1",
> +					"mi2s-bit-clk2",
> +					"mi2s-bit-clk3";
> +			#sound-dai-cells = <1>;
> +
> +			interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "lpass-irq-lpaif";
> +			reg = <0x07708000 0x10000>;
> +			reg-names = "lpass-lpaif";
> +
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
> +		lpass_codec: codec{

Missing space

> +			compatible = "qcom,msm8916-wcd-digital-codec";
> +			reg = <0x0771c000 0x400>;
> +			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +				 <&gcc GCC_CODEC_DIGCODEC_CLK>;
> +			clock-names = "ahbix-clk", "mclk";
> +			#sound-dai-cells = <1>;
> +		};
> +
> +		sdhc_1: sdhci@7824000 {
> +			compatible = "qcom,sdhci-msm-v4";
> +			reg = <0x07824900 0x11c>, <0x07824000 0x800>;
> +			reg-names = "hc_mem", "core_mem";
> +
> +			interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>, <0 138 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "hc_irq", "pwr_irq";
> +			clocks = <&gcc GCC_SDCC1_APPS_CLK>,
> +				 <&gcc GCC_SDCC1_AHB_CLK>,
> +				 <&xo_board>;
> +			clock-names = "core", "iface", "xo";
> +			mmc-ddr-1_8v;
> +			bus-width = <8>;
> +			non-removable;
> +			status = "disabled";
> +		};
> +
> +		sdhc_2: sdhci@7864000 {
> +			compatible = "qcom,sdhci-msm-v4";
> +			reg = <0x07864900 0x11c>, <0x07864000 0x800>;
> +			reg-names = "hc_mem", "core_mem";
> +
> +			interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>, <0 221 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "hc_irq", "pwr_irq";
> +			clocks = <&gcc GCC_SDCC2_APPS_CLK>,
> +				 <&gcc GCC_SDCC2_AHB_CLK>,
> +				 <&xo_board>;
> +			clock-names = "core", "iface", "xo";
> +			bus-width = <4>;
> +			status = "disabled";
> +		};
> +
> +		otg: usb@78d9000 {
> +			compatible = "qcom,ci-hdrc";
> +			reg = <0x78d9000 0x200>,
> +			      <0x78d9200 0x200>;
> +			interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
> +				     <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&gcc GCC_USB_HS_AHB_CLK>,
> +				 <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +			clock-names = "iface", "core";
> +			assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +			assigned-clock-rates = <80000000>;
> +			resets = <&gcc GCC_USB_HS_BCR>;
> +			reset-names = "core";
> +			phy_type = "ulpi";
> +			dr_mode = "otg";
> +			ahb-burst-config = <0>;
> +			phy-names = "usb-phy";
> +			phys = <&usb_hs_phy>;
> +			status = "disabled";
> +			#reset-cells = <1>;
> +
> +			ulpi {
> +				usb_hs_phy: phy {
> +					compatible = "qcom,usb-hs-phy-msm8916",
> +						     "qcom,usb-hs-phy";
> +					#phy-cells = <0>;
> +					clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
> +					clock-names = "ref", "sleep";
> +					resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>;
> +					reset-names = "phy", "por";
> +					qcom,init-seq = /bits/ 8 <0x0 0x44
> +						0x1 0x6b 0x2 0x24 0x3 0x13>;
> +				};
> +			};
> +		};
> +
> +		intc: interrupt-controller@b000000 {
> +			compatible = "qcom,msm-qgic2";
> +			interrupt-controller;
> +			#interrupt-cells = <3>;
> +			reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
> +		};
> +
> +		timer@b020000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges;
> +			compatible = "arm,armv7-timer-mem";
> +			reg = <0xb020000 0x1000>;
> +			clock-frequency = <19200000>;
> +
> +			frame@b021000 {
> +				frame-number = <0>;
> +				interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
> +					     <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb021000 0x1000>,
> +				      <0xb022000 0x1000>;
> +			};
> +
> +			frame@b023000 {
> +				frame-number = <1>;
> +				interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb023000 0x1000>;
> +				status = "disabled";
> +			};
> +
> +			frame@b024000 {
> +				frame-number = <2>;
> +				interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb024000 0x1000>;
> +				status = "disabled";
> +			};
> +
> +			frame@b025000 {
> +				frame-number = <3>;
> +				interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb025000 0x1000>;
> +				status = "disabled";
> +			};
> +
> +			frame@b026000 {
> +				frame-number = <4>;
> +				interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb026000 0x1000>;
> +				status = "disabled";
> +			};
> +
> +			frame@b027000 {
> +				frame-number = <5>;
> +				interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb027000 0x1000>;
> +				status = "disabled";
> +			};
> +
> +			frame@b028000 {
> +				frame-number = <6>;
> +				interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> +				reg = <0xb028000 0x1000>;
> +				status = "disabled";
> +			};
> +		};
> +
> +		spmi_bus: spmi@200f000 {
> +			compatible = "qcom,spmi-pmic-arb";
> +			reg = <0x200f000 0x001000>,
> +			      <0x2400000 0x400000>,
> +			      <0x2c00000 0x400000>,
> +			      <0x3800000 0x200000>,
> +			      <0x200a000 0x002100>;
> +			reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> +			interrupt-names = "periph_irq";
> +			interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
> +			qcom,ee = <0>;
> +			qcom,channel = <0>;
> +			#address-cells = <2>;
> +			#size-cells = <0>;
> +			interrupt-controller;
> +			#interrupt-cells = <4>;
> +		};
> +
> +		rng@22000 {
> +			compatible = "qcom,prng";
> +			reg = <0x00022000 0x200>;
> +			clocks = <&gcc GCC_PRNG_AHB_CLK>;
> +			clock-names = "core";
> +		};
> +
> +		qfprom: qfprom@5c000 {
> +			compatible = "qcom,qfprom";
> +			reg = <0x5c000 0x1000>;
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			tsens_caldata: caldata@a0 {
> +				reg = <0xa0 0x5c>;
> +			};
> +		};
> +
> +		tsens: thermal-sensor@4a9000 {
> +			compatible = "qcom,msm8939-tsens";
> +			reg = <0x4a9000 0x1000>, /* TM */
> +			      <0x4a8000 0x1000>; /* SROT */
> +			nvmem-cells = <&tsens_caldata>;
> +			nvmem-cell-names = "calib";
> +			interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "uplow";
> +			#thermal-sensor-cells = <1>;
> +		};
> +
> +		apps_iommu: iommu@1ef0000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			#iommu-cells = <1>;

compatible, reg and ranges should be the first nodes. This applies
everywehere.

> +			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +			ranges = <0 0x1e20000 0x40000>;
> +			reg = <0x1ef0000 0x3000>;
> +			clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +				 <&gcc GCC_APSS_TCU_CLK>;
> +			clock-names = "iface", "bus";
> +			qcom,iommu-secure-id = <17>;
> +
> +			/* mdp_0: */
> +			iommu-ctx@4000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x4000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +
> +			/* venus_ns: */
> +			iommu-ctx@5000 {
> +				compatible = "qcom,msm-iommu-v1-sec";
> +				reg = <0x5000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +		};
> +
> +		gpu_iommu: iommu@1f08000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			#iommu-cells = <1>;
> +			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +			ranges = <0 0x1f08000 0x10000>;
> +			clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +				 <&gcc GCC_GFX_TCU_CLK>,
> +				 <&gcc GCC_GFX_TBU_CLK>;
> +			clock-names = "iface", "bus", "tlb";
> +			qcom,iommu-secure-id = <18>;
> +
> +			/* gfx3d_user: */
> +			iommu-ctx@1000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x1000 0x1000>;
> +				interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +
> +			/* gfx3d_priv: */
> +			iommu-ctx@2000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x2000 0x1000>;
> +				interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +		};
> +
> +		gpu@1c00000 {
> +			compatible = "qcom,adreno-405.0", "qcom,adreno";
> +			reg = <0x01c00000 0x10000>;
> +			reg-names = "kgsl_3d0_reg_memory";
> +			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "kgsl_3d0_irq";
> +			clock-names =
> +			    "core",
> +			    "iface",
> +			    "mem",
> +			    "mem_iface",
> +			    "alt_mem_iface",
> +			    "gfx3d",
> +			    "rbbmtimer";
> +			clocks =
> +			    <&gcc GCC_OXILI_GFX3D_CLK>,
> +			    <&gcc GCC_OXILI_AHB_CLK>,
> +			    <&gcc GCC_OXILI_GMEM_CLK>,
> +			    <&gcc GCC_BIMC_GFX_CLK>,
> +			    <&gcc GCC_BIMC_GPU_CLK>,
> +			    <&gcc GFX3D_CLK_SRC>,
> +			    <&gcc GCC_OXILI_TIMER_CLK>;
> +			power-domains = <&gcc OXILI_GDSC>;
> +			operating-points-v2 = <&gpu_opp_table>;
> +			iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
> +		};
> +
> +		mdss: mdss@1a00000 {
> +			compatible = "qcom,mdss";
> +			reg = <0x1a00000 0x1000>,
> +			      <0x1ac8000 0x3000>;
> +			reg-names = "mdss_phys", "vbif_phys";
> +
> +			power-domains = <&gcc MDSS_GDSC>;
> +
> +			clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +				 <&gcc GCC_MDSS_AXI_CLK>,
> +				 <&gcc GCC_MDSS_VSYNC_CLK>;
> +			clock-names = "iface",
> +				      "bus",
> +				      "vsync";
> +
> +			interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
> +
> +			interrupt-controller;
> +			#interrupt-cells = <1>;
> +
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges;
> +
> +			mdp: mdp@1a01000 {
> +				compatible = "qcom,mdp5";
> +				reg = <0x1a01000 0x89000>;
> +				reg-names = "mdp_phys";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <0 0>;
> +
> +				clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +					 <&gcc GCC_MDSS_AXI_CLK>,
> +					 <&gcc GCC_MDSS_MDP_CLK>,
> +					 <&gcc GCC_MDSS_VSYNC_CLK>,
> +					 <&gcc GCC_MDP_TBU_CLK>,
> +					 <&gcc GCC_MDP_RT_TBU_CLK>;
> +				clock-names = "iface",
> +					      "bus",
> +					      "core",
> +					      "vsync",
> +					      "tbu",
> +					      "tbu_rt";
> +
> +				iommus = <&apps_iommu 4>;
> +
> +				interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
> +						<&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
> +				interconnect-names = "mdp0-mem", "mdp1-mem";
> +
> +				ports {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					port@0 {
> +						reg = <0>;
> +						mdp5_intf1_out: endpoint {
> +							remote-endpoint = <&dsi0_in>;
> +						};
> +					};
> +
> +					port@1 {
> +						reg = <1>;
> +						mdp5_intf2_out: endpoint {
> +							remote-endpoint = <&dsi1_in>;
> +						};
> +					};
> +				};
> +			};
> +
> +			dsi0: dsi@1a98000 {
> +				compatible = "qcom,mdss-dsi-ctrl";
> +				reg = <0x1a98000 0x25c>;
> +				reg-names = "dsi_ctrl";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <4 0>;
> +
> +				assigned-clocks = <&gcc BYTE0_CLK_SRC>,
> +						  <&gcc PCLK0_CLK_SRC>;
> +				assigned-clock-parents = <&dsi0_phy 0>,
> +							 <&dsi0_phy 1>;
> +
> +				clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +					 <&gcc GCC_MDSS_AHB_CLK>,
> +					 <&gcc GCC_MDSS_AXI_CLK>,
> +					 <&gcc GCC_MDSS_BYTE0_CLK>,
> +					 <&gcc GCC_MDSS_PCLK0_CLK>,
> +					 <&gcc GCC_MDSS_ESC0_CLK>;
> +				clock-names = "mdp_core",
> +					      "iface",
> +					      "bus",
> +					      "byte",
> +					      "pixel",
> +					      "core";
> +				phys = <&dsi0_phy>;
> +				phy-names = "dsi-phy";
> +				status = "disabled";
> +
> +				ports {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					port@0 {
> +						reg = <0>;
> +						dsi0_in: endpoint {
> +							remote-endpoint = <&mdp5_intf1_out>;
> +						};
> +					};
> +
> +					port@1 {
> +						reg = <1>;
> +						dsi0_out: endpoint {
> +						};
> +					};
> +				};
> +			};
> +
> +			dsi1: dsi@1aa0000 {
> +				compatible = "qcom,mdss-dsi-ctrl";
> +				reg = <0x1aa0000 0x25c>;
> +				reg-names = "dsi_ctrl";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <5 0>;
> +
> +				assigned-clocks = <&gcc BYTE1_CLK_SRC>,
> +						  <&gcc PCLK1_CLK_SRC>;
> +				assigned-clock-parents = <&dsi1_phy 0>,
> +							 <&dsi1_phy 1>;
> +
> +				clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +					 <&gcc GCC_MDSS_AHB_CLK>,
> +					 <&gcc GCC_MDSS_AXI_CLK>,
> +					 <&gcc GCC_MDSS_BYTE1_CLK>,
> +					 <&gcc GCC_MDSS_PCLK1_CLK>,
> +					 <&gcc GCC_MDSS_ESC1_CLK>;
> +				clock-names = "mdp_core",
> +					      "iface",
> +					      "bus",
> +					      "byte",
> +					      "pixel",
> +					      "core";
> +				phys = <&dsi1_phy>;
> +				phy-names = "dsi-phy";
> +				status = "disabled";
> +
> +				ports {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					port@0 {
> +						reg = <0>;
> +						dsi1_in: endpoint {
> +							remote-endpoint = <&mdp5_intf2_out>;
> +						};
> +					};
> +
> +					port@1 {
> +						reg = <1>;
> +						dsi1_out: endpoint {
> +						};
> +					};
> +				};
> +			};
> +
> +			dsi0_phy: dsi-phy@1a98300 {

Generic node name, so just "phy"

> +				compatible = "qcom,dsi-phy-28nm-lp";
> +				reg = <0x1a98300 0xd4>,
> +				      <0x1a98500 0x280>,
> +				      <0x1a98780 0x30>;
> +				reg-names = "dsi_pll",
> +					    "dsi_phy",
> +					    "dsi_phy_regulator";
> +
> +				#clock-cells = <1>;
> +				#phy-cells = <0>;
> +
> +				clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +				clock-names = "iface";
> +				qcom,dsi-phy-regulator-ldo-mode;
> +				status = "disabled";
> +			};
> +
> +			dsi1_phy: dsi-phy@1aa0300 {
> +				compatible = "qcom,dsi-phy-28nm-lp";
> +				reg = <0x1aa0300 0xd4>,
> +				      <0x1aa0500 0x280>,
> +				      <0x1aa0780 0x30>;
> +				reg-names = "dsi_pll",
> +					    "dsi_phy",
> +					    "dsi_phy_regulator";
> +
> +				#clock-cells = <1>;
> +				#phy-cells = <0>;
> +
> +				clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +				clock-names = "iface";
> +				qcom,dsi-phy-regulator-ldo-mode;
> +				status = "disabled";
> +			};
> +		};
> +
> +		hexagon@4080000 {
> +			compatible = "qcom,q6v5-pil";
> +			reg = <0x04080000 0x100>,
> +			      <0x04020000 0x040>;
> +
> +			reg-names = "qdsp6", "rmb";
> +
> +			interrupts-extended = <&intc 0 24 1>,
> +					      <&hexagon_smp2p_in 0 0>,
> +					      <&hexagon_smp2p_in 1 0>,
> +					      <&hexagon_smp2p_in 2 0>,
> +					      <&hexagon_smp2p_in 3 0>;
> +			interrupt-names = "wdog", "fatal", "ready",
> +					  "handover", "stop-ack";
> +
> +			clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
> +				 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
> +				 <&gcc GCC_BOOT_ROM_AHB_CLK>,
> +				 <&xo_board>;
> +			clock-names = "iface", "bus", "mem", "xo";
> +
> +			qcom,smem-states = <&hexagon_smp2p_out 0>;
> +			qcom,smem-state-names = "stop";
> +
> +			resets = <&scm 0>;
> +			reset-names = "mss_restart";
> +
> +			power-domains = <&rpmpd MSM8939_VDDMDCX_AO>,
> +					<&rpmpd MSM8939_VDDMX>;
> +			power-domain-names = "cx", "mx";
> +			pll-supply = <&pm8916_l7>;
> +
> +			qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
> +
> +			status = "disabled";
> +
> +			mba {
> +				memory-region = <&mba_mem>;
> +			};
> +
> +			mpss {
> +				memory-region = <&mpss_mem>;
> +			};
> +
> +			smd-edge {
> +				interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
> +
> +				qcom,smd-edge = <0>;
> +				mboxes = <&apcs1_mbox 12>;
> +				qcom,remote-pid = <1>;
> +
> +				label = "hexagon";
> +			};
> +		};
> +
> +		pronto: wcnss@a204000 {
> +			compatible = "qcom,pronto-v2-pil", "qcom,pronto";
> +			reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
> +			reg-names = "ccu", "dxe", "pmu";
> +
> +			memory-region = <&wcnss_mem>;
> +
> +			interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
> +					      <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
> +					      <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
> +					      <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
> +					      <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
> +			interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
> +
> +			power-domains = <&rpmpd MSM8939_VDDCX>,
> +					<&rpmpd MSM8939_VDDMX_AO>;
> +			power-domain-names = "cx", "mx";
> +			vddpx-supply = <&pm8916_l7>;
> +
> +			qcom,state = <&wcnss_smp2p_out 0>;
> +			qcom,state-names = "stop";
> +
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&wcnss_pin_a>;
> +
> +			status = "disabled";
> +
> +			iris {
> +				compatible = "qcom,wcn3660";
> +
> +				clocks = <&rpmcc RPM_SMD_RF_CLK2>;
> +				clock-names = "xo";
> +
> +				vddxo-supply = <&pm8916_l7>;
> +				vddrfa-supply = <&pm8916_s3>;
> +				vddpa-supply = <&pm8916_l9>;
> +				vdddig-supply = <&pm8916_l5>;
> +			};
> +
> +			smd-edge {
> +				interrupts = <0 142 1>;
> +
> +				qcom,ipc = <&apcs1 8 17>;
> +				qcom,smd-edge = <6>;
> +				qcom,remote-pid = <4>;
> +
> +				label = "pronto";
> +
> +				wcnss {
> +					compatible = "qcom,wcnss";
> +					qcom,smd-channels = "WCNSS_CTRL";
> +
> +					qcom,mmio = <&pronto>;
> +
> +					bt {
> +						compatible = "qcom,wcnss-bt";
> +					};
> +
> +					wifi {
> +						compatible = "qcom,wcnss-wlan";
> +
> +						interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
> +							     <0 146 IRQ_TYPE_LEVEL_HIGH>;
> +						interrupt-names = "tx", "rx";
> +
> +						qcom,smem-states = <&apps_smsm 10>,
> +								   <&apps_smsm 9>;
> +						qcom,smem-state-names = "tx-enable",
> +									"tx-rings-empty";
> +					};
> +				};
> +			};
> +		};
> +
> +		venus: video-codec@1d00000 {
> +			compatible = "qcom,msm8916-venus";
> +			reg = <0x01d00000 0xff000>;
> +			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +			power-domains = <&gcc VENUS_GDSC>;
> +			clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
> +				 <&gcc GCC_VENUS0_AHB_CLK>,
> +				 <&gcc GCC_VENUS0_AXI_CLK>;
> +			clock-names = "core", "iface", "bus";
> +			iommus = <&apps_iommu 5>;
> +			memory-region = <&venus_mem>;
> +			status = "okay";
> +
> +			video-decoder {
> +				compatible = "venus-decoder";
> +			};
> +
> +			video-encoder {
> +				compatible = "venus-encoder";
> +			};
> +		};
> +
> +		bimc: interconnect@400000 {
> +			compatible = "qcom,msm8939-bimc";
> +			#interconnect-cells = <1>;
> +			reg = <0x400000 0x62000>;
> +			clock-names = "bus", "bus_a";
> +			clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
> +				 <&rpmcc RPM_SMD_BIMC_A_CLK>;
> +			status = "okay";
> +		};
> +
> +		pcnoc: interconnect@500000 {
> +			compatible = "qcom,msm8939-pcnoc";
> +			#interconnect-cells = <1>;
> +			reg = <0x500000 0x11000>;
> +			clock-names = "bus", "bus_a";
> +			clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
> +				 <&rpmcc RPM_SMD_PCNOC_A_CLK>;
> +			status = "okay";
> +		};
> +
> +		snoc: interconnect@580000 {
> +			compatible = "qcom,msm8939-snoc";
> +			#interconnect-cells = <1>;
> +			reg = <0x580000 0x14080>;
> +			clock-names = "bus", "bus_a";
> +			clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
> +				 <&rpmcc RPM_SMD_SNOC_A_CLK>;
> +			status = "okay";
> +
> +			snoc_mm: interconnect-snoc-mm {
> +				compatible = "qcom,msm8939-snoc-mm";
> +				#interconnect-cells = <1>;
> +				clock-names = "bus", "bus_a";
> +				clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
> +					 <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
> +				status = "okay";
> +			};
> +
> +		};
> +	};
> +
> +	smd {
> +		compatible = "qcom,smd";
> +
> +		rpm {
> +			interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> +			qcom,ipc = <&apcs1 8 0>;
> +			qcom,smd-edge = <15>;
> +
> +			rpm_requests: rpm_requests {

No underscores.

> +				compatible = "qcom,rpm-msm8936";
> +				qcom,smd-channels = "rpm_requests";
> +
> +				rpmcc: qcom,rpmcc {
> +					compatible = "qcom,rpmcc-msm8936";
> +					#clock-cells = <1>;
> +				};
> +
> +				rpmpd: power-controller {
> +					compatible = "qcom,msm8939-rpmpd";
> +					#power-domain-cells = <1>;
> +					operating-points-v2 = <&rpmpd_opp_table>;
> +
> +					rpmpd_opp_table: opp-table {
> +						compatible = "operating-points-v2";
> +
> +						rpmpd_opp_ret: opp1 {
> +							opp-level = <1>;
> +						};
> +
> +						rpmpd_opp_svs_krait: opp2 {
> +							opp-level = <2>;
> +						};
> +
> +						rpmpd_opp_svs_soc: opp3 {
> +							opp-level = <3>;
> +						};
> +
> +						rpmpd_opp_nom: opp4 {
> +							opp-level = <4>;
> +						};
> +
> +						rpmpd_opp_turbo: opp5 {
> +							opp-level = <5>;
> +						};
> +
> +						rpmpd_opp_super_turbo: opp6 {
> +							opp-level = <6>;
> +						};
> +					};
> +				};
> +			};
> +		};
> +	};
> +
> +	hexagon-smp2p {
> +		compatible = "qcom,smp2p";
> +		qcom,smem = <435>, <428>;
> +
> +		interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
> +
> +		mboxes = <&apcs1_mbox 14>;
> +
> +		qcom,local-pid = <0>;
> +		qcom,remote-pid = <1>;
> +
> +		hexagon_smp2p_out: master-kernel {
> +			qcom,entry-name = "master-kernel";
> +
> +			#qcom,smem-state-cells = <1>;
> +		};
> +
> +		hexagon_smp2p_in: slave-kernel {
> +			qcom,entry-name = "slave-kernel";
> +
> +			interrupt-controller;
> +			#interrupt-cells = <2>;
> +		};
> +	};
> +
> +	wcnss-smp2p {
> +		compatible = "qcom,smp2p";
> +		qcom,smem = <451>, <431>;
> +
> +		interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;

Isn't this some GIC interrupt? If so, then use flags for PPI and SPI
interrupts.


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
@ 2022-04-19  7:35   ` Krzysztof Kozlowski
  2022-04-19 19:20   ` Stephan Gerhold
  2022-04-19 21:39   ` Bjorn Andersson
  2 siblings, 0 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-19  7:35 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 03:09, Bryan O'Donoghue wrote:
> The apq8039-t2 is an apq8039/msm8939 based board paired with a wcn3680b
> WiFi chipset.
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---

(...)

> +	pinctrl_panel: panel {
> +		pinmux {
> +			pins = "gpio25";
> +			function = "gpio";
> +		};
> +	};
> +
> +	msmgpio_spe_reg: msmgpio_spe_reg {

Same comments as for your patch 2.

> +		pinmux {
> +			pins = "gpio108";
> +			function = "gpio";
> +			output-high;
> +		};
> +	};

(...)

> +	lcd_iovcc_vreg: lcd-iovcc-vreg {

Generic node names, so if you need some specific prefix, at least follow
it with "regulator", so "lcd-iovcc-regulator"

> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_iovcc";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_iovcc>;
> +		gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	lcd_avdd_vreg: lcd-avdd-vreg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_avdd";
> +		regulator-min-microvolt = <5600000>;
> +		regulator-max-microvolt = <5600000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_avdd>;
> +		gpios = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	lcd_avee_vreg: lcd-avee-vreg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_avee";
> +		regulator-min-microvolt = <5600000>;
> +		regulator-max-microvolt = <5600000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_avee>;
> +		gpios = <&msmgpio 87 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	bl: backlight {
> +		compatible = "gpio-backlight";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_backlight>;
> +		gpios = <&msmgpio 98 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	pp_spe_3v3_vreg: pp_spe_3v3_vreg {

Please apply all comments from patch 2.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  7:33   ` Krzysztof Kozlowski
@ 2022-04-19  8:30     ` Bryan O'Donoghue
  2022-04-19  8:44       ` Krzysztof Kozlowski
  2022-04-20  9:31     ` Jun Nie
  1 sibling, 1 reply; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19  8:30 UTC (permalink / raw)
  To: Krzysztof Kozlowski, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 08:33, Krzysztof Kozlowski wrote:
> tx/rx. Please rebase on recent linux-next and run `make dtbs_check` and
> fix all the errors.

I did do that, it didn't throw up any errors.

Must have done it wrong

Thanks for the review

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  8:30     ` Bryan O'Donoghue
@ 2022-04-19  8:44       ` Krzysztof Kozlowski
  0 siblings, 0 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-19  8:44 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 10:30, Bryan O'Donoghue wrote:
> On 19/04/2022 08:33, Krzysztof Kozlowski wrote:
>> tx/rx. Please rebase on recent linux-next and run `make dtbs_check` and
>> fix all the errors.
> 
> I did do that, it didn't throw up any errors.
> 
> Must have done it wrong
> 
> Thanks for the review


There are many, many issues:

arch/arm64/boot/dts/qcom/apq8039-t2.dtb: cpu@100: compatible:
['arm,cortex-a53', 'arm,armv8'] is too long


arch/arm64/boot/dts/qcom/apq8039-t2.dtb: idle-states: 'spc' does not
match any of the regexes: '^(cpu|cluster)-', 'pinctrl-[0-9]+'


arch/arm64/boot/dts/qcom/apq8039-t2.dtb: gpu-opp-table: $nodename:0:
'gpu-opp-table' does not match '^opp-table(-[a-z0-9]+)?$'



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: thermal-zones:
'venus_camera-thermal' does not match any of the regexes:
'^[a-zA-Z][a-zA-Z0-9\\-]{1,12}-thermal$', 'pinctrl-[0-9]+'



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: soc: hwlock: {'compatible':
['qcom,tcsr-mutex'], 'syscon': [[53, 0, 4096]], '#hwlock-cells': [[1]],
'phandle': [[48]]} should not be valid under {'type': 'object'}



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: soc: codec: {'compatible':
['qcom,msm8916-wcd-digital-codec'], 'reg': [[124895232, 1024]],
'clocks': [[49, 154], [49, 159]], 'clock-names': ['ahbix-clk', 'mclk'],
'#sound-dai-cells': [[1]]} should not be valid under {'type': 'object'}



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: qfprom_cpr@58000: compatible:
['qcom,qfprom'] is too short



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: power-controller@b1b9000:
'#power-domain-cells' is a required property



arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc/syscon@1937000: failed
to match any schema with compatible: ['qcom,tcsr-msm8916', 'syscon']



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: hwlock: 'reg' is a required
property



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: memory@60000: $nodename:0:
'memory@60000' does not match '^sram(@.*)?'



And finally:



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: serial@78af000: dma-names:0:
'tx' was expected

	From schema:
/home/krzk/dev/linux/linux/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.yaml

arch/arm64/boot/dts/qcom/apq8039-t2.dtb: serial@78af000: dma-names:1:
'rx' was expected

	From schema:
/home/krzk/dev/linux/linux/Documentation/devicetree/bindings/serial/qcom,msm-uartdm.yaml



arch/arm64/boot/dts/qcom/apq8039-t2.dtb: spi@78b5000: dma-names:0: 'tx'
was expected

	From schema:
/home/krzk/dev/linux/linux/Documentation/devicetree/bindings/spi/qcom,spi-qup.yaml

arch/arm64/boot/dts/qcom/apq8039-t2.dtb: spi@78b5000: dma-names:1: 'rx'
was expected

	From schema:
/home/krzk/dev/linux/linux/Documentation/devicetree/bindings/spi/qcom,spi-qup.yaml


I did not list here all needing fixes. Some might be skipped, but most
should be fixed.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding
  2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
  2022-04-19  7:13   ` Krzysztof Kozlowski
@ 2022-04-19 12:12   ` Rob Herring
  1 sibling, 0 replies; 34+ messages in thread
From: Rob Herring @ 2022-04-19 12:12 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: devicetree, zac, krzk+dt, jun.nie, linux-arm-msm, benl, robh+dt,
	bjorn.andersson, shawn.guo, jgates, mchen, jwillcox, agross

On Tue, 19 Apr 2022 02:09:00 +0100, Bryan O'Donoghue wrote:
> Document the MSM8939 and supported boards in upstream Sony "Tulip" M4 Aqua
> and Square APQ8039 T2.
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  Documentation/devicetree/bindings/arm/qcom.yaml | 7 +++++++
>  1 file changed, 7 insertions(+)
> 

My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):

yamllint warnings/errors:
./Documentation/devicetree/bindings/arm/qcom.yaml:37:1: [error] syntax error: found character '\t' that cannot start any token (syntax)

dtschema/dtc warnings/errors:
make[1]: *** Deleting file 'Documentation/devicetree/bindings/arm/qcom.example.dts'
Traceback (most recent call last):
  File "/usr/local/bin/dt-extract-example", line 52, in <module>
    binding = yaml.load(open(args.yamlfile, encoding='utf-8').read())
  File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/main.py", line 434, in load
    return constructor.get_single_data()
  File "/usr/local/lib/python3.8/dist-packages/ruamel/yaml/constructor.py", line 119, in get_single_data
    node = self.composer.get_single_node()
  File "_ruamel_yaml.pyx", line 706, in _ruamel_yaml.CParser.get_single_node
  File "_ruamel_yaml.pyx", line 724, in _ruamel_yaml.CParser._compose_document
  File "_ruamel_yaml.pyx", line 775, in _ruamel_yaml.CParser._compose_node
  File "_ruamel_yaml.pyx", line 889, in _ruamel_yaml.CParser._compose_mapping_node
  File "_ruamel_yaml.pyx", line 731, in _ruamel_yaml.CParser._compose_node
  File "_ruamel_yaml.pyx", line 904, in _ruamel_yaml.CParser._parse_next_event
ruamel.yaml.scanner.ScannerError: while scanning a block scalar
  in "<unicode string>", line 12, column 14
found a tab character where an indentation space is expected
  in "<unicode string>", line 37, column 1
make[1]: *** [Documentation/devicetree/bindings/Makefile:26: Documentation/devicetree/bindings/arm/qcom.example.dts] Error 1
make[1]: *** Waiting for unfinished jobs....
./Documentation/devicetree/bindings/arm/qcom.yaml:  while scanning a block scalar
  in "<unicode string>", line 12, column 14
found a tab character where an indentation space is expected
  in "<unicode string>", line 37, column 1
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/arm/qcom.yaml: ignoring, error parsing file
make: *** [Makefile:1401: dt_binding_check] Error 2

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/patch/

This check can fail if there are any dependencies. The base for a patch
series is generally the most recent rc1.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit.


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
  2022-04-19  7:33   ` Krzysztof Kozlowski
@ 2022-04-19 17:21   ` Vincent Knecht
  2022-04-19 22:01     ` Bryan O'Donoghue
  2022-05-26 13:32     ` Bryan O'Donoghue
  2022-04-19 18:31   ` Stephan Gerhold
                     ` (2 subsequent siblings)
  4 siblings, 2 replies; 34+ messages in thread
From: Vincent Knecht @ 2022-04-19 17:21 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

Hi Bryan, thanks for this much awaited dtsi :-)
Some comments below, maybe more once I get around to testing it...

Le mardi 19 avril 2022 à 02:09 +0100, Bryan O'Donoghue a écrit :
> Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> differences to msm8916.
> 
> - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> - DRAM 1x800 LPDDR3
> - Camera 4+4 lane CSI
> - Venus @ 1080p60 HEVC
> - DSI x 2
> - Adreno A405
> - WiFi wcn3660/wcn3680b 802.11ac
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
>  1 file changed, 2017 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> new file mode 100644
> index 000000000000..f1aa79b7d0e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -0,0 +1,2017 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2020-2022, Linaro Limited
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <dt-bindings/interconnect/qcom,msm8939.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> +#include <dt-bindings/clock/qcom,rpmcc.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
> +#include <dt-bindings/thermal/thermal.h>

Alphabetical sorting of headers

> +
> +/ {
> +       model = "Qualcomm Technologies, Inc. MSM8939";
> +       compatible = "qcom,msm8939";
> +       qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
> +
> +       interrupt-parent = <&intc>;
> +
> +       #address-cells = <2>;
> +       #size-cells = <2>;
> +
> +       memory {
> +               device_type = "memory";
> +               /* We expect the bootloader to fill in the reg */
> +               reg = <0 0 0 0>;
> +       };

Maybe use the same as in msm8916.dtsi ?

	memory@80000000 {
		device_type = "memory";
		/* We expect the bootloader to fill in the reg */
		reg = <0 0x80000000 0 0>;
	};

> +
> +       reserved-memory {
> +               #address-cells = <2>;
> +               #size-cells = <2>;
> +               ranges;
> +
> +               tz-apps@86000000 {
> +                       reg = <0x0 0x86000000 0x0 0x300000>;
> +                       no-map;
> +               };
> +
> +               smem_mem: smem_region@86300000 {
> +                       reg = <0x0 0x86300000 0x0 0x100000>;
> +                       no-map;
> +               };
> +
> +               hypervisor@86400000 {
> +                       reg = <0x0 0x86400000 0x0 0x100000>;
> +                       no-map;
> +               };
> +
> +               tz@86500000 {
> +                       reg = <0x0 0x86500000 0x0 0x180000>;
> +                       no-map;
> +               };
> +
> +               reserved@8668000 {

There's one zero missing

> +                       reg = <0x0 0x86680000 0x0 0x80000>;
> +                       no-map;
> +               };

I'll have to check again with these reserved & rmtfs values,
but for quite a while we've used
reserved@86680000 with size 0x1000
and
rmtfs@86681000 with size 0x15f000
to get modem working with postmarketOS.

> +
> +               rmtfs@86700000 {
> +                       compatible = "qcom,rmtfs-mem";
> +                       reg = <0x0 0x86700000 0x0 0xe0000>;
> +                       no-map;
> +
> +                       qcom,client-id = <1>;
> +               };
> +
> +               rfsa@867e00000 {

There's one zero in excess

> +                       reg = <0x0 0x867e0000 0x0 0x20000>;
> +                       no-map;
> +               };
> +
> +               mpss_mem: mpss@86800000 {
> +                       reg = <0x0 0x86800000 0x0 0x2b00000>;
> +                       no-map;
> +               };
> +

Also would have to check, we used to use a size of 0x5600000 for mpss...

> +               wcnss_mem: wcnss@89300000 {
> +                       reg = <0x0 0x89300000 0x0 0x600000>;
> +                       no-map;
> +               };
> +
> +               venus_mem: venus@89900000 {
> +                       reg = <0x0 0x89900000 0x0 0x500000>;
> +                       no-map;
> +               };
> +
> +               mba_mem: mba@8ea00000 {
> +                       no-map;
> +                       reg = <0 0x8ea00000 0 0x100000>;
> +               };
> +       };
> +
> +       /*
> +        * MSM8939 has a big.LITTLE hetrogeneous computing architecture,
> +        * consisting of two clusters of four ARM Cortex-A53s each. The
> +        * LITTLE cluster runs at 1.0-1.2GHz, and the big cluster runs
> +        * at 1.5-1.7GHz.
> +        *
> +        * The enable method used here is spin-table which pre-supposes use
> +        * of a 2nd stage boot shim such as lk2nd to have installed a
> +        * spin-table, the downstream non-psci/non-spin-table method that
> +        * default msm8916/msm8936/msm8939 will not be supported upstream.
> +        */
> +       cpu-map {
> +               /* LITTLE (efficiency) cluster */
> +               cluster0 {
> +                       core0 {
> +                               cpu = <&CPU4>;
> +                       };
> +
> +                       core1 {
> +                               cpu = <&CPU5>;
> +                       };
> +
> +                       core2 {
> +                               cpu = <&CPU6>;
> +                       };
> +
> +                       core3 {
> +                               cpu = <&CPU7>;
> +                       };
> +               };
> +
> +               /* big (performance) cluster */
> +               /* Boot CPU is cluster 1 core 0 */
> +               cluster1 {
> +                       core0 {
> +                               cpu = <&CPU0>;
> +                       };
> +
> +                       core1 {
> +                               cpu = <&CPU1>;
> +                       };
> +
> +                       core2 {
> +                               cpu = <&CPU2>;
> +                       };
> +
> +                       core3 {
> +                               cpu = <&CPU3>;
> +                       };
> +               };
> +       };
> +
> +       cpus {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               CPU0: cpu@100 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x100>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc0>;
> +                       qcom,saw = <&saw0>;
> +                       cpu-idle-states = <&CPU_SPC>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +                       L2_1: l2-cache-cluster1 {
> +                               compatible = "cache";
> +                               cache-level = <2>;
> +                       };
> +               };
> +
> +               CPU1: cpu@101 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x101>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc1>;
> +                       qcom,saw = <&saw1>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU2: cpu@102 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x102>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc2>;
> +                       qcom,saw = <&saw2>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU3: cpu@103 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x103>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc3>;
> +                       qcom,saw = <&saw3>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU4: cpu@0 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x0>;
> +                       qcom,acc = <&acc4>;
> +                       qcom,saw = <&saw4>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +                       next-level-cache = <&L2_0>;
> +                       L2_0: l2-cache-cluster0 {
> +                               compatible = "cache";
> +                               cache-level = <2>;
> +                       };
> +               };
> +
> +               CPU5: cpu@1 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x1>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc5>;
> +                       qcom,saw = <&saw5>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU6: cpu@2 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x2>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc6>;
> +                       qcom,saw = <&saw6>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU7: cpu@3 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x3>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc7>;
> +                       qcom,saw = <&saw7>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               idle-states {
> +                       CPU_SPC: spc {
> +                               compatible = "arm,idle-state";
> +                               arm,psci-suspend-param = <0x40000002>;
> +                               entry-latency-us = <130>;
> +                               exit-latency-us = <150>;
> +                               min-residency-us = <2000>;
> +                               local-timer-stop;
> +                       };
> +               };
> +       };
> +
> +       cluster0_opp_table: cluster0-opp-table {
> +               compatible = "operating-points-v2-kryo-cpu";
> +               opp-shared;
> +
> +               opp-249600000 {
> +                       opp-hz = /bits/ 64 <249600000>;
> +                       required-opps = <&cpr_opp1>;
> +               };
> +
> +               opp-499200000 {
> +                       opp-hz = /bits/ 64 <499200000>;
> +                       required-opps = <&cpr_opp3>;
> +               };
> +
> +               opp-800000000 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       required-opps = <&cpr_opp6>;
> +               };
> +
> +               opp-1113600000 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       required-opps = <&cpr_opp9>;
> +               };
> +       };
> +
> +       cluster1_opp_table: cluster1-opp-table {
> +               compatible = "operating-points-v2-kryo-cpu";
> +               opp-shared;
> +
> +               opp-200000000 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +                       required-opps = <&cpr_opp1>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +                       required-opps = <&cpr_opp2>;
> +               };
> +
> +               opp-533330000 {
> +                       opp-hz = /bits/ 64 <533330000>;
> +                       required-opps = <&cpr_opp4>;
> +               };
> +
> +               opp-800000000 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       required-opps = <&cpr_opp5>;
> +               };
> +
> +               opp-1113600000 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       required-opps = <&cpr_opp7>;
> +               };
> +
> +               opp-1497600000 {
> +                       opp-hz = /bits/ 64 <1497600000>;
> +                       required-opps = <&cpr_opp8>;
> +               };
> +       };
> +
> +       /* Frequencies in below opp is for cpr_opp virtual corner calculation,
> +        * not strictly coupled with frquencies in CPU opp for CPUs may require
> +        * different cpr_opp for specific frquency.
> +        */
> +       cpr_opp_table: cpr-opp-table {
> +               compatible = "operating-points-v2-qcom-level";

Just curious : am I missing something, that I don't see this compatible
defined anywhere outside binding docs and qcs404.dtsi ?

> +               cpr_opp1: opp1 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +                       opp-level = <1>;
> +                       qcom,opp-fuse-level = <1>;
> +               };
> +               cpr_opp2: opp2 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +                       opp-level = <2>;
> +                       qcom,opp-fuse-level = <1>;
> +               };
> +               cpr_opp3: opp3 {
> +                       opp-hz = /bits/ 64 <499200000>;
> +                       opp-level = <3>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp4: opp4 {
> +                       opp-hz = /bits/ 64 <533330000>;
> +                       opp-level = <4>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp5: opp5 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       opp-level = <5>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp6: opp6 {
> +                       opp-hz = /bits/ 64 <960000000>;
> +                       opp-level = <6>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp7: opp7 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       opp-level = <7>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp8: opp8 {
> +                       opp-hz = /bits/ 64 <1497600000>;
> +                       opp-level = <8>;
> +                       qcom,opp-fuse-level = <3>;
> +               };
> +               cpr_opp9: opp9 {
> +                       opp-hz = /bits/ 64 <1497500000>;
> +                       opp-level = <9>;
> +                       qcom,opp-fuse-level = <3>;
> +               };
> +       };
> +
> +       cci_opp_table: cci-opp-table {
> +               compatible = "operating-points-v2";
> +
> +               opp-200000000 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +               };
> +
> +               opp-297600000 {
> +                       opp-hz = /bits/ 64 <297600000>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +               };
> +
> +               opp-595200000 {
> +                       opp-hz = /bits/ 64 <595200000>;
> +               };
> +       };
> +
> +       gpu_opp_table: gpu-opp-table {
> +               compatible = "operating-points-v2";
> +
> +               opp-550000000 {
> +                       opp-hz = /bits/ 64 <550000000>;
> +               };
> +
> +               opp-465000000 {
> +                       opp-hz = /bits/ 64 <465000000>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +               };
> +
> +               opp-220000000 {
> +                       opp-hz = /bits/ 64 <220000000>;
> +               };
> +
> +               opp-19200000 {
> +                       opp-hz = /bits/ 64 <19200000>;
> +               };
> +       };
> +
> +       pmu {
> +               compatible = "arm,cortex-a53-pmu";
> +               interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4)| IRQ_TYPE_LEVEL_HIGH)>;
> +       };
> +
> +       thermal_zones: thermal-zones {
> +               cpu0-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 5>;
> +
> +                       trips {
> +                               cpu0_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu0_crit: trip1 {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu0_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu1-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 6>;
> +
> +                       trips {
> +                               cpu1_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu1_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu1_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu2-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 7>;
> +
> +                       trips {
> +                               cpu2_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu2_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu2_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu3-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 8>;
> +
> +                       trips {
> +                               cpu3_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu3_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu3_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu4567-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 9>;
> +
> +                       trips {
> +                               cpu4567_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu4567_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu4567_alert>;
> +                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               gpu-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 3>;
> +               };
> +
> +               modem1-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 0>;
> +               };
> +
> +               modem2-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 2>;
> +               };
> +
> +               venus_camera-thermal {

This label is also too long, 20 chars max iirc (from a runtime warning/error)

> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 1>;
> +               };
> +       };
> +
> +       timer {
> +               compatible = "arm,armv8-timer";
> +               interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> +       };
> +
> +       clocks {
> +               xo_board: xo_board {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <19200000>;
> +               };
> +
> +               sleep_clk: sleep_clk {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <32768>;
> +               };
> +       };
> +
> +       smem {
> +               compatible = "qcom,smem";
> +
> +               memory-region = <&smem_mem>;
> +               qcom,rpm-msg-ram = <&rpm_msg_ram>;
> +
> +               hwlocks = <&tcsr_mutex 3>;
> +       };
> +
> +       firmware {
> +               scm: scm {
> +                       compatible = "qcom,scm";
> +                       clocks = <&gcc GCC_CRYPTO_CLK>,
> +                                <&gcc GCC_CRYPTO_AXI_CLK>,
> +                                <&gcc GCC_CRYPTO_AHB_CLK>;
> +                       clock-names = "core", "bus", "iface";
> +                       #reset-cells = <1>;
> +
> +                       qcom,dload-mode = <&tcsr 0x6100>;
> +               };
> +       };
> +
> +       soc: soc {
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +               ranges = <0 0 0 0xffffffff>;
> +               compatible = "simple-bus";
> +
> +               qfprom_cpr: qfprom_cpr@58000 {
> +                       compatible = "qcom,qfprom";
> +                       reg = <0x00058000 0x1000>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       cpr_efuse_init_voltage1: ivoltage1@dc {
> +                               reg = <0xdc 0x4>;
> +                               bits = <4 6>;
> +                       };
> +                       cpr_efuse_init_voltage2: ivoltage2@da {
> +                               reg = <0xda 0x4>;
> +                               bits = <2 6>;
> +                       };
> +                       cpr_efuse_init_voltage3: ivoltage3@d8 {
> +                               reg = <0xd8 0x4>;
> +                               bits = <0 6>;
> +                       };
> +                       cpr_efuse_quot1: quot1@dc {
> +                               reg = <0xdd 0x8>;
> +                               bits = <2 12>;
> +                       };
> +                       cpr_efuse_quot2: quot2@da {
> +                               reg = <0xdb 0x8>;
> +                               bits = <0x0 12>;
> +                       };
> +                       cpr_efuse_quot3: quot3@d8 {
> +                               reg = <0xd8 0x8>;
> +                               bits = <6 12>;
> +                       };
> +                       cpr_efuse_ring1: ring1@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_ring2: ring2@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_ring3: ring3@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_revision: revision@4 {
> +                               reg = <0x5 0x1>;
> +                               bits = <5 1>;
> +                       };
> +                       cpr_efuse_revision_high: revision_high@4 {
> +                               reg = <0x7 0x1>;
> +                               bits = <0 1>;
> +                       };
> +                       cpr_efuse_pvs_version: pvs@4 {
> +                               reg = <0x3 0x1>;
> +                               bits = <5 1>;
> +                       };
> +                       cpr_efuse_pvs_version_high: pvs_high@4 {
> +                               reg = <0x6 0x1>;
> +                               bits = <2 2>;
> +                       };
> +                       cpr_efuse_speedbin: speedbin@c {
> +                               reg = <0xc 0x1>;
> +                               bits = <2 3>;
> +                       };
> +
> +               };
> +
> +               acc0: clock-controller@b088000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb088000 0x1000>;
> +               };
> +
> +               saw0: power-controller@b089000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb089000 0x1000>;
> +               };
> +
> +               acc1: clock-controller@b098000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb098000 0x1000>;
> +               };
> +
> +               saw1: power-controller@b099000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb099000 0x1000>;
> +               };
> +
> +               acc2: clock-controller@b0a8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb0a8000 0x1000>;
> +               };
> +
> +               saw2: power-controller@b0a9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb0a9000 0x1000>;
> +               };
> +
> +               acc3: clock-controller@b0b8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb0b8000 0x1000>;
> +               };
> +
> +               saw3: power-domain@b0b9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb0b9000 0x1000>;
> +               };
> +
> +               acc4: clock-controller@b188000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb188000 0x1000>;
> +               };
> +
> +               saw4: power-controller@b189000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb189000 0x1000>;
> +               };
> +
> +               acc5: clock-controller@b198000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb198000 0x1000>;
> +               };
> +
> +               saw5: power-controller@b199000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb199000 0x1000>;
> +               };
> +
> +               acc6: clock-controller@b1a8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb1a8000 0x1000>;
> +               };
> +
> +               saw6: power-controller@b1a9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb1a9000 0x1000>;
> +               };
> +
> +               acc7: clock-controller@b1b8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb1b8000 0x1000>;
> +               };
> +
> +               saw7: power-controller@b1b9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb1b9000 0x1000>;
> +               };
> +
> +               restart@4ab000 {
> +                       compatible = "qcom,pshold";
> +                       reg = <0x4ab000 0x4>;
> +               };
> +
> +               msmgpio: pinctrl@1000000 {
> +                       compatible = "qcom,msm8916-pinctrl";
> +                       reg = <0x1000000 0x300000>;
> +                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
> +                       gpio-controller;
> +                       #gpio-cells = <2>;
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +
> +               gcc: clock-controller@1800000 {
> +                       compatible = "qcom,gcc-msm8939";
> +                       #clock-cells = <1>;
> +                       #reset-cells = <1>;
> +                       #power-domain-cells = <1>;
> +                       reg = <0x1800000 0x80000>;
> +                       clocks = <&xo_board>, <&sleep_clk>;
> +                       clock-names = "xo", "sleep_clk";
> +               };
> +
> +               tcsr_mutex_regs: syscon@1905000 {
> +                       compatible = "syscon";
> +                       reg = <0x1905000 0x20000>;
> +               };
> +
> +               tcsr: syscon@1937000 {
> +                       compatible = "qcom,tcsr-msm8916", "syscon";
> +                       reg = <0x1937000 0x30000>;
> +               };
> +
> +               tcsr_mutex: hwlock {
> +                       compatible = "qcom,tcsr-mutex";
> +                       syscon = <&tcsr_mutex_regs 0 0x1000>;
> +                       #hwlock-cells = <1>;
> +               };
> +
> +               rpm_msg_ram: memory@60000 {
> +                       compatible = "qcom,rpm-msg-ram";
> +                       reg = <0x60000 0x8000>;
> +               };
> +
> +               blsp1_uart1: serial@78af000 {
> +                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +                       reg = <0x78af000 0x200>;
> +                       interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 1>, <&blsp_dma 0>;
> +                       dma-names = "rx", "tx";
> +                       status = "disabled";
> +               };
> +
> +               a53pll_c1: clock@b016000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb016000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               a53pll_c0: clock@b116000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb116000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               a53pll_cci: clock@b1d0000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb1d0000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               apcs2: mailbox@b1d1000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +                       reg = <0xb1d1000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_cci>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_cci";
> +               };
> +
> +               apcs1_mbox: mailbox@b011000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global";
> +                       reg = <0xb011000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_c1";
> +                       /* Set a nominal frequency on a53mux_cci */
> +                       assigned-clocks = <&apcs2>;
> +                       assigned-clock-rates = <297600000>;
> +               };
> +
> +               apcs1: syscon@b111000 {
> +                       compatible = "syscon";
> +                       reg = <0xb011000 0x1000>;
> +               };
> +

Is it okay that unit and reg addresses don't match ?

> +               apcs0: mailbox@b111000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +                       reg = <0xb111000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_c0>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_c0";
> +               };
> +
> +               blsp1_uart2: serial@78b0000 {
> +                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +                       reg = <0x78b0000 0x200>;
> +                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 3>, <&blsp_dma 2>;
> +                       dma-names = "rx", "tx";
> +                       status = "disabled";
> +               };
> +
> +               blsp_dma: dma@7884000 {
> +                       compatible = "qcom,bam-v1.7.0";
> +                       reg = <0x07884000 0x23000>;
> +                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "bam_clk";
> +                       #dma-cells = <1>;
> +                       qcom,ee = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi1: spi@78b5000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b5000 0x500>;
> +                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 5>, <&blsp_dma 4>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi1_default>;
> +                       pinctrl-1 = <&spi1_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi2: spi@78b6000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b6000 0x500>;
> +                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 7>, <&blsp_dma 6>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi2_default>;
> +                       pinctrl-1 = <&spi2_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi3: spi@78b7000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b7000 0x500>;
> +                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 9>, <&blsp_dma 8>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi3_default>;
> +                       pinctrl-1 = <&spi3_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi4: spi@78b8000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b8000 0x500>;
> +                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 11>, <&blsp_dma 10>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi4_default>;
> +                       pinctrl-1 = <&spi4_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi5: spi@78b9000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b9000 0x500>;
> +                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 13>, <&blsp_dma 12>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi5_default>;
> +                       pinctrl-1 = <&spi5_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi6: spi@78ba000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078ba000 0x500>;
> +                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 15>, <&blsp_dma 14>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi6_default>;
> +                       pinctrl-1 = <&spi6_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c1: i2c@78b5000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b5000 0x500>;
> +                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 4>, <&blsp_dma 5>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c1_default>;
> +                       pinctrl-1 = <&i2c1_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c2: i2c@78b6000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b6000 0x500>;
> +                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 6>, <&blsp_dma 7>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c2_default>;
> +                       pinctrl-1 = <&i2c2_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c3: i2c@78b7000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b7000 0x500>;
> +                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 8>, <&blsp_dma 9>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c3_default>;
> +                       pinctrl-1 = <&i2c3_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c4: i2c@78b8000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b8000 0x500>;
> +                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 10>, <&blsp_dma 11>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c4_default>;
> +                       pinctrl-1 = <&i2c4_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c5: i2c@78b9000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b9000 0x500>;
> +                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 12>, <&blsp_dma 13>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c5_default>;
> +                       pinctrl-1 = <&i2c5_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c6: i2c@78ba000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078ba000 0x500>;
> +                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 14>, <&blsp_dma 15>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c6_default>;
> +                       pinctrl-1 = <&i2c6_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +

You mentioned not including sound, but it mainly takes just a block
like this here, same as msm8916.dtsi

		sound: sound@7702000 {
			status = "disabled";
			compatible = "qcom,apq8016-sbc-sndcard";
			reg = <0x07702000 0x4>, <0x07702004 0x4>;
			reg-names = "mic-iomux", "spkr-iomux";
		};

> +               lpass: lpass@7708000 {

Using
		lpass: audio-controller@7708000 {
would be better, to help lk2nd operations wrt sound/modem

> +                       status = "disabled";
> +                       compatible = "qcom,apq8016-lpass-cpu";
> +                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +                                <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
> +                                <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,

This line should be identical to the previous one, ie.
<&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>
like it was done for msm8916 in
8199a0b31e ("arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock ")

> +                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
> +
> +                       clock-names = "ahbix-clk",
> +                                       "pcnoc-mport-clk",
> +                                       "pcnoc-sway-clk",
> +                                       "mi2s-bit-clk0",
> +                                       "mi2s-bit-clk1",
> +                                       "mi2s-bit-clk2",
> +                                       "mi2s-bit-clk3";
> +                       #sound-dai-cells = <1>;
> +
> +                       interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "lpass-irq-lpaif";
> +                       reg = <0x07708000 0x10000>;
> +                       reg-names = "lpass-lpaif";
> +
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
> +               lpass_codec: codec{

Using
		lpass_codec: audio-codec@771c000 {
would be also be better, to help lk2nd operations wrt sound/modem

> +                       compatible = "qcom,msm8916-wcd-digital-codec";
> +                       reg = <0x0771c000 0x400>;
> +                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +                                <&gcc GCC_CODEC_DIGCODEC_CLK>;
> +                       clock-names = "ahbix-clk", "mclk";
> +                       #sound-dai-cells = <1>;
> +               };
> +
> +               sdhc_1: sdhci@7824000 {
> +                       compatible = "qcom,sdhci-msm-v4";
> +                       reg = <0x07824900 0x11c>, <0x07824000 0x800>;
> +                       reg-names = "hc_mem", "core_mem";
> +
> +                       interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>, <0 138 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "hc_irq", "pwr_irq";
> +                       clocks = <&gcc GCC_SDCC1_APPS_CLK>,
> +                                <&gcc GCC_SDCC1_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "core", "iface", "xo";
> +                       mmc-ddr-1_8v;
> +                       bus-width = <8>;
> +                       non-removable;
> +                       status = "disabled";
> +               };
> +
> +               sdhc_2: sdhci@7864000 {
> +                       compatible = "qcom,sdhci-msm-v4";
> +                       reg = <0x07864900 0x11c>, <0x07864000 0x800>;
> +                       reg-names = "hc_mem", "core_mem";
> +
> +                       interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>, <0 221 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "hc_irq", "pwr_irq";
> +                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
> +                                <&gcc GCC_SDCC2_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "core", "iface", "xo";
> +                       bus-width = <4>;
> +                       status = "disabled";
> +               };
> +
> +               otg: usb@78d9000 {
> +                       compatible = "qcom,ci-hdrc";
> +                       reg = <0x78d9000 0x200>,
> +                             <0x78d9200 0x200>;
> +                       interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
> +                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_USB_HS_AHB_CLK>,
> +                                <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +                       clock-names = "iface", "core";
> +                       assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +                       assigned-clock-rates = <80000000>;
> +                       resets = <&gcc GCC_USB_HS_BCR>;
> +                       reset-names = "core";
> +                       phy_type = "ulpi";
> +                       dr_mode = "otg";
> +                       ahb-burst-config = <0>;
> +                       phy-names = "usb-phy";
> +                       phys = <&usb_hs_phy>;
> +                       status = "disabled";
> +                       #reset-cells = <1>;
> +
> +                       ulpi {
> +                               usb_hs_phy: phy {
> +                                       compatible = "qcom,usb-hs-phy-msm8916",
> +                                                    "qcom,usb-hs-phy";
> +                                       #phy-cells = <0>;
> +                                       clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
> +                                       clock-names = "ref", "sleep";
> +                                       resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>;
> +                                       reset-names = "phy", "por";
> +                                       qcom,init-seq = /bits/ 8 <0x0 0x44
> +                                               0x1 0x6b 0x2 0x24 0x3 0x13>;
> +                               };
> +                       };
> +               };
> +
> +               intc: interrupt-controller@b000000 {
> +                       compatible = "qcom,msm-qgic2";
> +                       interrupt-controller;
> +                       #interrupt-cells = <3>;
> +                       reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
> +               };
> +
> +               timer@b020000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       ranges;
> +                       compatible = "arm,armv7-timer-mem";
> +                       reg = <0xb020000 0x1000>;
> +                       clock-frequency = <19200000>;
> +
> +                       frame@b021000 {
> +                               frame-number = <0>;
> +                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
> +                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb021000 0x1000>,
> +                                     <0xb022000 0x1000>;
> +                       };
> +
> +                       frame@b023000 {
> +                               frame-number = <1>;
> +                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb023000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b024000 {
> +                               frame-number = <2>;
> +                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb024000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b025000 {
> +                               frame-number = <3>;
> +                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb025000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b026000 {
> +                               frame-number = <4>;
> +                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb026000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b027000 {
> +                               frame-number = <5>;
> +                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb027000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b028000 {
> +                               frame-number = <6>;
> +                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb028000 0x1000>;
> +                               status = "disabled";
> +                       };
> +               };
> +
> +               spmi_bus: spmi@200f000 {
> +                       compatible = "qcom,spmi-pmic-arb";
> +                       reg = <0x200f000 0x001000>,
> +                             <0x2400000 0x400000>,
> +                             <0x2c00000 0x400000>,
> +                             <0x3800000 0x200000>,
> +                             <0x200a000 0x002100>;
> +                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> +                       interrupt-names = "periph_irq";
> +                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
> +                       qcom,ee = <0>;
> +                       qcom,channel = <0>;
> +                       #address-cells = <2>;
> +                       #size-cells = <0>;
> +                       interrupt-controller;
> +                       #interrupt-cells = <4>;
> +               };
> +
> +               rng@22000 {
> +                       compatible = "qcom,prng";
> +                       reg = <0x00022000 0x200>;
> +                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
> +                       clock-names = "core";
> +               };
> +
> +               qfprom: qfprom@5c000 {
> +                       compatible = "qcom,qfprom";
> +                       reg = <0x5c000 0x1000>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       tsens_caldata: caldata@a0 {
> +                               reg = <0xa0 0x5c>;
> +                       };
> +               };
> +
> +               tsens: thermal-sensor@4a9000 {
> +                       compatible = "qcom,msm8939-tsens";
> +                       reg = <0x4a9000 0x1000>, /* TM */
> +                             <0x4a8000 0x1000>; /* SROT */
> +                       nvmem-cells = <&tsens_caldata>;
> +                       nvmem-cell-names = "calib";
> +                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "uplow";
> +                       #thermal-sensor-cells = <1>;
> +               };
> +
> +               apps_iommu: iommu@1ef0000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       #iommu-cells = <1>;
> +                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +                       ranges = <0 0x1e20000 0x40000>;
> +                       reg = <0x1ef0000 0x3000>;
> +                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +                                <&gcc GCC_APSS_TCU_CLK>;
> +                       clock-names = "iface", "bus";
> +                       qcom,iommu-secure-id = <17>;
> +
> +                       /* mdp_0: */
> +                       iommu-ctx@4000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x4000 0x1000>;
> +                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +
> +                       /* venus_ns: */
> +                       iommu-ctx@5000 {
> +                               compatible = "qcom,msm-iommu-v1-sec";
> +                               reg = <0x5000 0x1000>;
> +                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +               };
> +
> +               gpu_iommu: iommu@1f08000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       #iommu-cells = <1>;
> +                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +                       ranges = <0 0x1f08000 0x10000>;
> +                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +                                <&gcc GCC_GFX_TCU_CLK>,
> +                                <&gcc GCC_GFX_TBU_CLK>;
> +                       clock-names = "iface", "bus", "tlb";
> +                       qcom,iommu-secure-id = <18>;
> +
> +                       /* gfx3d_user: */
> +                       iommu-ctx@1000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x1000 0x1000>;
> +                               interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +
> +                       /* gfx3d_priv: */
> +                       iommu-ctx@2000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x2000 0x1000>;
> +                               interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +               };
> +
> +               gpu@1c00000 {
> +                       compatible = "qcom,adreno-405.0", "qcom,adreno";
> +                       reg = <0x01c00000 0x10000>;
> +                       reg-names = "kgsl_3d0_reg_memory";
> +                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "kgsl_3d0_irq";
> +                       clock-names =
> +                           "core",
> +                           "iface",
> +                           "mem",
> +                           "mem_iface",
> +                           "alt_mem_iface",
> +                           "gfx3d",
> +                           "rbbmtimer";
> +                       clocks =
> +                           <&gcc GCC_OXILI_GFX3D_CLK>,
> +                           <&gcc GCC_OXILI_AHB_CLK>,
> +                           <&gcc GCC_OXILI_GMEM_CLK>,
> +                           <&gcc GCC_BIMC_GFX_CLK>,
> +                           <&gcc GCC_BIMC_GPU_CLK>,
> +                           <&gcc GFX3D_CLK_SRC>,
> +                           <&gcc GCC_OXILI_TIMER_CLK>;
> +                       power-domains = <&gcc OXILI_GDSC>;
> +                       operating-points-v2 = <&gpu_opp_table>;
> +                       iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
> +               };
> +
> +               mdss: mdss@1a00000 {
> +                       compatible = "qcom,mdss";
> +                       reg = <0x1a00000 0x1000>,
> +                             <0x1ac8000 0x3000>;
> +                       reg-names = "mdss_phys", "vbif_phys";
> +
> +                       power-domains = <&gcc MDSS_GDSC>;
> +
> +                       clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +                                <&gcc GCC_MDSS_AXI_CLK>,
> +                                <&gcc GCC_MDSS_VSYNC_CLK>;
> +                       clock-names = "iface",
> +                                     "bus",
> +                                     "vsync";
> +
> +                       interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <1>;
> +
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       ranges;
> +
> +                       mdp: mdp@1a01000 {
> +                               compatible = "qcom,mdp5";
> +                               reg = <0x1a01000 0x89000>;
> +                               reg-names = "mdp_phys";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <0 0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_VSYNC_CLK>,
> +                                        <&gcc GCC_MDP_TBU_CLK>,
> +                                        <&gcc GCC_MDP_RT_TBU_CLK>;
> +                               clock-names = "iface",
> +                                             "bus",
> +                                             "core",
> +                                             "vsync",
> +                                             "tbu",
> +                                             "tbu_rt";
> +
> +                               iommus = <&apps_iommu 4>;
> +
> +                               interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
> +                                               <&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
> +                               interconnect-names = "mdp0-mem", "mdp1-mem";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               mdp5_intf1_out: endpoint {
> +                                                       remote-endpoint = <&dsi0_in>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               mdp5_intf2_out: endpoint {
> +                                                       remote-endpoint = <&dsi1_in>;
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi0: dsi@1a98000 {
> +                               compatible = "qcom,mdss-dsi-ctrl";
> +                               reg = <0x1a98000 0x25c>;
> +                               reg-names = "dsi_ctrl";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <4 0>;
> +
> +                               assigned-clocks = <&gcc BYTE0_CLK_SRC>,
> +                                                 <&gcc PCLK0_CLK_SRC>;
> +                               assigned-clock-parents = <&dsi0_phy 0>,
> +                                                        <&dsi0_phy 1>;
> +
> +                               clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_BYTE0_CLK>,
> +                                        <&gcc GCC_MDSS_PCLK0_CLK>,
> +                                        <&gcc GCC_MDSS_ESC0_CLK>;
> +                               clock-names = "mdp_core",
> +                                             "iface",
> +                                             "bus",
> +                                             "byte",
> +                                             "pixel",
> +                                             "core";
> +                               phys = <&dsi0_phy>;
> +                               phy-names = "dsi-phy";
> +                               status = "disabled";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               dsi0_in: endpoint {
> +                                                       remote-endpoint = <&mdp5_intf1_out>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               dsi0_out: endpoint {
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi1: dsi@1aa0000 {
> +                               compatible = "qcom,mdss-dsi-ctrl";
> +                               reg = <0x1aa0000 0x25c>;
> +                               reg-names = "dsi_ctrl";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <5 0>;
> +
> +                               assigned-clocks = <&gcc BYTE1_CLK_SRC>,
> +                                                 <&gcc PCLK1_CLK_SRC>;
> +                               assigned-clock-parents = <&dsi1_phy 0>,
> +                                                        <&dsi1_phy 1>;
> +
> +                               clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_BYTE1_CLK>,
> +                                        <&gcc GCC_MDSS_PCLK1_CLK>,
> +                                        <&gcc GCC_MDSS_ESC1_CLK>;
> +                               clock-names = "mdp_core",
> +                                             "iface",
> +                                             "bus",
> +                                             "byte",
> +                                             "pixel",
> +                                             "core";
> +                               phys = <&dsi1_phy>;
> +                               phy-names = "dsi-phy";
> +                               status = "disabled";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               dsi1_in: endpoint {
> +                                                       remote-endpoint = <&mdp5_intf2_out>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               dsi1_out: endpoint {
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi0_phy: dsi-phy@1a98300 {
> +                               compatible = "qcom,dsi-phy-28nm-lp";
> +                               reg = <0x1a98300 0xd4>,
> +                                     <0x1a98500 0x280>,
> +                                     <0x1a98780 0x30>;
> +                               reg-names = "dsi_pll",
> +                                           "dsi_phy",
> +                                           "dsi_phy_regulator";
> +
> +                               #clock-cells = <1>;
> +                               #phy-cells = <0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +                               clock-names = "iface";
> +                               qcom,dsi-phy-regulator-ldo-mode;
> +                               status = "disabled";
> +                       };
> +
> +                       dsi1_phy: dsi-phy@1aa0300 {
> +                               compatible = "qcom,dsi-phy-28nm-lp";
> +                               reg = <0x1aa0300 0xd4>,
> +                                     <0x1aa0500 0x280>,
> +                                     <0x1aa0780 0x30>;
> +                               reg-names = "dsi_pll",
> +                                           "dsi_phy",
> +                                           "dsi_phy_regulator";
> +
> +                               #clock-cells = <1>;
> +                               #phy-cells = <0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +                               clock-names = "iface";
> +                               qcom,dsi-phy-regulator-ldo-mode;
> +                               status = "disabled";
> +                       };
> +               };
> +
> +               hexagon@4080000 {

Using
		mpss: remoteproc@4080000 {
also helps lk2nd bootloader operations wrt modem enablement

> +                       compatible = "qcom,q6v5-pil";
> +                       reg = <0x04080000 0x100>,
> +                             <0x04020000 0x040>;
> +
> +                       reg-names = "qdsp6", "rmb";
> +
> +                       interrupts-extended = <&intc 0 24 1>,
> +                                             <&hexagon_smp2p_in 0 0>,
> +                                             <&hexagon_smp2p_in 1 0>,
> +                                             <&hexagon_smp2p_in 2 0>,
> +                                             <&hexagon_smp2p_in 3 0>;
> +                       interrupt-names = "wdog", "fatal", "ready",
> +                                         "handover", "stop-ack";
> +
> +                       clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
> +                                <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
> +                                <&gcc GCC_BOOT_ROM_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "iface", "bus", "mem", "xo";
> +
> +                       qcom,smem-states = <&hexagon_smp2p_out 0>;
> +                       qcom,smem-state-names = "stop";
> +
> +                       resets = <&scm 0>;
> +                       reset-names = "mss_restart";
> +
> +                       power-domains = <&rpmpd MSM8939_VDDMDCX_AO>,
> +                                       <&rpmpd MSM8939_VDDMX>;
> +                       power-domain-names = "cx", "mx";
> +                       pll-supply = <&pm8916_l7>;
> +
> +                       qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
> +
> +                       status = "disabled";
> +
> +                       mba {
> +                               memory-region = <&mba_mem>;
> +                       };
> +
> +                       mpss {
> +                               memory-region = <&mpss_mem>;
> +                       };
> +
> +                       smd-edge {
> +                               interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
> +
> +                               qcom,smd-edge = <0>;
> +                               mboxes = <&apcs1_mbox 12>;
> +                               qcom,remote-pid = <1>;
> +
> +                               label = "hexagon";
> +                       };
> +               };
> +
> +               pronto: wcnss@a204000 {

Using
		pronto: remoteproc@a204000 {
also helps lk2nd

> +                       compatible = "qcom,pronto-v2-pil", "qcom,pronto";
> +                       reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
> +                       reg-names = "ccu", "dxe", "pmu";
> +
> +                       memory-region = <&wcnss_mem>;
> +
> +                       interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
> +                       interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
> +
> +                       power-domains = <&rpmpd MSM8939_VDDCX>,
> +                                       <&rpmpd MSM8939_VDDMX_AO>;
> +                       power-domain-names = "cx", "mx";
> +                       vddpx-supply = <&pm8916_l7>;
> +
> +                       qcom,state = <&wcnss_smp2p_out 0>;
> +                       qcom,state-names = "stop";
> +
> +                       pinctrl-names = "default";
> +                       pinctrl-0 = <&wcnss_pin_a>;
> +
> +                       status = "disabled";
> +
> +                       iris {
> +                               compatible = "qcom,wcn3660";
> +
> +                               clocks = <&rpmcc RPM_SMD_RF_CLK2>;
> +                               clock-names = "xo";
> +
> +                               vddxo-supply = <&pm8916_l7>;
> +                               vddrfa-supply = <&pm8916_s3>;
> +                               vddpa-supply = <&pm8916_l9>;
> +                               vdddig-supply = <&pm8916_l5>;
> +                       };
> +
> +                       smd-edge {
> +                               interrupts = <0 142 1>;
> +
> +                               qcom,ipc = <&apcs1 8 17>;
> +                               qcom,smd-edge = <6>;
> +                               qcom,remote-pid = <4>;
> +
> +                               label = "pronto";
> +
> +                               wcnss {
> +                                       compatible = "qcom,wcnss";
> +                                       qcom,smd-channels = "WCNSS_CTRL";
> +
> +                                       qcom,mmio = <&pronto>;
> +
> +                                       bt {
> +                                               compatible = "qcom,wcnss-bt";
> +                                       };
> +
> +                                       wifi {
> +                                               compatible = "qcom,wcnss-wlan";
> +
> +                                               interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
> +                                                            <0 146 IRQ_TYPE_LEVEL_HIGH>;
> +                                               interrupt-names = "tx", "rx";
> +
> +                                               qcom,smem-states = <&apps_smsm 10>,
> +                                                                  <&apps_smsm 9>;
> +                                               qcom,smem-state-names = "tx-enable",
> +                                                                       "tx-rings-empty";
> +                                       };
> +                               };
> +                       };
> +               };
> +
> +               venus: video-codec@1d00000 {
> +                       compatible = "qcom,msm8916-venus";
> +                       reg = <0x01d00000 0xff000>;
> +                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +                       power-domains = <&gcc VENUS_GDSC>;
> +                       clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
> +                                <&gcc GCC_VENUS0_AHB_CLK>,
> +                                <&gcc GCC_VENUS0_AXI_CLK>;
> +                       clock-names = "core", "iface", "bus";
> +                       iommus = <&apps_iommu 5>;
> +                       memory-region = <&venus_mem>;
> +                       status = "okay";
> +
> +                       video-decoder {
> +                               compatible = "venus-decoder";
> +                       };
> +
> +                       video-encoder {
> +                               compatible = "venus-encoder";
> +                       };
> +               };
> +
> +               bimc: interconnect@400000 {
> +                       compatible = "qcom,msm8939-bimc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x400000 0x62000>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
> +                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
> +                       status = "okay";
> +               };
> +
> +               pcnoc: interconnect@500000 {
> +                       compatible = "qcom,msm8939-pcnoc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x500000 0x11000>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
> +                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
> +                       status = "okay";
> +               };
> +
> +               snoc: interconnect@580000 {
> +                       compatible = "qcom,msm8939-snoc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x580000 0x14080>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
> +                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
> +                       status = "okay";
> +
> +                       snoc_mm: interconnect-snoc-mm {
> +                               compatible = "qcom,msm8939-snoc-mm";
> +                               #interconnect-cells = <1>;
> +                               clock-names = "bus", "bus_a";
> +                               clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
> +                                        <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
> +                               status = "okay";
> +                       };
> +
> +               };
> +       };
> +
> +       smd {
> +               compatible = "qcom,smd";
> +
> +               rpm {
> +                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> +                       qcom,ipc = <&apcs1 8 0>;
> +                       qcom,smd-edge = <15>;
> +
> +                       rpm_requests: rpm_requests {
> +                               compatible = "qcom,rpm-msm8936";
> +                               qcom,smd-channels = "rpm_requests";
> +
> +                               rpmcc: qcom,rpmcc {
> +                                       compatible = "qcom,rpmcc-msm8936";
> +                                       #clock-cells = <1>;
> +                               };
> +
> +                               rpmpd: power-controller {
> +                                       compatible = "qcom,msm8939-rpmpd";
> +                                       #power-domain-cells = <1>;
> +                                       operating-points-v2 = <&rpmpd_opp_table>;
> +
> +                                       rpmpd_opp_table: opp-table {
> +                                               compatible = "operating-points-v2";
> +
> +                                               rpmpd_opp_ret: opp1 {
> +                                                       opp-level = <1>;
> +                                               };
> +
> +                                               rpmpd_opp_svs_krait: opp2 {
> +                                                       opp-level = <2>;
> +                                               };
> +
> +                                               rpmpd_opp_svs_soc: opp3 {
> +                                                       opp-level = <3>;
> +                                               };
> +
> +                                               rpmpd_opp_nom: opp4 {
> +                                                       opp-level = <4>;
> +                                               };
> +
> +                                               rpmpd_opp_turbo: opp5 {
> +                                                       opp-level = <5>;
> +                                               };
> +
> +                                               rpmpd_opp_super_turbo: opp6 {
> +                                                       opp-level = <6>;
> +                                               };
> +                                       };
> +                               };
> +                       };
> +               };
> +       };
> +
> +       hexagon-smp2p {
> +               compatible = "qcom,smp2p";
> +               qcom,smem = <435>, <428>;
> +
> +               interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
> +
> +               mboxes = <&apcs1_mbox 14>;
> +
> +               qcom,local-pid = <0>;
> +               qcom,remote-pid = <1>;
> +
> +               hexagon_smp2p_out: master-kernel {
> +                       qcom,entry-name = "master-kernel";
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               hexagon_smp2p_in: slave-kernel {
> +                       qcom,entry-name = "slave-kernel";
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +
> +       wcnss-smp2p {
> +               compatible = "qcom,smp2p";
> +               qcom,smem = <451>, <431>;
> +
> +               interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
> +
> +               mboxes = <&apcs1_mbox 18>;
> +
> +               qcom,local-pid = <0>;
> +               qcom,remote-pid = <4>;
> +
> +               wcnss_smp2p_out: master-kernel {
> +                       qcom,entry-name = "master-kernel";
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               wcnss_smp2p_in: slave-kernel {
> +                       qcom,entry-name = "slave-kernel";
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +
> +       smsm {
> +               compatible = "qcom,smsm";
> +
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               qcom,ipc-1 = <&apcs1 8 13>;
> +               qcom,ipc-3 = <&apcs1 8 19>;
> +
> +               apps_smsm: apps@0 {
> +                       reg = <0>;
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               hexagon_smsm: hexagon@1 {
> +                       reg = <1>;
> +                       interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +
> +               wcnss_smsm: wcnss@6 {
> +                       reg = <6>;
> +                       interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +};
> +
> +#include "msm8916-pins.dtsi"


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
  2022-04-19  7:33   ` Krzysztof Kozlowski
  2022-04-19 17:21   ` Vincent Knecht
@ 2022-04-19 18:31   ` Stephan Gerhold
  2022-04-20 10:12     ` Jun Nie
  2022-04-19 18:47   ` Vincent Knecht
  2022-04-19 21:11   ` Bjorn Andersson
  4 siblings, 1 reply; 34+ messages in thread
From: Stephan Gerhold @ 2022-04-19 18:31 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac, Leo Yan

Hi Bryan,

Thanks a lot for sending this upstream!

On Tue, Apr 19, 2022 at 02:09:01AM +0100, Bryan O'Donoghue wrote:
> Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> differences to msm8916.
> 
> - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> - DRAM 1x800 LPDDR3
> - Camera 4+4 lane CSI
> - Venus @ 1080p60 HEVC
> - DSI x 2
> - Adreno A405

Since most of these differences should be comparatively minor in the
device tree, would it make sense to have the common parts shared in
a .dtsi? I'm not sure myself, I suppose there are still quite some
special cases that only become visible if you take a closer look.

However, if we're keeping msm8916.dtsi and msm8939.dtsi separate we
should try to keep them consistent at least. It looks like you derived
this from msm8916.dtsi at some point, but did not apply the changes and
fixes made upstream after that. :)

Can you look through recent changes made to msm8916.dtsi [1] and
consider making them for msm8939.dtsi as well? From a quick look through
the diff below there are at least the following commits:

  - e6717dbaef63 ("arm64: dts: qcom: msm8916: avoid using _ in node names")
  - 38a4d932f70a ("arm64: dts: qcom: msm8916: move gpu opp table to gpu node")
  - 2329e5fb54d7 ("arm64: dts: qcom: msm8916: Add more labels")
    (Note the &otg -> &usb in this commit, to allow grouping with sorted nodes)
  - bfd5d21abcd5 ("arm64: dts: qcom: msm8916: Move common USB properties to msm8916.dtsi")
    (You don't use these properties but I'm pretty sure 8939 needs them)
  - 027cca9eb5b4 ("arm64: dts: qcom: msm8916: Fix MDP/DSI interrupts")
  - ... actually almost all changes to msm8916.dtsi made after those
    see [1]

Several of them fix issues Krzysztof already mentioned. Some are even
functional fixes. :)

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/arch/arm64/boot/dts/qcom/msm8916.dtsi

> - WiFi wcn3660/wcn3680b 802.11ac

There are some MSM8916 devices with WCN3660B or WCN3680B, and there are
MSM8939 devices with WCN3620. I don't think this is an actual difference.
(Could just drop this line :))

> [...]
> ---
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
>  1 file changed, 2017 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> new file mode 100644
> index 000000000000..f1aa79b7d0e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -0,0 +1,2017 @@
> +// SPDX-License-Identifier: BSD-3-Clause

While I would appreciate having consistent licensing for the DT files,
this is clearly derived from msm8916.dtsi which is GPL-2.0-only. Sadly
I don't think we can simply change the license of it without asking all
contributors. :(

> +/*
> + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2020-2022, Linaro Limited
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */

Hm, SPDX says BSD-3-Clause but this says GPL-2.0-only? We have SPDX only
in most files now.

> +
> +#include <dt-bindings/interconnect/qcom,msm8939.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> +#include <dt-bindings/clock/qcom,rpmcc.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
> +#include <dt-bindings/thermal/thermal.h>
> +
> +/ {
> +	model = "Qualcomm Technologies, Inc. MSM8939";
> +	compatible = "qcom,msm8939";

All boards should override this, so you might as well drop it here.

> + [...]
> +		idle-states {
> +			CPU_SPC: spc {
> +				compatible = "arm,idle-state";

This should be compatible = "qcom,idle-state-spc" if you want to use
cpuidle-qcom-spm (which is strictly speaking not currently supported
for arm64).

> +				arm,psci-suspend-param = <0x40000002>;

This is strange (and unneeded) considering that PSCI is not supported.

> +				entry-latency-us = <130>;
> +				exit-latency-us = <150>;
> +				min-residency-us = <2000>;
> +				local-timer-stop;
> +			};
> +		};
> +	};
> + [...]
> +
> +	timer {
> +		compatible = "arm,armv8-timer";
> +		interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +			     <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> +	};

Hm, I'd expect GIC_CPU_MASK_SIMPLE(8) here considering you have 8 cores.

> + [...]
> +	soc: soc {
> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0 0 0xffffffff>;
> +		compatible = "simple-bus";
> +
> +		qfprom_cpr: qfprom_cpr@58000 {
> +			compatible = "qcom,qfprom";
> +			reg = <0x00058000 0x1000>;

It's quite confusing that the qfprom is once defined on 0x58000 ("raw
region") and then again later on 0x5c000 ("corrected region"). The
APQ8016E TRM is quite clear that the "corrected" one should be used for
reading, and the raw region is just for programming and verification.

I think when I tried setting up CPR on MSM8916 I simply added the nodes
to the existing qfprom@5c000 and it worked just fine (all the values
were correct).

> + [...]
> +		apps_iommu: iommu@1ef0000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			#iommu-cells = <1>;
> +			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +			ranges = <0 0x1e20000 0x40000>;
> +			reg = <0x1ef0000 0x3000>;
> +			clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +				 <&gcc GCC_APSS_TCU_CLK>;
> +			clock-names = "iface", "bus";
> +			qcom,iommu-secure-id = <17>;
> +
> +			/* mdp_0: */
> +			iommu-ctx@4000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x4000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;

AFAIK MSM8939 doesn't have the funny "interrupt aggregation" built
around the SMMU, it should have dedicated interrupt numbers for all
context banks. Guessing from downstream (msm8939-iommu.dtsi cross
referenced with msm-iommu-v2.dtsi) this should be GIC_SPI 58.

> +			};
> +
> +			/* venus_ns: */
> +			iommu-ctx@5000 {
> +				compatible = "qcom,msm-iommu-v1-sec";
> +				reg = <0x5000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;

... and this GIC_SPI 60.

> +			};
> +		};
> + [...]
> +		pronto: wcnss@a204000 {
> + [...]
> +			iris {
> +				compatible = "qcom,wcn3660";
> +

I'm pretty sure all 8916-related devices should use one of the following:

- WCN3620
- WCN3660**B**
- WCN3680(B?)

All of these have the same voltage requirements, but WCN3660 (without B)
has different ones.

Should this be "qcom,wcn3660b"?

Personally I would set "qcom,wcn3620" by default (like in msm8916.dtsi).
There are some MSM8939 with WCN3620 as well and that way it's more obvious
in which cases it needs to be overridden in the board dts.

That's it for now, thanks again for all your effort to upstream this
platform!

Stephan

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
                     ` (2 preceding siblings ...)
  2022-04-19 18:31   ` Stephan Gerhold
@ 2022-04-19 18:47   ` Vincent Knecht
  2022-04-19 21:11   ` Bjorn Andersson
  4 siblings, 0 replies; 34+ messages in thread
From: Vincent Knecht @ 2022-04-19 18:47 UTC (permalink / raw)
  To: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

(resending since it didn't seem to have made it to the lists, sorry if it duplicates)
Hi Bryan, thanks for this much awaited dtsi :-)
Some comments below, maybe more once I get around to testing it...

Le mardi 19 avril 2022 à 02:09 +0100, Bryan O'Donoghue a écrit :
> Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> differences to msm8916.
> 
> - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> - DRAM 1x800 LPDDR3
> - Camera 4+4 lane CSI
> - Venus @ 1080p60 HEVC
> - DSI x 2
> - Adreno A405
> - WiFi wcn3660/wcn3680b 802.11ac
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
>  1 file changed, 2017 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> new file mode 100644
> index 000000000000..f1aa79b7d0e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -0,0 +1,2017 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2020-2022, Linaro Limited
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <dt-bindings/interconnect/qcom,msm8939.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> +#include <dt-bindings/clock/qcom,rpmcc.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
> +#include <dt-bindings/thermal/thermal.h>

Alphabetical sorting of headers

> +
> +/ {
> +       model = "Qualcomm Technologies, Inc. MSM8939";
> +       compatible = "qcom,msm8939";
> +       qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
> +
> +       interrupt-parent = <&intc>;
> +
> +       #address-cells = <2>;
> +       #size-cells = <2>;
> +
> +       memory {
> +               device_type = "memory";
> +               /* We expect the bootloader to fill in the reg */
> +               reg = <0 0 0 0>;
> +       };

Maybe use the same as in msm8916.dtsi ?

        memory@80000000 {
                device_type = "memory";
                /* We expect the bootloader to fill in the reg */
                reg = <0 0x80000000 0 0>;
        };

> +
> +       reserved-memory {
> +               #address-cells = <2>;
> +               #size-cells = <2>;
> +               ranges;
> +
> +               tz-apps@86000000 {
> +                       reg = <0x0 0x86000000 0x0 0x300000>;
> +                       no-map;
> +               };
> +
> +               smem_mem: smem_region@86300000 {
> +                       reg = <0x0 0x86300000 0x0 0x100000>;
> +                       no-map;
> +               };
> +
> +               hypervisor@86400000 {
> +                       reg = <0x0 0x86400000 0x0 0x100000>;
> +                       no-map;
> +               };
> +
> +               tz@86500000 {
> +                       reg = <0x0 0x86500000 0x0 0x180000>;
> +                       no-map;
> +               };
> +
> +               reserved@8668000 {

There's one zero missing

> +                       reg = <0x0 0x86680000 0x0 0x80000>;
> +                       no-map;
> +               };

I'll have to check again with these reserved & rmtfs values,
but for quite a while we've used
reserved@86680000 with size 0x1000
and
rmtfs@86681000 with size 0x15f000
to get modem working with postmarketOS.

> +
> +               rmtfs@86700000 {
> +                       compatible = "qcom,rmtfs-mem";
> +                       reg = <0x0 0x86700000 0x0 0xe0000>;
> +                       no-map;
> +
> +                       qcom,client-id = <1>;
> +               };
> +
> +               rfsa@867e00000 {

There's one zero in excess

> +                       reg = <0x0 0x867e0000 0x0 0x20000>;
> +                       no-map;
> +               };
> +
> +               mpss_mem: mpss@86800000 {
> +                       reg = <0x0 0x86800000 0x0 0x2b00000>;
> +                       no-map;
> +               };
> +

Also would have to check, we used to use a size of 0x5600000 for mpss...

> +               wcnss_mem: wcnss@89300000 {
> +                       reg = <0x0 0x89300000 0x0 0x600000>;
> +                       no-map;
> +               };
> +
> +               venus_mem: venus@89900000 {
> +                       reg = <0x0 0x89900000 0x0 0x500000>;
> +                       no-map;
> +               };
> +
> +               mba_mem: mba@8ea00000 {
> +                       no-map;
> +                       reg = <0 0x8ea00000 0 0x100000>;
> +               };
> +       };
> +
> +       /*
> +        * MSM8939 has a big.LITTLE hetrogeneous computing architecture,
> +        * consisting of two clusters of four ARM Cortex-A53s each. The
> +        * LITTLE cluster runs at 1.0-1.2GHz, and the big cluster runs
> +        * at 1.5-1.7GHz.
> +        *
> +        * The enable method used here is spin-table which pre-supposes use
> +        * of a 2nd stage boot shim such as lk2nd to have installed a
> +        * spin-table, the downstream non-psci/non-spin-table method that
> +        * default msm8916/msm8936/msm8939 will not be supported upstream.
> +        */
> +       cpu-map {
> +               /* LITTLE (efficiency) cluster */
> +               cluster0 {
> +                       core0 {
> +                               cpu = <&CPU4>;
> +                       };
> +
> +                       core1 {
> +                               cpu = <&CPU5>;
> +                       };
> +
> +                       core2 {
> +                               cpu = <&CPU6>;
> +                       };
> +
> +                       core3 {
> +                               cpu = <&CPU7>;
> +                       };
> +               };
> +
> +               /* big (performance) cluster */
> +               /* Boot CPU is cluster 1 core 0 */
> +               cluster1 {
> +                       core0 {
> +                               cpu = <&CPU0>;
> +                       };
> +
> +                       core1 {
> +                               cpu = <&CPU1>;
> +                       };
> +
> +                       core2 {
> +                               cpu = <&CPU2>;
> +                       };
> +
> +                       core3 {
> +                               cpu = <&CPU3>;
> +                       };
> +               };
> +       };
> +
> +       cpus {
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               CPU0: cpu@100 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x100>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc0>;
> +                       qcom,saw = <&saw0>;
> +                       cpu-idle-states = <&CPU_SPC>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +                       L2_1: l2-cache-cluster1 {
> +                               compatible = "cache";
> +                               cache-level = <2>;
> +                       };
> +               };
> +
> +               CPU1: cpu@101 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x101>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc1>;
> +                       qcom,saw = <&saw1>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU2: cpu@102 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x102>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc2>;
> +                       qcom,saw = <&saw2>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU3: cpu@103 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x103>;
> +                       next-level-cache = <&L2_1>;
> +                       qcom,acc = <&acc3>;
> +                       qcom,saw = <&saw3>;
> +                       clocks = <&apcs1_mbox>;
> +                       /* operating-points-v2 = <&cluster1_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU4: cpu@0 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x0>;
> +                       qcom,acc = <&acc4>;
> +                       qcom,saw = <&saw4>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +                       next-level-cache = <&L2_0>;
> +                       L2_0: l2-cache-cluster0 {
> +                               compatible = "cache";
> +                               cache-level = <2>;
> +                       };
> +               };
> +
> +               CPU5: cpu@1 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x1>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc5>;
> +                       qcom,saw = <&saw5>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU6: cpu@2 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x2>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc6>;
> +                       qcom,saw = <&saw6>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               CPU7: cpu@3 {
> +                       device_type = "cpu";
> +                       compatible = "arm,cortex-a53", "arm,armv8";
> +                       enable-method = "spin-table";
> +                       reg = <0x3>;
> +                       next-level-cache = <&L2_0>;
> +                       qcom,acc = <&acc7>;
> +                       qcom,saw = <&saw7>;
> +                       clocks = <&apcs0>;
> +                       /* operating-points-v2 = <&cluster0_opp_table>;
> +                        * power-domains = <&cpr>;
> +                        * power-domain-names = "cpr";
> +                        */
> +                       #cooling-cells = <2>;
> +               };
> +
> +               idle-states {
> +                       CPU_SPC: spc {
> +                               compatible = "arm,idle-state";
> +                               arm,psci-suspend-param = <0x40000002>;
> +                               entry-latency-us = <130>;
> +                               exit-latency-us = <150>;
> +                               min-residency-us = <2000>;
> +                               local-timer-stop;
> +                       };
> +               };
> +       };
> +
> +       cluster0_opp_table: cluster0-opp-table {
> +               compatible = "operating-points-v2-kryo-cpu";
> +               opp-shared;
> +
> +               opp-249600000 {
> +                       opp-hz = /bits/ 64 <249600000>;
> +                       required-opps = <&cpr_opp1>;
> +               };
> +
> +               opp-499200000 {
> +                       opp-hz = /bits/ 64 <499200000>;
> +                       required-opps = <&cpr_opp3>;
> +               };
> +
> +               opp-800000000 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       required-opps = <&cpr_opp6>;
> +               };
> +
> +               opp-1113600000 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       required-opps = <&cpr_opp9>;
> +               };
> +       };
> +
> +       cluster1_opp_table: cluster1-opp-table {
> +               compatible = "operating-points-v2-kryo-cpu";
> +               opp-shared;
> +
> +               opp-200000000 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +                       required-opps = <&cpr_opp1>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +                       required-opps = <&cpr_opp2>;
> +               };
> +
> +               opp-533330000 {
> +                       opp-hz = /bits/ 64 <533330000>;
> +                       required-opps = <&cpr_opp4>;
> +               };
> +
> +               opp-800000000 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       required-opps = <&cpr_opp5>;
> +               };
> +
> +               opp-1113600000 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       required-opps = <&cpr_opp7>;
> +               };
> +
> +               opp-1497600000 {
> +                       opp-hz = /bits/ 64 <1497600000>;
> +                       required-opps = <&cpr_opp8>;
> +               };
> +       };
> +
> +       /* Frequencies in below opp is for cpr_opp virtual corner calculation,
> +        * not strictly coupled with frquencies in CPU opp for CPUs may require
> +        * different cpr_opp for specific frquency.
> +        */
> +       cpr_opp_table: cpr-opp-table {
> +               compatible = "operating-points-v2-qcom-level";

Just curious : am I missing something, that I don't see this compatible
defined anywhere outside binding docs and qcs404.dtsi ?

> +               cpr_opp1: opp1 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +                       opp-level = <1>;
> +                       qcom,opp-fuse-level = <1>;
> +               };
> +               cpr_opp2: opp2 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +                       opp-level = <2>;
> +                       qcom,opp-fuse-level = <1>;
> +               };
> +               cpr_opp3: opp3 {
> +                       opp-hz = /bits/ 64 <499200000>;
> +                       opp-level = <3>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp4: opp4 {
> +                       opp-hz = /bits/ 64 <533330000>;
> +                       opp-level = <4>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp5: opp5 {
> +                       opp-hz = /bits/ 64 <800000000>;
> +                       opp-level = <5>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp6: opp6 {
> +                       opp-hz = /bits/ 64 <960000000>;
> +                       opp-level = <6>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp7: opp7 {
> +                       opp-hz = /bits/ 64 <1113600000>;
> +                       opp-level = <7>;
> +                       qcom,opp-fuse-level = <2>;
> +               };
> +               cpr_opp8: opp8 {
> +                       opp-hz = /bits/ 64 <1497600000>;
> +                       opp-level = <8>;
> +                       qcom,opp-fuse-level = <3>;
> +               };
> +               cpr_opp9: opp9 {
> +                       opp-hz = /bits/ 64 <1497500000>;
> +                       opp-level = <9>;
> +                       qcom,opp-fuse-level = <3>;
> +               };
> +       };
> +
> +       cci_opp_table: cci-opp-table {
> +               compatible = "operating-points-v2";
> +
> +               opp-200000000 {
> +                       opp-hz = /bits/ 64 <200000000>;
> +               };
> +
> +               opp-297600000 {
> +                       opp-hz = /bits/ 64 <297600000>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +               };
> +
> +               opp-595200000 {
> +                       opp-hz = /bits/ 64 <595200000>;
> +               };
> +       };
> +
> +       gpu_opp_table: gpu-opp-table {
> +               compatible = "operating-points-v2";
> +
> +               opp-550000000 {
> +                       opp-hz = /bits/ 64 <550000000>;
> +               };
> +
> +               opp-465000000 {
> +                       opp-hz = /bits/ 64 <465000000>;
> +               };
> +
> +               opp-400000000 {
> +                       opp-hz = /bits/ 64 <400000000>;
> +               };
> +
> +               opp-220000000 {
> +                       opp-hz = /bits/ 64 <220000000>;
> +               };
> +
> +               opp-19200000 {
> +                       opp-hz = /bits/ 64 <19200000>;
> +               };
> +       };
> +
> +       pmu {
> +               compatible = "arm,cortex-a53-pmu";
> +               interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4)| IRQ_TYPE_LEVEL_HIGH)>;
> +       };
> +
> +       thermal_zones: thermal-zones {
> +               cpu0-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 5>;
> +
> +                       trips {
> +                               cpu0_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu0_crit: trip1 {
> +                                       temperature = <115000>;
> +                                       hysteresis = <0>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu0_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu1-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 6>;
> +
> +                       trips {
> +                               cpu1_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu1_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu1_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu2-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 7>;
> +
> +                       trips {
> +                               cpu2_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu2_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu2_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu3-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 8>;
> +
> +                       trips {
> +                               cpu3_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu3_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu3_alert>;
> +                                       cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               cpu4567-thermal {
> +                       polling-delay-passive = <250>;
> +                       polling-delay = <1000>;
> +
> +                       thermal-sensors = <&tsens 9>;
> +
> +                       trips {
> +                               cpu4567_alert: trip0 {
> +                                       temperature = <75000>;
> +                                       hysteresis = <2000>;
> +                                       type = "passive";
> +                               };
> +                               cpu4567_crit: trip1 {
> +                                       temperature = <110000>;
> +                                       hysteresis = <2000>;
> +                                       type = "critical";
> +                               };
> +                       };
> +
> +                       cooling-maps {
> +                               map0 {
> +                                       trip = <&cpu4567_alert>;
> +                                       cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +                                                        <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +                               };
> +                       };
> +               };
> +
> +               gpu-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 3>;
> +               };
> +
> +               modem1-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 0>;
> +               };
> +
> +               modem2-thermal {
> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 2>;
> +               };
> +
> +               venus_camera-thermal {

This label is also too long, 20 chars max iirc (from a runtime warning/error)

> +                       polling-delay-passive = <0>;
> +                       polling-delay = <0>;
> +
> +                       thermal-sensors = <&tsens 1>;
> +               };
> +       };
> +
> +       timer {
> +               compatible = "arm,armv8-timer";
> +               interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> +                            <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> +       };
> +
> +       clocks {
> +               xo_board: xo_board {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <19200000>;
> +               };
> +
> +               sleep_clk: sleep_clk {
> +                       compatible = "fixed-clock";
> +                       #clock-cells = <0>;
> +                       clock-frequency = <32768>;
> +               };
> +       };
> +
> +       smem {
> +               compatible = "qcom,smem";
> +
> +               memory-region = <&smem_mem>;
> +               qcom,rpm-msg-ram = <&rpm_msg_ram>;
> +
> +               hwlocks = <&tcsr_mutex 3>;
> +       };
> +
> +       firmware {
> +               scm: scm {
> +                       compatible = "qcom,scm";
> +                       clocks = <&gcc GCC_CRYPTO_CLK>,
> +                                <&gcc GCC_CRYPTO_AXI_CLK>,
> +                                <&gcc GCC_CRYPTO_AHB_CLK>;
> +                       clock-names = "core", "bus", "iface";
> +                       #reset-cells = <1>;
> +
> +                       qcom,dload-mode = <&tcsr 0x6100>;
> +               };
> +       };
> +
> +       soc: soc {
> +               #address-cells = <1>;
> +               #size-cells = <1>;
> +               ranges = <0 0 0 0xffffffff>;
> +               compatible = "simple-bus";
> +
> +               qfprom_cpr: qfprom_cpr@58000 {
> +                       compatible = "qcom,qfprom";
> +                       reg = <0x00058000 0x1000>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       cpr_efuse_init_voltage1: ivoltage1@dc {
> +                               reg = <0xdc 0x4>;
> +                               bits = <4 6>;
> +                       };
> +                       cpr_efuse_init_voltage2: ivoltage2@da {
> +                               reg = <0xda 0x4>;
> +                               bits = <2 6>;
> +                       };
> +                       cpr_efuse_init_voltage3: ivoltage3@d8 {
> +                               reg = <0xd8 0x4>;
> +                               bits = <0 6>;
> +                       };
> +                       cpr_efuse_quot1: quot1@dc {
> +                               reg = <0xdd 0x8>;
> +                               bits = <2 12>;
> +                       };
> +                       cpr_efuse_quot2: quot2@da {
> +                               reg = <0xdb 0x8>;
> +                               bits = <0x0 12>;
> +                       };
> +                       cpr_efuse_quot3: quot3@d8 {
> +                               reg = <0xd8 0x8>;
> +                               bits = <6 12>;
> +                       };
> +                       cpr_efuse_ring1: ring1@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_ring2: ring2@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_ring3: ring3@de {
> +                               reg = <0xde 0x4>;
> +                               bits = <6 3>;
> +                       };
> +                       cpr_efuse_revision: revision@4 {
> +                               reg = <0x5 0x1>;
> +                               bits = <5 1>;
> +                       };
> +                       cpr_efuse_revision_high: revision_high@4 {
> +                               reg = <0x7 0x1>;
> +                               bits = <0 1>;
> +                       };
> +                       cpr_efuse_pvs_version: pvs@4 {
> +                               reg = <0x3 0x1>;
> +                               bits = <5 1>;
> +                       };
> +                       cpr_efuse_pvs_version_high: pvs_high@4 {
> +                               reg = <0x6 0x1>;
> +                               bits = <2 2>;
> +                       };
> +                       cpr_efuse_speedbin: speedbin@c {
> +                               reg = <0xc 0x1>;
> +                               bits = <2 3>;
> +                       };
> +
> +               };
> +
> +               acc0: clock-controller@b088000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb088000 0x1000>;
> +               };
> +
> +               saw0: power-controller@b089000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb089000 0x1000>;
> +               };
> +
> +               acc1: clock-controller@b098000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb098000 0x1000>;
> +               };
> +
> +               saw1: power-controller@b099000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb099000 0x1000>;
> +               };
> +
> +               acc2: clock-controller@b0a8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb0a8000 0x1000>;
> +               };
> +
> +               saw2: power-controller@b0a9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb0a9000 0x1000>;
> +               };
> +
> +               acc3: clock-controller@b0b8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb0b8000 0x1000>;
> +               };
> +
> +               saw3: power-domain@b0b9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb0b9000 0x1000>;
> +               };
> +
> +               acc4: clock-controller@b188000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb188000 0x1000>;
> +               };
> +
> +               saw4: power-controller@b189000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb189000 0x1000>;
> +               };
> +
> +               acc5: clock-controller@b198000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb198000 0x1000>;
> +               };
> +
> +               saw5: power-controller@b199000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb199000 0x1000>;
> +               };
> +
> +               acc6: clock-controller@b1a8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb1a8000 0x1000>;
> +               };
> +
> +               saw6: power-controller@b1a9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb1a9000 0x1000>;
> +               };
> +
> +               acc7: clock-controller@b1b8000 {
> +                       compatible = "qcom,kpss-acc-v2";
> +                       reg = <0xb1b8000 0x1000>;
> +               };
> +
> +               saw7: power-controller@b1b9000 {
> +                       compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> +                       reg = <0xb1b9000 0x1000>;
> +               };
> +
> +               restart@4ab000 {
> +                       compatible = "qcom,pshold";
> +                       reg = <0x4ab000 0x4>;
> +               };
> +
> +               msmgpio: pinctrl@1000000 {
> +                       compatible = "qcom,msm8916-pinctrl";
> +                       reg = <0x1000000 0x300000>;
> +                       interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
> +                       gpio-controller;
> +                       #gpio-cells = <2>;
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +
> +               gcc: clock-controller@1800000 {
> +                       compatible = "qcom,gcc-msm8939";
> +                       #clock-cells = <1>;
> +                       #reset-cells = <1>;
> +                       #power-domain-cells = <1>;
> +                       reg = <0x1800000 0x80000>;
> +                       clocks = <&xo_board>, <&sleep_clk>;
> +                       clock-names = "xo", "sleep_clk";
> +               };
> +
> +               tcsr_mutex_regs: syscon@1905000 {
> +                       compatible = "syscon";
> +                       reg = <0x1905000 0x20000>;
> +               };
> +
> +               tcsr: syscon@1937000 {
> +                       compatible = "qcom,tcsr-msm8916", "syscon";
> +                       reg = <0x1937000 0x30000>;
> +               };
> +
> +               tcsr_mutex: hwlock {
> +                       compatible = "qcom,tcsr-mutex";
> +                       syscon = <&tcsr_mutex_regs 0 0x1000>;
> +                       #hwlock-cells = <1>;
> +               };
> +
> +               rpm_msg_ram: memory@60000 {
> +                       compatible = "qcom,rpm-msg-ram";
> +                       reg = <0x60000 0x8000>;
> +               };
> +
> +               blsp1_uart1: serial@78af000 {
> +                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +                       reg = <0x78af000 0x200>;
> +                       interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 1>, <&blsp_dma 0>;
> +                       dma-names = "rx", "tx";
> +                       status = "disabled";
> +               };
> +
> +               a53pll_c1: clock@b016000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb016000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               a53pll_c0: clock@b116000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb116000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               a53pll_cci: clock@b1d0000 {
> +                       compatible = "qcom,msm8939-a53pll";
> +                       reg = <0xb1d0000 0x40>;
> +                       #clock-cells = <0>;
> +               };
> +
> +               apcs2: mailbox@b1d1000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +                       reg = <0xb1d1000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_cci>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_cci";
> +               };
> +
> +               apcs1_mbox: mailbox@b011000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global";
> +                       reg = <0xb011000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_c1";
> +                       /* Set a nominal frequency on a53mux_cci */
> +                       assigned-clocks = <&apcs2>;
> +                       assigned-clock-rates = <297600000>;
> +               };
> +
> +               apcs1: syscon@b111000 {
> +                       compatible = "syscon";
> +                       reg = <0xb011000 0x1000>;
> +               };
> +

Is it okay that unit and reg addresses don't match ?

> +               apcs0: mailbox@b111000 {
> +                       compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> +                       reg = <0xb111000 0x1000>;
> +                       #mbox-cells = <1>;
> +                       clocks = <&a53pll_c0>, <&gcc GPLL0_VOTE>, <&xo_board>;
> +                       clock-names = "pll", "aux", "ref";
> +                       #clock-cells = <0>;
> +                       clock-output-names = "a53mux_c0";
> +               };
> +
> +               blsp1_uart2: serial@78b0000 {
> +                       compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> +                       reg = <0x78b0000 0x200>;
> +                       interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 3>, <&blsp_dma 2>;
> +                       dma-names = "rx", "tx";
> +                       status = "disabled";
> +               };
> +
> +               blsp_dma: dma@7884000 {
> +                       compatible = "qcom,bam-v1.7.0";
> +                       reg = <0x07884000 0x23000>;
> +                       interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "bam_clk";
> +                       #dma-cells = <1>;
> +                       qcom,ee = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi1: spi@78b5000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b5000 0x500>;
> +                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 5>, <&blsp_dma 4>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi1_default>;
> +                       pinctrl-1 = <&spi1_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi2: spi@78b6000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b6000 0x500>;
> +                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 7>, <&blsp_dma 6>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi2_default>;
> +                       pinctrl-1 = <&spi2_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi3: spi@78b7000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b7000 0x500>;
> +                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 9>, <&blsp_dma 8>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi3_default>;
> +                       pinctrl-1 = <&spi3_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi4: spi@78b8000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b8000 0x500>;
> +                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 11>, <&blsp_dma 10>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi4_default>;
> +                       pinctrl-1 = <&spi4_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi5: spi@78b9000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078b9000 0x500>;
> +                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 13>, <&blsp_dma 12>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi5_default>;
> +                       pinctrl-1 = <&spi5_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_spi6: spi@78ba000 {
> +                       compatible = "qcom,spi-qup-v2.2.1";
> +                       reg = <0x078ba000 0x500>;
> +                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
> +                                <&gcc GCC_BLSP1_AHB_CLK>;
> +                       clock-names = "core", "iface";
> +                       dmas = <&blsp_dma 15>, <&blsp_dma 14>;
> +                       dma-names = "rx", "tx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&spi6_default>;
> +                       pinctrl-1 = <&spi6_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c1: i2c@78b5000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b5000 0x500>;
> +                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 4>, <&blsp_dma 5>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c1_default>;
> +                       pinctrl-1 = <&i2c1_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c2: i2c@78b6000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b6000 0x500>;
> +                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 6>, <&blsp_dma 7>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c2_default>;
> +                       pinctrl-1 = <&i2c2_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c3: i2c@78b7000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b7000 0x500>;
> +                       interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 8>, <&blsp_dma 9>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c3_default>;
> +                       pinctrl-1 = <&i2c3_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c4: i2c@78b8000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b8000 0x500>;
> +                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 10>, <&blsp_dma 11>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c4_default>;
> +                       pinctrl-1 = <&i2c4_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c5: i2c@78b9000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078b9000 0x500>;
> +                       interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 12>, <&blsp_dma 13>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c5_default>;
> +                       pinctrl-1 = <&i2c5_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +
> +               blsp_i2c6: i2c@78ba000 {
> +                       compatible = "qcom,i2c-qup-v2.2.1";
> +                       reg = <0x078ba000 0x500>;
> +                       interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> +                                <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
> +                       clock-names = "iface", "core";
> +                       dmas = <&blsp_dma 14>, <&blsp_dma 15>;
> +                       dma-names = "tx", "rx";
> +                       pinctrl-names = "default", "sleep";
> +                       pinctrl-0 = <&i2c6_default>;
> +                       pinctrl-1 = <&i2c6_sleep>;
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +                       status = "disabled";
> +               };
> +

You mentioned not including sound, but it mainly takes just a block
like this here, same as msm8916.dtsi

                sound: sound@7702000 {
                        status = "disabled";
                        compatible = "qcom,apq8016-sbc-sndcard";
                        reg = <0x07702000 0x4>, <0x07702004 0x4>;
                        reg-names = "mic-iomux", "spkr-iomux";
                };

> +               lpass: lpass@7708000 {

Using
                lpass: audio-controller@7708000 {
would be better, to help lk2nd operations wrt sound/modem

> +                       status = "disabled";
> +                       compatible = "qcom,apq8016-lpass-cpu";
> +                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +                                <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
> +                                <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,

This line should be identical to the previous one, ie.
<&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>
like it was done for msm8916 in
8199a0b31e ("arm64: dts: qcom: msm8916: Fix Secondary MI2S bit clock ")

> +                                <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +                                <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
> +
> +                       clock-names = "ahbix-clk",
> +                                       "pcnoc-mport-clk",
> +                                       "pcnoc-sway-clk",
> +                                       "mi2s-bit-clk0",
> +                                       "mi2s-bit-clk1",
> +                                       "mi2s-bit-clk2",
> +                                       "mi2s-bit-clk3";
> +                       #sound-dai-cells = <1>;
> +
> +                       interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "lpass-irq-lpaif";
> +                       reg = <0x07708000 0x10000>;
> +                       reg-names = "lpass-lpaif";
> +
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
> +               lpass_codec: codec{

Using
                lpass_codec: audio-codec@771c000 {
would be also be better, to help lk2nd operations wrt sound/modem

> +                       compatible = "qcom,msm8916-wcd-digital-codec";
> +                       reg = <0x0771c000 0x400>;
> +                       clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +                                <&gcc GCC_CODEC_DIGCODEC_CLK>;
> +                       clock-names = "ahbix-clk", "mclk";
> +                       #sound-dai-cells = <1>;
> +               };
> +
> +               sdhc_1: sdhci@7824000 {
> +                       compatible = "qcom,sdhci-msm-v4";
> +                       reg = <0x07824900 0x11c>, <0x07824000 0x800>;
> +                       reg-names = "hc_mem", "core_mem";
> +
> +                       interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>, <0 138 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "hc_irq", "pwr_irq";
> +                       clocks = <&gcc GCC_SDCC1_APPS_CLK>,
> +                                <&gcc GCC_SDCC1_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "core", "iface", "xo";
> +                       mmc-ddr-1_8v;
> +                       bus-width = <8>;
> +                       non-removable;
> +                       status = "disabled";
> +               };
> +
> +               sdhc_2: sdhci@7864000 {
> +                       compatible = "qcom,sdhci-msm-v4";
> +                       reg = <0x07864900 0x11c>, <0x07864000 0x800>;
> +                       reg-names = "hc_mem", "core_mem";
> +
> +                       interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>, <0 221 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "hc_irq", "pwr_irq";
> +                       clocks = <&gcc GCC_SDCC2_APPS_CLK>,
> +                                <&gcc GCC_SDCC2_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "core", "iface", "xo";
> +                       bus-width = <4>;
> +                       status = "disabled";
> +               };
> +
> +               otg: usb@78d9000 {
> +                       compatible = "qcom,ci-hdrc";
> +                       reg = <0x78d9000 0x200>,
> +                             <0x78d9200 0x200>;
> +                       interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
> +                                    <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&gcc GCC_USB_HS_AHB_CLK>,
> +                                <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +                       clock-names = "iface", "core";
> +                       assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
> +                       assigned-clock-rates = <80000000>;
> +                       resets = <&gcc GCC_USB_HS_BCR>;
> +                       reset-names = "core";
> +                       phy_type = "ulpi";
> +                       dr_mode = "otg";
> +                       ahb-burst-config = <0>;
> +                       phy-names = "usb-phy";
> +                       phys = <&usb_hs_phy>;
> +                       status = "disabled";
> +                       #reset-cells = <1>;
> +
> +                       ulpi {
> +                               usb_hs_phy: phy {
> +                                       compatible = "qcom,usb-hs-phy-msm8916",
> +                                                    "qcom,usb-hs-phy";
> +                                       #phy-cells = <0>;
> +                                       clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
> +                                       clock-names = "ref", "sleep";
> +                                       resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>;
> +                                       reset-names = "phy", "por";
> +                                       qcom,init-seq = /bits/ 8 <0x0 0x44
> +                                               0x1 0x6b 0x2 0x24 0x3 0x13>;
> +                               };
> +                       };
> +               };
> +
> +               intc: interrupt-controller@b000000 {
> +                       compatible = "qcom,msm-qgic2";
> +                       interrupt-controller;
> +                       #interrupt-cells = <3>;
> +                       reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
> +               };
> +
> +               timer@b020000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       ranges;
> +                       compatible = "arm,armv7-timer-mem";
> +                       reg = <0xb020000 0x1000>;
> +                       clock-frequency = <19200000>;
> +
> +                       frame@b021000 {
> +                               frame-number = <0>;
> +                               interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
> +                                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb021000 0x1000>,
> +                                     <0xb022000 0x1000>;
> +                       };
> +
> +                       frame@b023000 {
> +                               frame-number = <1>;
> +                               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb023000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b024000 {
> +                               frame-number = <2>;
> +                               interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb024000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b025000 {
> +                               frame-number = <3>;
> +                               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb025000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b026000 {
> +                               frame-number = <4>;
> +                               interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb026000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b027000 {
> +                               frame-number = <5>;
> +                               interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb027000 0x1000>;
> +                               status = "disabled";
> +                       };
> +
> +                       frame@b028000 {
> +                               frame-number = <6>;
> +                               interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> +                               reg = <0xb028000 0x1000>;
> +                               status = "disabled";
> +                       };
> +               };
> +
> +               spmi_bus: spmi@200f000 {
> +                       compatible = "qcom,spmi-pmic-arb";
> +                       reg = <0x200f000 0x001000>,
> +                             <0x2400000 0x400000>,
> +                             <0x2c00000 0x400000>,
> +                             <0x3800000 0x200000>,
> +                             <0x200a000 0x002100>;
> +                       reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> +                       interrupt-names = "periph_irq";
> +                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
> +                       qcom,ee = <0>;
> +                       qcom,channel = <0>;
> +                       #address-cells = <2>;
> +                       #size-cells = <0>;
> +                       interrupt-controller;
> +                       #interrupt-cells = <4>;
> +               };
> +
> +               rng@22000 {
> +                       compatible = "qcom,prng";
> +                       reg = <0x00022000 0x200>;
> +                       clocks = <&gcc GCC_PRNG_AHB_CLK>;
> +                       clock-names = "core";
> +               };
> +
> +               qfprom: qfprom@5c000 {
> +                       compatible = "qcom,qfprom";
> +                       reg = <0x5c000 0x1000>;
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       tsens_caldata: caldata@a0 {
> +                               reg = <0xa0 0x5c>;
> +                       };
> +               };
> +
> +               tsens: thermal-sensor@4a9000 {
> +                       compatible = "qcom,msm8939-tsens";
> +                       reg = <0x4a9000 0x1000>, /* TM */
> +                             <0x4a8000 0x1000>; /* SROT */
> +                       nvmem-cells = <&tsens_caldata>;
> +                       nvmem-cell-names = "calib";
> +                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "uplow";
> +                       #thermal-sensor-cells = <1>;
> +               };
> +
> +               apps_iommu: iommu@1ef0000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       #iommu-cells = <1>;
> +                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +                       ranges = <0 0x1e20000 0x40000>;
> +                       reg = <0x1ef0000 0x3000>;
> +                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +                                <&gcc GCC_APSS_TCU_CLK>;
> +                       clock-names = "iface", "bus";
> +                       qcom,iommu-secure-id = <17>;
> +
> +                       /* mdp_0: */
> +                       iommu-ctx@4000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x4000 0x1000>;
> +                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +
> +                       /* venus_ns: */
> +                       iommu-ctx@5000 {
> +                               compatible = "qcom,msm-iommu-v1-sec";
> +                               reg = <0x5000 0x1000>;
> +                               interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +               };
> +
> +               gpu_iommu: iommu@1f08000 {
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       #iommu-cells = <1>;
> +                       compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +                       ranges = <0 0x1f08000 0x10000>;
> +                       clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +                                <&gcc GCC_GFX_TCU_CLK>,
> +                                <&gcc GCC_GFX_TBU_CLK>;
> +                       clock-names = "iface", "bus", "tlb";
> +                       qcom,iommu-secure-id = <18>;
> +
> +                       /* gfx3d_user: */
> +                       iommu-ctx@1000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x1000 0x1000>;
> +                               interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +
> +                       /* gfx3d_priv: */
> +                       iommu-ctx@2000 {
> +                               compatible = "qcom,msm-iommu-v1-ns";
> +                               reg = <0x2000 0x1000>;
> +                               interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
> +                       };
> +               };
> +
> +               gpu@1c00000 {
> +                       compatible = "qcom,adreno-405.0", "qcom,adreno";
> +                       reg = <0x01c00000 0x10000>;
> +                       reg-names = "kgsl_3d0_reg_memory";
> +                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> +                       interrupt-names = "kgsl_3d0_irq";
> +                       clock-names =
> +                           "core",
> +                           "iface",
> +                           "mem",
> +                           "mem_iface",
> +                           "alt_mem_iface",
> +                           "gfx3d",
> +                           "rbbmtimer";
> +                       clocks =
> +                           <&gcc GCC_OXILI_GFX3D_CLK>,
> +                           <&gcc GCC_OXILI_AHB_CLK>,
> +                           <&gcc GCC_OXILI_GMEM_CLK>,
> +                           <&gcc GCC_BIMC_GFX_CLK>,
> +                           <&gcc GCC_BIMC_GPU_CLK>,
> +                           <&gcc GFX3D_CLK_SRC>,
> +                           <&gcc GCC_OXILI_TIMER_CLK>;
> +                       power-domains = <&gcc OXILI_GDSC>;
> +                       operating-points-v2 = <&gpu_opp_table>;
> +                       iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
> +               };
> +
> +               mdss: mdss@1a00000 {
> +                       compatible = "qcom,mdss";
> +                       reg = <0x1a00000 0x1000>,
> +                             <0x1ac8000 0x3000>;
> +                       reg-names = "mdss_phys", "vbif_phys";
> +
> +                       power-domains = <&gcc MDSS_GDSC>;
> +
> +                       clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +                                <&gcc GCC_MDSS_AXI_CLK>,
> +                                <&gcc GCC_MDSS_VSYNC_CLK>;
> +                       clock-names = "iface",
> +                                     "bus",
> +                                     "vsync";
> +
> +                       interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <1>;
> +
> +                       #address-cells = <1>;
> +                       #size-cells = <1>;
> +                       ranges;
> +
> +                       mdp: mdp@1a01000 {
> +                               compatible = "qcom,mdp5";
> +                               reg = <0x1a01000 0x89000>;
> +                               reg-names = "mdp_phys";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <0 0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_VSYNC_CLK>,
> +                                        <&gcc GCC_MDP_TBU_CLK>,
> +                                        <&gcc GCC_MDP_RT_TBU_CLK>;
> +                               clock-names = "iface",
> +                                             "bus",
> +                                             "core",
> +                                             "vsync",
> +                                             "tbu",
> +                                             "tbu_rt";
> +
> +                               iommus = <&apps_iommu 4>;
> +
> +                               interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
> +                                               <&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
> +                               interconnect-names = "mdp0-mem", "mdp1-mem";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               mdp5_intf1_out: endpoint {
> +                                                       remote-endpoint = <&dsi0_in>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               mdp5_intf2_out: endpoint {
> +                                                       remote-endpoint = <&dsi1_in>;
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi0: dsi@1a98000 {
> +                               compatible = "qcom,mdss-dsi-ctrl";
> +                               reg = <0x1a98000 0x25c>;
> +                               reg-names = "dsi_ctrl";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <4 0>;
> +
> +                               assigned-clocks = <&gcc BYTE0_CLK_SRC>,
> +                                                 <&gcc PCLK0_CLK_SRC>;
> +                               assigned-clock-parents = <&dsi0_phy 0>,
> +                                                        <&dsi0_phy 1>;
> +
> +                               clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_BYTE0_CLK>,
> +                                        <&gcc GCC_MDSS_PCLK0_CLK>,
> +                                        <&gcc GCC_MDSS_ESC0_CLK>;
> +                               clock-names = "mdp_core",
> +                                             "iface",
> +                                             "bus",
> +                                             "byte",
> +                                             "pixel",
> +                                             "core";
> +                               phys = <&dsi0_phy>;
> +                               phy-names = "dsi-phy";
> +                               status = "disabled";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               dsi0_in: endpoint {
> +                                                       remote-endpoint = <&mdp5_intf1_out>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               dsi0_out: endpoint {
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi1: dsi@1aa0000 {
> +                               compatible = "qcom,mdss-dsi-ctrl";
> +                               reg = <0x1aa0000 0x25c>;
> +                               reg-names = "dsi_ctrl";
> +
> +                               interrupt-parent = <&mdss>;
> +                               interrupts = <5 0>;
> +
> +                               assigned-clocks = <&gcc BYTE1_CLK_SRC>,
> +                                                 <&gcc PCLK1_CLK_SRC>;
> +                               assigned-clock-parents = <&dsi1_phy 0>,
> +                                                        <&dsi1_phy 1>;
> +
> +                               clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +                                        <&gcc GCC_MDSS_AHB_CLK>,
> +                                        <&gcc GCC_MDSS_AXI_CLK>,
> +                                        <&gcc GCC_MDSS_BYTE1_CLK>,
> +                                        <&gcc GCC_MDSS_PCLK1_CLK>,
> +                                        <&gcc GCC_MDSS_ESC1_CLK>;
> +                               clock-names = "mdp_core",
> +                                             "iface",
> +                                             "bus",
> +                                             "byte",
> +                                             "pixel",
> +                                             "core";
> +                               phys = <&dsi1_phy>;
> +                               phy-names = "dsi-phy";
> +                               status = "disabled";
> +
> +                               ports {
> +                                       #address-cells = <1>;
> +                                       #size-cells = <0>;
> +
> +                                       port@0 {
> +                                               reg = <0>;
> +                                               dsi1_in: endpoint {
> +                                                       remote-endpoint = <&mdp5_intf2_out>;
> +                                               };
> +                                       };
> +
> +                                       port@1 {
> +                                               reg = <1>;
> +                                               dsi1_out: endpoint {
> +                                               };
> +                                       };
> +                               };
> +                       };
> +
> +                       dsi0_phy: dsi-phy@1a98300 {
> +                               compatible = "qcom,dsi-phy-28nm-lp";
> +                               reg = <0x1a98300 0xd4>,
> +                                     <0x1a98500 0x280>,
> +                                     <0x1a98780 0x30>;
> +                               reg-names = "dsi_pll",
> +                                           "dsi_phy",
> +                                           "dsi_phy_regulator";
> +
> +                               #clock-cells = <1>;
> +                               #phy-cells = <0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +                               clock-names = "iface";
> +                               qcom,dsi-phy-regulator-ldo-mode;
> +                               status = "disabled";
> +                       };
> +
> +                       dsi1_phy: dsi-phy@1aa0300 {
> +                               compatible = "qcom,dsi-phy-28nm-lp";
> +                               reg = <0x1aa0300 0xd4>,
> +                                     <0x1aa0500 0x280>,
> +                                     <0x1aa0780 0x30>;
> +                               reg-names = "dsi_pll",
> +                                           "dsi_phy",
> +                                           "dsi_phy_regulator";
> +
> +                               #clock-cells = <1>;
> +                               #phy-cells = <0>;
> +
> +                               clocks = <&gcc GCC_MDSS_AHB_CLK>;
> +                               clock-names = "iface";
> +                               qcom,dsi-phy-regulator-ldo-mode;
> +                               status = "disabled";
> +                       };
> +               };
> +
> +               hexagon@4080000 {

Using
                mpss: remoteproc@4080000 {
also helps lk2nd bootloader operations wrt modem enablement

> +                       compatible = "qcom,q6v5-pil";
> +                       reg = <0x04080000 0x100>,
> +                             <0x04020000 0x040>;
> +
> +                       reg-names = "qdsp6", "rmb";
> +
> +                       interrupts-extended = <&intc 0 24 1>,
> +                                             <&hexagon_smp2p_in 0 0>,
> +                                             <&hexagon_smp2p_in 1 0>,
> +                                             <&hexagon_smp2p_in 2 0>,
> +                                             <&hexagon_smp2p_in 3 0>;
> +                       interrupt-names = "wdog", "fatal", "ready",
> +                                         "handover", "stop-ack";
> +
> +                       clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
> +                                <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
> +                                <&gcc GCC_BOOT_ROM_AHB_CLK>,
> +                                <&xo_board>;
> +                       clock-names = "iface", "bus", "mem", "xo";
> +
> +                       qcom,smem-states = <&hexagon_smp2p_out 0>;
> +                       qcom,smem-state-names = "stop";
> +
> +                       resets = <&scm 0>;
> +                       reset-names = "mss_restart";
> +
> +                       power-domains = <&rpmpd MSM8939_VDDMDCX_AO>,
> +                                       <&rpmpd MSM8939_VDDMX>;
> +                       power-domain-names = "cx", "mx";
> +                       pll-supply = <&pm8916_l7>;
> +
> +                       qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
> +
> +                       status = "disabled";
> +
> +                       mba {
> +                               memory-region = <&mba_mem>;
> +                       };
> +
> +                       mpss {
> +                               memory-region = <&mpss_mem>;
> +                       };
> +
> +                       smd-edge {
> +                               interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
> +
> +                               qcom,smd-edge = <0>;
> +                               mboxes = <&apcs1_mbox 12>;
> +                               qcom,remote-pid = <1>;
> +
> +                               label = "hexagon";
> +                       };
> +               };
> +
> +               pronto: wcnss@a204000 {

Using
                pronto: remoteproc@a204000 {
also helps lk2nd

> +                       compatible = "qcom,pronto-v2-pil", "qcom,pronto";
> +                       reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
> +                       reg-names = "ccu", "dxe", "pmu";
> +
> +                       memory-region = <&wcnss_mem>;
> +
> +                       interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
> +                                             <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
> +                       interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
> +
> +                       power-domains = <&rpmpd MSM8939_VDDCX>,
> +                                       <&rpmpd MSM8939_VDDMX_AO>;
> +                       power-domain-names = "cx", "mx";
> +                       vddpx-supply = <&pm8916_l7>;
> +
> +                       qcom,state = <&wcnss_smp2p_out 0>;
> +                       qcom,state-names = "stop";
> +
> +                       pinctrl-names = "default";
> +                       pinctrl-0 = <&wcnss_pin_a>;
> +
> +                       status = "disabled";
> +
> +                       iris {
> +                               compatible = "qcom,wcn3660";
> +
> +                               clocks = <&rpmcc RPM_SMD_RF_CLK2>;
> +                               clock-names = "xo";
> +
> +                               vddxo-supply = <&pm8916_l7>;
> +                               vddrfa-supply = <&pm8916_s3>;
> +                               vddpa-supply = <&pm8916_l9>;
> +                               vdddig-supply = <&pm8916_l5>;
> +                       };
> +
> +                       smd-edge {
> +                               interrupts = <0 142 1>;
> +
> +                               qcom,ipc = <&apcs1 8 17>;
> +                               qcom,smd-edge = <6>;
> +                               qcom,remote-pid = <4>;
> +
> +                               label = "pronto";
> +
> +                               wcnss {
> +                                       compatible = "qcom,wcnss";
> +                                       qcom,smd-channels = "WCNSS_CTRL";
> +
> +                                       qcom,mmio = <&pronto>;
> +
> +                                       bt {
> +                                               compatible = "qcom,wcnss-bt";
> +                                       };
> +
> +                                       wifi {
> +                                               compatible = "qcom,wcnss-wlan";
> +
> +                                               interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
> +                                                            <0 146 IRQ_TYPE_LEVEL_HIGH>;
> +                                               interrupt-names = "tx", "rx";
> +
> +                                               qcom,smem-states = <&apps_smsm 10>,
> +                                                                  <&apps_smsm 9>;
> +                                               qcom,smem-state-names = "tx-enable",
> +                                                                       "tx-rings-empty";
> +                                       };
> +                               };
> +                       };
> +               };
> +
> +               venus: video-codec@1d00000 {
> +                       compatible = "qcom,msm8916-venus";
> +                       reg = <0x01d00000 0xff000>;
> +                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> +                       power-domains = <&gcc VENUS_GDSC>;
> +                       clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
> +                                <&gcc GCC_VENUS0_AHB_CLK>,
> +                                <&gcc GCC_VENUS0_AXI_CLK>;
> +                       clock-names = "core", "iface", "bus";
> +                       iommus = <&apps_iommu 5>;
> +                       memory-region = <&venus_mem>;
> +                       status = "okay";
> +
> +                       video-decoder {
> +                               compatible = "venus-decoder";
> +                       };
> +
> +                       video-encoder {
> +                               compatible = "venus-encoder";
> +                       };
> +               };
> +
> +               bimc: interconnect@400000 {
> +                       compatible = "qcom,msm8939-bimc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x400000 0x62000>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
> +                                <&rpmcc RPM_SMD_BIMC_A_CLK>;
> +                       status = "okay";
> +               };
> +
> +               pcnoc: interconnect@500000 {
> +                       compatible = "qcom,msm8939-pcnoc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x500000 0x11000>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
> +                                <&rpmcc RPM_SMD_PCNOC_A_CLK>;
> +                       status = "okay";
> +               };
> +
> +               snoc: interconnect@580000 {
> +                       compatible = "qcom,msm8939-snoc";
> +                       #interconnect-cells = <1>;
> +                       reg = <0x580000 0x14080>;
> +                       clock-names = "bus", "bus_a";
> +                       clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
> +                                <&rpmcc RPM_SMD_SNOC_A_CLK>;
> +                       status = "okay";
> +
> +                       snoc_mm: interconnect-snoc-mm {
> +                               compatible = "qcom,msm8939-snoc-mm";
> +                               #interconnect-cells = <1>;
> +                               clock-names = "bus", "bus_a";
> +                               clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
> +                                        <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
> +                               status = "okay";
> +                       };
> +
> +               };
> +       };
> +
> +       smd {
> +               compatible = "qcom,smd";
> +
> +               rpm {
> +                       interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> +                       qcom,ipc = <&apcs1 8 0>;
> +                       qcom,smd-edge = <15>;
> +
> +                       rpm_requests: rpm_requests {
> +                               compatible = "qcom,rpm-msm8936";
> +                               qcom,smd-channels = "rpm_requests";
> +
> +                               rpmcc: qcom,rpmcc {
> +                                       compatible = "qcom,rpmcc-msm8936";
> +                                       #clock-cells = <1>;
> +                               };
> +
> +                               rpmpd: power-controller {
> +                                       compatible = "qcom,msm8939-rpmpd";
> +                                       #power-domain-cells = <1>;
> +                                       operating-points-v2 = <&rpmpd_opp_table>;
> +
> +                                       rpmpd_opp_table: opp-table {
> +                                               compatible = "operating-points-v2";
> +
> +                                               rpmpd_opp_ret: opp1 {
> +                                                       opp-level = <1>;
> +                                               };
> +
> +                                               rpmpd_opp_svs_krait: opp2 {
> +                                                       opp-level = <2>;
> +                                               };
> +
> +                                               rpmpd_opp_svs_soc: opp3 {
> +                                                       opp-level = <3>;
> +                                               };
> +
> +                                               rpmpd_opp_nom: opp4 {
> +                                                       opp-level = <4>;
> +                                               };
> +
> +                                               rpmpd_opp_turbo: opp5 {
> +                                                       opp-level = <5>;
> +                                               };
> +
> +                                               rpmpd_opp_super_turbo: opp6 {
> +                                                       opp-level = <6>;
> +                                               };
> +                                       };
> +                               };
> +                       };
> +               };
> +       };
> +
> +       hexagon-smp2p {
> +               compatible = "qcom,smp2p";
> +               qcom,smem = <435>, <428>;
> +
> +               interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
> +
> +               mboxes = <&apcs1_mbox 14>;
> +
> +               qcom,local-pid = <0>;
> +               qcom,remote-pid = <1>;
> +
> +               hexagon_smp2p_out: master-kernel {
> +                       qcom,entry-name = "master-kernel";
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               hexagon_smp2p_in: slave-kernel {
> +                       qcom,entry-name = "slave-kernel";
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +
> +       wcnss-smp2p {
> +               compatible = "qcom,smp2p";
> +               qcom,smem = <451>, <431>;
> +
> +               interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
> +
> +               mboxes = <&apcs1_mbox 18>;
> +
> +               qcom,local-pid = <0>;
> +               qcom,remote-pid = <4>;
> +
> +               wcnss_smp2p_out: master-kernel {
> +                       qcom,entry-name = "master-kernel";
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               wcnss_smp2p_in: slave-kernel {
> +                       qcom,entry-name = "slave-kernel";
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +
> +       smsm {
> +               compatible = "qcom,smsm";
> +
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +
> +               qcom,ipc-1 = <&apcs1 8 13>;
> +               qcom,ipc-3 = <&apcs1 8 19>;
> +
> +               apps_smsm: apps@0 {
> +                       reg = <0>;
> +
> +                       #qcom,smem-state-cells = <1>;
> +               };
> +
> +               hexagon_smsm: hexagon@1 {
> +                       reg = <1>;
> +                       interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +
> +               wcnss_smsm: wcnss@6 {
> +                       reg = <6>;
> +                       interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
> +
> +                       interrupt-controller;
> +                       #interrupt-cells = <2>;
> +               };
> +       };
> +};
> +
> +#include "msm8916-pins.dtsi"



^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
  2022-04-19  7:35   ` Krzysztof Kozlowski
@ 2022-04-19 19:20   ` Stephan Gerhold
  2022-04-19 21:43     ` Bryan O'Donoghue
  2022-04-19 21:39   ` Bjorn Andersson
  2 siblings, 1 reply; 34+ messages in thread
From: Stephan Gerhold @ 2022-04-19 19:20 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac, Leo Yan

On Tue, Apr 19, 2022 at 02:09:02AM +0100, Bryan O'Donoghue wrote:
> The apq8039-t2 is an apq8039/msm8939 based board paired with a wcn3680b
> WiFi chipset.
>
> [...]
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../boot/dts/qcom/apq8039-t2-pinctl.dtsi      | 277 +++++++++++++++
>  arch/arm64/boot/dts/qcom/apq8039-t2.dts       | 326 ++++++++++++++++++
>  3 files changed, 604 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
>  create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2.dts
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index f9e6343acd03..5b8a0eb34733 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -1,5 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0
>  dtb-$(CONFIG_ARCH_QCOM)	+= apq8016-sbc.dtb
> +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
> diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
> new file mode 100644
> index 000000000000..60adb3da826a
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi

We stopped separating the pinctrl in an extra .dtsi. Please just put it
at the end of the apq8039-t2.dts or sorted with the other nodes.
(I put them at the end for all the msm8916 device trees, but on newer
 SoCs it's usually just put normally in alphebetical order.)

> [...]
> @@ -0,0 +1,277 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> +
> +/*
> + * Line names are taken from the schematic of T2, Ver X03.
> + * July 14, 2018. Page 4 in particular.
> + */
> +
> +&msmgpio {
> + [...]
> +	typec_pins: typec_pins {
> +		pinmux_irqz {
> +			function = "gpio";
> +			pins = "gpio107";
> +		};
> +		pinconf_irqz {
> +			pins = "gpio107";
> +			bias-pull-up;
> +			input-enable;
> +		};
> +	};

You can write this like:

typec_pins: typec_pins {
	pins = "gpio107";
	function = "gpio";

	bias-pull-up;
	input-enable;
};

The separation and separate "pinmux" etc nodes shouldn't be needed. Also
see commit 6554a295042f7 ("arm64: dts: qcom: msm8916: Simplify pinctrl
configuration").

> + [...]
> +};
> + [...]
> diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2.dts b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
> new file mode 100644
> index 000000000000..558f37945d94
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
> @@ -0,0 +1,326 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2022, Linaro Ltd.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.

SPDX should be enough. :)

> + */
> + [...]
> +};
> +&otg {
> +	status = "okay";
> +	usb-role-switch;
> +
> +	pinctrl-names = "default", "host", "device";
> +	pinctrl-0 = <&pinctrl_otg_default>;
> +	pinctrl-1 = <&pinctrl_otg_host>;
> +	pinctrl-2 = <&pinctrl_otg_device>;
> +	pin-switch-delay-us = <100000>;
> +
> +	ulpi {
> +		usb_hs_phy: phy {
> +			qcom,enable-vbus-pullup;

Hm, what handles the USB detection on this port? The tps6598x?
Can it provide an extcon so that you don't need to keep the USB PHY
powered permanently?

> + [...]
> +&pronto {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wcnss_pin_a &wcnss_pin_antennae>;
> +	status = "okay";
> +
> +	iris {
> +		compatible = "qcom,wcn3680";
> +	};
> +
> +	smd-edge {
> +		wcnss {
> +			bt {
> +				local-bd-address = [ 55 44 33 22 11 00 ];

Is this really needed?

The DB410c LK and U-Boot port (and also lk2nd) automatically generate a
WiFi/BT address based on the eMMC serial number. That's probably a
better solution than a fixed MAC address specified here.

Thanks,
Stephan

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19  1:09 ` [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua Bryan O'Donoghue
@ 2022-04-19 19:27   ` Stephan Gerhold
  2022-04-19 22:03     ` Bryan O'Donoghue
  2022-04-19 21:51   ` Bjorn Andersson
  1 sibling, 1 reply; 34+ messages in thread
From: Stephan Gerhold @ 2022-04-19 19:27 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac

On Tue, Apr 19, 2022 at 02:09:03AM +0100, Bryan O'Donoghue wrote:
> Add a basic booting DTS for the Sony Xperia M4 Aqua aka "tulip".
> 
> Tulip is paired with:
> 
> - wcn3660
> - smb1360 battery charger
> - 720p Truly NT35521 Panel
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../qcom/msm8939-sony-xperia-kanuti-tulip.dts | 489 ++++++++++++++++++
>  2 files changed, 490 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> 
> [...]
> diff --git a/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> new file mode 100644
> index 000000000000..336969f16bc9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> @@ -0,0 +1,489 @@
> [...]
> +&otg {
> +	status = "okay";
> +	usb-role-switch;
> +
> +	ulpi {
> +		usb_hs_phy: phy {
> +			qcom,enable-vbus-pullup;

tulip seems to have qcom,usbid-gpio = <&msm_gpio 110 0>; downstream.
Have you tried setting it up using linux,extcon-usb-gpio?
See e.g. msm8916-longcheer-l8910, it has a similar setup (it also uses
smb1360 for charging actually).

The advantage is that you don't need the manual role switching using
"usb-role-switch", USB OTG adapters should be detected automatically.

Thanks,
Stephan

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
                     ` (3 preceding siblings ...)
  2022-04-19 18:47   ` Vincent Knecht
@ 2022-04-19 21:11   ` Bjorn Andersson
  2022-04-20  5:34     ` Stephan Gerhold
  4 siblings, 1 reply; 34+ messages in thread
From: Bjorn Andersson @ 2022-04-19 21:11 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, robh+dt, krzk+dt, linux-arm-msm, devicetree, shawn.guo,
	jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On Mon 18 Apr 20:09 CDT 2022, Bryan O'Donoghue wrote:

> Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> differences to msm8916.
> 

Thanks for posting this Bryan, happy to see this being moved upstream,
despite the PSCI shortcomings.

> - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> - DRAM 1x800 LPDDR3
> - Camera 4+4 lane CSI
> - Venus @ 1080p60 HEVC
> - DSI x 2
> - Adreno A405
> - WiFi wcn3660/wcn3680b 802.11ac
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
>  1 file changed, 2017 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> 
> diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> new file mode 100644
> index 000000000000..f1aa79b7d0e9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> @@ -0,0 +1,2017 @@
> +// SPDX-License-Identifier: BSD-3-Clause

Nice

> +/*
> + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2020-2022, Linaro Limited
> + *

The reminder of this comment denotes that the file is licensed under
GPL, which should be covered by the SPDX license, but is now in conflict
with it...

> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +#include <dt-bindings/interconnect/qcom,msm8939.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> +#include <dt-bindings/clock/qcom,rpmcc.h>
> +#include <dt-bindings/power/qcom-rpmpd.h>
> +#include <dt-bindings/thermal/thermal.h>
> +
> +/ {
> +	model = "Qualcomm Technologies, Inc. MSM8939";
> +	compatible = "qcom,msm8939";

It's expected that the board dts will specify both model and
compatible, so these should always be overridden and as such can be
omitted from the dtsi.

> +	qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
> +
> +	interrupt-parent = <&intc>;
> +
> +	#address-cells = <2>;
> +	#size-cells = <2>;

Why are these 2 when /soc uses 1?

> +
> +	memory {

Please do keep nodes sorted, primarily by address, then alphabetically.

> +		device_type = "memory";
> +		/* We expect the bootloader to fill in the reg */
> +		reg = <0 0 0 0>;
> +	};
[..]
> +	cci_opp_table: cci-opp-table {

I don't see a reference to this, please introduce it together with the
consumer node. And as with the &gpu_opp_table below.

> +		compatible = "operating-points-v2";
> +
> +		opp-200000000 {
> +			opp-hz = /bits/ 64 <200000000>;
> +		};
> +
> +		opp-297600000 {
> +			opp-hz = /bits/ 64 <297600000>;
> +		};
> +
> +		opp-400000000 {
> +			opp-hz = /bits/ 64 <400000000>;
> +		};
> +
> +		opp-595200000 {
> +			opp-hz = /bits/ 64 <595200000>;
> +		};
> +	};
> +
> +	gpu_opp_table: gpu-opp-table {

&gpu_opp_table is tied to the gpu node, so it can with favor be moved
into the gpu node itself - and can then be named simply "opp-table".

> +		compatible = "operating-points-v2";
> +
> +		opp-550000000 {
> +			opp-hz = /bits/ 64 <550000000>;
> +		};
> +
> +		opp-465000000 {
> +			opp-hz = /bits/ 64 <465000000>;
> +		};
> +
> +		opp-400000000 {
> +			opp-hz = /bits/ 64 <400000000>;
> +		};
> +
> +		opp-220000000 {
> +			opp-hz = /bits/ 64 <220000000>;
> +		};
> +
> +		opp-19200000 {
> +			opp-hz = /bits/ 64 <19200000>;
> +		};
> +	};
[..]
> +	clocks {
> +		xo_board: xo_board {

No underscores in node names. If you still rely on string based
parent_names in the clock drivers add a clock-output-names property to
make the name "xo_board".

But preferably you'd switch to use parent_data and fw_name based clock
parent lookup in the clock drivers.

> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-frequency = <19200000>;
> +		};
> +
> +		sleep_clk: sleep_clk {
> +			compatible = "fixed-clock";
> +			#clock-cells = <0>;
> +			clock-frequency = <32768>;
> +		};
> +	};
> +
> +	smem {

Per the binding you may now add the additional properties to &smem_mem
and avoid having this intermediate node connecting the various smem
pieces together.

> +		compatible = "qcom,smem";
> +
> +		memory-region = <&smem_mem>;
> +		qcom,rpm-msg-ram = <&rpm_msg_ram>;
> +
> +		hwlocks = <&tcsr_mutex 3>;
> +	};
> +
> +	firmware {
> +		scm: scm {
> +			compatible = "qcom,scm";
> +			clocks = <&gcc GCC_CRYPTO_CLK>,
> +				 <&gcc GCC_CRYPTO_AXI_CLK>,
> +				 <&gcc GCC_CRYPTO_AHB_CLK>;
> +			clock-names = "core", "bus", "iface";
> +			#reset-cells = <1>;
> +
> +			qcom,dload-mode = <&tcsr 0x6100>;
> +		};
> +	};
> +
> +	soc: soc {

This should be soc@0

> +		#address-cells = <1>;
> +		#size-cells = <1>;
> +		ranges = <0 0 0 0xffffffff>;
> +		compatible = "simple-bus";
> +
> +		qfprom_cpr: qfprom_cpr@58000 {

0x58000 is the raw qfprom interface, while the CRC corrected values are
available at 0x5c000. As such, you should quite likely move the cell
definitions to &qfprom and drop this node.

No underscores in node names.

> +			compatible = "qcom,qfprom";
> +			reg = <0x00058000 0x1000>;
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			cpr_efuse_init_voltage1: ivoltage1@dc {
> +				reg = <0xdc 0x4>;
> +				bits = <4 6>;
> +			};
> +			cpr_efuse_init_voltage2: ivoltage2@da {
> +				reg = <0xda 0x4>;
> +				bits = <2 6>;
> +			};
> +			cpr_efuse_init_voltage3: ivoltage3@d8 {
> +				reg = <0xd8 0x4>;
> +				bits = <0 6>;
> +			};
> +			cpr_efuse_quot1: quot1@dc {
> +				reg = <0xdd 0x8>;
> +				bits = <2 12>;
> +			};
> +			cpr_efuse_quot2: quot2@da {
> +				reg = <0xdb 0x8>;
> +				bits = <0x0 12>;
> +			};
> +			cpr_efuse_quot3: quot3@d8 {
> +				reg = <0xd8 0x8>;
> +				bits = <6 12>;
> +			};
> +			cpr_efuse_ring1: ring1@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_ring2: ring2@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_ring3: ring3@de {
> +				reg = <0xde 0x4>;
> +				bits = <6 3>;
> +			};
> +			cpr_efuse_revision: revision@4 {
> +				reg = <0x5 0x1>;
> +				bits = <5 1>;
> +			};
> +			cpr_efuse_revision_high: revision_high@4 {
> +				reg = <0x7 0x1>;
> +				bits = <0 1>;
> +			};
> +			cpr_efuse_pvs_version: pvs@4 {
> +				reg = <0x3 0x1>;
> +				bits = <5 1>;
> +			};
> +			cpr_efuse_pvs_version_high: pvs_high@4 {
> +				reg = <0x6 0x1>;
> +				bits = <2 2>;
> +			};
> +			cpr_efuse_speedbin: speedbin@c {
> +				reg = <0xc 0x1>;
> +				bits = <2 3>;
> +			};
> +
> +		};
> +
> +		acc0: clock-controller@b088000 {
> +			compatible = "qcom,kpss-acc-v2";
> +			reg = <0xb088000 0x1000>;

If you pad all addresses to 8 digits it's much faster so see if the
nodes are sorted.

And please sort the nodes by address.

> +		};
> +
[..]
> +		tcsr_mutex: hwlock {
> +			compatible = "qcom,tcsr-mutex";

Without a reg this should live outside /soc, but in order to avoid the
dummy tcsr-mutex node just pointing to a nameless syscon the binding has
been changed such that you should move the compatible and #hwlock-cells
to &tcsr_mutex_regs directly.

> +			syscon = <&tcsr_mutex_regs 0 0x1000>;
> +			#hwlock-cells = <1>;
> +		};
> +
> +		rpm_msg_ram: memory@60000 {
> +			compatible = "qcom,rpm-msg-ram";
> +			reg = <0x60000 0x8000>;
> +		};
[..]
> +
> +		lpass: lpass@7708000 {
> +			status = "disabled";

Please move status last in this node.

> +			compatible = "qcom,apq8016-lpass-cpu";
> +			clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> +				 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
> +				 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> +				 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
> +
> +			clock-names = "ahbix-clk",
> +					"pcnoc-mport-clk",
> +					"pcnoc-sway-clk",
> +					"mi2s-bit-clk0",
> +					"mi2s-bit-clk1",
> +					"mi2s-bit-clk2",
> +					"mi2s-bit-clk3";
> +			#sound-dai-cells = <1>;
> +
> +			interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "lpass-irq-lpaif";
> +			reg = <0x07708000 0x10000>;
> +			reg-names = "lpass-lpaif";
> +
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
[..]
> +		apps_iommu: iommu@1ef0000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			#iommu-cells = <1>;

Please start with compatible, reg, clocks etc used by the node. Then
properties related to what's exposed, followed by the subnodes.

> +			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +			ranges = <0 0x1e20000 0x40000>;
> +			reg = <0x1ef0000 0x3000>;
> +			clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +				 <&gcc GCC_APSS_TCU_CLK>;
> +			clock-names = "iface", "bus";
> +			qcom,iommu-secure-id = <17>;
> +
> +			/* mdp_0: */
> +			iommu-ctx@4000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x4000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +
> +			/* venus_ns: */
> +			iommu-ctx@5000 {
> +				compatible = "qcom,msm-iommu-v1-sec";
> +				reg = <0x5000 0x1000>;
> +				interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +		};
> +
> +		gpu_iommu: iommu@1f08000 {
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			#iommu-cells = <1>;
> +			compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> +			ranges = <0 0x1f08000 0x10000>;
> +			clocks = <&gcc GCC_SMMU_CFG_CLK>,
> +				 <&gcc GCC_GFX_TCU_CLK>,
> +				 <&gcc GCC_GFX_TBU_CLK>;
> +			clock-names = "iface", "bus", "tlb";
> +			qcom,iommu-secure-id = <18>;
> +
> +			/* gfx3d_user: */
> +			iommu-ctx@1000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x1000 0x1000>;
> +				interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +
> +			/* gfx3d_priv: */
> +			iommu-ctx@2000 {
> +				compatible = "qcom,msm-iommu-v1-ns";
> +				reg = <0x2000 0x1000>;
> +				interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
> +			};
> +		};
> +
> +		gpu@1c00000 {
> +			compatible = "qcom,adreno-405.0", "qcom,adreno";
> +			reg = <0x01c00000 0x10000>;
> +			reg-names = "kgsl_3d0_reg_memory";
> +			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> +			interrupt-names = "kgsl_3d0_irq";
> +			clock-names =

Please line break after the first entry, rather than before. Then indent
to match that.

> +			    "core",
> +			    "iface",
> +			    "mem",
> +			    "mem_iface",
> +			    "alt_mem_iface",
> +			    "gfx3d",
> +			    "rbbmtimer";
> +			clocks =
> +			    <&gcc GCC_OXILI_GFX3D_CLK>,
> +			    <&gcc GCC_OXILI_AHB_CLK>,
> +			    <&gcc GCC_OXILI_GMEM_CLK>,
> +			    <&gcc GCC_BIMC_GFX_CLK>,
> +			    <&gcc GCC_BIMC_GPU_CLK>,
> +			    <&gcc GFX3D_CLK_SRC>,
> +			    <&gcc GCC_OXILI_TIMER_CLK>;
> +			power-domains = <&gcc OXILI_GDSC>;
> +			operating-points-v2 = <&gpu_opp_table>;
> +			iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
> +		};
> +
> +		mdss: mdss@1a00000 {
> +			compatible = "qcom,mdss";
> +			reg = <0x1a00000 0x1000>,
> +			      <0x1ac8000 0x3000>;
> +			reg-names = "mdss_phys", "vbif_phys";
> +
> +			power-domains = <&gcc MDSS_GDSC>;
> +
> +			clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +				 <&gcc GCC_MDSS_AXI_CLK>,
> +				 <&gcc GCC_MDSS_VSYNC_CLK>;
> +			clock-names = "iface",
> +				      "bus",
> +				      "vsync";
> +
> +			interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;

s/0/GIT_SPI/

> +
> +			interrupt-controller;
> +			#interrupt-cells = <1>;
> +
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +			ranges;
> +
> +			mdp: mdp@1a01000 {

If you label this mdss_mdp: instead the nodes would group nicely in the
board dts as references there should be sorted by label.

> +				compatible = "qcom,mdp5";
> +				reg = <0x1a01000 0x89000>;
> +				reg-names = "mdp_phys";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <0 0>;

&mdss is #interrupt-cells = <1>, so the second 0 should go.

> +
> +				clocks = <&gcc GCC_MDSS_AHB_CLK>,
> +					 <&gcc GCC_MDSS_AXI_CLK>,
> +					 <&gcc GCC_MDSS_MDP_CLK>,
> +					 <&gcc GCC_MDSS_VSYNC_CLK>,
> +					 <&gcc GCC_MDP_TBU_CLK>,
> +					 <&gcc GCC_MDP_RT_TBU_CLK>;
> +				clock-names = "iface",
> +					      "bus",
> +					      "core",
> +					      "vsync",
> +					      "tbu",
> +					      "tbu_rt";
> +
> +				iommus = <&apps_iommu 4>;
> +
> +				interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
> +						<&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
> +				interconnect-names = "mdp0-mem", "mdp1-mem";
> +
> +				ports {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					port@0 {
> +						reg = <0>;
> +						mdp5_intf1_out: endpoint {
> +							remote-endpoint = <&dsi0_in>;
> +						};
> +					};
> +
> +					port@1 {
> +						reg = <1>;
> +						mdp5_intf2_out: endpoint {
> +							remote-endpoint = <&dsi1_in>;
> +						};
> +					};
> +				};
> +			};
> +
> +			dsi0: dsi@1a98000 {

As above, mdss_dsi0:

> +				compatible = "qcom,mdss-dsi-ctrl";
> +				reg = <0x1a98000 0x25c>;
> +				reg-names = "dsi_ctrl";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <4 0>;

Same as &mdp.

> +
> +				assigned-clocks = <&gcc BYTE0_CLK_SRC>,
> +						  <&gcc PCLK0_CLK_SRC>;
> +				assigned-clock-parents = <&dsi0_phy 0>,
> +							 <&dsi0_phy 1>;
> +
> +				clocks = <&gcc GCC_MDSS_MDP_CLK>,
> +					 <&gcc GCC_MDSS_AHB_CLK>,
> +					 <&gcc GCC_MDSS_AXI_CLK>,
> +					 <&gcc GCC_MDSS_BYTE0_CLK>,
> +					 <&gcc GCC_MDSS_PCLK0_CLK>,
> +					 <&gcc GCC_MDSS_ESC0_CLK>;
> +				clock-names = "mdp_core",
> +					      "iface",
> +					      "bus",
> +					      "byte",
> +					      "pixel",
> +					      "core";
> +				phys = <&dsi0_phy>;
> +				phy-names = "dsi-phy";
> +				status = "disabled";
> +
> +				ports {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
> +
> +					port@0 {
> +						reg = <0>;
> +						dsi0_in: endpoint {
> +							remote-endpoint = <&mdp5_intf1_out>;
> +						};
> +					};
> +
> +					port@1 {
> +						reg = <1>;
> +						dsi0_out: endpoint {
> +						};
> +					};
> +				};
> +			};
> +
> +			dsi1: dsi@1aa0000 {

mdss_dsi1:

> +				compatible = "qcom,mdss-dsi-ctrl";
> +				reg = <0x1aa0000 0x25c>;
> +				reg-names = "dsi_ctrl";
> +
> +				interrupt-parent = <&mdss>;
> +				interrupts = <5 0>;
> +
> +				assigned-clocks = <&gcc BYTE1_CLK_SRC>,
> +						  <&gcc PCLK1_CLK_SRC>;
> +				assigned-clock-parents = <&dsi1_phy 0>,
> +							 <&dsi1_phy 1>;
> +
[..]
> +
> +		hexagon@4080000 {

This is disabled but doesn't have a label.

remoteproc_mss: remoteproc@4080000

seems reasonable.

> +			compatible = "qcom,q6v5-pil";
> +			reg = <0x04080000 0x100>,
> +			      <0x04020000 0x040>;
> +
> +			reg-names = "qdsp6", "rmb";
> +
[..]
> +
> +		pronto: wcnss@a204000 {

remoteproc_pronto: remoteproc@a204000

> +			compatible = "qcom,pronto-v2-pil", "qcom,pronto";
> +			reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
> +			reg-names = "ccu", "dxe", "pmu";
> +
> +			memory-region = <&wcnss_mem>;
[..]
> +
> +#include "msm8916-pins.dtsi"

I thought we got rid of the separate *-pins.dtsi file. I'm also worried
about sharing this between 8916 and 8939. Can you please inline this in
line with one of the newer platform.

Regards,
Bjorn

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
  2022-04-19  7:35   ` Krzysztof Kozlowski
  2022-04-19 19:20   ` Stephan Gerhold
@ 2022-04-19 21:39   ` Bjorn Andersson
  2022-04-19 21:52     ` Bryan O'Donoghue
  2 siblings, 1 reply; 34+ messages in thread
From: Bjorn Andersson @ 2022-04-19 21:39 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, robh+dt, krzk+dt, linux-arm-msm, devicetree, shawn.guo,
	jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On Mon 18 Apr 20:09 CDT 2022, Bryan O'Donoghue wrote:

> The apq8039-t2 is an apq8039/msm8939 based board paired with a wcn3680b
> WiFi chipset.
> 
> Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Co-developed-by: Jun Nie <jun.nie@linaro.org>
> Signed-off-by: Jun Nie <jun.nie@linaro.org>
> Co-developed-by: Benjamin Li <benl@squareup.com>
> Signed-off-by: Benjamin Li <benl@squareup.com>
> Co-developed-by: James Willcox <jwillcox@squareup.com>
> Signed-off-by: James Willcox <jwillcox@squareup.com>
> Co-developed-by: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Leo Yan <leo.yan@linaro.org>
> Co-developed-by: Joseph Gates <jgates@squareup.com>
> Signed-off-by: Joseph Gates <jgates@squareup.com>
> Co-developed-by: Max Chen <mchen@squareup.com>
> Signed-off-by: Max Chen <mchen@squareup.com>
> Co-developed-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Zac Crosby <zac@squareup.com>
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../boot/dts/qcom/apq8039-t2-pinctl.dtsi      | 277 +++++++++++++++
>  arch/arm64/boot/dts/qcom/apq8039-t2.dts       | 326 ++++++++++++++++++
>  3 files changed, 604 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
>  create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2.dts
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index f9e6343acd03..5b8a0eb34733 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -1,5 +1,6 @@
>  # SPDX-License-Identifier: GPL-2.0
>  dtb-$(CONFIG_ARCH_QCOM)	+= apq8016-sbc.dtb
> +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
> diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi
> new file mode 100644
> index 000000000000..60adb3da826a
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/apq8039-t2-pinctl.dtsi

Please inline this in the board dts.

> @@ -0,0 +1,277 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
> +
> +/*
> + * Line names are taken from the schematic of T2, Ver X03.
> + * July 14, 2018. Page 4 in particular.
> + */
> +
> +&msmgpio {
> +	gpio-line-names =
> +		"APQ_UART1_TX",		/* GPIO_0 */
> +		"APQ_UART1_RX",
> +		"APQ_I2C1_SDA",
> +		"APQ_I2C1_SCL",
> +		"APQ_UART2_TX_1V8",
> +		"APQ_UART2_RX_1V8",
> +		"APQ_I2C2_SDA",
> +		"APQ_I2C2_SCL",
> +		"NC",
> +		"APQ_LCD_IOVCC_EN",
> +		"APQ_I2C3_SDA",		/* GPIO_10 */
> +		"APQ_I2C3_SCL",
> +		"TOUCH_RST_1V8_L",
> +		"NC",
> +		"APQ_I2C4_SDA",
> +		"APQ_I2C4_SCL",
> +		"APQ_ID5",
> +		"USB_DISCONNECT",
> +		"APQ_I2C5_SDA",
> +		"APQ_I2C5_SCL",
> +		"APQ_USBC_SPI_MOSI",	/* GPIO_20 */
> +		"APQ_USBC_SPI_MISO",
> +		"APQ_USBC_SPI_SS_L",
> +		"APQ_USBC_SPI_CLK",
> +		"APQ_LCD_TE0",
> +		"APQ_LCD_RST_L",
> +		"NC",
> +		"NC",
> +		"ACCELEROMETER_INT1",
> +		"APQ_CAM_I2C0_SDA",
> +		"APQ_CAM_I2C0_SCL",	/* GPIO_30 */
> +		"ACCELEROMETER_INT2",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"APQ_K21_RST_1V8_L",
> +		"NC",
> +		"APQ_EDL_1V8",
> +		"TP145",
> +		"BT_SSBI",
> +		"NC",			/* GPIO_40 */
> +		"NC",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"BT_CTRL",
> +		"BT_DAT",
> +		"PWR_GPIO_IN",
> +		"PWR_GPIO_OUT",		/* GPIO_50 */
> +		"CARD_DET_MLB_L",
> +		"HALL_SENSOR",
> +		"TP63",
> +		"TP64",
> +		"TP65",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"NC",			/* GPIO_60 */
> +		"NC",
> +		"APQ_K21_GPIO0_1V8",
> +		"CDC_PDM_CLK",
> +		"CDC_PDM_SYNC",
> +		"CDC_PDM_TX",
> +		"CDC_PDM_RX0",
> +		"CDC_PDM_RX1",
> +		"CDC_PDM_RX2",
> +		"APQ_K21_GPIO1_1V8",
> +		"NC",			/* GPIO_70 */
> +		"APQ_HUB_SEL_1V8",
> +		"APQ_K21_GPIO2_1V8",
> +		"APQ_K21_GPIO3_1V8",
> +		"APQ_ID0",
> +		"APQ_ID1",
> +		"APQ_ID2",
> +		"APQ_ID3",
> +		"APQ_ID4",
> +		"APQ_HUB_SUSP_IND",
> +		"BOOT_CONFIG_0",	/* GPIO_80 */
> +		"BOOT_CONFIG_1",
> +		"BOOT_CONFIG_2",
> +		"BOOT_CONFIG_3",
> +		"NC",
> +		"NC",
> +		"APQ_LCD_AVDD_EN",
> +		"APQ_LCD_AVEE_EN",
> +		"TP70",
> +		"NC",
> +		"APQ_DEBUG0",		/* GPIO_90 */
> +		"APQ_DEBUG1",
> +		"APQ_DEBUG2",
> +		"APQ_DEBUG3",
> +		"TP165",
> +		"NC",
> +		"APQ_LNA_PWR_EN",
> +		"NC",
> +		"APQ_LCD_BL_EN",
> +		"NC",
> +		"APQ_LCD_ID0",		/* GPIO_100 */
> +		"APQ_LCD_ID1",
> +		"USBC_GPIO5_1V8",
> +		"NC",
> +		"NC",
> +		"NC",
> +		"APQ_HUB_RST_1V8_L",
> +		"USBC_I2C_IRQ_1V8_L",
> +		"SPE_PWR_EN",
> +		"NC",
> +		"APQ_USB_ID",		/* GPIO_110 */
> +		"APQ_EXT_BUCK_VSEL",
> +		"APQ_USB_ID_OUT",
> +		"NC",
> +		"PRNT_RST_L",
> +		"APQ_CRQ_I2C_RDY_1V8",
> +		"TYPEC_RST_1V8_H",
> +		"CHG_BACKPWR_EN",
> +		"CHG_PROCHOT_L",
> +		"NC",
> +		"USBC_GPIO7_1V8",	/* GPIO_120 */
> +		"NC";
> +
> +	blsp1_uart1_default: blsp1-uart1-default {
> +		pins = "gpio0", "gpio1";
> +		function = "blsp_uart1";
> +
> +		drive-strength = <16>;
> +		bias-disable;
> +	};
> +
> +	blsp1_uart1_sleep: blsp1-uart1-sleep {
> +		pins = "gpio0", "gpio1";
> +		function = "gpio";
> +
> +		drive-strength = <2>;
> +		bias-pull-down;
> +	};
> +
> +	pinctrl_lcd_iovcc: lcd-iovcc {
> +		pinmux {

You don't need this intermediate node, you can put the properties
directly in the state node.

> +			pins = "gpio9";
> +			function = "gpio";
> +		};
> +	};
> +
> +	pinctrl_lcd_avdd: lcd-avdd {
> +		pinmux {
> +			pins = "gpio86";
> +			function = "gpio";
> +		};
> +	};
> +
> +	pinctrl_lcd_avee: lcd-avee {
> +		pinmux {
> +			pins = "gpio87";
> +			function = "gpio";
> +		};
> +	};
> +
> +	pinctrl_backlight: backlight {
> +		pinmux {
> +			pins = "gpio98";
> +			function = "gpio";
> +		};
> +	};
> +
> +	pinctrl_panel: panel {
> +		pinmux {
> +			pins = "gpio25";
> +			function = "gpio";
> +		};
> +	};
> +
> +	msmgpio_spe_reg: msmgpio_spe_reg {

No underscore in node names.

> +		pinmux {
> +			pins = "gpio108";
> +			function = "gpio";
> +			output-high;
> +		};
> +	};
> +
> +	sq_spe_enable: sq_spe_enable {
> +		pinmux {
> +			pins = "gpio35";
> +			function = "gpio";
> +			output-low;
> +		};
> +	};
> +
> +	msmgpio_crq_reg: msmgpio_crq_reg {
> +		pinmux {
> +			function = "gpio";
> +			pins = "gpio12";
> +			output-high;
> +		};
> +	};
> +
> +	typec_pins: typec_pins {
> +		pinmux_irqz {
> +			function = "gpio";
> +			pins = "gpio107";
> +		};
> +		pinconf_irqz {
> +			pins = "gpio107";
> +			bias-pull-up;
> +			input-enable;
> +		};
> +	};
> +
> +	pinctrl_otg_default: otg_default {
> +		pinmux_usb_disconnect {
> +			function = "gpio";
> +			pins = "gpio17";
> +			output-high;
> +		};
> +	};
> +
> +	pinctrl_otg_host: otg_host {
> +		pinmux_usb_disconnect {
> +			function = "gpio";
> +			pins = "gpio17";
> +			output-low;
> +		};
> +	};
> +
> +	pinctrl_otg_device: otg_device {
> +		pinmux_usb_disconnect {
> +			function = "gpio";
> +			pins = "gpio17";
> +			output-low;
> +		};
> +	};
> +
> +	ext_buck_vsel: ext_buck_vsel {
> +		label = "ext-buck-vsel";
> +		pinmux {
> +			function = "gpio";
> +			pins = "gpio111";
> +		};
> +		pinconf {
> +			pins = "gpio111";
> +			drive-strength = <2>;
> +		};
> +	};
> +};
> +
> +&pm8916_gpios {
> +	gpio-line-names =
> +		"PM_GPIO1",     /* WIFI_GPIO1_PRE */
> +		"PM_GPIO2",     /* WIFI_GPIO2_PRE */
> +		"PM_GPIO3",
> +		"PM_GPIO4";
> +
> +	wcnss_pin_antennae: wcnss_pin_antennae {
> +		pinmux {
> +			pins = "gpio1", "gpio2";
> +		};
> +		pinconf {
> +			pins = "gpio1", "gpio2";
> +			function = PMIC_GPIO_FUNC_NORMAL;
> +			output-high;

Could it be that gpio1 and 2 control two power supplies for two antennas
and that this should have been represented as regulators instead?

> +		};
> +	};
> +};
> diff --git a/arch/arm64/boot/dts/qcom/apq8039-t2.dts b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
> new file mode 100644
> index 000000000000..558f37945d94
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/apq8039-t2.dts
> @@ -0,0 +1,326 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2022, Linaro Ltd.
> + *

Drop the remainder of this comment, it's covered by the SPDX statement
above.

> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + */
> +
> +/dts-v1/;
> +
> +#include "msm8939.dtsi"
> +#include "pm8916.dtsi"
> +#include "apq8039-t2-pinctl.dtsi"
> +
> +/ {
> +	model = "Square, Inc. T2 Devkit";
> +	compat = "square,apq8039-t2", "qcom,msm8939";
> +	qcom,board-id = <0x53 0x54>;
> +
> +	aliases {
> +		serial0 = &blsp1_uart1;
> +		serial1 = &blsp1_uart2;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial1:115200n8";
> +	};
> +
> +	lcd_iovcc_vreg: lcd-iovcc-vreg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_iovcc";
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_iovcc>;
> +		gpios = <&msmgpio 9 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	lcd_avdd_vreg: lcd-avdd-vreg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_avdd";
> +		regulator-min-microvolt = <5600000>;
> +		regulator-max-microvolt = <5600000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_avdd>;
> +		gpios = <&msmgpio 86 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	lcd_avee_vreg: lcd-avee-vreg {
> +		compatible = "regulator-fixed";
> +		regulator-name = "lcd_avee";
> +		regulator-min-microvolt = <5600000>;
> +		regulator-max-microvolt = <5600000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_lcd_avee>;
> +		gpios = <&msmgpio 87 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <300>;
> +		enable-active-high;
> +	};
> +
> +	bl: backlight {
> +		compatible = "gpio-backlight";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pinctrl_backlight>;
> +		gpios = <&msmgpio 98 GPIO_ACTIVE_HIGH>;
> +	};
> +
> +	pp_spe_3v3_vreg: pp_spe_3v3_vreg {
> +		compatible = "regulator-fixed";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&msmgpio_spe_reg>;
> +		regulator-name = "pp_spe_3v3";
> +		gpios = <&msmgpio 108 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <0>;
> +		enable-active-high;
> +	};
> +
> +	pp_crq_3v3_vreg: pp_crq_3v3_vreg {
> +		compatible = "regulator-fixed";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&msmgpio_crq_reg>;
> +		regulator-name = "pp_crq_3v3";
> +		gpios = <&msmgpio 12 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <0>;
> +		enable-active-high;
> +	};
> +};
> +
> +&wcd_codec {

Please sort these by the label, alphabetically.

> +	status = "okay";
> +	qcom,hphl-jack-type-normally-open;
> +	qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
> +	qcom,mbhc-vthreshold-high = <75 150 237 450 500>;
> +};
> +
> +&blsp1_uart1 {
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&blsp1_uart1_default>;
> +	pinctrl-1 = <&blsp1_uart1_sleep>;
> +	status = "okay";
> +};
> +
> +&blsp1_uart2 {
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&blsp1_uart2_default>;
> +	pinctrl-1 = <&blsp1_uart2_sleep>;
> +	status = "okay";
> +};
> +
> +&dsi0 {
> +	#address-cells = <1>;
> +	#size-cells = <0>;
> +	vdda-supply = <&pm8916_l2>;
> +	vddio-supply = <&pm8916_l6>;
> +	status = "okay";
> +};
> +
> +&dsi0_phy {
> +	vddio-supply = <&pm8916_l6>;
> +	status = "okay";
> +};
> +
> +&sdhc_1 {
> +	vmmc-supply = <&pm8916_l8>;
> +	vqmmc-supply = <&pm8916_l5>;
> +
> +	pinctrl-names = "default", "sleep";
> +	pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>;
> +	pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
> +	status = "okay";
> +};
> +
> +&blsp_i2c1 {
> +	status = "okay";
> +};
> +
> +&blsp_i2c2 {
> +	status = "okay";
> +};
> +
> +&blsp_i2c3 {
> +	status = "okay";
> +	tps6598x: tps6598x@38 {
> +		compatible = "ti,tps6598x";
> +		reg = <0x38>;
> +
> +		interrupt-parent = <&msmgpio>;
> +		interrupts = <107 IRQ_TYPE_LEVEL_LOW>;
> +		interrupt-names = "irq";
> +
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&typec_pins>;
> +
> +		typec_con: connector {
> +			compatible = "usb-c-connector";
> +			label = "USB-C";
> +			port {
> +				typec_ep: endpoint {
> +					remote-endpoint = <&otg_ep>;
> +				};
> +			};
> +		};
> +	};
> +};
> +
> +&blsp_i2c5 {
> +	status = "okay";
> +};
> +
> +&blsp_dma {
> +	status = "okay";
> +};
> +
> +&otg {
> +	status = "okay";
> +	usb-role-switch;
> +
> +	pinctrl-names = "default", "host", "device";
> +	pinctrl-0 = <&pinctrl_otg_default>;
> +	pinctrl-1 = <&pinctrl_otg_host>;
> +	pinctrl-2 = <&pinctrl_otg_device>;
> +	pin-switch-delay-us = <100000>;
> +
> +	ulpi {
> +		usb_hs_phy: phy {
> +			qcom,enable-vbus-pullup;
> +			v1p8-supply = <&pm8916_l7>;
> +			v3p3-supply = <&pm8916_l13>;
> +		};
> +	};
> +	port {
> +		otg_ep: endpoint {
> +			remote-endpoint = <&typec_ep>;
> +		};
> +	};
> +};
> +
> +&pronto {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&wcnss_pin_a &wcnss_pin_antennae>;
> +	status = "okay";
> +
> +	iris {
> +		compatible = "qcom,wcn3680";
> +	};
> +
> +	smd-edge {
> +		wcnss {
> +			bt {
> +				local-bd-address = [ 55 44 33 22 11 00 ];
> +			};
> +		};
> +	};
> +};
> +
> +&rpm_requests {
> +	smd_rpm_regulators: pm8916-regulators {
> +		compatible = "qcom,rpm-pm8916-regulators";
> +		vdd_l1_l2_l3-supply = <&pm8916_s3>;
> +		vdd_l4_l5_l6-supply = <&pm8916_s4>;
> +		vdd_l7-supply = <&pm8916_s4>;
> +

Be aware that without regulator-allow-set-load and someone calling
regulator_set_load() (or using regulator-system-load to set it
statically) the regulators will be running in low-power mode.

There are cases where this has proven to cause issues, with e.g.
SD-cards not getting enough power.

> +		pm8916_s3: s3 {
> +			regulator-min-microvolt = <1200000>;
> +			regulator-max-microvolt = <1300000>;
> +		};
> +
> +		pm8916_s4: s4 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <2100000>;
> +		};
> +
> +		/* l1 is fixed to 1225000, but not connected in schematic */
> +		pm8916_l2: l2 {
> +			regulator-min-microvolt = <1200000>;
> +			regulator-max-microvolt = <1200000>;
> +		};
> +
> +		pm8916_l4: l4 {
> +			regulator-min-microvolt = <2050000>;
> +			regulator-max-microvolt = <2050000>;
> +		};
> +
> +		pm8916_l5: l5 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +
> +		pm8916_l6: l6 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +			regulator-always-on; /* copy from v3.10 */

Can you do better than "copy from v3.10"?

Regards,
Bjorn

> +		};
> +
> +		pm8916_l7: l7 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <1800000>;
> +		};
> +
> +		pm8916_l8: l8 {
> +			regulator-min-microvolt = <2850000>;
> +			regulator-max-microvolt = <2900000>;
> +		};
> +
> +		pm8916_l9: l9 {
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +
> +		pm8916_l10: l10 {
> +			regulator-min-microvolt = <3300000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +
> +		pm8916_l11: l11 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <2950000>;
> +		};
> +
> +		pm8916_l12: l12 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <2950000>;
> +		};
> +
> +		pm8916_l13: l13 {
> +			regulator-min-microvolt = <3075000>;
> +			regulator-max-microvolt = <3075000>;
> +		};
> +
> +		pm8916_l14: l14 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +
> +		pm8916_l15: l15 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +
> +		pm8916_l16: l16 {
> +			regulator-min-microvolt = <1800000>;
> +			regulator-max-microvolt = <3300000>;
> +		};
> +
> +		pm8916_l17: l17 {
> +			regulator-min-microvolt = <2850000>;
> +			regulator-max-microvolt = <2850000>;
> +		};
> +
> +		pm8916_l18: l18 {
> +			regulator-min-microvolt = <2700000>;
> +			regulator-max-microvolt = <2700000>;
> +		};
> +	};
> +};
> -- 
> 2.35.1
> 

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19 19:20   ` Stephan Gerhold
@ 2022-04-19 21:43     ` Bryan O'Donoghue
  0 siblings, 0 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19 21:43 UTC (permalink / raw)
  To: Stephan Gerhold
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac, Leo Yan

On 19/04/2022 20:20, Stephan Gerhold wrote:
> On Tue, Apr 19, 2022 at 02:09:02AM +0100, Bryan O'Donoghue wrote:
>> +&otg {
>> +	status = "okay";
>> +	usb-role-switch;
>> +
>> +	pinctrl-names = "default", "host", "device";
>> +	pinctrl-0 = <&pinctrl_otg_default>;
>> +	pinctrl-1 = <&pinctrl_otg_host>;
>> +	pinctrl-2 = <&pinctrl_otg_device>;
>> +	pin-switch-delay-us = <100000>;
>> +
>> +	ulpi {
>> +		usb_hs_phy: phy {
>> +			qcom,enable-vbus-pullup;
> 
> Hm, what handles the USB detection on this port? The tps6598x?

tps yes

> Can it provide an extcon so that you don't need to keep the USB PHY
> powered permanently?

Per my understanding new extcon is verboten

This particular hardware has an internal USB hub intermediating to 
switch-in internal USB peripherals when disconnected from the external 
type-c port so, we actually don't want to switch off the PHY.

> 
>> + [...]
>> +&pronto {
>> +	pinctrl-names = "default";
>> +	pinctrl-0 = <&wcnss_pin_a &wcnss_pin_antennae>;
>> +	status = "okay";
>> +
>> +	iris {
>> +		compatible = "qcom,wcn3680";
>> +	};
>> +
>> +	smd-edge {
>> +		wcnss {
>> +			bt {
>> +				local-bd-address = [ 55 44 33 22 11 00 ];
> 
> Is this really needed?
> 
> The DB410c LK and U-Boot port (and also lk2nd) automatically generate a
> WiFi/BT address based on the eMMC serial number. That's probably a
> better solution than a fixed MAC address specified here.

Ah yes I remember seeing the strings being populated.
Thanks, I'll zap this.

---
bod

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19  1:09 ` [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua Bryan O'Donoghue
  2022-04-19 19:27   ` Stephan Gerhold
@ 2022-04-19 21:51   ` Bjorn Andersson
  1 sibling, 0 replies; 34+ messages in thread
From: Bjorn Andersson @ 2022-04-19 21:51 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, robh+dt, krzk+dt, linux-arm-msm, devicetree, shawn.guo,
	jun.nie, benl, jwillcox, jgates, mchen, zac

On Mon 18 Apr 20:09 CDT 2022, Bryan O'Donoghue wrote:

> Add a basic booting DTS for the Sony Xperia M4 Aqua aka "tulip".
> 
> Tulip is paired with:
> 
> - wcn3660
> - smb1360 battery charger
> - 720p Truly NT35521 Panel
> 
> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  arch/arm64/boot/dts/qcom/Makefile             |   1 +
>  .../qcom/msm8939-sony-xperia-kanuti-tulip.dts | 489 ++++++++++++++++++
>  2 files changed, 490 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> 
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 5b8a0eb34733..3ac7f6876c09 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -19,6 +19,7 @@ dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-a5u-eur.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-j5.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-samsung-serranove.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8916-wingtech-wt88047.dtb
> +dtb-$(CONFIG_ARCH_QCOM)	+= msm8939-sony-xperia-kanuti-tulip.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-lg-bullhead-rev-10.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-lg-bullhead-rev-101.dtb
>  dtb-$(CONFIG_ARCH_QCOM)	+= msm8992-msft-lumia-octagon-talkman.dtb
> diff --git a/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> new file mode 100644
> index 000000000000..336969f16bc9
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
> @@ -0,0 +1,489 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2015, The Linux Foundation. All rights reserved.
> + * Copyright (c) 2022, Bryan O'Donoghue.
> + *

Same comments as the other baord dts; please drop the GPL license text
here, don't use underscore in node names and please sort the labels
alphabetically.

Thanks,
Bjorn

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board
  2022-04-19 21:39   ` Bjorn Andersson
@ 2022-04-19 21:52     ` Bryan O'Donoghue
  0 siblings, 0 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19 21:52 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: agross, robh+dt, krzk+dt, linux-arm-msm, devicetree, shawn.guo,
	jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 22:39, Bjorn Andersson wrote:
> On Mon 18 Apr 20:09 CDT 2022, Bryan O'Donoghue wrote:
>> +	wcnss_pin_antennae: wcnss_pin_antennae {
>> +		pinmux {
>> +			pins = "gpio1", "gpio2";
>> +		};
>> +		pinconf {
>> +			pins = "gpio1", "gpio2";
>> +			function = PMIC_GPIO_FUNC_NORMAL;
>> +			output-high;
> 
> Could it be that gpio1 and 2 control two power supplies for two antennas
> and that this should have been represented as regulators instead?

Those are the GPIOs responsible for switching between antenna

Off-topic:
When doing antenna diversity switching the WCNSS firmware owns these two 
GPIOs.

The rough algorithm is
for (i = 0; i < 2; i++)
- Switch GPIO[i]
- Send a probe to the WiFi AP
- Wait for a response
- Measure the RSSI

Then decide which antenna has the better signal strength. So actually 
WCNSS owns these two pins.

I have an evil plan to implement ieee80211_ops::get_antenna() in the future.

In theory all we have to do is read the GPIOs inside the callback.

>> +		pm8916_l6: l6 {
>> +			regulator-min-microvolt = <1800000>;
>> +			regulator-max-microvolt = <1800000>;
>> +			regulator-always-on; /* copy from v3.10 */
> 
> Can you do better than "copy from v3.10"?

Sure. I'll put in a comment why.

---
bod


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19 17:21   ` Vincent Knecht
@ 2022-04-19 22:01     ` Bryan O'Donoghue
  2022-05-26 13:32     ` Bryan O'Donoghue
  1 sibling, 0 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19 22:01 UTC (permalink / raw)
  To: Vincent Knecht, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 18:21, Vincent Knecht wrote:
> Hi Bryan, thanks for this much awaited dtsi :-)
> Some comments below, maybe more once I get around to testing it...
> 
> Le mardi 19 avril 2022 à 02:09 +0100, Bryan O'Donoghue a écrit :
>> +       cpr_opp_table: cpr-opp-table {
>> +               compatible = "operating-points-v2-qcom-level";
> 
> Just curious : am I missing something, that I don't see this compatible
> defined anywhere outside binding docs and qcs404.dtsi ?

Not yet but, we do reuse that in 8939 and will be necessary for any 
other SoC with CPR we do.


>> +               apcs1_mbox: mailbox@b011000 {
>> +                       compatible = "qcom,msm8916-apcs-kpss-global";
>> +                       reg = <0xb011000 0x1000>;
>> +                       #mbox-cells = <1>;
>> +                       clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
>> +                       clock-names = "pll", "aux", "ref";
>> +                       #clock-cells = <0>;
>> +                       clock-output-names = "a53mux_c1";
>> +                       /* Set a nominal frequency on a53mux_cci */
>> +                       assigned-clocks = <&apcs2>;
>> +                       assigned-clock-rates = <297600000>;
>> +               };
>> +
>> +               apcs1: syscon@b111000 {
>> +                       compatible = "syscon";
>> +                       reg = <0xb011000 0x1000>;
>> +               };
>> +
> 
> Is it okay that unit and reg addresses don't match ?

Prima face, not in the slightest typo/bug.

Thanks for the pointers on the lk2nd matching.

---
bod

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19 19:27   ` Stephan Gerhold
@ 2022-04-19 22:03     ` Bryan O'Donoghue
  2022-04-20  5:36       ` Stephan Gerhold
  2022-05-26 22:03       ` Dmitry Baryshkov
  0 siblings, 2 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-04-19 22:03 UTC (permalink / raw)
  To: Stephan Gerhold
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac

On 19/04/2022 20:27, Stephan Gerhold wrote:
> tulip seems to have qcom,usbid-gpio = <&msm_gpio 110 0>; downstream.
> Have you tried setting it up using linux,extcon-usb-gpio?
> See e.g. msm8916-longcheer-l8910, it has a similar setup (it also uses
> smb1360 for charging actually).
> 
> The advantage is that you don't need the manual role switching using
> "usb-role-switch", USB OTG adapters should be detected automatically.

My understanding is "no new extcon" - certainly as driver 
implementations I assume that also extends to dts..

---
bod

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19 21:11   ` Bjorn Andersson
@ 2022-04-20  5:34     ` Stephan Gerhold
  0 siblings, 0 replies; 34+ messages in thread
From: Stephan Gerhold @ 2022-04-20  5:34 UTC (permalink / raw)
  To: Bjorn Andersson
  Cc: Bryan O'Donoghue, agross, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac, Leo Yan

On Tue, Apr 19, 2022 at 04:11:27PM -0500, Bjorn Andersson wrote:
> On Mon 18 Apr 20:09 CDT 2022, Bryan O'Donoghue wrote:
> [..]
> > +
> > +#include "msm8916-pins.dtsi"
> 
> I thought we got rid of the separate *-pins.dtsi file. I'm also worried
> about sharing this between 8916 and 8939. Can you please inline this in
> line with one of the newer platform.

Why is this worrying? AFAIK MSM8939 is pin-compatible with MSM8916, it
uses the same pinctrl driver and compatible = "qcom,msm8916-pinctrl".
You definitely need the same definitions when setting up device trees
for 8939 devices.

In fact most of the MSM8939 device trees that I have seen in the
postmarketOS kernel fork look pretty much like the existing MSM8916
ones, just with the msm8916.dtsi include replaced with msm8939.dtsi.
And I think that's a good thing for consistency and maintenance. :)

I guess if we don't want separate -pins.dtsi anymore this just brings up
the question again if parts of msm8916.dtsi and msm8939.dtsi should be
shared in a .dtsi...

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19 22:03     ` Bryan O'Donoghue
@ 2022-04-20  5:36       ` Stephan Gerhold
  2022-05-26 22:03       ` Dmitry Baryshkov
  1 sibling, 0 replies; 34+ messages in thread
From: Stephan Gerhold @ 2022-04-20  5:36 UTC (permalink / raw)
  To: Bryan O'Donoghue
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac

On Tue, Apr 19, 2022 at 11:03:30PM +0100, Bryan O'Donoghue wrote:
> On 19/04/2022 20:27, Stephan Gerhold wrote:
> > tulip seems to have qcom,usbid-gpio = <&msm_gpio 110 0>; downstream.
> > Have you tried setting it up using linux,extcon-usb-gpio?
> > See e.g. msm8916-longcheer-l8910, it has a similar setup (it also uses
> > smb1360 for charging actually).
> > 
> > The advantage is that you don't need the manual role switching using
> > "usb-role-switch", USB OTG adapters should be detected automatically.
> 
> My understanding is "no new extcon" - certainly as driver implementations I
> assume that also extends to dts..
> 

It's probably tricky to combine the USB-C stuff with extcon since that
needs driver changes. But for good old micro USB stuff extcon is
(perhaps sadly) the standard and it's exactly what the USB and USB PHY
driver expects. So in my opinion you might as well make use of it. :)

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19  7:33   ` Krzysztof Kozlowski
  2022-04-19  8:30     ` Bryan O'Donoghue
@ 2022-04-20  9:31     ` Jun Nie
  2022-04-20  9:38       ` Krzysztof Kozlowski
  1 sibling, 1 reply; 34+ messages in thread
From: Jun Nie @ 2022-04-20  9:31 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> 于2022年4月19日周二 15:33写道:
>
> On 19/04/2022 03:09, Bryan O'Donoghue wrote:
> > Add msm8939 a derivative SoC of msm8916. This SoC contains a number of key
> > differences to msm8916.
> >
> > - big.LITTLE Octa Core - quad 1.5GHz + quad 1.0GHz
> > - DRAM 1x800 LPDDR3
> > - Camera 4+4 lane CSI
> > - Venus @ 1080p60 HEVC
> > - DSI x 2
> > - Adreno A405
> > - WiFi wcn3660/wcn3680b 802.11ac
> >
> > Co-developed-by: Shawn Guo <shawn.guo@linaro.org>
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > Co-developed-by: Jun Nie <jun.nie@linaro.org>
> > Signed-off-by: Jun Nie <jun.nie@linaro.org>
> > Co-developed-by: Benjamin Li <benl@squareup.com>
> > Signed-off-by: Benjamin Li <benl@squareup.com>
> > Co-developed-by: James Willcox <jwillcox@squareup.com>
> > Signed-off-by: James Willcox <jwillcox@squareup.com>
> > Co-developed-by: Leo Yan <leo.yan@linaro.org>
> > Signed-off-by: Leo Yan <leo.yan@linaro.org>
> > Co-developed-by: Joseph Gates <jgates@squareup.com>
> > Signed-off-by: Joseph Gates <jgates@squareup.com>
> > Co-developed-by: Max Chen <mchen@squareup.com>
> > Signed-off-by: Max Chen <mchen@squareup.com>
> > Co-developed-by: Zac Crosby <zac@squareup.com>
> > Signed-off-by: Zac Crosby <zac@squareup.com>
> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> > ---
> >  arch/arm64/boot/dts/qcom/msm8939.dtsi | 2017 +++++++++++++++++++++++++
> >  1 file changed, 2017 insertions(+)
> >  create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi
> >
> > diff --git a/arch/arm64/boot/dts/qcom/msm8939.dtsi b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> > new file mode 100644
> > index 000000000000..f1aa79b7d0e9
> > --- /dev/null
> > +++ b/arch/arm64/boot/dts/qcom/msm8939.dtsi
> > @@ -0,0 +1,2017 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
> > + * Copyright (c) 2020-2022, Linaro Limited
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 and
> > + * only version 2 as published by the Free Software Foundation.
> > + *
> > + * This program is distributed in the hope that it will be useful,
> > + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License for more details.
> > + */
> > +
> > +#include <dt-bindings/interconnect/qcom,msm8939.h>
> > +#include <dt-bindings/interrupt-controller/arm-gic.h>
> > +#include <dt-bindings/clock/qcom,gcc-msm8939.h>
> > +#include <dt-bindings/reset/qcom,gcc-msm8939.h>
> > +#include <dt-bindings/clock/qcom,rpmcc.h>
> > +#include <dt-bindings/power/qcom-rpmpd.h>
> > +#include <dt-bindings/thermal/thermal.h>
> > +
> > +/ {
> > +     model = "Qualcomm Technologies, Inc. MSM8939";
> > +     compatible = "qcom,msm8939";
> > +     qcom,msm-id = <239 0>, <239 0x30000>, <241 0x30000>, <263 0x30000>;
> > +
> > +     interrupt-parent = <&intc>;
> > +
> > +     #address-cells = <2>;
> > +     #size-cells = <2>;
> > +
> > +     memory {
> > +             device_type = "memory";
> > +             /* We expect the bootloader to fill in the reg */
> > +             reg = <0 0 0 0>;
> > +     };
> > +
> > +     reserved-memory {
> > +             #address-cells = <2>;
> > +             #size-cells = <2>;
> > +             ranges;
> > +
> > +             tz-apps@86000000 {
> > +                     reg = <0x0 0x86000000 0x0 0x300000>;
> > +                     no-map;
> > +             };
> > +
> > +             smem_mem: smem_region@86300000 {
>
> No underscores in node names. Why this is region (in node name) and
> others are not?
>
> > +                     reg = <0x0 0x86300000 0x0 0x100000>;
> > +                     no-map;
> > +             };
> > +
> > +             hypervisor@86400000 {
> > +                     reg = <0x0 0x86400000 0x0 0x100000>;
> > +                     no-map;
> > +             };
> > +
> > +             tz@86500000 {
> > +                     reg = <0x0 0x86500000 0x0 0x180000>;
> > +                     no-map;
> > +             };
> > +
> > +             reserved@8668000 {
> > +                     reg = <0x0 0x86680000 0x0 0x80000>;
> > +                     no-map;
> > +             };
> > +
> > +             rmtfs@86700000 {
> > +                     compatible = "qcom,rmtfs-mem";
> > +                     reg = <0x0 0x86700000 0x0 0xe0000>;
> > +                     no-map;
> > +
> > +                     qcom,client-id = <1>;
> > +             };
> > +
> > +             rfsa@867e00000 {
> > +                     reg = <0x0 0x867e0000 0x0 0x20000>;
> > +                     no-map;
> > +             };
> > +
> > +             mpss_mem: mpss@86800000 {
> > +                     reg = <0x0 0x86800000 0x0 0x2b00000>;
> > +                     no-map;
> > +             };
> > +
> > +             wcnss_mem: wcnss@89300000 {
> > +                     reg = <0x0 0x89300000 0x0 0x600000>;
> > +                     no-map;
> > +             };
> > +
> > +             venus_mem: venus@89900000 {
> > +                     reg = <0x0 0x89900000 0x0 0x500000>;
> > +                     no-map;
> > +             };
> > +
> > +             mba_mem: mba@8ea00000 {
> > +                     no-map;
> > +                     reg = <0 0x8ea00000 0 0x100000>;
> > +             };
> > +     };
> > +
> > +     /*
> > +      * MSM8939 has a big.LITTLE hetrogeneous computing architecture,
>
> s/hetrogeneous/heterogeneous/
>
> > +      * consisting of two clusters of four ARM Cortex-A53s each. The
> > +      * LITTLE cluster runs at 1.0-1.2GHz, and the big cluster runs
> > +      * at 1.5-1.7GHz.
> > +      *
> > +      * The enable method used here is spin-table which pre-supposes use
>
> s/pre-supposes/presupposes/?
>
> > +      * of a 2nd stage boot shim such as lk2nd to have installed a
> > +      * spin-table, the downstream non-psci/non-spin-table method that
> > +      * default msm8916/msm8936/msm8939 will not be supported upstream.
> > +      */
> > +     cpu-map {
> > +             /* LITTLE (efficiency) cluster */
> > +             cluster0 {
> > +                     core0 {
> > +                             cpu = <&CPU4>;
> > +                     };
> > +
> > +                     core1 {
> > +                             cpu = <&CPU5>;
> > +                     };
> > +
> > +                     core2 {
> > +                             cpu = <&CPU6>;
> > +                     };
> > +
> > +                     core3 {
> > +                             cpu = <&CPU7>;
> > +                     };
> > +             };
> > +
> > +             /* big (performance) cluster */
> > +             /* Boot CPU is cluster 1 core 0 */
> > +             cluster1 {
> > +                     core0 {
> > +                             cpu = <&CPU0>;
> > +                     };
> > +
> > +                     core1 {
> > +                             cpu = <&CPU1>;
> > +                     };
> > +
> > +                     core2 {
> > +                             cpu = <&CPU2>;
> > +                     };
> > +
> > +                     core3 {
> > +                             cpu = <&CPU3>;
> > +                     };
> > +             };
> > +     };
> > +
> > +     cpus {
> > +             #address-cells = <1>;
> > +             #size-cells = <0>;
> > +
> > +             CPU0: cpu@100 {
>
> lowercalse labels
>
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x100>;
> > +                     next-level-cache = <&L2_1>;
> > +                     qcom,acc = <&acc0>;
> > +                     qcom,saw = <&saw0>;
> > +                     cpu-idle-states = <&CPU_SPC>;
> > +                     clocks = <&apcs1_mbox>;
> > +                     /* operating-points-v2 = <&cluster1_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +                     L2_1: l2-cache-cluster1 {
>
> lowercase labels, the same applies further.
>
> > +                             compatible = "cache";
> > +                             cache-level = <2>;
> > +                     };
> > +             };
> > +
> > +             CPU1: cpu@101 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x101>;
> > +                     next-level-cache = <&L2_1>;
> > +                     qcom,acc = <&acc1>;
> > +                     qcom,saw = <&saw1>;
> > +                     clocks = <&apcs1_mbox>;
> > +                     /* operating-points-v2 = <&cluster1_opp_table>;
>
> No dead code in the kernel. If you need it here, please document.  The
> same applies further.
>
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             CPU2: cpu@102 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x102>;
> > +                     next-level-cache = <&L2_1>;
> > +                     qcom,acc = <&acc2>;
> > +                     qcom,saw = <&saw2>;
> > +                     clocks = <&apcs1_mbox>;
> > +                     /* operating-points-v2 = <&cluster1_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             CPU3: cpu@103 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x103>;
> > +                     next-level-cache = <&L2_1>;
> > +                     qcom,acc = <&acc3>;
> > +                     qcom,saw = <&saw3>;
> > +                     clocks = <&apcs1_mbox>;
> > +                     /* operating-points-v2 = <&cluster1_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             CPU4: cpu@0 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x0>;
> > +                     qcom,acc = <&acc4>;
> > +                     qcom,saw = <&saw4>;
> > +                     clocks = <&apcs0>;
> > +                     /* operating-points-v2 = <&cluster0_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +                     next-level-cache = <&L2_0>;
> > +                     L2_0: l2-cache-cluster0 {
> > +                             compatible = "cache";
> > +                             cache-level = <2>;
> > +                     };
> > +             };
> > +
> > +             CPU5: cpu@1 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x1>;
> > +                     next-level-cache = <&L2_0>;
> > +                     qcom,acc = <&acc5>;
> > +                     qcom,saw = <&saw5>;
> > +                     clocks = <&apcs0>;
> > +                     /* operating-points-v2 = <&cluster0_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             CPU6: cpu@2 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x2>;
> > +                     next-level-cache = <&L2_0>;
> > +                     qcom,acc = <&acc6>;
> > +                     qcom,saw = <&saw6>;
> > +                     clocks = <&apcs0>;
> > +                     /* operating-points-v2 = <&cluster0_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             CPU7: cpu@3 {
> > +                     device_type = "cpu";
> > +                     compatible = "arm,cortex-a53", "arm,armv8";
> > +                     enable-method = "spin-table";
> > +                     reg = <0x3>;
> > +                     next-level-cache = <&L2_0>;
> > +                     qcom,acc = <&acc7>;
> > +                     qcom,saw = <&saw7>;
> > +                     clocks = <&apcs0>;
> > +                     /* operating-points-v2 = <&cluster0_opp_table>;
> > +                      * power-domains = <&cpr>;
> > +                      * power-domain-names = "cpr";
> > +                      */
> > +                     #cooling-cells = <2>;
> > +             };
> > +
> > +             idle-states {
> > +                     CPU_SPC: spc {
> > +                             compatible = "arm,idle-state";
> > +                             arm,psci-suspend-param = <0x40000002>;
> > +                             entry-latency-us = <130>;
> > +                             exit-latency-us = <150>;
> > +                             min-residency-us = <2000>;
> > +                             local-timer-stop;
> > +                     };
> > +             };
> > +     };
> > +
> > +     cluster0_opp_table: cluster0-opp-table {
> > +             compatible = "operating-points-v2-kryo-cpu";
> > +             opp-shared;
> > +
> > +             opp-249600000 {
> > +                     opp-hz = /bits/ 64 <249600000>;
> > +                     required-opps = <&cpr_opp1>;
> > +             };
> > +
> > +             opp-499200000 {
> > +                     opp-hz = /bits/ 64 <499200000>;
> > +                     required-opps = <&cpr_opp3>;
> > +             };
> > +
> > +             opp-800000000 {
> > +                     opp-hz = /bits/ 64 <800000000>;
> > +                     required-opps = <&cpr_opp6>;
> > +             };
> > +
> > +             opp-1113600000 {
> > +                     opp-hz = /bits/ 64 <1113600000>;
> > +                     required-opps = <&cpr_opp9>;
> > +             };
> > +     };
> > +
> > +     cluster1_opp_table: cluster1-opp-table {
> > +             compatible = "operating-points-v2-kryo-cpu";
> > +             opp-shared;
> > +
> > +             opp-200000000 {
> > +                     opp-hz = /bits/ 64 <200000000>;
> > +                     required-opps = <&cpr_opp1>;
> > +             };
> > +
> > +             opp-400000000 {
> > +                     opp-hz = /bits/ 64 <400000000>;
> > +                     required-opps = <&cpr_opp2>;
> > +             };
> > +
> > +             opp-533330000 {
> > +                     opp-hz = /bits/ 64 <533330000>;
> > +                     required-opps = <&cpr_opp4>;
> > +             };
> > +
> > +             opp-800000000 {
> > +                     opp-hz = /bits/ 64 <800000000>;
> > +                     required-opps = <&cpr_opp5>;
> > +             };
> > +
> > +             opp-1113600000 {
> > +                     opp-hz = /bits/ 64 <1113600000>;
> > +                     required-opps = <&cpr_opp7>;
> > +             };
> > +
> > +             opp-1497600000 {
> > +                     opp-hz = /bits/ 64 <1497600000>;
> > +                     required-opps = <&cpr_opp8>;
> > +             };
> > +     };
> > +
> > +     /* Frequencies in below opp is for cpr_opp virtual corner calculation,
>
> Generic Linux coding style comments, so:
>         /*
>          * Frequencies....
>          * ...
>          */
>
> > +      * not strictly coupled with frquencies in CPU opp for CPUs may require
> > +      * different cpr_opp for specific frquency.
>
> Multiple typos. Please run spell check.
>
> > +      */
> > +     cpr_opp_table: cpr-opp-table {
> > +             compatible = "operating-points-v2-qcom-level";
> > +
> > +             cpr_opp1: opp1 {
>
> Why these opps are named with numerical suffix but other with frequency
> suffix?

Hi Krzysztof,

Because the 200MHz in cpr is just used as a parameter to calculate the
voltage adjustment.
The frequency in cpr_opp is not directly related to CPU frequency.
Such as cpr_opp1 is for
200MHz on cluster1 while it is for 249MHz on cluster0. Do you still
suggest to use
cpr_opp_200 or so in this case?

>
> > +                     opp-hz = /bits/ 64 <200000000>;
> > +                     opp-level = <1>;
> > +                     qcom,opp-fuse-level = <1>;
> > +             };
> > +             cpr_opp2: opp2 {
> > +                     opp-hz = /bits/ 64 <400000000>;
> > +                     opp-level = <2>;
> > +                     qcom,opp-fuse-level = <1>;
> > +             };
> > +             cpr_opp3: opp3 {
> > +                     opp-hz = /bits/ 64 <499200000>;
> > +                     opp-level = <3>;
> > +                     qcom,opp-fuse-level = <2>;
> > +             };
> > +             cpr_opp4: opp4 {
> > +                     opp-hz = /bits/ 64 <533330000>;
> > +                     opp-level = <4>;
> > +                     qcom,opp-fuse-level = <2>;
> > +             };
> > +             cpr_opp5: opp5 {
> > +                     opp-hz = /bits/ 64 <800000000>;
> > +                     opp-level = <5>;
> > +                     qcom,opp-fuse-level = <2>;
> > +             };
> > +             cpr_opp6: opp6 {
> > +                     opp-hz = /bits/ 64 <960000000>;
> > +                     opp-level = <6>;
> > +                     qcom,opp-fuse-level = <2>;
> > +             };
> > +             cpr_opp7: opp7 {
> > +                     opp-hz = /bits/ 64 <1113600000>;
> > +                     opp-level = <7>;
> > +                     qcom,opp-fuse-level = <2>;
> > +             };
> > +             cpr_opp8: opp8 {
> > +                     opp-hz = /bits/ 64 <1497600000>;
> > +                     opp-level = <8>;
> > +                     qcom,opp-fuse-level = <3>;
> > +             };
> > +             cpr_opp9: opp9 {
> > +                     opp-hz = /bits/ 64 <1497500000>;
> > +                     opp-level = <9>;
> > +                     qcom,opp-fuse-level = <3>;
> > +             };
> > +     };
> > +
> > +     cci_opp_table: cci-opp-table {
> > +             compatible = "operating-points-v2";
> > +
> > +             opp-200000000 {
> > +                     opp-hz = /bits/ 64 <200000000>;
> > +             };
> > +
> > +             opp-297600000 {
> > +                     opp-hz = /bits/ 64 <297600000>;
> > +             };
> > +
> > +             opp-400000000 {
> > +                     opp-hz = /bits/ 64 <400000000>;
> > +             };
> > +
> > +             opp-595200000 {
> > +                     opp-hz = /bits/ 64 <595200000>;
> > +             };
> > +     };
> > +
> > +     gpu_opp_table: gpu-opp-table {
>
> If table is used by only one device, define it inside that device node.
>
> > +             compatible = "operating-points-v2";
> > +
> > +             opp-550000000 {
> > +                     opp-hz = /bits/ 64 <550000000>;
> > +             };
> > +
> > +             opp-465000000 {
> > +                     opp-hz = /bits/ 64 <465000000>;
> > +             };
> > +
> > +             opp-400000000 {
> > +                     opp-hz = /bits/ 64 <400000000>;
> > +             };
> > +
> > +             opp-220000000 {
> > +                     opp-hz = /bits/ 64 <220000000>;
> > +             };
> > +
> > +             opp-19200000 {
> > +                     opp-hz = /bits/ 64 <19200000>;
> > +             };
> > +     };
> > +
> > +     pmu {
> > +             compatible = "arm,cortex-a53-pmu";
> > +             interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4)| IRQ_TYPE_LEVEL_HIGH)>;
>
> No PMU nodes for other cores?
>
> > +     };
> > +
> > +     thermal_zones: thermal-zones {
> > +             cpu0-thermal {
> > +                     polling-delay-passive = <250>;
> > +                     polling-delay = <1000>;
> > +
> > +                     thermal-sensors = <&tsens 5>;
> > +
> > +                     trips {
> > +                             cpu0_alert: trip0 {
> > +                                     temperature = <75000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "passive";
> > +                             };
> > +                             cpu0_crit: trip1 {
> > +                                     temperature = <115000>;
> > +                                     hysteresis = <0>;
> > +                                     type = "critical";
> > +                             };
> > +                     };
> > +
> > +                     cooling-maps {
> > +                             map0 {
> > +                                     trip = <&cpu0_alert>;
> > +                                     cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             cpu1-thermal {
> > +                     polling-delay-passive = <250>;
> > +                     polling-delay = <1000>;
> > +
> > +                     thermal-sensors = <&tsens 6>;
> > +
> > +                     trips {
> > +                             cpu1_alert: trip0 {
> > +                                     temperature = <75000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "passive";
> > +                             };
> > +                             cpu1_crit: trip1 {
> > +                                     temperature = <110000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "critical";
> > +                             };
> > +                     };
> > +
> > +                     cooling-maps {
> > +                             map0 {
> > +                                     trip = <&cpu1_alert>;
> > +                                     cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             cpu2-thermal {
> > +                     polling-delay-passive = <250>;
> > +                     polling-delay = <1000>;
> > +
> > +                     thermal-sensors = <&tsens 7>;
> > +
> > +                     trips {
> > +                             cpu2_alert: trip0 {
> > +                                     temperature = <75000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "passive";
> > +                             };
> > +                             cpu2_crit: trip1 {
> > +                                     temperature = <110000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "critical";
> > +                             };
> > +                     };
> > +
> > +                     cooling-maps {
> > +                             map0 {
> > +                                     trip = <&cpu2_alert>;
> > +                                     cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             cpu3-thermal {
> > +                     polling-delay-passive = <250>;
> > +                     polling-delay = <1000>;
> > +
> > +                     thermal-sensors = <&tsens 8>;
> > +
> > +                     trips {
> > +                             cpu3_alert: trip0 {
> > +                                     temperature = <75000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "passive";
> > +                             };
> > +                             cpu3_crit: trip1 {
> > +                                     temperature = <110000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "critical";
> > +                             };
> > +                     };
> > +
> > +                     cooling-maps {
> > +                             map0 {
> > +                                     trip = <&cpu3_alert>;
> > +                                     cooling-device = <&CPU0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             cpu4567-thermal {
> > +                     polling-delay-passive = <250>;
> > +                     polling-delay = <1000>;
> > +
> > +                     thermal-sensors = <&tsens 9>;
> > +
> > +                     trips {
> > +                             cpu4567_alert: trip0 {
> > +                                     temperature = <75000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "passive";
> > +                             };
> > +                             cpu4567_crit: trip1 {
> > +                                     temperature = <110000>;
> > +                                     hysteresis = <2000>;
> > +                                     type = "critical";
> > +                             };
> > +                     };
> > +
> > +                     cooling-maps {
> > +                             map0 {
> > +                                     trip = <&cpu4567_alert>;
> > +                                     cooling-device = <&CPU4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU5 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU6 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> > +                                                      <&CPU7 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             gpu-thermal {
> > +                     polling-delay-passive = <0>;
> > +                     polling-delay = <0>;
> > +
> > +                     thermal-sensors = <&tsens 3>;
> > +             };
> > +
> > +             modem1-thermal {
> > +                     polling-delay-passive = <0>;
> > +                     polling-delay = <0>;
> > +
> > +                     thermal-sensors = <&tsens 0>;
> > +             };
> > +
> > +             modem2-thermal {
> > +                     polling-delay-passive = <0>;
> > +                     polling-delay = <0>;
> > +
> > +                     thermal-sensors = <&tsens 2>;
> > +             };
> > +
> > +             venus_camera-thermal {
> > +                     polling-delay-passive = <0>;
> > +                     polling-delay = <0>;
> > +
> > +                     thermal-sensors = <&tsens 1>;
> > +             };
> > +     };
> > +
> > +     timer {
> > +             compatible = "arm,armv8-timer";
> > +             interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> > +                          <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> > +                          <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
> > +                          <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
> > +     };
> > +
> > +     clocks {
> > +             xo_board: xo_board {
>
> Generic node names, no underscores in node names. This applies everywhere.
>
> > +                     compatible = "fixed-clock";
> > +                     #clock-cells = <0>;
> > +                     clock-frequency = <19200000>;
> > +             };
> > +
> > +             sleep_clk: sleep_clk {
> > +                     compatible = "fixed-clock";
> > +                     #clock-cells = <0>;
> > +                     clock-frequency = <32768>;
> > +             };
> > +     };
> > +
> > +     smem {
> > +             compatible = "qcom,smem";
> > +
> > +             memory-region = <&smem_mem>;
> > +             qcom,rpm-msg-ram = <&rpm_msg_ram>;
> > +
> > +             hwlocks = <&tcsr_mutex 3>;
> > +     };
> > +
> > +     firmware {
> > +             scm: scm {
> > +                     compatible = "qcom,scm";
> > +                     clocks = <&gcc GCC_CRYPTO_CLK>,
> > +                              <&gcc GCC_CRYPTO_AXI_CLK>,
> > +                              <&gcc GCC_CRYPTO_AHB_CLK>;
> > +                     clock-names = "core", "bus", "iface";
> > +                     #reset-cells = <1>;
> > +
> > +                     qcom,dload-mode = <&tcsr 0x6100>;
> > +             };
> > +     };
> > +
> > +     soc: soc {
> > +             #address-cells = <1>;
> > +             #size-cells = <1>;
> > +             ranges = <0 0 0 0xffffffff>;
> > +             compatible = "simple-bus";
> > +
> > +             qfprom_cpr: qfprom_cpr@58000 {
>
> Generic node names, no underscores in node names. This applies everywhere.
>
> > +                     compatible = "qcom,qfprom";
> > +                     reg = <0x00058000 0x1000>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     cpr_efuse_init_voltage1: ivoltage1@dc {
>
> s/ivoltageX/voltage/

How about cpr_efuse_init_voltage_dc? There are 3
cpr_efuse_init_voltage* node here.

>
> > +                             reg = <0xdc 0x4>;
> > +                             bits = <4 6>;
> > +                     };
> > +                     cpr_efuse_init_voltage2: ivoltage2@da {
> > +                             reg = <0xda 0x4>;
> > +                             bits = <2 6>;
> > +                     };
> > +                     cpr_efuse_init_voltage3: ivoltage3@d8 {
> > +                             reg = <0xd8 0x4>;
> > +                             bits = <0 6>;
> > +                     };
> > +                     cpr_efuse_quot1: quot1@dc {
>
> Similar. Why do you need suffix number?
>
> > +                             reg = <0xdd 0x8>;
> > +                             bits = <2 12>;
> > +                     };
> > +                     cpr_efuse_quot2: quot2@da {
> > +                             reg = <0xdb 0x8>;
> > +                             bits = <0x0 12>;
> > +                     };
> > +                     cpr_efuse_quot3: quot3@d8 {
> > +                             reg = <0xd8 0x8>;
> > +                             bits = <6 12>;
> > +                     };
> > +                     cpr_efuse_ring1: ring1@de {
> > +                             reg = <0xde 0x4>;
> > +                             bits = <6 3>;
> > +                     };
> > +                     cpr_efuse_ring2: ring2@de {
> > +                             reg = <0xde 0x4>;
> > +                             bits = <6 3>;
> > +                     };
> > +                     cpr_efuse_ring3: ring3@de {
> > +                             reg = <0xde 0x4>;
> > +                             bits = <6 3>;
> > +                     };
> > +                     cpr_efuse_revision: revision@4 {
> > +                             reg = <0x5 0x1>;
> > +                             bits = <5 1>;
> > +                     };
> > +                     cpr_efuse_revision_high: revision_high@4 {
> > +                             reg = <0x7 0x1>;
> > +                             bits = <0 1>;
> > +                     };
> > +                     cpr_efuse_pvs_version: pvs@4 {
> > +                             reg = <0x3 0x1>;
> > +                             bits = <5 1>;
> > +                     };
> > +                     cpr_efuse_pvs_version_high: pvs_high@4 {
> > +                             reg = <0x6 0x1>;
> > +                             bits = <2 2>;
> > +                     };
> > +                     cpr_efuse_speedbin: speedbin@c {
> > +                             reg = <0xc 0x1>;
> > +                             bits = <2 3>;
> > +                     };
> > +
> > +             };
> > +
> > +             acc0: clock-controller@b088000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb088000 0x1000>;
> > +             };
> > +
> > +             saw0: power-controller@b089000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb089000 0x1000>;
> > +             };
> > +
> > +             acc1: clock-controller@b098000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb098000 0x1000>;
> > +             };
> > +
> > +             saw1: power-controller@b099000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb099000 0x1000>;
> > +             };
> > +
> > +             acc2: clock-controller@b0a8000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb0a8000 0x1000>;
> > +             };
> > +
> > +             saw2: power-controller@b0a9000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb0a9000 0x1000>;
> > +             };
> > +
> > +             acc3: clock-controller@b0b8000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb0b8000 0x1000>;
> > +             };
> > +
> > +             saw3: power-domain@b0b9000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb0b9000 0x1000>;
> > +             };
> > +
> > +             acc4: clock-controller@b188000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb188000 0x1000>;
> > +             };
> > +
> > +             saw4: power-controller@b189000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb189000 0x1000>;
> > +             };
> > +
> > +             acc5: clock-controller@b198000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb198000 0x1000>;
> > +             };
> > +
> > +             saw5: power-controller@b199000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb199000 0x1000>;
> > +             };
> > +
> > +             acc6: clock-controller@b1a8000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb1a8000 0x1000>;
> > +             };
> > +
> > +             saw6: power-controller@b1a9000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb1a9000 0x1000>;
> > +             };
> > +
> > +             acc7: clock-controller@b1b8000 {
> > +                     compatible = "qcom,kpss-acc-v2";
> > +                     reg = <0xb1b8000 0x1000>;
> > +             };
> > +
> > +             saw7: power-controller@b1b9000 {
> > +                     compatible = "qcom,msm8916-saw2-v3.0-cpu", "qcom,saw2";
> > +                     reg = <0xb1b9000 0x1000>;
> > +             };
> > +
> > +             restart@4ab000 {
> > +                     compatible = "qcom,pshold";
> > +                     reg = <0x4ab000 0x4>;
> > +             };
> > +
> > +             msmgpio: pinctrl@1000000 {
> > +                     compatible = "qcom,msm8916-pinctrl";
> > +                     reg = <0x1000000 0x300000>;
> > +                     interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
> > +                     gpio-controller;
> > +                     #gpio-cells = <2>;
> > +                     interrupt-controller;
> > +                     #interrupt-cells = <2>;
> > +             };
> > +
> > +             gcc: clock-controller@1800000 {
> > +                     compatible = "qcom,gcc-msm8939";
> > +                     #clock-cells = <1>;
> > +                     #reset-cells = <1>;
> > +                     #power-domain-cells = <1>;
> > +                     reg = <0x1800000 0x80000>;
> > +                     clocks = <&xo_board>, <&sleep_clk>;
> > +                     clock-names = "xo", "sleep_clk";
> > +             };
> > +
> > +             tcsr_mutex_regs: syscon@1905000 {
> > +                     compatible = "syscon";
> > +                     reg = <0x1905000 0x20000>;
> > +             };
> > +
> > +             tcsr: syscon@1937000 {
> > +                     compatible = "qcom,tcsr-msm8916", "syscon";
> > +                     reg = <0x1937000 0x30000>;
> > +             };
> > +
> > +             tcsr_mutex: hwlock {
> > +                     compatible = "qcom,tcsr-mutex";
> > +                     syscon = <&tcsr_mutex_regs 0 0x1000>;
> > +                     #hwlock-cells = <1>;
> > +             };
> > +
> > +             rpm_msg_ram: memory@60000 {
> > +                     compatible = "qcom,rpm-msg-ram";
> > +                     reg = <0x60000 0x8000>;
> > +             };
> > +
> > +             blsp1_uart1: serial@78af000 {
> > +                     compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> > +                     reg = <0x78af000 0x200>;
> > +                     interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 1>, <&blsp_dma 0>;
> > +                     dma-names = "rx", "tx";
> > +                     status = "disabled";
> > +             };
> > +
> > +             a53pll_c1: clock@b016000 {
> > +                     compatible = "qcom,msm8939-a53pll";
> > +                     reg = <0xb016000 0x40>;
> > +                     #clock-cells = <0>;
> > +             };
> > +
> > +             a53pll_c0: clock@b116000 {
> > +                     compatible = "qcom,msm8939-a53pll";
> > +                     reg = <0xb116000 0x40>;
> > +                     #clock-cells = <0>;
> > +             };
> > +
> > +             a53pll_cci: clock@b1d0000 {
> > +                     compatible = "qcom,msm8939-a53pll";
> > +                     reg = <0xb1d0000 0x40>;
> > +                     #clock-cells = <0>;
> > +             };
> > +
> > +             apcs2: mailbox@b1d1000 {
> > +                     compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> > +                     reg = <0xb1d1000 0x1000>;
> > +                     #mbox-cells = <1>;
> > +                     clocks = <&a53pll_cci>, <&gcc GPLL0_VOTE>, <&xo_board>;
> > +                     clock-names = "pll", "aux", "ref";
> > +                     #clock-cells = <0>;
> > +                     clock-output-names = "a53mux_cci";
> > +             };
> > +
> > +             apcs1_mbox: mailbox@b011000 {
> > +                     compatible = "qcom,msm8916-apcs-kpss-global";
> > +                     reg = <0xb011000 0x1000>;
> > +                     #mbox-cells = <1>;
> > +                     clocks = <&a53pll_c1>, <&gcc GPLL0_VOTE>, <&xo_board>;
> > +                     clock-names = "pll", "aux", "ref";
> > +                     #clock-cells = <0>;
> > +                     clock-output-names = "a53mux_c1";
> > +                     /* Set a nominal frequency on a53mux_cci */
> > +                     assigned-clocks = <&apcs2>;
> > +                     assigned-clock-rates = <297600000>;
> > +             };
> > +
> > +             apcs1: syscon@b111000 {
> > +                     compatible = "syscon";
> > +                     reg = <0xb011000 0x1000>;
> > +             };
> > +
> > +             apcs0: mailbox@b111000 {
> > +                     compatible = "qcom,msm8916-apcs-kpss-global", "syscon";
> > +                     reg = <0xb111000 0x1000>;
> > +                     #mbox-cells = <1>;
> > +                     clocks = <&a53pll_c0>, <&gcc GPLL0_VOTE>, <&xo_board>;
> > +                     clock-names = "pll", "aux", "ref";
> > +                     #clock-cells = <0>;
> > +                     clock-output-names = "a53mux_c0";
> > +             };
> > +
> > +             blsp1_uart2: serial@78b0000 {
> > +                     compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
> > +                     reg = <0x78b0000 0x200>;
> > +                     interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 3>, <&blsp_dma 2>;
> > +                     dma-names = "rx", "tx";
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_dma: dma@7884000 {
> > +                     compatible = "qcom,bam-v1.7.0";
> > +                     reg = <0x07884000 0x23000>;
> > +                     interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "bam_clk";
> > +                     #dma-cells = <1>;
> > +                     qcom,ee = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi1: spi@78b5000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078b5000 0x500>;
> > +                     interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 5>, <&blsp_dma 4>;
> > +                     dma-names = "rx", "tx";
>
> tx/rx. Please rebase on recent linux-next and run `make dtbs_check` and
> fix all the errors.
>
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi1_default>;
> > +                     pinctrl-1 = <&spi1_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi2: spi@78b6000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078b6000 0x500>;
> > +                     interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 7>, <&blsp_dma 6>;
> > +                     dma-names = "rx", "tx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi2_default>;
> > +                     pinctrl-1 = <&spi2_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi3: spi@78b7000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078b7000 0x500>;
> > +                     interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 9>, <&blsp_dma 8>;
> > +                     dma-names = "rx", "tx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi3_default>;
> > +                     pinctrl-1 = <&spi3_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi4: spi@78b8000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078b8000 0x500>;
> > +                     interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 11>, <&blsp_dma 10>;
> > +                     dma-names = "rx", "tx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi4_default>;
> > +                     pinctrl-1 = <&spi4_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi5: spi@78b9000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078b9000 0x500>;
> > +                     interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 13>, <&blsp_dma 12>;
> > +                     dma-names = "rx", "tx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi5_default>;
> > +                     pinctrl-1 = <&spi5_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_spi6: spi@78ba000 {
> > +                     compatible = "qcom,spi-qup-v2.2.1";
> > +                     reg = <0x078ba000 0x500>;
> > +                     interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
> > +                              <&gcc GCC_BLSP1_AHB_CLK>;
> > +                     clock-names = "core", "iface";
> > +                     dmas = <&blsp_dma 15>, <&blsp_dma 14>;
> > +                     dma-names = "rx", "tx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&spi6_default>;
> > +                     pinctrl-1 = <&spi6_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c1: i2c@78b5000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078b5000 0x500>;
> > +                     interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 4>, <&blsp_dma 5>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c1_default>;
> > +                     pinctrl-1 = <&i2c1_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c2: i2c@78b6000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078b6000 0x500>;
> > +                     interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 6>, <&blsp_dma 7>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c2_default>;
> > +                     pinctrl-1 = <&i2c2_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c3: i2c@78b7000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078b7000 0x500>;
> > +                     interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP3_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 8>, <&blsp_dma 9>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c3_default>;
> > +                     pinctrl-1 = <&i2c3_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c4: i2c@78b8000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078b8000 0x500>;
> > +                     interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 10>, <&blsp_dma 11>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c4_default>;
> > +                     pinctrl-1 = <&i2c4_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c5: i2c@78b9000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078b9000 0x500>;
> > +                     interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP5_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 12>, <&blsp_dma 13>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c5_default>;
> > +                     pinctrl-1 = <&i2c5_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             blsp_i2c6: i2c@78ba000 {
> > +                     compatible = "qcom,i2c-qup-v2.2.1";
> > +                     reg = <0x078ba000 0x500>;
> > +                     interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_BLSP1_AHB_CLK>,
> > +                              <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     dmas = <&blsp_dma 14>, <&blsp_dma 15>;
> > +                     dma-names = "tx", "rx";
> > +                     pinctrl-names = "default", "sleep";
> > +                     pinctrl-0 = <&i2c6_default>;
> > +                     pinctrl-1 = <&i2c6_sleep>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             lpass: lpass@7708000 {
> > +                     status = "disabled";
> > +                     compatible = "qcom,apq8016-lpass-cpu";
> > +                     clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
> > +                              <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
> > +
> > +                     clock-names = "ahbix-clk",
> > +                                     "pcnoc-mport-clk",
> > +                                     "pcnoc-sway-clk",
> > +                                     "mi2s-bit-clk0",
> > +                                     "mi2s-bit-clk1",
> > +                                     "mi2s-bit-clk2",
> > +                                     "mi2s-bit-clk3";
> > +                     #sound-dai-cells = <1>;
> > +
> > +                     interrupts = <0 160 IRQ_TYPE_LEVEL_HIGH>;
> > +                     interrupt-names = "lpass-irq-lpaif";
> > +                     reg = <0x07708000 0x10000>;
> > +                     reg-names = "lpass-lpaif";
> > +
> > +                     #address-cells = <1>;
> > +                     #size-cells = <0>;
> > +             };
> > +
> > +             lpass_codec: codec{
>
> Missing space
>
> > +                     compatible = "qcom,msm8916-wcd-digital-codec";
> > +                     reg = <0x0771c000 0x400>;
> > +                     clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
> > +                              <&gcc GCC_CODEC_DIGCODEC_CLK>;
> > +                     clock-names = "ahbix-clk", "mclk";
> > +                     #sound-dai-cells = <1>;
> > +             };
> > +
> > +             sdhc_1: sdhci@7824000 {
> > +                     compatible = "qcom,sdhci-msm-v4";
> > +                     reg = <0x07824900 0x11c>, <0x07824000 0x800>;
> > +                     reg-names = "hc_mem", "core_mem";
> > +
> > +                     interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>, <0 138 IRQ_TYPE_LEVEL_HIGH>;
> > +                     interrupt-names = "hc_irq", "pwr_irq";
> > +                     clocks = <&gcc GCC_SDCC1_APPS_CLK>,
> > +                              <&gcc GCC_SDCC1_AHB_CLK>,
> > +                              <&xo_board>;
> > +                     clock-names = "core", "iface", "xo";
> > +                     mmc-ddr-1_8v;
> > +                     bus-width = <8>;
> > +                     non-removable;
> > +                     status = "disabled";
> > +             };
> > +
> > +             sdhc_2: sdhci@7864000 {
> > +                     compatible = "qcom,sdhci-msm-v4";
> > +                     reg = <0x07864900 0x11c>, <0x07864000 0x800>;
> > +                     reg-names = "hc_mem", "core_mem";
> > +
> > +                     interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>, <0 221 IRQ_TYPE_LEVEL_HIGH>;
> > +                     interrupt-names = "hc_irq", "pwr_irq";
> > +                     clocks = <&gcc GCC_SDCC2_APPS_CLK>,
> > +                              <&gcc GCC_SDCC2_AHB_CLK>,
> > +                              <&xo_board>;
> > +                     clock-names = "core", "iface", "xo";
> > +                     bus-width = <4>;
> > +                     status = "disabled";
> > +             };
> > +
> > +             otg: usb@78d9000 {
> > +                     compatible = "qcom,ci-hdrc";
> > +                     reg = <0x78d9000 0x200>,
> > +                           <0x78d9200 0x200>;
> > +                     interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
> > +                                  <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
> > +                     clocks = <&gcc GCC_USB_HS_AHB_CLK>,
> > +                              <&gcc GCC_USB_HS_SYSTEM_CLK>;
> > +                     clock-names = "iface", "core";
> > +                     assigned-clocks = <&gcc GCC_USB_HS_SYSTEM_CLK>;
> > +                     assigned-clock-rates = <80000000>;
> > +                     resets = <&gcc GCC_USB_HS_BCR>;
> > +                     reset-names = "core";
> > +                     phy_type = "ulpi";
> > +                     dr_mode = "otg";
> > +                     ahb-burst-config = <0>;
> > +                     phy-names = "usb-phy";
> > +                     phys = <&usb_hs_phy>;
> > +                     status = "disabled";
> > +                     #reset-cells = <1>;
> > +
> > +                     ulpi {
> > +                             usb_hs_phy: phy {
> > +                                     compatible = "qcom,usb-hs-phy-msm8916",
> > +                                                  "qcom,usb-hs-phy";
> > +                                     #phy-cells = <0>;
> > +                                     clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
> > +                                     clock-names = "ref", "sleep";
> > +                                     resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>;
> > +                                     reset-names = "phy", "por";
> > +                                     qcom,init-seq = /bits/ 8 <0x0 0x44
> > +                                             0x1 0x6b 0x2 0x24 0x3 0x13>;
> > +                             };
> > +                     };
> > +             };
> > +
> > +             intc: interrupt-controller@b000000 {
> > +                     compatible = "qcom,msm-qgic2";
> > +                     interrupt-controller;
> > +                     #interrupt-cells = <3>;
> > +                     reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
> > +             };
> > +
> > +             timer@b020000 {
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     ranges;
> > +                     compatible = "arm,armv7-timer-mem";
> > +                     reg = <0xb020000 0x1000>;
> > +                     clock-frequency = <19200000>;
> > +
> > +                     frame@b021000 {
> > +                             frame-number = <0>;
> > +                             interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
> > +                                          <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb021000 0x1000>,
> > +                                   <0xb022000 0x1000>;
> > +                     };
> > +
> > +                     frame@b023000 {
> > +                             frame-number = <1>;
> > +                             interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb023000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     frame@b024000 {
> > +                             frame-number = <2>;
> > +                             interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb024000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     frame@b025000 {
> > +                             frame-number = <3>;
> > +                             interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb025000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     frame@b026000 {
> > +                             frame-number = <4>;
> > +                             interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb026000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     frame@b027000 {
> > +                             frame-number = <5>;
> > +                             interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb027000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     frame@b028000 {
> > +                             frame-number = <6>;
> > +                             interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> > +                             reg = <0xb028000 0x1000>;
> > +                             status = "disabled";
> > +                     };
> > +             };
> > +
> > +             spmi_bus: spmi@200f000 {
> > +                     compatible = "qcom,spmi-pmic-arb";
> > +                     reg = <0x200f000 0x001000>,
> > +                           <0x2400000 0x400000>,
> > +                           <0x2c00000 0x400000>,
> > +                           <0x3800000 0x200000>,
> > +                           <0x200a000 0x002100>;
> > +                     reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> > +                     interrupt-names = "periph_irq";
> > +                     interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
> > +                     qcom,ee = <0>;
> > +                     qcom,channel = <0>;
> > +                     #address-cells = <2>;
> > +                     #size-cells = <0>;
> > +                     interrupt-controller;
> > +                     #interrupt-cells = <4>;
> > +             };
> > +
> > +             rng@22000 {
> > +                     compatible = "qcom,prng";
> > +                     reg = <0x00022000 0x200>;
> > +                     clocks = <&gcc GCC_PRNG_AHB_CLK>;
> > +                     clock-names = "core";
> > +             };
> > +
> > +             qfprom: qfprom@5c000 {
> > +                     compatible = "qcom,qfprom";
> > +                     reg = <0x5c000 0x1000>;
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     tsens_caldata: caldata@a0 {
> > +                             reg = <0xa0 0x5c>;
> > +                     };
> > +             };
> > +
> > +             tsens: thermal-sensor@4a9000 {
> > +                     compatible = "qcom,msm8939-tsens";
> > +                     reg = <0x4a9000 0x1000>, /* TM */
> > +                           <0x4a8000 0x1000>; /* SROT */
> > +                     nvmem-cells = <&tsens_caldata>;
> > +                     nvmem-cell-names = "calib";
> > +                     interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>;
> > +                     interrupt-names = "uplow";
> > +                     #thermal-sensor-cells = <1>;
> > +             };
> > +
> > +             apps_iommu: iommu@1ef0000 {
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     #iommu-cells = <1>;
>
> compatible, reg and ranges should be the first nodes. This applies
> everywehere.
>
> > +                     compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> > +                     ranges = <0 0x1e20000 0x40000>;
> > +                     reg = <0x1ef0000 0x3000>;
> > +                     clocks = <&gcc GCC_SMMU_CFG_CLK>,
> > +                              <&gcc GCC_APSS_TCU_CLK>;
> > +                     clock-names = "iface", "bus";
> > +                     qcom,iommu-secure-id = <17>;
> > +
> > +                     /* mdp_0: */
> > +                     iommu-ctx@4000 {
> > +                             compatible = "qcom,msm-iommu-v1-ns";
> > +                             reg = <0x4000 0x1000>;
> > +                             interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> > +                     };
> > +
> > +                     /* venus_ns: */
> > +                     iommu-ctx@5000 {
> > +                             compatible = "qcom,msm-iommu-v1-sec";
> > +                             reg = <0x5000 0x1000>;
> > +                             interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
> > +                     };
> > +             };
> > +
> > +             gpu_iommu: iommu@1f08000 {
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     #iommu-cells = <1>;
> > +                     compatible = "qcom,msm8916-iommu", "qcom,msm-iommu-v1";
> > +                     ranges = <0 0x1f08000 0x10000>;
> > +                     clocks = <&gcc GCC_SMMU_CFG_CLK>,
> > +                              <&gcc GCC_GFX_TCU_CLK>,
> > +                              <&gcc GCC_GFX_TBU_CLK>;
> > +                     clock-names = "iface", "bus", "tlb";
> > +                     qcom,iommu-secure-id = <18>;
> > +
> > +                     /* gfx3d_user: */
> > +                     iommu-ctx@1000 {
> > +                             compatible = "qcom,msm-iommu-v1-ns";
> > +                             reg = <0x1000 0x1000>;
> > +                             interrupts = <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH>;
> > +                     };
> > +
> > +                     /* gfx3d_priv: */
> > +                     iommu-ctx@2000 {
> > +                             compatible = "qcom,msm-iommu-v1-ns";
> > +                             reg = <0x2000 0x1000>;
> > +                             interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>;
> > +                     };
> > +             };
> > +
> > +             gpu@1c00000 {
> > +                     compatible = "qcom,adreno-405.0", "qcom,adreno";
> > +                     reg = <0x01c00000 0x10000>;
> > +                     reg-names = "kgsl_3d0_reg_memory";
> > +                     interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
> > +                     interrupt-names = "kgsl_3d0_irq";
> > +                     clock-names =
> > +                         "core",
> > +                         "iface",
> > +                         "mem",
> > +                         "mem_iface",
> > +                         "alt_mem_iface",
> > +                         "gfx3d",
> > +                         "rbbmtimer";
> > +                     clocks =
> > +                         <&gcc GCC_OXILI_GFX3D_CLK>,
> > +                         <&gcc GCC_OXILI_AHB_CLK>,
> > +                         <&gcc GCC_OXILI_GMEM_CLK>,
> > +                         <&gcc GCC_BIMC_GFX_CLK>,
> > +                         <&gcc GCC_BIMC_GPU_CLK>,
> > +                         <&gcc GFX3D_CLK_SRC>,
> > +                         <&gcc GCC_OXILI_TIMER_CLK>;
> > +                     power-domains = <&gcc OXILI_GDSC>;
> > +                     operating-points-v2 = <&gpu_opp_table>;
> > +                     iommus = <&gpu_iommu 1>, <&gpu_iommu 2>;
> > +             };
> > +
> > +             mdss: mdss@1a00000 {
> > +                     compatible = "qcom,mdss";
> > +                     reg = <0x1a00000 0x1000>,
> > +                           <0x1ac8000 0x3000>;
> > +                     reg-names = "mdss_phys", "vbif_phys";
> > +
> > +                     power-domains = <&gcc MDSS_GDSC>;
> > +
> > +                     clocks = <&gcc GCC_MDSS_AHB_CLK>,
> > +                              <&gcc GCC_MDSS_AXI_CLK>,
> > +                              <&gcc GCC_MDSS_VSYNC_CLK>;
> > +                     clock-names = "iface",
> > +                                   "bus",
> > +                                   "vsync";
> > +
> > +                     interrupts = <0 72 IRQ_TYPE_LEVEL_HIGH>;
> > +
> > +                     interrupt-controller;
> > +                     #interrupt-cells = <1>;
> > +
> > +                     #address-cells = <1>;
> > +                     #size-cells = <1>;
> > +                     ranges;
> > +
> > +                     mdp: mdp@1a01000 {
> > +                             compatible = "qcom,mdp5";
> > +                             reg = <0x1a01000 0x89000>;
> > +                             reg-names = "mdp_phys";
> > +
> > +                             interrupt-parent = <&mdss>;
> > +                             interrupts = <0 0>;
> > +
> > +                             clocks = <&gcc GCC_MDSS_AHB_CLK>,
> > +                                      <&gcc GCC_MDSS_AXI_CLK>,
> > +                                      <&gcc GCC_MDSS_MDP_CLK>,
> > +                                      <&gcc GCC_MDSS_VSYNC_CLK>,
> > +                                      <&gcc GCC_MDP_TBU_CLK>,
> > +                                      <&gcc GCC_MDP_RT_TBU_CLK>;
> > +                             clock-names = "iface",
> > +                                           "bus",
> > +                                           "core",
> > +                                           "vsync",
> > +                                           "tbu",
> > +                                           "tbu_rt";
> > +
> > +                             iommus = <&apps_iommu 4>;
> > +
> > +                             interconnects = <&snoc_mm MASTER_MDP_PORT0 &bimc SLAVE_EBI_CH0>,
> > +                                             <&snoc_mm MASTER_MDP_PORT1 &bimc SLAVE_EBI_CH0>;
> > +                             interconnect-names = "mdp0-mem", "mdp1-mem";
> > +
> > +                             ports {
> > +                                     #address-cells = <1>;
> > +                                     #size-cells = <0>;
> > +
> > +                                     port@0 {
> > +                                             reg = <0>;
> > +                                             mdp5_intf1_out: endpoint {
> > +                                                     remote-endpoint = <&dsi0_in>;
> > +                                             };
> > +                                     };
> > +
> > +                                     port@1 {
> > +                                             reg = <1>;
> > +                                             mdp5_intf2_out: endpoint {
> > +                                                     remote-endpoint = <&dsi1_in>;
> > +                                             };
> > +                                     };
> > +                             };
> > +                     };
> > +
> > +                     dsi0: dsi@1a98000 {
> > +                             compatible = "qcom,mdss-dsi-ctrl";
> > +                             reg = <0x1a98000 0x25c>;
> > +                             reg-names = "dsi_ctrl";
> > +
> > +                             interrupt-parent = <&mdss>;
> > +                             interrupts = <4 0>;
> > +
> > +                             assigned-clocks = <&gcc BYTE0_CLK_SRC>,
> > +                                               <&gcc PCLK0_CLK_SRC>;
> > +                             assigned-clock-parents = <&dsi0_phy 0>,
> > +                                                      <&dsi0_phy 1>;
> > +
> > +                             clocks = <&gcc GCC_MDSS_MDP_CLK>,
> > +                                      <&gcc GCC_MDSS_AHB_CLK>,
> > +                                      <&gcc GCC_MDSS_AXI_CLK>,
> > +                                      <&gcc GCC_MDSS_BYTE0_CLK>,
> > +                                      <&gcc GCC_MDSS_PCLK0_CLK>,
> > +                                      <&gcc GCC_MDSS_ESC0_CLK>;
> > +                             clock-names = "mdp_core",
> > +                                           "iface",
> > +                                           "bus",
> > +                                           "byte",
> > +                                           "pixel",
> > +                                           "core";
> > +                             phys = <&dsi0_phy>;
> > +                             phy-names = "dsi-phy";
> > +                             status = "disabled";
> > +
> > +                             ports {
> > +                                     #address-cells = <1>;
> > +                                     #size-cells = <0>;
> > +
> > +                                     port@0 {
> > +                                             reg = <0>;
> > +                                             dsi0_in: endpoint {
> > +                                                     remote-endpoint = <&mdp5_intf1_out>;
> > +                                             };
> > +                                     };
> > +
> > +                                     port@1 {
> > +                                             reg = <1>;
> > +                                             dsi0_out: endpoint {
> > +                                             };
> > +                                     };
> > +                             };
> > +                     };
> > +
> > +                     dsi1: dsi@1aa0000 {
> > +                             compatible = "qcom,mdss-dsi-ctrl";
> > +                             reg = <0x1aa0000 0x25c>;
> > +                             reg-names = "dsi_ctrl";
> > +
> > +                             interrupt-parent = <&mdss>;
> > +                             interrupts = <5 0>;
> > +
> > +                             assigned-clocks = <&gcc BYTE1_CLK_SRC>,
> > +                                               <&gcc PCLK1_CLK_SRC>;
> > +                             assigned-clock-parents = <&dsi1_phy 0>,
> > +                                                      <&dsi1_phy 1>;
> > +
> > +                             clocks = <&gcc GCC_MDSS_MDP_CLK>,
> > +                                      <&gcc GCC_MDSS_AHB_CLK>,
> > +                                      <&gcc GCC_MDSS_AXI_CLK>,
> > +                                      <&gcc GCC_MDSS_BYTE1_CLK>,
> > +                                      <&gcc GCC_MDSS_PCLK1_CLK>,
> > +                                      <&gcc GCC_MDSS_ESC1_CLK>;
> > +                             clock-names = "mdp_core",
> > +                                           "iface",
> > +                                           "bus",
> > +                                           "byte",
> > +                                           "pixel",
> > +                                           "core";
> > +                             phys = <&dsi1_phy>;
> > +                             phy-names = "dsi-phy";
> > +                             status = "disabled";
> > +
> > +                             ports {
> > +                                     #address-cells = <1>;
> > +                                     #size-cells = <0>;
> > +
> > +                                     port@0 {
> > +                                             reg = <0>;
> > +                                             dsi1_in: endpoint {
> > +                                                     remote-endpoint = <&mdp5_intf2_out>;
> > +                                             };
> > +                                     };
> > +
> > +                                     port@1 {
> > +                                             reg = <1>;
> > +                                             dsi1_out: endpoint {
> > +                                             };
> > +                                     };
> > +                             };
> > +                     };
> > +
> > +                     dsi0_phy: dsi-phy@1a98300 {
>
> Generic node name, so just "phy"
>
> > +                             compatible = "qcom,dsi-phy-28nm-lp";
> > +                             reg = <0x1a98300 0xd4>,
> > +                                   <0x1a98500 0x280>,
> > +                                   <0x1a98780 0x30>;
> > +                             reg-names = "dsi_pll",
> > +                                         "dsi_phy",
> > +                                         "dsi_phy_regulator";
> > +
> > +                             #clock-cells = <1>;
> > +                             #phy-cells = <0>;
> > +
> > +                             clocks = <&gcc GCC_MDSS_AHB_CLK>;
> > +                             clock-names = "iface";
> > +                             qcom,dsi-phy-regulator-ldo-mode;
> > +                             status = "disabled";
> > +                     };
> > +
> > +                     dsi1_phy: dsi-phy@1aa0300 {
> > +                             compatible = "qcom,dsi-phy-28nm-lp";
> > +                             reg = <0x1aa0300 0xd4>,
> > +                                   <0x1aa0500 0x280>,
> > +                                   <0x1aa0780 0x30>;
> > +                             reg-names = "dsi_pll",
> > +                                         "dsi_phy",
> > +                                         "dsi_phy_regulator";
> > +
> > +                             #clock-cells = <1>;
> > +                             #phy-cells = <0>;
> > +
> > +                             clocks = <&gcc GCC_MDSS_AHB_CLK>;
> > +                             clock-names = "iface";
> > +                             qcom,dsi-phy-regulator-ldo-mode;
> > +                             status = "disabled";
> > +                     };
> > +             };
> > +
> > +             hexagon@4080000 {
> > +                     compatible = "qcom,q6v5-pil";
> > +                     reg = <0x04080000 0x100>,
> > +                           <0x04020000 0x040>;
> > +
> > +                     reg-names = "qdsp6", "rmb";
> > +
> > +                     interrupts-extended = <&intc 0 24 1>,
> > +                                           <&hexagon_smp2p_in 0 0>,
> > +                                           <&hexagon_smp2p_in 1 0>,
> > +                                           <&hexagon_smp2p_in 2 0>,
> > +                                           <&hexagon_smp2p_in 3 0>;
> > +                     interrupt-names = "wdog", "fatal", "ready",
> > +                                       "handover", "stop-ack";
> > +
> > +                     clocks = <&gcc GCC_MSS_CFG_AHB_CLK>,
> > +                              <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>,
> > +                              <&gcc GCC_BOOT_ROM_AHB_CLK>,
> > +                              <&xo_board>;
> > +                     clock-names = "iface", "bus", "mem", "xo";
> > +
> > +                     qcom,smem-states = <&hexagon_smp2p_out 0>;
> > +                     qcom,smem-state-names = "stop";
> > +
> > +                     resets = <&scm 0>;
> > +                     reset-names = "mss_restart";
> > +
> > +                     power-domains = <&rpmpd MSM8939_VDDMDCX_AO>,
> > +                                     <&rpmpd MSM8939_VDDMX>;
> > +                     power-domain-names = "cx", "mx";
> > +                     pll-supply = <&pm8916_l7>;
> > +
> > +                     qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>;
> > +
> > +                     status = "disabled";
> > +
> > +                     mba {
> > +                             memory-region = <&mba_mem>;
> > +                     };
> > +
> > +                     mpss {
> > +                             memory-region = <&mpss_mem>;
> > +                     };
> > +
> > +                     smd-edge {
> > +                             interrupts = <0 25 IRQ_TYPE_EDGE_RISING>;
> > +
> > +                             qcom,smd-edge = <0>;
> > +                             mboxes = <&apcs1_mbox 12>;
> > +                             qcom,remote-pid = <1>;
> > +
> > +                             label = "hexagon";
> > +                     };
> > +             };
> > +
> > +             pronto: wcnss@a204000 {
> > +                     compatible = "qcom,pronto-v2-pil", "qcom,pronto";
> > +                     reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>;
> > +                     reg-names = "ccu", "dxe", "pmu";
> > +
> > +                     memory-region = <&wcnss_mem>;
> > +
> > +                     interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>,
> > +                                           <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
> > +                                           <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
> > +                                           <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
> > +                                           <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
> > +                     interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack";
> > +
> > +                     power-domains = <&rpmpd MSM8939_VDDCX>,
> > +                                     <&rpmpd MSM8939_VDDMX_AO>;
> > +                     power-domain-names = "cx", "mx";
> > +                     vddpx-supply = <&pm8916_l7>;
> > +
> > +                     qcom,state = <&wcnss_smp2p_out 0>;
> > +                     qcom,state-names = "stop";
> > +
> > +                     pinctrl-names = "default";
> > +                     pinctrl-0 = <&wcnss_pin_a>;
> > +
> > +                     status = "disabled";
> > +
> > +                     iris {
> > +                             compatible = "qcom,wcn3660";
> > +
> > +                             clocks = <&rpmcc RPM_SMD_RF_CLK2>;
> > +                             clock-names = "xo";
> > +
> > +                             vddxo-supply = <&pm8916_l7>;
> > +                             vddrfa-supply = <&pm8916_s3>;
> > +                             vddpa-supply = <&pm8916_l9>;
> > +                             vdddig-supply = <&pm8916_l5>;
> > +                     };
> > +
> > +                     smd-edge {
> > +                             interrupts = <0 142 1>;
> > +
> > +                             qcom,ipc = <&apcs1 8 17>;
> > +                             qcom,smd-edge = <6>;
> > +                             qcom,remote-pid = <4>;
> > +
> > +                             label = "pronto";
> > +
> > +                             wcnss {
> > +                                     compatible = "qcom,wcnss";
> > +                                     qcom,smd-channels = "WCNSS_CTRL";
> > +
> > +                                     qcom,mmio = <&pronto>;
> > +
> > +                                     bt {
> > +                                             compatible = "qcom,wcnss-bt";
> > +                                     };
> > +
> > +                                     wifi {
> > +                                             compatible = "qcom,wcnss-wlan";
> > +
> > +                                             interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>,
> > +                                                          <0 146 IRQ_TYPE_LEVEL_HIGH>;
> > +                                             interrupt-names = "tx", "rx";
> > +
> > +                                             qcom,smem-states = <&apps_smsm 10>,
> > +                                                                <&apps_smsm 9>;
> > +                                             qcom,smem-state-names = "tx-enable",
> > +                                                                     "tx-rings-empty";
> > +                                     };
> > +                             };
> > +                     };
> > +             };
> > +
> > +             venus: video-codec@1d00000 {
> > +                     compatible = "qcom,msm8916-venus";
> > +                     reg = <0x01d00000 0xff000>;
> > +                     interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> > +                     power-domains = <&gcc VENUS_GDSC>;
> > +                     clocks = <&gcc GCC_VENUS0_VCODEC0_CLK>,
> > +                              <&gcc GCC_VENUS0_AHB_CLK>,
> > +                              <&gcc GCC_VENUS0_AXI_CLK>;
> > +                     clock-names = "core", "iface", "bus";
> > +                     iommus = <&apps_iommu 5>;
> > +                     memory-region = <&venus_mem>;
> > +                     status = "okay";
> > +
> > +                     video-decoder {
> > +                             compatible = "venus-decoder";
> > +                     };
> > +
> > +                     video-encoder {
> > +                             compatible = "venus-encoder";
> > +                     };
> > +             };
> > +
> > +             bimc: interconnect@400000 {
> > +                     compatible = "qcom,msm8939-bimc";
> > +                     #interconnect-cells = <1>;
> > +                     reg = <0x400000 0x62000>;
> > +                     clock-names = "bus", "bus_a";
> > +                     clocks = <&rpmcc RPM_SMD_BIMC_CLK>,
> > +                              <&rpmcc RPM_SMD_BIMC_A_CLK>;
> > +                     status = "okay";
> > +             };
> > +
> > +             pcnoc: interconnect@500000 {
> > +                     compatible = "qcom,msm8939-pcnoc";
> > +                     #interconnect-cells = <1>;
> > +                     reg = <0x500000 0x11000>;
> > +                     clock-names = "bus", "bus_a";
> > +                     clocks = <&rpmcc RPM_SMD_PCNOC_CLK>,
> > +                              <&rpmcc RPM_SMD_PCNOC_A_CLK>;
> > +                     status = "okay";
> > +             };
> > +
> > +             snoc: interconnect@580000 {
> > +                     compatible = "qcom,msm8939-snoc";
> > +                     #interconnect-cells = <1>;
> > +                     reg = <0x580000 0x14080>;
> > +                     clock-names = "bus", "bus_a";
> > +                     clocks = <&rpmcc RPM_SMD_SNOC_CLK>,
> > +                              <&rpmcc RPM_SMD_SNOC_A_CLK>;
> > +                     status = "okay";
> > +
> > +                     snoc_mm: interconnect-snoc-mm {
> > +                             compatible = "qcom,msm8939-snoc-mm";
> > +                             #interconnect-cells = <1>;
> > +                             clock-names = "bus", "bus_a";
> > +                             clocks = <&rpmcc RPM_SMD_SYSMMNOC_CLK>,
> > +                                      <&rpmcc RPM_SMD_SYSMMNOC_A_CLK>;
> > +                             status = "okay";
> > +                     };
> > +
> > +             };
> > +     };
> > +
> > +     smd {
> > +             compatible = "qcom,smd";
> > +
> > +             rpm {
> > +                     interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
> > +                     qcom,ipc = <&apcs1 8 0>;
> > +                     qcom,smd-edge = <15>;
> > +
> > +                     rpm_requests: rpm_requests {
>
> No underscores.
>
> > +                             compatible = "qcom,rpm-msm8936";
> > +                             qcom,smd-channels = "rpm_requests";
> > +
> > +                             rpmcc: qcom,rpmcc {
> > +                                     compatible = "qcom,rpmcc-msm8936";
> > +                                     #clock-cells = <1>;
> > +                             };
> > +
> > +                             rpmpd: power-controller {
> > +                                     compatible = "qcom,msm8939-rpmpd";
> > +                                     #power-domain-cells = <1>;
> > +                                     operating-points-v2 = <&rpmpd_opp_table>;
> > +
> > +                                     rpmpd_opp_table: opp-table {
> > +                                             compatible = "operating-points-v2";
> > +
> > +                                             rpmpd_opp_ret: opp1 {
> > +                                                     opp-level = <1>;
> > +                                             };
> > +
> > +                                             rpmpd_opp_svs_krait: opp2 {
> > +                                                     opp-level = <2>;
> > +                                             };
> > +
> > +                                             rpmpd_opp_svs_soc: opp3 {
> > +                                                     opp-level = <3>;
> > +                                             };
> > +
> > +                                             rpmpd_opp_nom: opp4 {
> > +                                                     opp-level = <4>;
> > +                                             };
> > +
> > +                                             rpmpd_opp_turbo: opp5 {
> > +                                                     opp-level = <5>;
> > +                                             };
> > +
> > +                                             rpmpd_opp_super_turbo: opp6 {
> > +                                                     opp-level = <6>;
> > +                                             };
> > +                                     };
> > +                             };
> > +                     };
> > +             };
> > +     };
> > +
> > +     hexagon-smp2p {
> > +             compatible = "qcom,smp2p";
> > +             qcom,smem = <435>, <428>;
> > +
> > +             interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
> > +
> > +             mboxes = <&apcs1_mbox 14>;
> > +
> > +             qcom,local-pid = <0>;
> > +             qcom,remote-pid = <1>;
> > +
> > +             hexagon_smp2p_out: master-kernel {
> > +                     qcom,entry-name = "master-kernel";
> > +
> > +                     #qcom,smem-state-cells = <1>;
> > +             };
> > +
> > +             hexagon_smp2p_in: slave-kernel {
> > +                     qcom,entry-name = "slave-kernel";
> > +
> > +                     interrupt-controller;
> > +                     #interrupt-cells = <2>;
> > +             };
> > +     };
> > +
> > +     wcnss-smp2p {
> > +             compatible = "qcom,smp2p";
> > +             qcom,smem = <451>, <431>;
> > +
> > +             interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
>
> Isn't this some GIC interrupt? If so, then use flags for PPI and SPI
> interrupts.
>
>
> Best regards,
> Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-20  9:31     ` Jun Nie
@ 2022-04-20  9:38       ` Krzysztof Kozlowski
  2022-04-20  9:57         ` Jun Nie
  0 siblings, 1 reply; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-20  9:38 UTC (permalink / raw)
  To: Jun Nie
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

On 20/04/2022 11:31, Jun Nie wrote:
>>
>> Why these opps are named with numerical suffix but other with frequency
>> suffix?
> 
> Hi Krzysztof,
> 
> Because the 200MHz in cpr is just used as a parameter to calculate the
> voltage adjustment.
> The frequency in cpr_opp is not directly related to CPU frequency.
> Such as cpr_opp1 is for
> 200MHz on cluster1 while it is for 249MHz on cluster0. Do you still
> suggest to use
> cpr_opp_200 or so in this case?

Thanks for explanation, I would still choose it to have consistent
opp-hz and suffix.

>>
>> Generic node names, no underscores in node names. This applies everywhere.
>>
>>> +                     compatible = "qcom,qfprom";
>>> +                     reg = <0x00058000 0x1000>;
>>> +                     #address-cells = <1>;
>>> +                     #size-cells = <1>;
>>> +                     cpr_efuse_init_voltage1: ivoltage1@dc {
>>
>> s/ivoltageX/voltage/
> 
> How about cpr_efuse_init_voltage_dc? There are 3
> cpr_efuse_init_voltage* node here.

The node names should be generic, so this should be maybe even just
"efuse"? Feel free to add some prefix to it, so "init-voltage-efuse",
but no underscores and no suffixes in such case (but "init-voltage2-efuse").

Was there anything more to discuss? Without trimming the response it's
not possible to find anything among 1000 unrelated lines. :(

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-20  9:38       ` Krzysztof Kozlowski
@ 2022-04-20  9:57         ` Jun Nie
  2022-04-20 10:00           ` Jun Nie
  2022-04-20 10:09           ` Krzysztof Kozlowski
  0 siblings, 2 replies; 34+ messages in thread
From: Jun Nie @ 2022-04-20  9:57 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

> >>
> >> Generic node names, no underscores in node names. This applies everywhere.
> >>
> >>> +                     compatible = "qcom,qfprom";
> >>> +                     reg = <0x00058000 0x1000>;
> >>> +                     #address-cells = <1>;
> >>> +                     #size-cells = <1>;
> >>> +                     cpr_efuse_init_voltage1: ivoltage1@dc {
> >>
> >> s/ivoltageX/voltage/
> >
> > How about cpr_efuse_init_voltage_dc? There are 3
> > cpr_efuse_init_voltage* node here.
>
> The node names should be generic, so this should be maybe even just
> "efuse"? Feel free to add some prefix to it, so "init-voltage-efuse",
> but no underscores and no suffixes in such case (but "init-voltage2-efuse").

The nodes are referenced by other node, such as below case. So I have
to name them,
underscore is the best separator. While I have 3 init_voltage related
nodes to name.
What's the name you suggest for them?

arch/arm/boot/dts/qcom-apq8084.dtsi: nvmem-cells = <&tsens_calib>,
<&tsens_backup>;

Regards,
Jun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-20  9:57         ` Jun Nie
@ 2022-04-20 10:00           ` Jun Nie
  2022-04-20 10:10             ` Krzysztof Kozlowski
  2022-04-20 10:09           ` Krzysztof Kozlowski
  1 sibling, 1 reply; 34+ messages in thread
From: Jun Nie @ 2022-04-20 10:00 UTC (permalink / raw)
  To: Krzysztof Kozlowski
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

Jun Nie <jun.nie@linaro.org> 于2022年4月20日周三 17:57写道:
>
> > >>
> > >> Generic node names, no underscores in node names. This applies everywhere.
> > >>
> > >>> +                     compatible = "qcom,qfprom";
> > >>> +                     reg = <0x00058000 0x1000>;
> > >>> +                     #address-cells = <1>;
> > >>> +                     #size-cells = <1>;
> > >>> +                     cpr_efuse_init_voltage1: ivoltage1@dc {
> > >>
> > >> s/ivoltageX/voltage/
> > >
> > > How about cpr_efuse_init_voltage_dc? There are 3
> > > cpr_efuse_init_voltage* node here.
> >
> > The node names should be generic, so this should be maybe even just
> > "efuse"? Feel free to add some prefix to it, so "init-voltage-efuse",
> > but no underscores and no suffixes in such case (but "init-voltage2-efuse").
>
> The nodes are referenced by other node, such as below case. So I have
> to name them,
> underscore is the best separator. While I have 3 init_voltage related
> nodes to name.
> What's the name you suggest for them?
>
> arch/arm/boot/dts/qcom-apq8084.dtsi: nvmem-cells = <&tsens_calib>,
> <&tsens_backup>;
>
Maybe it should like this?

cpr_efuse_init_voltage1: efuse {

> Regards,
> Jun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-20  9:57         ` Jun Nie
  2022-04-20 10:00           ` Jun Nie
@ 2022-04-20 10:09           ` Krzysztof Kozlowski
  1 sibling, 0 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-20 10:09 UTC (permalink / raw)
  To: Jun Nie
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

On 20/04/2022 11:57, Jun Nie wrote:
>>>>
>>>> Generic node names, no underscores in node names. This applies everywhere.
>>>>
>>>>> +                     compatible = "qcom,qfprom";
>>>>> +                     reg = <0x00058000 0x1000>;
>>>>> +                     #address-cells = <1>;
>>>>> +                     #size-cells = <1>;
>>>>> +                     cpr_efuse_init_voltage1: ivoltage1@dc {
>>>>
>>>> s/ivoltageX/voltage/
>>>
>>> How about cpr_efuse_init_voltage_dc? There are 3
>>> cpr_efuse_init_voltage* node here.
>>
>> The node names should be generic, so this should be maybe even just
>> "efuse"? Feel free to add some prefix to it, so "init-voltage-efuse",
>> but no underscores and no suffixes in such case (but "init-voltage2-efuse").
> 
> The nodes are referenced by other node, such as below case. 
> So I have
> to name them,
> underscore is the best separator. While I have 3 init_voltage related
> nodes to name.
> What's the name you suggest for them?
> 
> arch/arm/boot/dts/qcom-apq8084.dtsi: nvmem-cells = <&tsens_calib>,
> <&tsens_backup>;

You should not reference them by node names, but by phandle (and use
label which you have there). Labels use underscores, node names do not
(hyphen/dash instead).


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-20 10:00           ` Jun Nie
@ 2022-04-20 10:10             ` Krzysztof Kozlowski
  0 siblings, 0 replies; 34+ messages in thread
From: Krzysztof Kozlowski @ 2022-04-20 10:10 UTC (permalink / raw)
  To: Jun Nie
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

On 20/04/2022 12:00, Jun Nie wrote:
> Maybe it should like this?
> 
> cpr_efuse_init_voltage1: efuse {

"efuse" is good. To make it clear - we talk here only about node names.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19 18:31   ` Stephan Gerhold
@ 2022-04-20 10:12     ` Jun Nie
  0 siblings, 0 replies; 34+ messages in thread
From: Jun Nie @ 2022-04-20 10:12 UTC (permalink / raw)
  To: Stephan Gerhold
  Cc: Bryan O'Donoghue, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree, shawn.guo, benl, jwillcox, jgates,
	mchen, zac, Leo Yan

>
> > + [...]
> > +     soc: soc {
> > +             #address-cells = <1>;
> > +             #size-cells = <1>;
> > +             ranges = <0 0 0 0xffffffff>;
> > +             compatible = "simple-bus";
> > +
> > +             qfprom_cpr: qfprom_cpr@58000 {
> > +                     compatible = "qcom,qfprom";
> > +                     reg = <0x00058000 0x1000>;
>
> It's quite confusing that the qfprom is once defined on 0x58000 ("raw
> region") and then again later on 0x5c000 ("corrected region"). The
> APQ8016E TRM is quite clear that the "corrected" one should be used for
> reading, and the raw region is just for programming and verification.
>
> I think when I tried setting up CPR on MSM8916 I simply added the nodes
> to the existing qfprom@5c000 and it worked just fine (all the values
> were correct).
>

Hi Stephan,

Thanks for the reminder! I just followed device tree from QCOM's Linux
3.10 as I have no msm8939 doc.
Will have a try on the corrected area when I have a device.

Regards,
Jun

^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 2/4] arm64: dts: Add msm8939 SoC
  2022-04-19 17:21   ` Vincent Knecht
  2022-04-19 22:01     ` Bryan O'Donoghue
@ 2022-05-26 13:32     ` Bryan O'Donoghue
  1 sibling, 0 replies; 34+ messages in thread
From: Bryan O'Donoghue @ 2022-05-26 13:32 UTC (permalink / raw)
  To: Vincent Knecht, agross, bjorn.andersson, robh+dt, krzk+dt,
	linux-arm-msm, devicetree
  Cc: shawn.guo, jun.nie, benl, jwillcox, jgates, mchen, zac, Leo Yan

On 19/04/2022 18:21, Vincent Knecht wrote:
>> +               mpss_mem: mpss@86800000 {
>> +                       reg = <0x0 0x86800000 0x0 0x2b00000>;
>> +                       no-map;
>> +               };
>> +
> Also would have to check, we used to use a size of 0x5600000 for mpss...
> 

Good catch

https://github.com/vknecht/msm8916-mainline-linux/blob/v5.9-rc1-idol3/arch/arm64/boot/dts/qcom/msm8939.dtsi#L80

https://review.carbonrom.org/plugins/gitiles/CarbonROM/android_kernel_sony_msm/+/refs/heads/cr-5.1/arch/arm/boot/dts/qcom/msm8939-common.dtsi#54

---
bod


^ permalink raw reply	[flat|nested] 34+ messages in thread

* Re: [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua
  2022-04-19 22:03     ` Bryan O'Donoghue
  2022-04-20  5:36       ` Stephan Gerhold
@ 2022-05-26 22:03       ` Dmitry Baryshkov
  1 sibling, 0 replies; 34+ messages in thread
From: Dmitry Baryshkov @ 2022-05-26 22:03 UTC (permalink / raw)
  To: Bryan O'Donoghue, Stephan Gerhold
  Cc: agross, bjorn.andersson, robh+dt, krzk+dt, linux-arm-msm,
	devicetree, shawn.guo, jun.nie, benl, jwillcox, jgates, mchen,
	zac

On 20/04/2022 01:03, Bryan O'Donoghue wrote:
> On 19/04/2022 20:27, Stephan Gerhold wrote:
>> tulip seems to have qcom,usbid-gpio = <&msm_gpio 110 0>; downstream.
>> Have you tried setting it up using linux,extcon-usb-gpio?
>> See e.g. msm8916-longcheer-l8910, it has a similar setup (it also uses
>> smb1360 for charging actually).
>>
>> The advantage is that you don't need the manual role switching using
>> "usb-role-switch", USB OTG adapters should be detected automatically.
> 
> My understanding is "no new extcon" - certainly as driver 
> implementations I assume that also extends to dts..

I think, if the driver supports only extcon interface, you have to use 
it (leaving aside a good nice option of rewriting qcom,ci-hdrc/ulpi to 
also support USB role switching mechanisms).


-- 
With best wishes
Dmitry

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2022-05-26 22:03 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-19  1:08 [PATCH v1 0/4] Add MSM8939 SoC support with two devices Bryan O'Donoghue
2022-04-19  1:09 ` [PATCH v1 1/4] dt-bindings: arm: qcom: Document MSM8939 SoC binding Bryan O'Donoghue
2022-04-19  7:13   ` Krzysztof Kozlowski
2022-04-19 12:12   ` Rob Herring
2022-04-19  1:09 ` [PATCH v1 2/4] arm64: dts: Add msm8939 SoC Bryan O'Donoghue
2022-04-19  7:33   ` Krzysztof Kozlowski
2022-04-19  8:30     ` Bryan O'Donoghue
2022-04-19  8:44       ` Krzysztof Kozlowski
2022-04-20  9:31     ` Jun Nie
2022-04-20  9:38       ` Krzysztof Kozlowski
2022-04-20  9:57         ` Jun Nie
2022-04-20 10:00           ` Jun Nie
2022-04-20 10:10             ` Krzysztof Kozlowski
2022-04-20 10:09           ` Krzysztof Kozlowski
2022-04-19 17:21   ` Vincent Knecht
2022-04-19 22:01     ` Bryan O'Donoghue
2022-05-26 13:32     ` Bryan O'Donoghue
2022-04-19 18:31   ` Stephan Gerhold
2022-04-20 10:12     ` Jun Nie
2022-04-19 18:47   ` Vincent Knecht
2022-04-19 21:11   ` Bjorn Andersson
2022-04-20  5:34     ` Stephan Gerhold
2022-04-19  1:09 ` [PATCH v1 3/4] arm64: dts: Add aqp8039-t2 board Bryan O'Donoghue
2022-04-19  7:35   ` Krzysztof Kozlowski
2022-04-19 19:20   ` Stephan Gerhold
2022-04-19 21:43     ` Bryan O'Donoghue
2022-04-19 21:39   ` Bjorn Andersson
2022-04-19 21:52     ` Bryan O'Donoghue
2022-04-19  1:09 ` [PATCH v1 4/4] arm64: dts: Add msm8939 Sony Xperia M4 Aqua Bryan O'Donoghue
2022-04-19 19:27   ` Stephan Gerhold
2022-04-19 22:03     ` Bryan O'Donoghue
2022-04-20  5:36       ` Stephan Gerhold
2022-05-26 22:03       ` Dmitry Baryshkov
2022-04-19 21:51   ` Bjorn Andersson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.