On Sun, Aug 31, 2025 at 12:38:16AM +0200, Barnabás Czémán wrote: > From: Dang Huynh <danct12@xxxxxxxxxx> > > Add initial support for MSM8937 SoC. > > Signed-off-by: Dang Huynh <danct12@xxxxxxxxxx> > Co-developed-by: Barnabás Czémán <barnabas.czeman@xxxxxxxxxxxxxx> > Signed-off-by: Barnabás Czémán <barnabas.czeman@xxxxxxxxxxxxxx> > --- > arch/arm64/boot/dts/qcom/msm8937.dtsi | 2134 +++++++++++++++++++++++++++++++++ > 1 file changed, 2134 insertions(+) > + }; > + > + > + firmware { > + scm: scm { > + compatible = "qcom,scm-msm8916", "qcom,scm"; "qcom,scm-msm8937", "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>; > + }; > + }; > + > + memory@80000000 { > + /* We expect the bootloader to fill in the reg */ > + reg = <0 0x80000000 0 0>; > + device_type = "memory"; > + }; > + > + reserved-memory { > + ranges; > + #address-cells = <2>; > + #size-cells = <2>; > + > + qseecom_mem: reserved@85b00000 { > + reg = <0x0 0x85b00000 0x0 0x800000>; > + no-map; > + }; > + > + smem@86300000 { > + compatible = "qcom,smem"; > + reg = <0x0 0x86300000 0x0 0x100000>; > + no-map; > + > + hwlocks = <&tcsr_mutex 3>; > + qcom,rpm-msg-ram = <&rpm_msg_ram>; > + }; > + > + reserved@86400000 { > + reg = <0x0 0x86400000 0x0 0x400000>; > + no-map; > + }; > + > + rmtfs@92100000 { > + compatible = "qcom,rmtfs-mem"; > + reg = <0x0 0x92100000 0x0 0x180000>; > + no-map; > + > + qcom,client-id = <1>; > + }; > + > + adsp_mem: adsp { > + size = <0x0 0x1100000>; > + alignment = <0x0 0x100000>; > + alloc-ranges = <0x0 0x86800000 0x0 0x8000000>; > + no-map; > + status = "disabled"; > + }; > + > + mba_mem: mba { > + size = <0x0 0x100000>; > + alignment = <0x0 0x100000>; > + alloc-ranges = <0x0 0x86800000 0x0 0x8000000>; > + no-map; > + status = "disabled"; > + }; > + > + wcnss_mem: wcnss { > + size = <0x0 0x700000>; > + alignment = <0x0 0x100000>; > + alloc-ranges = <0x0 0x86800000 0x0 0x8000000>; > + no-map; > + status = "disabled"; > + }; > + > + venus_mem: venus { > + size = <0x0 0x400000>; > + alignment = <0x0 0x100000>; > + alloc-ranges = <0x0 0x86800000 0x0 0x8000000>; > + no-map; > + status = "disabled"; > + }; > + }; > + > + cpu_opp_table_c0: opp-table-c0 { > + compatible = "operating-points-v2"; > + opp-shared; > + > + opp-768000000 { > + opp-hz = /bits/ 64 <768000000>; > + }; > + > + opp-902400000 { > + opp-hz = /bits/ 64 <902400000>; > + }; > + > + opp-998400000 { > + opp-hz = /bits/ 64 <998400000>; > + }; > + > + opp-1094400000 { > + opp-hz = /bits/ 64 <1094400000>; > + }; > + }; > + > + cpu_opp_table_c1: opp-table-c1 { > + compatible = "operating-points-v2"; > + opp-shared; > + > + opp-960000000 { > + opp-hz = /bits/ 64 <960000000>; > + }; > + > + opp-1094400000 { > + opp-hz = /bits/ 64 <1094400000>; > + }; > + > + opp-1209600000 { > + opp-hz = /bits/ 64 <1209600000>; > + }; > + > + opp-1248000000 { > + opp-hz = /bits/ 64 <1248000000>; > + }; > + > + opp-1344000000 { > + opp-hz = /bits/ 64 <1344000000>; > + }; > + > + opp-1401600000 { > + opp-hz = /bits/ 64 <1401600000>; > + }; > + }; > + > + pmu { > + compatible = "arm,cortex-a53-pmu"; > + interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>; > + }; > + > + psci { > + compatible = "arm,psci-1.0"; > + method = "smc"; > + }; > + > + rpm: remoteproc { > + compatible = "qcom,msm8937-rpm-proc", "qcom,rpm-proc"; > + > + smd-edge { > + interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; > + qcom,ipc = <&apcs1 8 0>; > + qcom,smd-edge = <15>; > + > + rpm_requests: rpm-requests { > + compatible = "qcom,rpm-msm8937", "qcom,smd-rpm"; > + qcom,smd-channels = "rpm_requests"; > + > + rpmcc: clock-controller { > + compatible = "qcom,rpmcc-msm8937", "qcom,rpmcc"; > + #clock-cells = <1>; > + clocks = <&xo_board>; > + clock-names = "xo"; > + }; > + > + rpmpd: power-controller { > + compatible = "qcom,msm8937-rpmpd", "qcom,msm8917-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 = <RPM_SMD_LEVEL_RETENTION>; > + }; > + > + rpmpd_opp_ret_plus: opp2 { > + opp-level = <RPM_SMD_LEVEL_RETENTION_PLUS>; > + }; > + > + rpmpd_opp_min_svs: opp3 { > + opp-level = <RPM_SMD_LEVEL_MIN_SVS>; > + }; > + > + rpmpd_opp_low_svs: opp4 { > + opp-level = <RPM_SMD_LEVEL_LOW_SVS>; > + }; > + > + rpmpd_opp_svs: opp5 { > + opp-level = <RPM_SMD_LEVEL_SVS>; > + }; > + > + rpmpd_opp_svs_plus: opp6 { > + opp-level = <RPM_SMD_LEVEL_SVS_PLUS>; > + }; > + > + rpmpd_opp_nom: opp7 { > + opp-level = <RPM_SMD_LEVEL_NOM>; > + }; > + > + rpmpd_opp_nom_plus: opp8 { > + opp-level = <RPM_SMD_LEVEL_NOM_PLUS>; > + }; > + > + rpmpd_opp_turbo: opp9 { > + opp-level = <RPM_SMD_LEVEL_TURBO>; > + }; > + }; > + }; > + }; > + }; > + }; > + > + smp2p-adsp { > + compatible = "qcom,smp2p"; > + qcom,smem = <443>, <429>; > + > + interrupts = <GIC_SPI 291 IRQ_TYPE_EDGE_RISING>; > + > + mboxes = <&apcs1 10>; > + > + qcom,local-pid = <0>; > + qcom,remote-pid = <2>; > + > + adsp_smp2p_out: master-kernel { > + qcom,entry-name = "master-kernel"; > + > + #qcom,smem-state-cells = <1>; > + }; > + > + adsp_smp2p_in: slave-kernel { > + qcom,entry-name = "slave-kernel"; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + smp2p-modem { > + compatible = "qcom,smp2p"; > + qcom,smem = <435>, <428>; > + > + interrupts = <GIC_SPI 27 IRQ_TYPE_EDGE_RISING>; > + > + mboxes = <&apcs1 14>; > + > + qcom,local-pid = <0>; > + qcom,remote-pid = <1>; > + > + modem_smp2p_out: master-kernel { > + qcom,entry-name = "master-kernel"; > + > + #qcom,smem-state-cells = <1>; > + }; > + > + modem_smp2p_in: slave-kernel { > + qcom,entry-name = "slave-kernel"; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + smp2p-wcnss { > + compatible = "qcom,smp2p"; > + qcom,smem = <451>, <431>; > + > + interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>; > + > + mboxes = <&apcs1 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>; > + > + mboxes = <0>, <&apcs1 13>, <0>, <&apcs1 19>; > + > + apps_smsm: apps@0 { > + reg = <0>; > + > + #qcom,smem-state-cells = <1>; > + }; > + > + hexagon_smsm: hexagon@1 { > + reg = <1>; > + interrupts = <GIC_SPI 26 IRQ_TYPE_EDGE_RISING>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + > + wcnss_smsm: wcnss@6 { > + reg = <6>; > + interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>; > + > + interrupt-controller; > + #interrupt-cells = <2>; > + }; > + }; > + > + soc: soc@0 { > + compatible = "simple-bus"; > + ranges = <0 0 0 0xffffffff>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + qfprom: qfprom@a4000 { > + compatible = "qcom,msm8937-qfprom", "qcom,qfprom"; > + reg = <0x000a4000 0x1000>; > + #address-cells = <1>; > + #size-cells = <1>; > + > + tsens_base1: base1@1d8 { > + reg = <0x1d8 0x1>; > + bits = <0 8>; > + }; > + > + tsens_s5_p1: s5-p1@1d9 { > + reg = <0x1d9 0x1>; > + bits = <0 6>; > + }; > + > + tsens_s5_p2: s5-p2@1d9 { > + reg = <0x1d9 0x2>; > + bits = <6 6>; > + }; > + > + tsens_s6_p1: s6-p1@1da { > + reg = <0x1da 0x2>; > + bits = <4 6>; > + }; > + > + tsens_s6_p2: s6-p2@1db { > + reg = <0x1db 0x1>; > + bits = <2 6>; > + }; > + > + tsens_s7_p1: s7-p1@1dc { > + reg = <0x1dc 0x1>; > + bits = <0 6>; > + }; > + > + tsens_s7_p2: s7-p2@1dc { > + reg = <0x1dc 0x2>; > + bits = <6 6>; > + }; > + > + tsens_s8_p1: s8-p1@1dd { > + reg = <0x1dd 0x2>; > + bits = <4 6>; > + }; > + > + tsens_s8_p2: s8-p2@1de { > + reg = <0x1de 0x1>; > + bits = <2 6>; > + }; > + > + tsens_base2: base2@1df { > + reg = <0x1df 0x1>; > + bits = <0 8>; > + }; > + > + tsens_mode: mode@210 { > + reg = <0x210 0x1>; > + bits = <0 3>; > + }; > + > + tsens_s0_p1: s0-p1@210 { > + reg = <0x210 0x2>; > + bits = <3 6>; > + }; > + > + tsens_s0_p2: s0-p2@211 { > + reg = <0x211 0x1>; > + bits = <1 6>; > + }; > + > + tsens_s1_p1: s1-p1@211 { > + reg = <0x211 0x2>; > + bits = <7 6>; > + }; > + > + tsens_s1_p2: s1-p2@212 { > + reg = <0x212 0x2>; > + bits = <5 6>; > + }; > + > + tsens_s2_p1: s2-p1@213 { > + reg = <0x213 0x2>; > + bits = <3 6>; > + }; > + > + tsens_s2_p2: s2-p2@214 { > + reg = <0x214 0x1>; > + bits = <1 6>; > + }; > + > + tsens_s3_p1: s3-p1@214 { > + reg = <0x214 0x2>; > + bits = <7 6>; > + }; > + > + tsens_s3_p2: s3-p2@215 { > + reg = <0x215 0x2>; > + bits = <5 6>; > + }; > + > + tsens_s4_p1: s4-p1@216 { > + reg = <0x216 0x2>; > + bits = <3 6>; > + }; > + > + tsens_s4_p2: s4-p2@217 { > + reg = <0x217 0x1>; > + bits = <1 6>; > + }; > + > + tsens_s9_p1: s9-p1@230 { > + reg = <0x230 0x1>; > + bits = <0 6>; > + }; > + > + tsens_s9_p2: s9-p2@230 { > + reg = <0x230 0x2>; > + bits = <6 6>; > + }; > + > + tsens_s10_p1: s10-p1@231 { > + reg = <0x231 0x2>; > + bits = <4 6>; > + }; > + > + tsens_s10_p2: s10-p2@232 { > + reg = <0x232 0x1>; > + bits = <2 6>; > + }; > + > + gpu_speed_bin: gpu-speed-bin@601b { > + reg = <0x601b 0x1>; > + bits = <7 1>; > + }; > + }; > + > + usb_hs_phy: phy@6c000 { > + compatible = "qcom,usb-hs-28nm-femtophy"; > + reg = <0x0006c000 0x200>; > + #phy-cells = <0>; > + clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>, > + <&gcc GCC_USB_HS_PHY_CFG_AHB_CLK>, > + <&gcc GCC_USB2A_PHY_SLEEP_CLK>; > + clock-names = "ref", > + "ahb", > + "sleep"; > + resets = <&gcc GCC_QUSB2_PHY_BCR>, > + <&gcc GCC_USB2_HS_PHY_ONLY_BCR>; > + reset-names = "phy", > + "por"; > + status = "disabled"; > + }; > + > + rng@e3000 { > + compatible = "qcom,prng"; > + reg = <0x000e3000 0x1000>; > + clocks = <&gcc GCC_PRNG_AHB_CLK>; > + clock-names = "core"; > + }; > + > + tsens: thermal-sensor@4a9000 { > + compatible = "qcom,msm8937-tsens", "qcom,tsens-v1"; > + reg = <0x004a9000 0x1000>, > + <0x004a8000 0x1000>; > + interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH>; > + interrupt-names = "uplow"; > + nvmem-cells = <&tsens_mode>, > + <&tsens_base1>, <&tsens_base2>, > + <&tsens_s0_p1>, <&tsens_s0_p2>, > + <&tsens_s1_p1>, <&tsens_s1_p2>, > + <&tsens_s2_p1>, <&tsens_s2_p2>, > + <&tsens_s3_p1>, <&tsens_s3_p2>, > + <&tsens_s4_p1>, <&tsens_s4_p2>, > + <&tsens_s5_p1>, <&tsens_s5_p2>, > + <&tsens_s6_p1>, <&tsens_s6_p2>, > + <&tsens_s7_p1>, <&tsens_s7_p2>, > + <&tsens_s8_p1>, <&tsens_s8_p2>, > + <&tsens_s9_p1>, <&tsens_s9_p2>, > + <&tsens_s10_p1>, <&tsens_s10_p2>; > + nvmem-cell-names = "mode", > + "base1", "base2", > + "s0_p1", "s0_p2", > + "s1_p1", "s1_p2", > + "s2_p1", "s2_p2", > + "s3_p1", "s3_p2", > + "s4_p1", "s4_p2", > + "s5_p1", "s5_p2", > + "s6_p1", "s6_p2", > + "s7_p1", "s7_p2", > + "s8_p1", "s8_p2", > + "s9_p1", "s9_p2", > + "s10_p1", "s10_p2"; > + #qcom,sensors = <11>; > + #thermal-sensor-cells = <1>; > + }; > + > + rpm_msg_ram: sram@60000 { This node is wrongly placed. > + compatible = "qcom,rpm-msg-ram"; > + reg = <0x00060000 0x8000>; > + }; > + > + restart@4ab000 { > + compatible = "qcom,pshold"; > + reg = <0x004ab000 0x4>; > + }; > + -- With best wishes Dmitry