2 * Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
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.
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.
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>
19 model = "Qualcomm Technologies, Inc. MSM8916";
20 compatible = "qcom,msm8916";
22 interrupt-parent = <&intc>;
28 sdhc1 = &sdhc_1; /* SDC1 eMMC slot */
29 sdhc2 = &sdhc_2; /* SDC2 SD card slot */
35 device_type = "memory";
36 /* We expect the bootloader to fill in the reg */
46 reg = <0x0 0x86000000 0x0 0x300000>;
50 smem_mem: smem_region@86300000 {
51 reg = <0x0 0x86300000 0x0 0x100000>;
56 reg = <0x0 0x86400000 0x0 0x100000>;
61 reg = <0x0 0x86500000 0x0 0x180000>;
66 reg = <0x0 0x86680000 0x0 0x80000>;
71 reg = <0x0 0x86700000 0x0 0xe0000>;
76 reg = <0x0 0x867e0000 0x0 0x20000>;
81 reg = <0x0 0x86800000 0x0 0x2b00000>;
86 reg = <0x0 0x89300000 0x0 0x600000>;
90 mba_mem: mba@8ea00000 {
92 reg = <0 0x8ea00000 0 0x100000>;
102 compatible = "arm,cortex-a53", "arm,armv8";
104 next-level-cache = <&L2_0>;
105 enable-method = "psci";
106 cpu-idle-states = <&CPU_SPC>;
111 compatible = "arm,cortex-a53", "arm,armv8";
113 next-level-cache = <&L2_0>;
114 enable-method = "psci";
115 cpu-idle-states = <&CPU_SPC>;
120 compatible = "arm,cortex-a53", "arm,armv8";
122 next-level-cache = <&L2_0>;
123 enable-method = "psci";
124 cpu-idle-states = <&CPU_SPC>;
129 compatible = "arm,cortex-a53", "arm,armv8";
131 next-level-cache = <&L2_0>;
132 enable-method = "psci";
133 cpu-idle-states = <&CPU_SPC>;
137 compatible = "cache";
143 compatible = "arm,idle-state";
144 arm,psci-suspend-param = <0x40000002>;
145 entry-latency-us = <130>;
146 exit-latency-us = <150>;
147 min-residency-us = <2000>;
154 compatible = "arm,psci-1.0";
159 compatible = "arm,armv8-pmuv3";
160 interrupts = <GIC_PPI 7 GIC_CPU_MASK_SIMPLE(4)>;
164 compatible = "arm,armv8-timer";
165 interrupts = <GIC_PPI 2 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
166 <GIC_PPI 3 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
167 <GIC_PPI 4 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
168 <GIC_PPI 1 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
173 compatible = "fixed-clock";
175 clock-frequency = <19200000>;
178 sleep_clk: sleep_clk {
179 compatible = "fixed-clock";
181 clock-frequency = <32768>;
186 compatible = "qcom,smem";
188 memory-region = <&smem_mem>;
189 qcom,rpm-msg-ram = <&rpm_msg_ram>;
191 hwlocks = <&tcsr_mutex 3>;
196 compatible = "qcom,scm";
197 clocks = <&gcc GCC_CRYPTO_CLK>, <&gcc GCC_CRYPTO_AXI_CLK>, <&gcc GCC_CRYPTO_AHB_CLK>;
198 clock-names = "core", "bus", "iface";
204 #address-cells = <1>;
206 ranges = <0 0 0 0xffffffff>;
207 compatible = "simple-bus";
210 compatible = "qcom,pshold";
211 reg = <0x4ab000 0x4>;
214 msmgpio: pinctrl@1000000 {
215 compatible = "qcom,msm8916-pinctrl";
216 reg = <0x1000000 0x300000>;
217 interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
220 interrupt-controller;
221 #interrupt-cells = <2>;
224 gcc: clock-controller@1800000 {
225 compatible = "qcom,gcc-msm8916";
228 #power-domain-cells = <1>;
229 reg = <0x1800000 0x80000>;
232 tcsr_mutex_regs: syscon@1905000 {
233 compatible = "syscon";
234 reg = <0x1905000 0x20000>;
237 tcsr: syscon@1937000 {
238 compatible = "qcom,tcsr-msm8916", "syscon";
239 reg = <0x1937000 0x30000>;
243 compatible = "qcom,tcsr-mutex";
244 syscon = <&tcsr_mutex_regs 0 0x1000>;
248 rpm_msg_ram: memory@60000 {
249 compatible = "qcom,rpm-msg-ram";
250 reg = <0x60000 0x8000>;
253 blsp1_uart1: serial@78af000 {
254 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
255 reg = <0x78af000 0x200>;
256 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
257 clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
258 clock-names = "core", "iface";
259 dmas = <&blsp_dma 1>, <&blsp_dma 0>;
260 dma-names = "rx", "tx";
264 apcs: syscon@b011000 {
265 compatible = "syscon";
266 reg = <0x0b011000 0x1000>;
269 blsp1_uart2: serial@78b0000 {
270 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
271 reg = <0x78b0000 0x200>;
272 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
273 clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
274 clock-names = "core", "iface";
275 dmas = <&blsp_dma 3>, <&blsp_dma 2>;
276 dma-names = "rx", "tx";
280 blsp_dma: dma@7884000 {
281 compatible = "qcom,bam-v1.7.0";
282 reg = <0x07884000 0x23000>;
283 interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
284 clocks = <&gcc GCC_BLSP1_AHB_CLK>;
285 clock-names = "bam_clk";
291 blsp_spi1: spi@78b5000 {
292 compatible = "qcom,spi-qup-v2.2.1";
293 reg = <0x078b5000 0x600>;
294 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
295 clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
296 <&gcc GCC_BLSP1_AHB_CLK>;
297 clock-names = "core", "iface";
298 dmas = <&blsp_dma 5>, <&blsp_dma 4>;
299 dma-names = "rx", "tx";
300 pinctrl-names = "default", "sleep";
301 pinctrl-0 = <&spi1_default>;
302 pinctrl-1 = <&spi1_sleep>;
303 #address-cells = <1>;
308 blsp_spi2: spi@78b6000 {
309 compatible = "qcom,spi-qup-v2.2.1";
310 reg = <0x078b6000 0x600>;
311 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
312 clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
313 <&gcc GCC_BLSP1_AHB_CLK>;
314 clock-names = "core", "iface";
315 dmas = <&blsp_dma 7>, <&blsp_dma 6>;
316 dma-names = "rx", "tx";
317 pinctrl-names = "default", "sleep";
318 pinctrl-0 = <&spi2_default>;
319 pinctrl-1 = <&spi2_sleep>;
320 #address-cells = <1>;
325 blsp_spi3: spi@78b7000 {
326 compatible = "qcom,spi-qup-v2.2.1";
327 reg = <0x078b7000 0x600>;
328 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
329 clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
330 <&gcc GCC_BLSP1_AHB_CLK>;
331 clock-names = "core", "iface";
332 dmas = <&blsp_dma 9>, <&blsp_dma 8>;
333 dma-names = "rx", "tx";
334 pinctrl-names = "default", "sleep";
335 pinctrl-0 = <&spi3_default>;
336 pinctrl-1 = <&spi3_sleep>;
337 #address-cells = <1>;
342 blsp_spi4: spi@78b8000 {
343 compatible = "qcom,spi-qup-v2.2.1";
344 reg = <0x078b8000 0x600>;
345 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
346 clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
347 <&gcc GCC_BLSP1_AHB_CLK>;
348 clock-names = "core", "iface";
349 dmas = <&blsp_dma 11>, <&blsp_dma 10>;
350 dma-names = "rx", "tx";
351 pinctrl-names = "default", "sleep";
352 pinctrl-0 = <&spi4_default>;
353 pinctrl-1 = <&spi4_sleep>;
354 #address-cells = <1>;
359 blsp_spi5: spi@78b9000 {
360 compatible = "qcom,spi-qup-v2.2.1";
361 reg = <0x078b9000 0x600>;
362 interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
363 clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
364 <&gcc GCC_BLSP1_AHB_CLK>;
365 clock-names = "core", "iface";
366 dmas = <&blsp_dma 13>, <&blsp_dma 12>;
367 dma-names = "rx", "tx";
368 pinctrl-names = "default", "sleep";
369 pinctrl-0 = <&spi5_default>;
370 pinctrl-1 = <&spi5_sleep>;
371 #address-cells = <1>;
376 blsp_spi6: spi@78ba000 {
377 compatible = "qcom,spi-qup-v2.2.1";
378 reg = <0x078ba000 0x600>;
379 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
380 clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
381 <&gcc GCC_BLSP1_AHB_CLK>;
382 clock-names = "core", "iface";
383 dmas = <&blsp_dma 15>, <&blsp_dma 14>;
384 dma-names = "rx", "tx";
385 pinctrl-names = "default", "sleep";
386 pinctrl-0 = <&spi6_default>;
387 pinctrl-1 = <&spi6_sleep>;
388 #address-cells = <1>;
393 blsp_i2c2: i2c@78b6000 {
394 compatible = "qcom,i2c-qup-v2.2.1";
395 reg = <0x78b6000 0x1000>;
396 interrupts = <GIC_SPI 96 0>;
397 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
398 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
399 clock-names = "iface", "core";
400 pinctrl-names = "default", "sleep";
401 pinctrl-0 = <&i2c2_default>;
402 pinctrl-1 = <&i2c2_sleep>;
403 #address-cells = <1>;
408 blsp_i2c4: i2c@78b8000 {
409 compatible = "qcom,i2c-qup-v2.2.1";
410 reg = <0x78b8000 0x1000>;
411 interrupts = <GIC_SPI 98 0>;
412 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
413 <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
414 clock-names = "iface", "core";
415 pinctrl-names = "default", "sleep";
416 pinctrl-0 = <&i2c4_default>;
417 pinctrl-1 = <&i2c4_sleep>;
418 #address-cells = <1>;
423 blsp_i2c6: i2c@78ba000 {
424 compatible = "qcom,i2c-qup-v2.2.1";
425 reg = <0x78ba000 0x1000>;
426 interrupts = <GIC_SPI 100 0>;
427 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
428 <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
429 clock-names = "iface", "core";
430 pinctrl-names = "default", "sleep";
431 pinctrl-0 = <&i2c6_default>;
432 pinctrl-1 = <&i2c6_sleep>;
433 #address-cells = <1>;
438 lpass: lpass@07708000 {
440 compatible = "qcom,lpass-cpu-apq8016";
441 clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
442 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
443 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
444 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
445 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
446 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
447 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
449 clock-names = "ahbix-clk",
456 #sound-dai-cells = <1>;
458 interrupts = <0 160 0>;
459 interrupt-names = "lpass-irq-lpaif";
460 reg = <0x07708000 0x10000>;
461 reg-names = "lpass-lpaif";
464 sdhc_1: sdhci@07824000 {
465 compatible = "qcom,sdhci-msm-v4";
466 reg = <0x07824900 0x11c>, <0x07824000 0x800>;
467 reg-names = "hc_mem", "core_mem";
469 interrupts = <0 123 0>, <0 138 0>;
470 interrupt-names = "hc_irq", "pwr_irq";
471 clocks = <&gcc GCC_SDCC1_APPS_CLK>,
472 <&gcc GCC_SDCC1_AHB_CLK>;
473 clock-names = "core", "iface";
479 sdhc_2: sdhci@07864000 {
480 compatible = "qcom,sdhci-msm-v4";
481 reg = <0x07864900 0x11c>, <0x07864000 0x800>;
482 reg-names = "hc_mem", "core_mem";
484 interrupts = <0 125 0>, <0 221 0>;
485 interrupt-names = "hc_irq", "pwr_irq";
486 clocks = <&gcc GCC_SDCC2_APPS_CLK>,
487 <&gcc GCC_SDCC2_AHB_CLK>;
488 clock-names = "core", "iface";
493 usb_dev: usb@78d9000 {
494 compatible = "qcom,ci-hdrc";
495 reg = <0x78d9000 0x400>;
496 dr_mode = "peripheral";
497 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
498 usb-phy = <&usb_otg>;
502 usb_host: ehci@78d9000 {
503 compatible = "qcom,ehci-host";
504 reg = <0x78d9000 0x400>;
505 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
506 usb-phy = <&usb_otg>;
510 usb_otg: phy@78d9000 {
511 compatible = "qcom,usb-otg-snps";
512 reg = <0x78d9000 0x400>;
513 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
514 <GIC_SPI 140 IRQ_TYPE_LEVEL_HIGH>;
516 qcom,vdd-levels = <500000 1000000 1320000>;
517 qcom,phy-init-sequence = <0x44 0x6B 0x24 0x13>;
518 dr_mode = "peripheral";
519 qcom,otg-control = <2>; // PMIC
522 clocks = <&gcc GCC_USB_HS_AHB_CLK>,
523 <&gcc GCC_USB_HS_SYSTEM_CLK>,
524 <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
525 clock-names = "iface", "core", "sleep";
527 resets = <&gcc GCC_USB2A_PHY_BCR>,
528 <&gcc GCC_USB_HS_BCR>;
529 reset-names = "phy", "link";
533 intc: interrupt-controller@b000000 {
534 compatible = "qcom,msm-qgic2";
535 interrupt-controller;
536 #interrupt-cells = <3>;
537 reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
541 #address-cells = <1>;
544 compatible = "arm,armv7-timer-mem";
545 reg = <0xb020000 0x1000>;
546 clock-frequency = <19200000>;
550 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
551 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
552 reg = <0xb021000 0x1000>,
558 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
559 reg = <0xb023000 0x1000>;
565 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
566 reg = <0xb024000 0x1000>;
572 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
573 reg = <0xb025000 0x1000>;
579 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
580 reg = <0xb026000 0x1000>;
586 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
587 reg = <0xb027000 0x1000>;
593 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
594 reg = <0xb028000 0x1000>;
599 spmi_bus: spmi@200f000 {
600 compatible = "qcom,spmi-pmic-arb";
601 reg = <0x200f000 0x001000>,
602 <0x2400000 0x400000>,
603 <0x2c00000 0x400000>,
604 <0x3800000 0x200000>,
605 <0x200a000 0x002100>;
606 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
607 interrupt-names = "periph_irq";
608 interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
611 #address-cells = <2>;
613 interrupt-controller;
614 #interrupt-cells = <4>;
618 compatible = "qcom,prng";
619 reg = <0x00022000 0x200>;
620 clocks = <&gcc GCC_PRNG_AHB_CLK>;
621 clock-names = "core";
626 compatible = "qcom,smd";
629 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
630 qcom,ipc = <&apcs 8 0>;
631 qcom,smd-edge = <15>;
634 compatible = "qcom,rpm-msm8916";
635 qcom,smd-channels = "rpm_requests";
638 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
642 smd_rpm_regulators: pm8916-regulators {
643 compatible = "qcom,rpm-pm8916-regulators";
673 compatible = "qcom,smp2p";
674 qcom,smem = <435>, <428>;
676 interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
678 qcom,ipc = <&apcs 8 14>;
680 qcom,local-pid = <0>;
681 qcom,remote-pid = <1>;
683 hexagon_smp2p_out: master-kernel {
684 qcom,entry-name = "master-kernel";
686 #qcom,smem-state-cells = <1>;
689 hexagon_smp2p_in: slave-kernel {
690 qcom,entry-name = "slave-kernel";
692 interrupt-controller;
693 #interrupt-cells = <2>;
698 compatible = "qcom,smp2p";
699 qcom,smem = <451>, <431>;
701 interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
703 qcom,ipc = <&apcs 8 18>;
705 qcom,local-pid = <0>;
706 qcom,remote-pid = <4>;
708 wcnss_smp2p_out: master-kernel {
709 qcom,entry-name = "master-kernel";
711 #qcom,smem-state-cells = <1>;
714 wcnss_smp2p_in: slave-kernel {
715 qcom,entry-name = "slave-kernel";
717 interrupt-controller;
718 #interrupt-cells = <2>;
723 compatible = "qcom,smsm";
725 #address-cells = <1>;
728 qcom,ipc-1 = <&apcs 0 13>;
729 qcom,ipc-6 = <&apcs 0 19>;
734 #qcom,smem-state-cells = <1>;
737 hexagon_smsm: hexagon@1 {
739 interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
741 interrupt-controller;
742 #interrupt-cells = <2>;
745 wcnss_smsm: wcnss@6 {
747 interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
749 interrupt-controller;
750 #interrupt-cells = <2>;
755 #include "msm8916-pins.dtsi"