1/* 2 * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved. 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License version 2 and 6 * only version 2 as published by the Free Software Foundation. 7 * 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * GNU General Public License for more details. 12 */ 13 14#include <dt-bindings/interrupt-controller/arm-gic.h> 15#include <dt-bindings/clock/qcom,gcc-msm8916.h> 16#include <dt-bindings/reset/qcom,gcc-msm8916.h> 17#include <dt-bindings/clock/qcom,rpmcc.h> 18 19/ { 20 model = "Qualcomm Technologies, Inc. MSM8916"; 21 compatible = "qcom,msm8916"; 22 23 interrupt-parent = <&intc>; 24 25 #address-cells = <2>; 26 #size-cells = <2>; 27 28 aliases { 29 sdhc1 = &sdhc_1; /* SDC1 eMMC slot */ 30 sdhc2 = &sdhc_2; /* SDC2 SD card slot */ 31 }; 32 33 chosen { }; 34 35 memory { 36 device_type = "memory"; 37 /* We expect the bootloader to fill in the reg */ 38 reg = <0 0 0 0>; 39 }; 40 41 reserved-memory { 42 #address-cells = <2>; 43 #size-cells = <2>; 44 ranges; 45 46 tz-apps@86000000 { 47 reg = <0x0 0x86000000 0x0 0x300000>; 48 no-map; 49 }; 50 51 smem_mem: smem_region@86300000 { 52 reg = <0x0 0x86300000 0x0 0x100000>; 53 no-map; 54 }; 55 56 hypervisor@86400000 { 57 reg = <0x0 0x86400000 0x0 0x100000>; 58 no-map; 59 }; 60 61 tz@86500000 { 62 reg = <0x0 0x86500000 0x0 0x180000>; 63 no-map; 64 }; 65 66 reserved@8668000 { 67 reg = <0x0 0x86680000 0x0 0x80000>; 68 no-map; 69 }; 70 71 rmtfs@86700000 { 72 reg = <0x0 0x86700000 0x0 0xe0000>; 73 no-map; 74 }; 75 76 rfsa@867e00000 { 77 reg = <0x0 0x867e0000 0x0 0x20000>; 78 no-map; 79 }; 80 81 mpss_mem: mpss@86800000 { 82 reg = <0x0 0x86800000 0x0 0x2b00000>; 83 no-map; 84 }; 85 86 wcnss_mem: wcnss@89300000 { 87 reg = <0x0 0x89300000 0x0 0x600000>; 88 no-map; 89 }; 90 91 mba_mem: mba@8ea00000 { 92 no-map; 93 reg = <0 0x8ea00000 0 0x100000>; 94 }; 95 }; 96 97 cpus { 98 #address-cells = <1>; 99 #size-cells = <0>; 100 101 CPU0: cpu@0 { 102 device_type = "cpu"; 103 compatible = "arm,cortex-a53", "arm,armv8"; 104 reg = <0x0>; 105 next-level-cache = <&L2_0>; 106 enable-method = "psci"; 107 cpu-idle-states = <&CPU_SPC>; 108 }; 109 110 CPU1: cpu@1 { 111 device_type = "cpu"; 112 compatible = "arm,cortex-a53", "arm,armv8"; 113 reg = <0x1>; 114 next-level-cache = <&L2_0>; 115 enable-method = "psci"; 116 cpu-idle-states = <&CPU_SPC>; 117 }; 118 119 CPU2: cpu@2 { 120 device_type = "cpu"; 121 compatible = "arm,cortex-a53", "arm,armv8"; 122 reg = <0x2>; 123 next-level-cache = <&L2_0>; 124 enable-method = "psci"; 125 cpu-idle-states = <&CPU_SPC>; 126 }; 127 128 CPU3: cpu@3 { 129 device_type = "cpu"; 130 compatible = "arm,cortex-a53", "arm,armv8"; 131 reg = <0x3>; 132 next-level-cache = <&L2_0>; 133 enable-method = "psci"; 134 cpu-idle-states = <&CPU_SPC>; 135 }; 136 137 L2_0: l2-cache { 138 compatible = "cache"; 139 cache-level = <2>; 140 }; 141 142 idle-states { 143 CPU_SPC: spc { 144 compatible = "arm,idle-state"; 145 arm,psci-suspend-param = <0x40000002>; 146 entry-latency-us = <130>; 147 exit-latency-us = <150>; 148 min-residency-us = <2000>; 149 local-timer-stop; 150 }; 151 }; 152 }; 153 154 psci { 155 compatible = "arm,psci-1.0"; 156 method = "smc"; 157 }; 158 159 pmu { 160 compatible = "arm,cortex-a53-pmu"; 161 interrupts = <GIC_PPI 7 GIC_CPU_MASK_SIMPLE(4)>; 162 }; 163 164 thermal-zones { 165 cpu-thermal0 { 166 polling-delay-passive = <250>; 167 polling-delay = <1000>; 168 169 thermal-sensors = <&tsens 4>; 170 171 trips { 172 cpu_alert0: trip0 { 173 temperature = <75000>; 174 hysteresis = <2000>; 175 type = "passive"; 176 }; 177 cpu_crit0: trip1 { 178 temperature = <110000>; 179 hysteresis = <2000>; 180 type = "critical"; 181 }; 182 }; 183 }; 184 185 cpu-thermal1 { 186 polling-delay-passive = <250>; 187 polling-delay = <1000>; 188 189 thermal-sensors = <&tsens 3>; 190 191 trips { 192 cpu_alert1: trip0 { 193 temperature = <75000>; 194 hysteresis = <2000>; 195 type = "passive"; 196 }; 197 cpu_crit1: trip1 { 198 temperature = <110000>; 199 hysteresis = <2000>; 200 type = "critical"; 201 }; 202 }; 203 }; 204 205 }; 206 207 timer { 208 compatible = "arm,armv8-timer"; 209 interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 210 <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 211 <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 212 <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 213 }; 214 215 clocks { 216 xo_board: xo_board { 217 compatible = "fixed-clock"; 218 #clock-cells = <0>; 219 clock-frequency = <19200000>; 220 }; 221 222 sleep_clk: sleep_clk { 223 compatible = "fixed-clock"; 224 #clock-cells = <0>; 225 clock-frequency = <32768>; 226 }; 227 }; 228 229 smem { 230 compatible = "qcom,smem"; 231 232 memory-region = <&smem_mem>; 233 qcom,rpm-msg-ram = <&rpm_msg_ram>; 234 235 hwlocks = <&tcsr_mutex 3>; 236 }; 237 238 firmware { 239 scm: scm { 240 compatible = "qcom,scm"; 241 clocks = <&gcc GCC_CRYPTO_CLK>, <&gcc GCC_CRYPTO_AXI_CLK>, <&gcc GCC_CRYPTO_AHB_CLK>; 242 clock-names = "core", "bus", "iface"; 243 #reset-cells = <1>; 244 }; 245 }; 246 247 soc: soc { 248 #address-cells = <1>; 249 #size-cells = <1>; 250 ranges = <0 0 0 0xffffffff>; 251 compatible = "simple-bus"; 252 253 restart@4ab000 { 254 compatible = "qcom,pshold"; 255 reg = <0x4ab000 0x4>; 256 }; 257 258 msmgpio: pinctrl@1000000 { 259 compatible = "qcom,msm8916-pinctrl"; 260 reg = <0x1000000 0x300000>; 261 interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; 262 gpio-controller; 263 #gpio-cells = <2>; 264 interrupt-controller; 265 #interrupt-cells = <2>; 266 }; 267 268 gcc: clock-controller@1800000 { 269 compatible = "qcom,gcc-msm8916"; 270 #clock-cells = <1>; 271 #reset-cells = <1>; 272 #power-domain-cells = <1>; 273 reg = <0x1800000 0x80000>; 274 }; 275 276 tcsr_mutex_regs: syscon@1905000 { 277 compatible = "syscon"; 278 reg = <0x1905000 0x20000>; 279 }; 280 281 tcsr: syscon@1937000 { 282 compatible = "qcom,tcsr-msm8916", "syscon"; 283 reg = <0x1937000 0x30000>; 284 }; 285 286 tcsr_mutex: hwlock { 287 compatible = "qcom,tcsr-mutex"; 288 syscon = <&tcsr_mutex_regs 0 0x1000>; 289 #hwlock-cells = <1>; 290 }; 291 292 rpm_msg_ram: memory@60000 { 293 compatible = "qcom,rpm-msg-ram"; 294 reg = <0x60000 0x8000>; 295 }; 296 297 blsp1_uart1: serial@78af000 { 298 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; 299 reg = <0x78af000 0x200>; 300 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>; 301 clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>; 302 clock-names = "core", "iface"; 303 dmas = <&blsp_dma 1>, <&blsp_dma 0>; 304 dma-names = "rx", "tx"; 305 status = "disabled"; 306 }; 307 308 apcs: syscon@b011000 { 309 compatible = "syscon"; 310 reg = <0x0b011000 0x1000>; 311 }; 312 313 blsp1_uart2: serial@78b0000 { 314 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; 315 reg = <0x78b0000 0x200>; 316 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>; 317 clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>; 318 clock-names = "core", "iface"; 319 dmas = <&blsp_dma 3>, <&blsp_dma 2>; 320 dma-names = "rx", "tx"; 321 status = "disabled"; 322 }; 323 324 blsp_dma: dma@7884000 { 325 compatible = "qcom,bam-v1.7.0"; 326 reg = <0x07884000 0x23000>; 327 interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>; 328 clocks = <&gcc GCC_BLSP1_AHB_CLK>; 329 clock-names = "bam_clk"; 330 #dma-cells = <1>; 331 qcom,ee = <0>; 332 status = "disabled"; 333 }; 334 335 blsp_spi1: spi@78b5000 { 336 compatible = "qcom,spi-qup-v2.2.1"; 337 reg = <0x078b5000 0x600>; 338 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>; 339 clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>, 340 <&gcc GCC_BLSP1_AHB_CLK>; 341 clock-names = "core", "iface"; 342 dmas = <&blsp_dma 5>, <&blsp_dma 4>; 343 dma-names = "rx", "tx"; 344 pinctrl-names = "default", "sleep"; 345 pinctrl-0 = <&spi1_default>; 346 pinctrl-1 = <&spi1_sleep>; 347 #address-cells = <1>; 348 #size-cells = <0>; 349 status = "disabled"; 350 }; 351 352 blsp_spi2: spi@78b6000 { 353 compatible = "qcom,spi-qup-v2.2.1"; 354 reg = <0x078b6000 0x600>; 355 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>; 356 clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>, 357 <&gcc GCC_BLSP1_AHB_CLK>; 358 clock-names = "core", "iface"; 359 dmas = <&blsp_dma 7>, <&blsp_dma 6>; 360 dma-names = "rx", "tx"; 361 pinctrl-names = "default", "sleep"; 362 pinctrl-0 = <&spi2_default>; 363 pinctrl-1 = <&spi2_sleep>; 364 #address-cells = <1>; 365 #size-cells = <0>; 366 status = "disabled"; 367 }; 368 369 blsp_spi3: spi@78b7000 { 370 compatible = "qcom,spi-qup-v2.2.1"; 371 reg = <0x078b7000 0x600>; 372 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>; 373 clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>, 374 <&gcc GCC_BLSP1_AHB_CLK>; 375 clock-names = "core", "iface"; 376 dmas = <&blsp_dma 9>, <&blsp_dma 8>; 377 dma-names = "rx", "tx"; 378 pinctrl-names = "default", "sleep"; 379 pinctrl-0 = <&spi3_default>; 380 pinctrl-1 = <&spi3_sleep>; 381 #address-cells = <1>; 382 #size-cells = <0>; 383 status = "disabled"; 384 }; 385 386 blsp_spi4: spi@78b8000 { 387 compatible = "qcom,spi-qup-v2.2.1"; 388 reg = <0x078b8000 0x600>; 389 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>; 390 clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>, 391 <&gcc GCC_BLSP1_AHB_CLK>; 392 clock-names = "core", "iface"; 393 dmas = <&blsp_dma 11>, <&blsp_dma 10>; 394 dma-names = "rx", "tx"; 395 pinctrl-names = "default", "sleep"; 396 pinctrl-0 = <&spi4_default>; 397 pinctrl-1 = <&spi4_sleep>; 398 #address-cells = <1>; 399 #size-cells = <0>; 400 status = "disabled"; 401 }; 402 403 blsp_spi5: spi@78b9000 { 404 compatible = "qcom,spi-qup-v2.2.1"; 405 reg = <0x078b9000 0x600>; 406 interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>; 407 clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>, 408 <&gcc GCC_BLSP1_AHB_CLK>; 409 clock-names = "core", "iface"; 410 dmas = <&blsp_dma 13>, <&blsp_dma 12>; 411 dma-names = "rx", "tx"; 412 pinctrl-names = "default", "sleep"; 413 pinctrl-0 = <&spi5_default>; 414 pinctrl-1 = <&spi5_sleep>; 415 #address-cells = <1>; 416 #size-cells = <0>; 417 status = "disabled"; 418 }; 419 420 blsp_spi6: spi@78ba000 { 421 compatible = "qcom,spi-qup-v2.2.1"; 422 reg = <0x078ba000 0x600>; 423 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 424 clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>, 425 <&gcc GCC_BLSP1_AHB_CLK>; 426 clock-names = "core", "iface"; 427 dmas = <&blsp_dma 15>, <&blsp_dma 14>; 428 dma-names = "rx", "tx"; 429 pinctrl-names = "default", "sleep"; 430 pinctrl-0 = <&spi6_default>; 431 pinctrl-1 = <&spi6_sleep>; 432 #address-cells = <1>; 433 #size-cells = <0>; 434 status = "disabled"; 435 }; 436 437 blsp_i2c2: i2c@78b6000 { 438 compatible = "qcom,i2c-qup-v2.2.1"; 439 reg = <0x78b6000 0x1000>; 440 interrupts = <GIC_SPI 96 0>; 441 clocks = <&gcc GCC_BLSP1_AHB_CLK>, 442 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>; 443 clock-names = "iface", "core"; 444 pinctrl-names = "default", "sleep"; 445 pinctrl-0 = <&i2c2_default>; 446 pinctrl-1 = <&i2c2_sleep>; 447 #address-cells = <1>; 448 #size-cells = <0>; 449 status = "disabled"; 450 }; 451 452 blsp_i2c4: i2c@78b8000 { 453 compatible = "qcom,i2c-qup-v2.2.1"; 454 reg = <0x78b8000 0x1000>; 455 interrupts = <GIC_SPI 98 0>; 456 clocks = <&gcc GCC_BLSP1_AHB_CLK>, 457 <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>; 458 clock-names = "iface", "core"; 459 pinctrl-names = "default", "sleep"; 460 pinctrl-0 = <&i2c4_default>; 461 pinctrl-1 = <&i2c4_sleep>; 462 #address-cells = <1>; 463 #size-cells = <0>; 464 status = "disabled"; 465 }; 466 467 blsp_i2c6: i2c@78ba000 { 468 compatible = "qcom,i2c-qup-v2.2.1"; 469 reg = <0x78ba000 0x1000>; 470 interrupts = <GIC_SPI 100 0>; 471 clocks = <&gcc GCC_BLSP1_AHB_CLK>, 472 <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>; 473 clock-names = "iface", "core"; 474 pinctrl-names = "default", "sleep"; 475 pinctrl-0 = <&i2c6_default>; 476 pinctrl-1 = <&i2c6_sleep>; 477 #address-cells = <1>; 478 #size-cells = <0>; 479 status = "disabled"; 480 }; 481 482 lpass: lpass@07708000 { 483 status = "disabled"; 484 compatible = "qcom,lpass-cpu-apq8016"; 485 clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>, 486 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>, 487 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>, 488 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>, 489 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>, 490 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>, 491 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>; 492 493 clock-names = "ahbix-clk", 494 "pcnoc-mport-clk", 495 "pcnoc-sway-clk", 496 "mi2s-bit-clk0", 497 "mi2s-bit-clk1", 498 "mi2s-bit-clk2", 499 "mi2s-bit-clk3"; 500 #sound-dai-cells = <1>; 501 502 interrupts = <0 160 0>; 503 interrupt-names = "lpass-irq-lpaif"; 504 reg = <0x07708000 0x10000>; 505 reg-names = "lpass-lpaif"; 506 }; 507 508 lpass_codec: codec{ 509 compatible = "qcom,msm8916-wcd-digital-codec"; 510 reg = <0x0771c000 0x400>; 511 clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>, 512 <&gcc GCC_CODEC_DIGCODEC_CLK>; 513 clock-names = "ahbix-clk", "mclk"; 514 #sound-dai-cells = <1>; 515 }; 516 517 sdhc_1: sdhci@07824000 { 518 compatible = "qcom,sdhci-msm-v4"; 519 reg = <0x07824900 0x11c>, <0x07824000 0x800>; 520 reg-names = "hc_mem", "core_mem"; 521 522 interrupts = <0 123 0>, <0 138 0>; 523 interrupt-names = "hc_irq", "pwr_irq"; 524 clocks = <&gcc GCC_SDCC1_APPS_CLK>, 525 <&gcc GCC_SDCC1_AHB_CLK>, 526 <&xo_board>; 527 clock-names = "core", "iface", "xo"; 528 mmc-ddr-1_8v; 529 bus-width = <8>; 530 non-removable; 531 status = "disabled"; 532 }; 533 534 sdhc_2: sdhci@07864000 { 535 compatible = "qcom,sdhci-msm-v4"; 536 reg = <0x07864900 0x11c>, <0x07864000 0x800>; 537 reg-names = "hc_mem", "core_mem"; 538 539 interrupts = <0 125 0>, <0 221 0>; 540 interrupt-names = "hc_irq", "pwr_irq"; 541 clocks = <&gcc GCC_SDCC2_APPS_CLK>, 542 <&gcc GCC_SDCC2_AHB_CLK>, 543 <&xo_board>; 544 clock-names = "core", "iface", "xo"; 545 bus-width = <4>; 546 status = "disabled"; 547 }; 548 549 usb_dev: usb@78d9000 { 550 compatible = "qcom,ci-hdrc"; 551 reg = <0x78d9000 0x400>; 552 dr_mode = "peripheral"; 553 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>; 554 usb-phy = <&usb_otg>; 555 status = "disabled"; 556 }; 557 558 usb_host: ehci@78d9000 { 559 compatible = "qcom,ehci-host"; 560 reg = <0x78d9000 0x400>; 561 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>; 562 usb-phy = <&usb_otg>; 563 status = "disabled"; 564 }; 565 566 usb_otg: phy@78d9000 { 567 compatible = "qcom,usb-otg-snps"; 568 reg = <0x78d9000 0x400>; 569 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>, 570 <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>; 571 572 qcom,vdd-levels = <500000 1000000 1320000>; 573 qcom,phy-init-sequence = <0x44 0x6B 0x24 0x13>; 574 dr_mode = "peripheral"; 575 qcom,otg-control = <2>; // PMIC 576 qcom,manual-pullup; 577 578 clocks = <&gcc GCC_USB_HS_AHB_CLK>, 579 <&gcc GCC_USB_HS_SYSTEM_CLK>, 580 <&gcc GCC_USB2A_PHY_SLEEP_CLK>; 581 clock-names = "iface", "core", "sleep"; 582 583 resets = <&gcc GCC_USB2A_PHY_BCR>, 584 <&gcc GCC_USB_HS_BCR>; 585 reset-names = "phy", "link"; 586 status = "disabled"; 587 }; 588 589 intc: interrupt-controller@b000000 { 590 compatible = "qcom,msm-qgic2"; 591 interrupt-controller; 592 #interrupt-cells = <3>; 593 reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>; 594 }; 595 596 timer@b020000 { 597 #address-cells = <1>; 598 #size-cells = <1>; 599 ranges; 600 compatible = "arm,armv7-timer-mem"; 601 reg = <0xb020000 0x1000>; 602 clock-frequency = <19200000>; 603 604 frame@b021000 { 605 frame-number = <0>; 606 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, 607 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>; 608 reg = <0xb021000 0x1000>, 609 <0xb022000 0x1000>; 610 }; 611 612 frame@b023000 { 613 frame-number = <1>; 614 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; 615 reg = <0xb023000 0x1000>; 616 status = "disabled"; 617 }; 618 619 frame@b024000 { 620 frame-number = <2>; 621 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>; 622 reg = <0xb024000 0x1000>; 623 status = "disabled"; 624 }; 625 626 frame@b025000 { 627 frame-number = <3>; 628 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>; 629 reg = <0xb025000 0x1000>; 630 status = "disabled"; 631 }; 632 633 frame@b026000 { 634 frame-number = <4>; 635 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 636 reg = <0xb026000 0x1000>; 637 status = "disabled"; 638 }; 639 640 frame@b027000 { 641 frame-number = <5>; 642 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>; 643 reg = <0xb027000 0x1000>; 644 status = "disabled"; 645 }; 646 647 frame@b028000 { 648 frame-number = <6>; 649 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; 650 reg = <0xb028000 0x1000>; 651 status = "disabled"; 652 }; 653 }; 654 655 spmi_bus: spmi@200f000 { 656 compatible = "qcom,spmi-pmic-arb"; 657 reg = <0x200f000 0x001000>, 658 <0x2400000 0x400000>, 659 <0x2c00000 0x400000>, 660 <0x3800000 0x200000>, 661 <0x200a000 0x002100>; 662 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg"; 663 interrupt-names = "periph_irq"; 664 interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>; 665 qcom,ee = <0>; 666 qcom,channel = <0>; 667 #address-cells = <2>; 668 #size-cells = <0>; 669 interrupt-controller; 670 #interrupt-cells = <4>; 671 }; 672 673 rng@22000 { 674 compatible = "qcom,prng"; 675 reg = <0x00022000 0x200>; 676 clocks = <&gcc GCC_PRNG_AHB_CLK>; 677 clock-names = "core"; 678 }; 679 680 qfprom: qfprom@5c000 { 681 compatible = "qcom,qfprom"; 682 reg = <0x5c000 0x1000>; 683 #address-cells = <1>; 684 #size-cells = <1>; 685 tsens_caldata: caldata@d0 { 686 reg = <0xd0 0x8>; 687 }; 688 tsens_calsel: calsel@ec { 689 reg = <0xec 0x4>; 690 }; 691 }; 692 693 tsens: thermal-sensor@4a8000 { 694 compatible = "qcom,msm8916-tsens"; 695 reg = <0x4a8000 0x2000>; 696 nvmem-cells = <&tsens_caldata>, <&tsens_calsel>; 697 nvmem-cell-names = "calib", "calib_sel"; 698 #thermal-sensor-cells = <1>; 699 }; 700 701 mdss: mdss@1a00000 { 702 compatible = "qcom,mdss"; 703 reg = <0x1a00000 0x1000>, 704 <0x1ac8000 0x3000>; 705 reg-names = "mdss_phys", "vbif_phys"; 706 707 power-domains = <&gcc MDSS_GDSC>; 708 709 clocks = <&gcc GCC_MDSS_AHB_CLK>, 710 <&gcc GCC_MDSS_AXI_CLK>, 711 <&gcc GCC_MDSS_VSYNC_CLK>; 712 clock-names = "iface_clk", 713 "bus_clk", 714 "vsync_clk"; 715 716 interrupts = <0 72 0>; 717 718 interrupt-controller; 719 #interrupt-cells = <1>; 720 721 #address-cells = <1>; 722 #size-cells = <1>; 723 ranges; 724 725 mdp: mdp@1a01000 { 726 compatible = "qcom,mdp5"; 727 reg = <0x1a01000 0x90000>; 728 reg-names = "mdp_phys"; 729 730 interrupt-parent = <&mdss>; 731 interrupts = <0 0>; 732 733 clocks = <&gcc GCC_MDSS_AHB_CLK>, 734 <&gcc GCC_MDSS_AXI_CLK>, 735 <&gcc GCC_MDSS_MDP_CLK>, 736 <&gcc GCC_MDSS_VSYNC_CLK>; 737 clock-names = "iface_clk", 738 "bus_clk", 739 "core_clk", 740 "vsync_clk"; 741 742 ports { 743 #address-cells = <1>; 744 #size-cells = <0>; 745 746 port@0 { 747 reg = <0>; 748 mdp5_intf1_out: endpoint { 749 remote-endpoint = <&dsi0_in>; 750 }; 751 }; 752 }; 753 }; 754 755 dsi0: dsi@1a98000 { 756 compatible = "qcom,mdss-dsi-ctrl"; 757 reg = <0x1a98000 0x25c>; 758 reg-names = "dsi_ctrl"; 759 760 interrupt-parent = <&mdss>; 761 interrupts = <4 0>; 762 763 assigned-clocks = <&gcc BYTE0_CLK_SRC>, 764 <&gcc PCLK0_CLK_SRC>; 765 assigned-clock-parents = <&dsi_phy0 0>, 766 <&dsi_phy0 1>; 767 768 clocks = <&gcc GCC_MDSS_MDP_CLK>, 769 <&gcc GCC_MDSS_AHB_CLK>, 770 <&gcc GCC_MDSS_AXI_CLK>, 771 <&gcc GCC_MDSS_BYTE0_CLK>, 772 <&gcc GCC_MDSS_PCLK0_CLK>, 773 <&gcc GCC_MDSS_ESC0_CLK>; 774 clock-names = "mdp_core_clk", 775 "iface_clk", 776 "bus_clk", 777 "byte_clk", 778 "pixel_clk", 779 "core_clk"; 780 phys = <&dsi_phy0>; 781 phy-names = "dsi-phy"; 782 783 ports { 784 #address-cells = <1>; 785 #size-cells = <0>; 786 787 port@0 { 788 reg = <0>; 789 dsi0_in: endpoint { 790 remote-endpoint = <&mdp5_intf1_out>; 791 }; 792 }; 793 794 port@1 { 795 reg = <1>; 796 dsi0_out: endpoint { 797 }; 798 }; 799 }; 800 }; 801 802 dsi_phy0: dsi-phy@1a98300 { 803 compatible = "qcom,dsi-phy-28nm-lp"; 804 reg = <0x1a98300 0xd4>, 805 <0x1a98500 0x280>, 806 <0x1a98780 0x30>; 807 reg-names = "dsi_pll", 808 "dsi_phy", 809 "dsi_phy_regulator"; 810 811 #clock-cells = <1>; 812 813 clocks = <&gcc GCC_MDSS_AHB_CLK>; 814 clock-names = "iface_clk"; 815 }; 816 }; 817 818 819 hexagon@4080000 { 820 compatible = "qcom,q6v5-pil"; 821 reg = <0x04080000 0x100>, 822 <0x04020000 0x040>; 823 824 reg-names = "qdsp6", "rmb"; 825 826 interrupts-extended = <&intc 0 24 1>, 827 <&hexagon_smp2p_in 0 0>, 828 <&hexagon_smp2p_in 1 0>, 829 <&hexagon_smp2p_in 2 0>, 830 <&hexagon_smp2p_in 3 0>; 831 interrupt-names = "wdog", "fatal", "ready", 832 "handover", "stop-ack"; 833 834 clocks = <&gcc GCC_MSS_CFG_AHB_CLK>, 835 <&gcc GCC_MSS_Q6_BIMC_AXI_CLK>, 836 <&gcc GCC_BOOT_ROM_AHB_CLK>, 837 <&xo_board>; 838 clock-names = "iface", "bus", "mem", "xo"; 839 840 qcom,smem-states = <&hexagon_smp2p_out 0>; 841 qcom,smem-state-names = "stop"; 842 843 resets = <&scm 0>; 844 reset-names = "mss_restart"; 845 846 cx-supply = <&pm8916_s1>; 847 mx-supply = <&pm8916_l3>; 848 pll-supply = <&pm8916_l7>; 849 850 qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; 851 852 status = "disabled"; 853 854 mba { 855 memory-region = <&mba_mem>; 856 }; 857 858 mpss { 859 memory-region = <&mpss_mem>; 860 }; 861 862 smd-edge { 863 interrupts = <0 25 IRQ_TYPE_EDGE_RISING>; 864 865 qcom,smd-edge = <0>; 866 qcom,ipc = <&apcs 8 12>; 867 qcom,remote-pid = <1>; 868 869 label = "hexagon"; 870 }; 871 }; 872 873 pronto: wcnss@a21b000 { 874 compatible = "qcom,pronto-v2-pil", "qcom,pronto"; 875 reg = <0x0a204000 0x2000>, <0x0a202000 0x1000>, <0x0a21b000 0x3000>; 876 reg-names = "ccu", "dxe", "pmu"; 877 878 memory-region = <&wcnss_mem>; 879 880 interrupts-extended = <&intc 0 149 IRQ_TYPE_EDGE_RISING>, 881 <&wcnss_smp2p_in 0 IRQ_TYPE_EDGE_RISING>, 882 <&wcnss_smp2p_in 1 IRQ_TYPE_EDGE_RISING>, 883 <&wcnss_smp2p_in 2 IRQ_TYPE_EDGE_RISING>, 884 <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; 885 interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; 886 887 vddmx-supply = <&pm8916_l3>; 888 vddpx-supply = <&pm8916_l7>; 889 890 qcom,state = <&wcnss_smp2p_out 0>; 891 qcom,state-names = "stop"; 892 893 pinctrl-names = "default"; 894 pinctrl-0 = <&wcnss_pin_a>; 895 896 status = "disabled"; 897 898 iris { 899 compatible = "qcom,wcn3620"; 900 901 clocks = <&rpmcc RPM_SMD_RF_CLK2>; 902 clock-names = "xo"; 903 904 vddxo-supply = <&pm8916_l7>; 905 vddrfa-supply = <&pm8916_s3>; 906 vddpa-supply = <&pm8916_l9>; 907 vdddig-supply = <&pm8916_l5>; 908 }; 909 910 smd-edge { 911 interrupts = <0 142 1>; 912 913 qcom,ipc = <&apcs 8 17>; 914 qcom,smd-edge = <6>; 915 qcom,remote-pid = <4>; 916 917 label = "pronto"; 918 919 wcnss { 920 compatible = "qcom,wcnss"; 921 qcom,smd-channels = "WCNSS_CTRL"; 922 923 qcom,mmio = <&pronto>; 924 925 bt { 926 compatible = "qcom,wcnss-bt"; 927 }; 928 929 wifi { 930 compatible = "qcom,wcnss-wlan"; 931 932 interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>, 933 <0 146 IRQ_TYPE_LEVEL_HIGH>; 934 interrupt-names = "tx", "rx"; 935 936 qcom,smem-states = <&apps_smsm 10>, <&apps_smsm 9>; 937 qcom,smem-state-names = "tx-enable", "tx-rings-empty"; 938 }; 939 }; 940 }; 941 }; 942 943 tpiu@820000 { 944 compatible = "arm,coresight-tpiu", "arm,primecell"; 945 reg = <0x820000 0x1000>; 946 947 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 948 clock-names = "apb_pclk", "atclk"; 949 950 port { 951 tpiu_in: endpoint { 952 slave-mode; 953 remote-endpoint = <&replicator_out1>; 954 }; 955 }; 956 }; 957 958 funnel@821000 { 959 compatible = "arm,coresight-funnel", "arm,primecell"; 960 reg = <0x821000 0x1000>; 961 962 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 963 clock-names = "apb_pclk", "atclk"; 964 965 ports { 966 #address-cells = <1>; 967 #size-cells = <0>; 968 969 /* 970 * Not described input ports: 971 * 0 - connected to Resource and Power Manger CPU ETM 972 * 1 - not-connected 973 * 2 - connected to Modem CPU ETM 974 * 3 - not-connected 975 * 5 - not-connected 976 * 6 - connected trought funnel to Wireless CPU ETM 977 * 7 - connected to STM component 978 */ 979 980 port@4 { 981 reg = <4>; 982 funnel0_in4: endpoint { 983 slave-mode; 984 remote-endpoint = <&funnel1_out>; 985 }; 986 }; 987 port@8 { 988 reg = <0>; 989 funnel0_out: endpoint { 990 remote-endpoint = <&etf_in>; 991 }; 992 }; 993 }; 994 }; 995 996 replicator@824000 { 997 compatible = "qcom,coresight-replicator1x", "arm,primecell"; 998 reg = <0x824000 0x1000>; 999 1000 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1001 clock-names = "apb_pclk", "atclk"; 1002 1003 ports { 1004 #address-cells = <1>; 1005 #size-cells = <0>; 1006 1007 port@0 { 1008 reg = <0>; 1009 replicator_out0: endpoint { 1010 remote-endpoint = <&etr_in>; 1011 }; 1012 }; 1013 port@1 { 1014 reg = <1>; 1015 replicator_out1: endpoint { 1016 remote-endpoint = <&tpiu_in>; 1017 }; 1018 }; 1019 port@2 { 1020 reg = <0>; 1021 replicator_in: endpoint { 1022 slave-mode; 1023 remote-endpoint = <&etf_out>; 1024 }; 1025 }; 1026 }; 1027 }; 1028 1029 etf@825000 { 1030 compatible = "arm,coresight-tmc", "arm,primecell"; 1031 reg = <0x825000 0x1000>; 1032 1033 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1034 clock-names = "apb_pclk", "atclk"; 1035 1036 ports { 1037 #address-cells = <1>; 1038 #size-cells = <0>; 1039 1040 port@0 { 1041 reg = <0>; 1042 etf_out: endpoint { 1043 slave-mode; 1044 remote-endpoint = <&funnel0_out>; 1045 }; 1046 }; 1047 port@1 { 1048 reg = <0>; 1049 etf_in: endpoint { 1050 remote-endpoint = <&replicator_in>; 1051 }; 1052 }; 1053 }; 1054 }; 1055 1056 etr@826000 { 1057 compatible = "arm,coresight-tmc", "arm,primecell"; 1058 reg = <0x826000 0x1000>; 1059 1060 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1061 clock-names = "apb_pclk", "atclk"; 1062 1063 port { 1064 etr_in: endpoint { 1065 slave-mode; 1066 remote-endpoint = <&replicator_out0>; 1067 }; 1068 }; 1069 }; 1070 1071 funnel@841000 { /* APSS funnel only 4 inputs are used */ 1072 compatible = "arm,coresight-funnel", "arm,primecell"; 1073 reg = <0x841000 0x1000>; 1074 1075 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1076 clock-names = "apb_pclk", "atclk"; 1077 1078 ports { 1079 #address-cells = <1>; 1080 #size-cells = <0>; 1081 1082 port@0 { 1083 reg = <0>; 1084 funnel1_in0: endpoint { 1085 slave-mode; 1086 remote-endpoint = <&etm0_out>; 1087 }; 1088 }; 1089 port@1 { 1090 reg = <1>; 1091 funnel1_in1: endpoint { 1092 slave-mode; 1093 remote-endpoint = <&etm1_out>; 1094 }; 1095 }; 1096 port@2 { 1097 reg = <2>; 1098 funnel1_in2: endpoint { 1099 slave-mode; 1100 remote-endpoint = <&etm2_out>; 1101 }; 1102 }; 1103 port@3 { 1104 reg = <3>; 1105 funnel1_in3: endpoint { 1106 slave-mode; 1107 remote-endpoint = <&etm3_out>; 1108 }; 1109 }; 1110 port@4 { 1111 reg = <0>; 1112 funnel1_out: endpoint { 1113 remote-endpoint = <&funnel0_in4>; 1114 }; 1115 }; 1116 }; 1117 }; 1118 1119 etm@85c000 { 1120 compatible = "arm,coresight-etm4x", "arm,primecell"; 1121 reg = <0x85c000 0x1000>; 1122 1123 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1124 clock-names = "apb_pclk", "atclk"; 1125 1126 cpu = <&CPU0>; 1127 1128 port { 1129 etm0_out: endpoint { 1130 remote-endpoint = <&funnel1_in0>; 1131 }; 1132 }; 1133 }; 1134 1135 etm@85d000 { 1136 compatible = "arm,coresight-etm4x", "arm,primecell"; 1137 reg = <0x85d000 0x1000>; 1138 1139 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1140 clock-names = "apb_pclk", "atclk"; 1141 1142 cpu = <&CPU1>; 1143 1144 port { 1145 etm1_out: endpoint { 1146 remote-endpoint = <&funnel1_in1>; 1147 }; 1148 }; 1149 }; 1150 1151 etm@85e000 { 1152 compatible = "arm,coresight-etm4x", "arm,primecell"; 1153 reg = <0x85e000 0x1000>; 1154 1155 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1156 clock-names = "apb_pclk", "atclk"; 1157 1158 cpu = <&CPU2>; 1159 1160 port { 1161 etm2_out: endpoint { 1162 remote-endpoint = <&funnel1_in2>; 1163 }; 1164 }; 1165 }; 1166 1167 etm@85f000 { 1168 compatible = "arm,coresight-etm4x", "arm,primecell"; 1169 reg = <0x85f000 0x1000>; 1170 1171 clocks = <&rpmcc RPM_QDSS_CLK>, <&rpmcc RPM_QDSS_A_CLK>; 1172 clock-names = "apb_pclk", "atclk"; 1173 1174 cpu = <&CPU3>; 1175 1176 port { 1177 etm3_out: endpoint { 1178 remote-endpoint = <&funnel1_in3>; 1179 }; 1180 }; 1181 }; 1182 }; 1183 1184 smd { 1185 compatible = "qcom,smd"; 1186 1187 rpm { 1188 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>; 1189 qcom,ipc = <&apcs 8 0>; 1190 qcom,smd-edge = <15>; 1191 1192 rpm_requests { 1193 compatible = "qcom,rpm-msm8916"; 1194 qcom,smd-channels = "rpm_requests"; 1195 1196 rpmcc: qcom,rpmcc { 1197 compatible = "qcom,rpmcc-msm8916"; 1198 #clock-cells = <1>; 1199 }; 1200 1201 smd_rpm_regulators: pm8916-regulators { 1202 compatible = "qcom,rpm-pm8916-regulators"; 1203 1204 pm8916_s1: s1 {}; 1205 pm8916_s3: s3 {}; 1206 pm8916_s4: s4 {}; 1207 1208 pm8916_l1: l1 {}; 1209 pm8916_l2: l2 {}; 1210 pm8916_l3: l3 {}; 1211 pm8916_l4: l4 {}; 1212 pm8916_l5: l5 {}; 1213 pm8916_l6: l6 {}; 1214 pm8916_l7: l7 {}; 1215 pm8916_l8: l8 {}; 1216 pm8916_l9: l9 {}; 1217 pm8916_l10: l10 {}; 1218 pm8916_l11: l11 {}; 1219 pm8916_l12: l12 {}; 1220 pm8916_l13: l13 {}; 1221 pm8916_l14: l14 {}; 1222 pm8916_l15: l15 {}; 1223 pm8916_l16: l16 {}; 1224 pm8916_l17: l17 {}; 1225 pm8916_l18: l18 {}; 1226 }; 1227 }; 1228 }; 1229 }; 1230 1231 hexagon-smp2p { 1232 compatible = "qcom,smp2p"; 1233 qcom,smem = <435>, <428>; 1234 1235 interrupts = <0 27 IRQ_TYPE_EDGE_RISING>; 1236 1237 qcom,ipc = <&apcs 8 14>; 1238 1239 qcom,local-pid = <0>; 1240 qcom,remote-pid = <1>; 1241 1242 hexagon_smp2p_out: master-kernel { 1243 qcom,entry-name = "master-kernel"; 1244 1245 #qcom,smem-state-cells = <1>; 1246 }; 1247 1248 hexagon_smp2p_in: slave-kernel { 1249 qcom,entry-name = "slave-kernel"; 1250 1251 interrupt-controller; 1252 #interrupt-cells = <2>; 1253 }; 1254 }; 1255 1256 wcnss-smp2p { 1257 compatible = "qcom,smp2p"; 1258 qcom,smem = <451>, <431>; 1259 1260 interrupts = <0 143 IRQ_TYPE_EDGE_RISING>; 1261 1262 qcom,ipc = <&apcs 8 18>; 1263 1264 qcom,local-pid = <0>; 1265 qcom,remote-pid = <4>; 1266 1267 wcnss_smp2p_out: master-kernel { 1268 qcom,entry-name = "master-kernel"; 1269 1270 #qcom,smem-state-cells = <1>; 1271 }; 1272 1273 wcnss_smp2p_in: slave-kernel { 1274 qcom,entry-name = "slave-kernel"; 1275 1276 interrupt-controller; 1277 #interrupt-cells = <2>; 1278 }; 1279 }; 1280 1281 smsm { 1282 compatible = "qcom,smsm"; 1283 1284 #address-cells = <1>; 1285 #size-cells = <0>; 1286 1287 qcom,ipc-1 = <&apcs 0 13>; 1288 qcom,ipc-6 = <&apcs 0 19>; 1289 1290 apps_smsm: apps@0 { 1291 reg = <0>; 1292 1293 #qcom,smem-state-cells = <1>; 1294 }; 1295 1296 hexagon_smsm: hexagon@1 { 1297 reg = <1>; 1298 interrupts = <0 26 IRQ_TYPE_EDGE_RISING>; 1299 1300 interrupt-controller; 1301 #interrupt-cells = <2>; 1302 }; 1303 1304 wcnss_smsm: wcnss@6 { 1305 reg = <6>; 1306 interrupts = <0 144 IRQ_TYPE_EDGE_RISING>; 1307 1308 interrupt-controller; 1309 #interrupt-cells = <2>; 1310 }; 1311 }; 1312}; 1313 1314#include "msm8916-pins.dtsi" 1315