1 // SPDX-License-Identifier: BSD-3-Clause
3 * SDX65 SoC device tree source
5 * Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
9 #include <dt-bindings/clock/qcom,gcc-sdx65.h>
10 #include <dt-bindings/clock/qcom,rpmh.h>
11 #include <dt-bindings/interrupt-controller/arm-gic.h>
12 #include <dt-bindings/power/qcom-rpmpd.h>
13 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
18 qcom,msm-id = <458 0x10000>, <483 0x10000>, <509 0x10000>;
19 interrupt-parent = <&intc>;
22 device_type = "memory";
28 compatible = "fixed-clock";
29 clock-frequency = <76800000>;
30 clock-output-names = "xo_board";
34 sleep_clk: sleep-clk {
35 compatible = "fixed-clock";
36 clock-frequency = <32764>;
37 clock-output-names = "sleep_clk";
41 nand_clk_dummy: nand-clk-dummy {
42 compatible = "fixed-clock";
43 clock-frequency = <32764>;
54 compatible = "arm,cortex-a7";
56 enable-method = "psci";
58 power-domains = <&rpmhpd SDX65_CX_AO>;
59 power-domain-names = "rpmhpd";
60 operating-points-v2 = <&cpu_opp_table>;
64 cpu_opp_table: cpu-opp-table {
65 compatible = "operating-points-v2";
69 opp-hz = /bits/ 64 <345600000>;
70 required-opps = <&rpmhpd_opp_low_svs>;
74 opp-hz = /bits/ 64 <576000000>;
75 required-opps = <&rpmhpd_opp_svs>;
79 opp-hz = /bits/ 64 <1094400000>;
80 required-opps = <&rpmhpd_opp_nom>;
84 opp-hz = /bits/ 64 <1497600000>;
85 required-opps = <&rpmhpd_opp_turbo>;
91 compatible = "qcom,scm-sdx65", "qcom,scm";
95 mc_virt: interconnect-mc-virt {
96 compatible = "qcom,sdx65-mc-virt";
97 #interconnect-cells = <1>;
98 qcom,bcm-voters = <&apps_bcm_voter>;
102 compatible = "arm,psci-1.0";
106 reserved_memory: reserved-memory {
107 #address-cells = <1>;
111 tz_heap_mem: memory@8fcad000 {
113 reg = <0x8fcad000 0x40000>;
116 secdata_mem: memory@8fcfd000 {
118 reg = <0x8fcfd000 0x1000>;
121 hyp_mem: memory@8fd00000 {
123 reg = <0x8fd00000 0x80000>;
126 access_control_mem: memory@8fd80000 {
128 reg = <0x8fd80000 0x80000>;
131 aop_mem: memory@8fe00000 {
133 reg = <0x8fe00000 0x20000>;
136 smem_mem: memory@8fe20000 {
137 compatible = "qcom,smem";
138 reg = <0x8fe20000 0xc0000>;
139 hwlocks = <&tcsr_mutex 3>;
143 cmd_db: reserved-memory@8fee0000 {
144 compatible = "qcom,cmd-db";
145 reg = <0x8fee0000 0x20000>;
149 tz_mem: memory@8ff00000 {
151 reg = <0x8ff00000 0x100000>;
154 tz_apps_mem: memory@90000000 {
156 reg = <0x90000000 0x500000>;
159 llcc_tcm_mem: memory@15800000 {
161 reg = <0x15800000 0x800000>;
166 compatible = "qcom,smp2p";
167 qcom,smem = <435>, <428>;
168 interrupts = <GIC_SPI 113 IRQ_TYPE_EDGE_RISING>;
170 qcom,local-pid = <0>;
171 qcom,remote-pid = <1>;
173 modem_smp2p_out: master-kernel {
174 qcom,entry-name = "master-kernel";
175 #qcom,smem-state-cells = <1>;
178 modem_smp2p_in: slave-kernel {
179 qcom,entry-name = "slave-kernel";
180 interrupt-controller;
181 #interrupt-cells = <2>;
184 ipa_smp2p_out: ipa-ap-to-modem {
185 qcom,entry-name = "ipa";
186 #qcom,smem-state-cells = <1>;
189 ipa_smp2p_in: ipa-modem-to-ap {
190 qcom,entry-name = "ipa";
191 interrupt-controller;
192 #interrupt-cells = <2>;
197 #address-cells = <1>;
200 compatible = "simple-bus";
202 gcc: clock-controller@100000 {
203 compatible = "qcom,gcc-sdx65";
204 reg = <0x00100000 0x001f7400>;
205 clocks = <&rpmhcc RPMH_CXO_CLK>, <&rpmhcc RPMH_CXO_CLK_A>, <&sleep_clk>;
206 clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
207 #power-domain-cells = <1>;
212 blsp1_uart3: serial@831000 {
213 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
214 reg = <0x00831000 0x200>;
215 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
216 clocks = <&gcc GCC_BLSP1_UART3_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
217 clock-names = "core", "iface";
221 usb_hsphy: phy@ff4000 {
222 compatible = "qcom,usb-snps-hs-7nm-phy";
223 reg = <0xff4000 0x120>;
226 clocks = <&rpmhcc RPMH_CXO_CLK>;
228 resets = <&gcc GCC_QUSB2PHY_BCR>;
231 usb_qmpphy: phy@ff6000 {
232 compatible = "qcom,sdx65-qmp-usb3-uni-phy";
233 reg = <0x00ff6000 0x1c8>;
235 #address-cells = <1>;
239 clocks = <&gcc GCC_USB3_PHY_AUX_CLK>,
240 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
241 <&gcc GCC_USB3_PRIM_CLKREF_EN>;
242 clock-names = "aux", "cfg_ahb", "ref";
244 resets = <&gcc GCC_USB3PHY_PHY_BCR>,
245 <&gcc GCC_USB3_PHY_BCR>;
246 reset-names = "phy", "common";
248 usb_ssphy: phy@ff6200 {
249 reg = <0x00ff6e00 0x160>,
254 clocks = <&gcc GCC_USB3_PHY_PIPE_CLK>;
255 clock-names = "pipe0";
256 clock-output-names = "usb3_uni_phy_pipe_clk_src";
260 system_noc: interconnect@1620000 {
261 compatible = "qcom,sdx65-system-noc";
262 reg = <0x01620000 0x31200>;
263 #interconnect-cells = <1>;
264 qcom,bcm-voters = <&apps_bcm_voter>;
267 qpic_bam: dma-controller@1b04000 {
268 compatible = "qcom,bam-v1.7.0";
269 reg = <0x01b04000 0x1c000>;
270 interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH>;
271 clocks = <&rpmhcc RPMH_QPIC_CLK>;
272 clock-names = "bam_clk";
275 qcom,controlled-remotely;
279 qpic_nand: nand-controller@1b30000 {
280 compatible = "qcom,sdx55-nand";
281 reg = <0x01b30000 0x10000>;
282 #address-cells = <1>;
284 clocks = <&rpmhcc RPMH_QPIC_CLK>,
286 clock-names = "core", "aon";
288 dmas = <&qpic_bam 0>,
291 dma-names = "tx", "rx", "cmd";
295 tcsr_mutex: hwlock@1f40000 {
296 compatible = "qcom,tcsr-mutex";
297 reg = <0x01f40000 0x40000>;
301 remoteproc_mpss: remoteproc@4080000 {
302 compatible = "qcom,sdx55-mpss-pas";
303 reg = <0x04080000 0x4040>;
305 interrupts-extended = <&intc GIC_SPI 250 IRQ_TYPE_EDGE_RISING>,
306 <&modem_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
307 <&modem_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
308 <&modem_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
309 <&modem_smp2p_in 3 IRQ_TYPE_EDGE_RISING>,
310 <&modem_smp2p_in 7 IRQ_TYPE_EDGE_RISING>;
311 interrupt-names = "wdog", "fatal", "ready", "handover",
312 "stop-ack", "shutdown-ack";
314 clocks = <&rpmhcc RPMH_CXO_CLK>;
317 power-domains = <&rpmhpd SDX65_CX>,
319 power-domain-names = "cx", "mss";
321 qcom,smem-states = <&modem_smp2p_out 0>;
322 qcom,smem-state-names = "stop";
327 interrupts = <GIC_SPI 114 IRQ_TYPE_EDGE_RISING>;
329 qcom,remote-pid = <1>;
334 sdhc_1: mmc@8804000 {
335 compatible = "qcom,sdx65-sdhci", "qcom,sdhci-msm-v5";
336 reg = <0x08804000 0x1000>;
338 interrupts = <GIC_SPI 210 IRQ_TYPE_LEVEL_HIGH>,
339 <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH>;
340 interrupt-names = "hc_irq", "pwr_irq";
341 clocks = <&gcc GCC_SDCC1_APPS_CLK>,
342 <&gcc GCC_SDCC1_AHB_CLK>;
343 clock-names = "core", "iface";
347 mem_noc: interconnect@9680000 {
348 compatible = "qcom,sdx65-mem-noc";
349 reg = <0x09680000 0x27200>;
350 #interconnect-cells = <1>;
351 qcom,bcm-voters = <&apps_bcm_voter>;
355 compatible = "qcom,sdx65-dwc3", "qcom,dwc3";
356 reg = <0x0a6f8800 0x400>;
358 #address-cells = <1>;
362 clocks = <&gcc GCC_USB30_SLV_AHB_CLK>,
363 <&gcc GCC_USB30_MASTER_CLK>,
364 <&gcc GCC_USB30_MSTR_AXI_CLK>,
365 <&gcc GCC_USB30_MOCK_UTMI_CLK>,
366 <&gcc GCC_USB30_SLEEP_CLK>;
367 clock-names = "cfg_noc", "core", "iface", "mock_utmi",
370 assigned-clocks = <&gcc GCC_USB30_MOCK_UTMI_CLK>,
371 <&gcc GCC_USB30_MASTER_CLK>;
372 assigned-clock-rates = <19200000>, <200000000>;
374 interrupts-extended = <&intc GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
375 <&pdc 76 IRQ_TYPE_LEVEL_HIGH>,
376 <&pdc 18 IRQ_TYPE_EDGE_BOTH>,
377 <&pdc 19 IRQ_TYPE_EDGE_BOTH>;
378 interrupt-names = "hs_phy_irq",
383 power-domains = <&gcc USB30_GDSC>;
385 resets = <&gcc GCC_USB30_BCR>;
387 usb_dwc3: usb@a600000 {
388 compatible = "snps,dwc3";
389 reg = <0x0a600000 0xcd00>;
390 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
391 iommus = <&apps_smmu 0x1a0 0x0>;
392 snps,dis_u2_susphy_quirk;
393 snps,dis_enblslpm_quirk;
394 phys = <&usb_hsphy>, <&usb_ssphy>;
395 phy-names = "usb2-phy", "usb3-phy";
400 compatible = "qcom,pshold";
401 reg = <0x0c264000 0x1000>;
404 spmi_bus: spmi@c440000 {
405 compatible = "qcom,spmi-pmic-arb";
406 reg = <0xc440000 0xd00>,
407 <0xc600000 0x2000000>,
408 <0xe600000 0x100000>,
411 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
412 interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
413 interrupt-names = "periph_irq";
414 interrupt-controller;
415 #interrupt-cells = <4>;
416 #address-cells = <2>;
423 tlmm: pinctrl@f100000 {
424 compatible = "qcom,sdx65-tlmm";
425 reg = <0xf100000 0x300000>;
426 interrupts = <GIC_SPI 212 IRQ_TYPE_LEVEL_HIGH>;
429 gpio-ranges = <&tlmm 0 0 109>;
430 interrupt-controller;
431 interrupt-parent = <&intc>;
432 #interrupt-cells = <2>;
435 pdc: interrupt-controller@b210000 {
436 compatible = "qcom,sdx65-pdc", "qcom,pdc";
437 reg = <0xb210000 0x10000>;
438 qcom,pdc-ranges = <0 147 52>, <52 266 32>;
439 #interrupt-cells = <2>;
440 interrupt-parent = <&intc>;
441 interrupt-controller;
445 compatible = "simple-mfd";
446 reg = <0x1468f000 0x1000>;
447 ranges = <0x0 0x1468f000 0x1000>;
448 #address-cells = <1>;
452 compatible = "qcom,pil-reloc-info";
457 apps_smmu: iommu@15000000 {
458 compatible = "qcom,sdx65-smmu-500", "qcom,smmu-500", "arm,mmu-500";
459 reg = <0x15000000 0x40000>;
461 #global-interrupts = <1>;
462 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>,
463 <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>,
464 <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>,
465 <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>,
466 <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>,
467 <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>,
468 <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>,
469 <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
470 <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>,
471 <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>,
472 <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>,
473 <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>,
474 <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>,
475 <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
476 <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>,
477 <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>,
478 <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>,
479 <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>,
480 <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>,
481 <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>,
482 <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>,
483 <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>,
484 <GIC_SPI 298 IRQ_TYPE_LEVEL_HIGH>,
485 <GIC_SPI 299 IRQ_TYPE_LEVEL_HIGH>,
486 <GIC_SPI 300 IRQ_TYPE_LEVEL_HIGH>,
487 <GIC_SPI 301 IRQ_TYPE_LEVEL_HIGH>,
488 <GIC_SPI 302 IRQ_TYPE_LEVEL_HIGH>,
489 <GIC_SPI 303 IRQ_TYPE_LEVEL_HIGH>,
490 <GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
491 <GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
492 <GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>,
493 <GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
494 <GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>;
497 intc: interrupt-controller@17800000 {
498 compatible = "qcom,msm-qgic2";
499 interrupt-controller;
500 interrupt-parent = <&intc>;
501 #interrupt-cells = <3>;
502 reg = <0x17800000 0x1000>,
506 a7pll: clock@17808000 {
507 compatible = "qcom,sdx55-a7pll";
508 reg = <0x17808000 0x1000>;
509 clocks = <&rpmhcc RPMH_CXO_CLK>;
510 clock-names = "bi_tcxo";
514 apcs: mailbox@17810000 {
515 compatible = "qcom,sdx55-apcs-gcc", "syscon";
516 reg = <0x17810000 0x2000>;
518 clocks = <&rpmhcc RPMH_CXO_CLK>, <&a7pll>, <&gcc GPLL0>;
519 clock-names = "ref", "pll", "aux";
524 compatible = "qcom,apss-wdt-sdx65", "qcom,kpss-wdt";
525 reg = <0x17817000 0x1000>;
526 clocks = <&sleep_clk>;
530 #address-cells = <1>;
533 compatible = "arm,armv7-timer-mem";
534 reg = <0x17820000 0x1000>;
535 clock-frequency = <19200000>;
539 interrupts = <GIC_SPI 7 0x4>,
541 reg = <0x17821000 0x1000>,
547 interrupts = <GIC_SPI 8 0x4>;
548 reg = <0x17823000 0x1000>;
554 interrupts = <GIC_SPI 9 0x4>;
555 reg = <0x17824000 0x1000>;
561 interrupts = <GIC_SPI 10 0x4>;
562 reg = <0x17825000 0x1000>;
568 interrupts = <GIC_SPI 11 0x4>;
569 reg = <0x17826000 0x1000>;
575 interrupts = <GIC_SPI 12 0x4>;
576 reg = <0x17827000 0x1000>;
582 interrupts = <GIC_SPI 13 0x4>;
583 reg = <0x17828000 0x1000>;
589 interrupts = <GIC_SPI 14 0x4>;
590 reg = <0x17829000 0x1000>;
595 apps_rsc: rsc@17830000 {
597 compatible = "qcom,rpmh-rsc";
598 reg = <0x17830000 0x10000>,
599 <0x17840000 0x10000>;
600 reg-names = "drv-0", "drv-1";
601 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
602 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
603 qcom,tcs-offset = <0xd00>;
605 qcom,tcs-config = <ACTIVE_TCS 2>,
610 rpmhcc: clock-controller {
611 compatible = "qcom,sdx65-rpmh-clk";
614 clocks = <&xo_board>;
617 rpmhpd: power-controller {
618 compatible = "qcom,sdx65-rpmhpd";
619 #power-domain-cells = <1>;
620 operating-points-v2 = <&rpmhpd_opp_table>;
622 rpmhpd_opp_table: opp-table {
623 compatible = "operating-points-v2";
625 rpmhpd_opp_ret: opp1 {
626 opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
629 rpmhpd_opp_min_svs: opp2 {
630 opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
633 rpmhpd_opp_low_svs: opp3 {
634 opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
637 rpmhpd_opp_svs: opp4 {
638 opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
641 rpmhpd_opp_svs_l1: opp5 {
642 opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
645 rpmhpd_opp_nom: opp6 {
646 opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
649 rpmhpd_opp_nom_l1: opp7 {
650 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
653 rpmhpd_opp_nom_l2: opp8 {
654 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
657 rpmhpd_opp_turbo: opp9 {
658 opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
661 rpmhpd_opp_turbo_l1: opp10 {
662 opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
667 apps_bcm_voter: bcm-voter {
668 compatible = "qcom,bcm-voter";
675 compatible = "arm,armv7-timer";
676 interrupts = <1 13 0xf08>,
680 clock-frequency = <19200000>;