1 // SPDX-License-Identifier: BSD-3-Clause
3 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
6 #include <dt-bindings/interrupt-controller/arm-gic.h>
7 #include <dt-bindings/clock/qcom,gcc-sm8250.h>
8 #include <dt-bindings/clock/qcom,rpmh.h>
9 #include <dt-bindings/power/qcom-rpmpd.h>
10 #include <dt-bindings/soc/qcom,rpmh-rsc.h>
13 interrupt-parent = <&intc>;
22 compatible = "fixed-clock";
24 clock-frequency = <38400000>;
25 clock-output-names = "xo_board";
28 sleep_clk: sleep-clk {
29 compatible = "fixed-clock";
30 clock-frequency = <32000>;
41 compatible = "qcom,kryo485";
43 enable-method = "psci";
44 next-level-cache = <&L2_0>;
47 next-level-cache = <&L3_0>;
56 compatible = "qcom,kryo485";
58 enable-method = "psci";
59 next-level-cache = <&L2_100>;
62 next-level-cache = <&L3_0>;
68 compatible = "qcom,kryo485";
70 enable-method = "psci";
71 next-level-cache = <&L2_200>;
74 next-level-cache = <&L3_0>;
80 compatible = "qcom,kryo485";
82 enable-method = "psci";
83 next-level-cache = <&L2_300>;
86 next-level-cache = <&L3_0>;
92 compatible = "qcom,kryo485";
94 enable-method = "psci";
95 next-level-cache = <&L2_400>;
98 next-level-cache = <&L3_0>;
104 compatible = "qcom,kryo485";
106 enable-method = "psci";
107 next-level-cache = <&L2_500>;
109 compatible = "cache";
110 next-level-cache = <&L3_0>;
117 compatible = "qcom,kryo485";
119 enable-method = "psci";
120 next-level-cache = <&L2_600>;
122 compatible = "cache";
123 next-level-cache = <&L3_0>;
129 compatible = "qcom,kryo485";
131 enable-method = "psci";
132 next-level-cache = <&L2_700>;
134 compatible = "cache";
135 next-level-cache = <&L3_0>;
142 compatible = "qcom,scm";
148 compatible = "qcom,tcsr-mutex";
149 syscon = <&tcsr_mutex_regs 0 0x1000>;
154 device_type = "memory";
155 /* We expect the bootloader to fill in the size */
156 reg = <0x0 0x80000000 0x0 0x0>;
160 compatible = "arm,armv8-pmuv3";
161 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH>;
165 compatible = "arm,psci-1.0";
170 #address-cells = <2>;
174 hyp_mem: memory@80000000 {
175 reg = <0x0 0x80000000 0x0 0x600000>;
179 xbl_aop_mem: memory@80700000 {
180 reg = <0x0 0x80700000 0x0 0x160000>;
184 cmd_db: memory@80860000 {
185 compatible = "qcom,cmd-db";
186 reg = <0x0 0x80860000 0x0 0x20000>;
190 smem_mem: memory@80900000 {
191 reg = <0x0 0x80900000 0x0 0x200000>;
195 removed_mem: memory@80b00000 {
196 reg = <0x0 0x80b00000 0x0 0x5300000>;
200 camera_mem: memory@86200000 {
201 reg = <0x0 0x86200000 0x0 0x500000>;
205 wlan_mem: memory@86700000 {
206 reg = <0x0 0x86700000 0x0 0x100000>;
210 ipa_fw_mem: memory@86800000 {
211 reg = <0x0 0x86800000 0x0 0x10000>;
215 ipa_gsi_mem: memory@86810000 {
216 reg = <0x0 0x86810000 0x0 0xa000>;
220 gpu_mem: memory@8681a000 {
221 reg = <0x0 0x8681a000 0x0 0x2000>;
225 npu_mem: memory@86900000 {
226 reg = <0x0 0x86900000 0x0 0x500000>;
230 video_mem: memory@86e00000 {
231 reg = <0x0 0x86e00000 0x0 0x500000>;
235 cvp_mem: memory@87300000 {
236 reg = <0x0 0x87300000 0x0 0x500000>;
240 cdsp_mem: memory@87800000 {
241 reg = <0x0 0x87800000 0x0 0x1400000>;
245 slpi_mem: memory@88c00000 {
246 reg = <0x0 0x88c00000 0x0 0x1500000>;
250 adsp_mem: memory@8a100000 {
251 reg = <0x0 0x8a100000 0x0 0x1d00000>;
255 spss_mem: memory@8be00000 {
256 reg = <0x0 0x8be00000 0x0 0x100000>;
260 cdsp_secure_heap: memory@8bf00000 {
261 reg = <0x0 0x8bf00000 0x0 0x4600000>;
267 compatible = "qcom,smem";
268 memory-region = <&smem_mem>;
269 hwlocks = <&tcsr_mutex 3>;
273 #address-cells = <2>;
275 ranges = <0 0 0 0 0x10 0>;
276 dma-ranges = <0 0 0 0 0x10 0>;
277 compatible = "simple-bus";
279 gcc: clock-controller@100000 {
280 compatible = "qcom,gcc-sm8250";
281 reg = <0x0 0x00100000 0x0 0x1f0000>;
284 #power-domain-cells = <1>;
285 clock-names = "bi_tcxo", "sleep_clk";
286 clocks = <&rpmhcc RPMH_CXO_CLK>, <&sleep_clk>;
289 qupv3_id_1: geniqup@ac0000 {
290 compatible = "qcom,geni-se-qup";
291 reg = <0x0 0x00ac0000 0x0 0x6000>;
292 clock-names = "m-ahb", "s-ahb";
293 clocks = <&gcc 133>, <&gcc 134>;
294 #address-cells = <2>;
299 uart2: serial@a90000 {
300 compatible = "qcom,geni-debug-uart";
301 reg = <0x0 0x00a90000 0x0 0x4000>;
304 interrupts = <GIC_SPI 357 IRQ_TYPE_LEVEL_HIGH>;
309 ufs_mem_hc: ufs@1d84000 {
310 compatible = "qcom,sm8250-ufshc", "qcom,ufshc",
312 reg = <0 0x01d84000 0 0x3000>;
313 interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>;
314 phys = <&ufs_mem_phy_lanes>;
315 phy-names = "ufsphy";
316 lanes-per-direction = <2>;
318 resets = <&gcc GCC_UFS_PHY_BCR>;
321 power-domains = <&gcc UFS_PHY_GDSC>;
333 <&gcc GCC_UFS_PHY_AXI_CLK>,
334 <&gcc GCC_AGGRE_UFS_PHY_AXI_CLK>,
335 <&gcc GCC_UFS_PHY_AHB_CLK>,
336 <&gcc GCC_UFS_PHY_UNIPRO_CORE_CLK>,
337 <&rpmhcc RPMH_CXO_CLK>,
338 <&gcc GCC_UFS_PHY_TX_SYMBOL_0_CLK>,
339 <&gcc GCC_UFS_PHY_RX_SYMBOL_0_CLK>,
340 <&gcc GCC_UFS_PHY_RX_SYMBOL_1_CLK>;
342 <37500000 300000000>,
345 <37500000 300000000>,
354 ufs_mem_phy: phy@1d87000 {
355 compatible = "qcom,sm8250-qmp-ufs-phy";
356 reg = <0 0x01d87000 0 0x1c0>;
357 #address-cells = <2>;
362 clocks = <&rpmhcc RPMH_CXO_CLK>,
363 <&gcc GCC_UFS_PHY_PHY_AUX_CLK>;
365 resets = <&ufs_mem_hc 0>;
366 reset-names = "ufsphy";
369 ufs_mem_phy_lanes: lanes@1d87400 {
370 reg = <0 0x01d87400 0 0x108>,
371 <0 0x01d87600 0 0x1e0>,
372 <0 0x01d87c00 0 0x1dc>,
373 <0 0x01d87800 0 0x108>,
374 <0 0x01d87a00 0 0x1e0>;
379 intc: interrupt-controller@17a00000 {
380 compatible = "arm,gic-v3";
381 #interrupt-cells = <3>;
382 interrupt-controller;
383 reg = <0x0 0x17a00000 0x0 0x10000>, /* GICD */
384 <0x0 0x17a60000 0x0 0x100000>; /* GICR * 8 */
385 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
388 pdc: interrupt-controller@b220000 {
389 compatible = "qcom,sm8250-pdc", "qcom,pdc";
390 reg = <0 0x0b220000 0 0x30000>, <0 0x17c000f0 0 0x60>;
391 qcom,pdc-ranges = <0 480 94>, <94 609 31>,
392 <125 63 1>, <126 716 12>;
393 #interrupt-cells = <2>;
394 interrupt-parent = <&intc>;
395 interrupt-controller;
398 spmi: qcom,spmi@c440000 {
399 compatible = "qcom,spmi-pmic-arb";
400 reg = <0x0 0x0c440000 0x0 0x0001100>,
401 <0x0 0x0c600000 0x0 0x2000000>,
402 <0x0 0x0e600000 0x0 0x0100000>,
403 <0x0 0x0e700000 0x0 0x00a0000>,
404 <0x0 0x0c40a000 0x0 0x0026000>;
405 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
406 interrupt-names = "periph_irq";
407 interrupts-extended = <&pdc 1 IRQ_TYPE_LEVEL_HIGH>;
410 #address-cells = <2>;
412 interrupt-controller;
413 #interrupt-cells = <4>;
416 apps_rsc: rsc@18200000 {
418 compatible = "qcom,rpmh-rsc";
419 reg = <0x0 0x18200000 0x0 0x10000>,
420 <0x0 0x18210000 0x0 0x10000>,
421 <0x0 0x18220000 0x0 0x10000>;
422 reg-names = "drv-0", "drv-1", "drv-2";
423 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
424 <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
425 <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
426 qcom,tcs-offset = <0xd00>;
428 qcom,tcs-config = <ACTIVE_TCS 2>, <SLEEP_TCS 3>,
429 <WAKE_TCS 3>, <CONTROL_TCS 1>;
431 rpmhcc: clock-controller {
432 compatible = "qcom,sm8250-rpmh-clk";
435 clocks = <&xo_board>;
438 rpmhpd: power-controller {
439 compatible = "qcom,sm8250-rpmhpd";
440 #power-domain-cells = <1>;
441 operating-points-v2 = <&rpmhpd_opp_table>;
443 rpmhpd_opp_table: opp-table {
444 compatible = "operating-points-v2";
446 rpmhpd_opp_ret: opp1 {
447 opp-level = <RPMH_REGULATOR_LEVEL_RETENTION>;
450 rpmhpd_opp_min_svs: opp2 {
451 opp-level = <RPMH_REGULATOR_LEVEL_MIN_SVS>;
454 rpmhpd_opp_low_svs: opp3 {
455 opp-level = <RPMH_REGULATOR_LEVEL_LOW_SVS>;
458 rpmhpd_opp_svs: opp4 {
459 opp-level = <RPMH_REGULATOR_LEVEL_SVS>;
462 rpmhpd_opp_svs_l1: opp5 {
463 opp-level = <RPMH_REGULATOR_LEVEL_SVS_L1>;
466 rpmhpd_opp_nom: opp6 {
467 opp-level = <RPMH_REGULATOR_LEVEL_NOM>;
470 rpmhpd_opp_nom_l1: opp7 {
471 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L1>;
474 rpmhpd_opp_nom_l2: opp8 {
475 opp-level = <RPMH_REGULATOR_LEVEL_NOM_L2>;
478 rpmhpd_opp_turbo: opp9 {
479 opp-level = <RPMH_REGULATOR_LEVEL_TURBO>;
482 rpmhpd_opp_turbo_l1: opp10 {
483 opp-level = <RPMH_REGULATOR_LEVEL_TURBO_L1>;
489 tcsr_mutex_regs: syscon@1f40000 {
490 compatible = "syscon";
491 reg = <0x0 0x01f40000 0x0 0x40000>;
495 #address-cells = <2>;
498 compatible = "arm,armv7-timer-mem";
499 reg = <0x0 0x17c20000 0x0 0x1000>;
500 clock-frequency = <19200000>;
504 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
505 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
506 reg = <0x0 0x17c21000 0x0 0x1000>,
507 <0x0 0x17c22000 0x0 0x1000>;
512 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
513 reg = <0x0 0x17c23000 0x0 0x1000>;
519 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
520 reg = <0x0 0x17c25000 0x0 0x1000>;
526 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
527 reg = <0x0 0x17c27000 0x0 0x1000>;
533 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
534 reg = <0x0 0x17c29000 0x0 0x1000>;
540 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
541 reg = <0x0 0x17c2b000 0x0 0x1000>;
547 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
548 reg = <0x0 0x17c2d000 0x0 0x1000>;
556 compatible = "arm,armv8-timer";
557 interrupts = <GIC_PPI 13
558 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
560 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
562 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>,
564 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_LOW)>;