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>;
238 compatible = "qcom,tcsr-mutex";
239 syscon = <&tcsr_mutex_regs 0 0x1000>;
243 rpm_msg_ram: memory@60000 {
244 compatible = "qcom,rpm-msg-ram";
245 reg = <0x60000 0x8000>;
248 blsp1_uart1: serial@78af000 {
249 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
250 reg = <0x78af000 0x200>;
251 interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
252 clocks = <&gcc GCC_BLSP1_UART1_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
253 clock-names = "core", "iface";
254 dmas = <&blsp_dma 1>, <&blsp_dma 0>;
255 dma-names = "rx", "tx";
259 apcs: syscon@b011000 {
260 compatible = "syscon";
261 reg = <0x0b011000 0x1000>;
264 blsp1_uart2: serial@78b0000 {
265 compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm";
266 reg = <0x78b0000 0x200>;
267 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH>;
268 clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
269 clock-names = "core", "iface";
270 dmas = <&blsp_dma 3>, <&blsp_dma 2>;
271 dma-names = "rx", "tx";
275 blsp_dma: dma@7884000 {
276 compatible = "qcom,bam-v1.7.0";
277 reg = <0x07884000 0x23000>;
278 interrupts = <GIC_SPI 238 IRQ_TYPE_LEVEL_HIGH>;
279 clocks = <&gcc GCC_BLSP1_AHB_CLK>;
280 clock-names = "bam_clk";
286 blsp_spi1: spi@78b5000 {
287 compatible = "qcom,spi-qup-v2.2.1";
288 reg = <0x078b5000 0x600>;
289 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
290 clocks = <&gcc GCC_BLSP1_QUP1_SPI_APPS_CLK>,
291 <&gcc GCC_BLSP1_AHB_CLK>;
292 clock-names = "core", "iface";
293 dmas = <&blsp_dma 5>, <&blsp_dma 4>;
294 dma-names = "rx", "tx";
295 pinctrl-names = "default", "sleep";
296 pinctrl-0 = <&spi1_default>;
297 pinctrl-1 = <&spi1_sleep>;
298 #address-cells = <1>;
303 blsp_spi2: spi@78b6000 {
304 compatible = "qcom,spi-qup-v2.2.1";
305 reg = <0x078b6000 0x600>;
306 interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
307 clocks = <&gcc GCC_BLSP1_QUP2_SPI_APPS_CLK>,
308 <&gcc GCC_BLSP1_AHB_CLK>;
309 clock-names = "core", "iface";
310 dmas = <&blsp_dma 7>, <&blsp_dma 6>;
311 dma-names = "rx", "tx";
312 pinctrl-names = "default", "sleep";
313 pinctrl-0 = <&spi2_default>;
314 pinctrl-1 = <&spi2_sleep>;
315 #address-cells = <1>;
320 blsp_spi3: spi@78b7000 {
321 compatible = "qcom,spi-qup-v2.2.1";
322 reg = <0x078b7000 0x600>;
323 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
324 clocks = <&gcc GCC_BLSP1_QUP3_SPI_APPS_CLK>,
325 <&gcc GCC_BLSP1_AHB_CLK>;
326 clock-names = "core", "iface";
327 dmas = <&blsp_dma 9>, <&blsp_dma 8>;
328 dma-names = "rx", "tx";
329 pinctrl-names = "default", "sleep";
330 pinctrl-0 = <&spi3_default>;
331 pinctrl-1 = <&spi3_sleep>;
332 #address-cells = <1>;
337 blsp_spi4: spi@78b8000 {
338 compatible = "qcom,spi-qup-v2.2.1";
339 reg = <0x078b8000 0x600>;
340 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
341 clocks = <&gcc GCC_BLSP1_QUP4_SPI_APPS_CLK>,
342 <&gcc GCC_BLSP1_AHB_CLK>;
343 clock-names = "core", "iface";
344 dmas = <&blsp_dma 11>, <&blsp_dma 10>;
345 dma-names = "rx", "tx";
346 pinctrl-names = "default", "sleep";
347 pinctrl-0 = <&spi4_default>;
348 pinctrl-1 = <&spi4_sleep>;
349 #address-cells = <1>;
354 blsp_spi5: spi@78b9000 {
355 compatible = "qcom,spi-qup-v2.2.1";
356 reg = <0x078b9000 0x600>;
357 interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
358 clocks = <&gcc GCC_BLSP1_QUP5_SPI_APPS_CLK>,
359 <&gcc GCC_BLSP1_AHB_CLK>;
360 clock-names = "core", "iface";
361 dmas = <&blsp_dma 13>, <&blsp_dma 12>;
362 dma-names = "rx", "tx";
363 pinctrl-names = "default", "sleep";
364 pinctrl-0 = <&spi5_default>;
365 pinctrl-1 = <&spi5_sleep>;
366 #address-cells = <1>;
371 blsp_spi6: spi@78ba000 {
372 compatible = "qcom,spi-qup-v2.2.1";
373 reg = <0x078ba000 0x600>;
374 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
375 clocks = <&gcc GCC_BLSP1_QUP6_SPI_APPS_CLK>,
376 <&gcc GCC_BLSP1_AHB_CLK>;
377 clock-names = "core", "iface";
378 dmas = <&blsp_dma 15>, <&blsp_dma 14>;
379 dma-names = "rx", "tx";
380 pinctrl-names = "default", "sleep";
381 pinctrl-0 = <&spi6_default>;
382 pinctrl-1 = <&spi6_sleep>;
383 #address-cells = <1>;
388 blsp_i2c2: i2c@78b6000 {
389 compatible = "qcom,i2c-qup-v2.2.1";
390 reg = <0x78b6000 0x1000>;
391 interrupts = <GIC_SPI 96 0>;
392 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
393 <&gcc GCC_BLSP1_QUP2_I2C_APPS_CLK>;
394 clock-names = "iface", "core";
395 pinctrl-names = "default", "sleep";
396 pinctrl-0 = <&i2c2_default>;
397 pinctrl-1 = <&i2c2_sleep>;
398 #address-cells = <1>;
403 blsp_i2c4: i2c@78b8000 {
404 compatible = "qcom,i2c-qup-v2.2.1";
405 reg = <0x78b8000 0x1000>;
406 interrupts = <GIC_SPI 98 0>;
407 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
408 <&gcc GCC_BLSP1_QUP4_I2C_APPS_CLK>;
409 clock-names = "iface", "core";
410 pinctrl-names = "default", "sleep";
411 pinctrl-0 = <&i2c4_default>;
412 pinctrl-1 = <&i2c4_sleep>;
413 #address-cells = <1>;
418 blsp_i2c6: i2c@78ba000 {
419 compatible = "qcom,i2c-qup-v2.2.1";
420 reg = <0x78ba000 0x1000>;
421 interrupts = <GIC_SPI 100 0>;
422 clocks = <&gcc GCC_BLSP1_AHB_CLK>,
423 <&gcc GCC_BLSP1_QUP6_I2C_APPS_CLK>;
424 clock-names = "iface", "core";
425 pinctrl-names = "default", "sleep";
426 pinctrl-0 = <&i2c6_default>;
427 pinctrl-1 = <&i2c6_sleep>;
428 #address-cells = <1>;
433 lpass: lpass@07708000 {
435 compatible = "qcom,lpass-cpu-apq8016";
436 clocks = <&gcc GCC_ULTAUDIO_AHBFABRIC_IXFABRIC_CLK>,
437 <&gcc GCC_ULTAUDIO_PCNOC_MPORT_CLK>,
438 <&gcc GCC_ULTAUDIO_PCNOC_SWAY_CLK>,
439 <&gcc GCC_ULTAUDIO_LPAIF_PRI_I2S_CLK>,
440 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
441 <&gcc GCC_ULTAUDIO_LPAIF_SEC_I2S_CLK>,
442 <&gcc GCC_ULTAUDIO_LPAIF_AUX_I2S_CLK>;
444 clock-names = "ahbix-clk",
451 #sound-dai-cells = <1>;
453 interrupts = <0 160 0>;
454 interrupt-names = "lpass-irq-lpaif";
455 reg = <0x07708000 0x10000>;
456 reg-names = "lpass-lpaif";
459 sdhc_1: sdhci@07824000 {
460 compatible = "qcom,sdhci-msm-v4";
461 reg = <0x07824900 0x11c>, <0x07824000 0x800>;
462 reg-names = "hc_mem", "core_mem";
464 interrupts = <0 123 0>, <0 138 0>;
465 interrupt-names = "hc_irq", "pwr_irq";
466 clocks = <&gcc GCC_SDCC1_APPS_CLK>,
467 <&gcc GCC_SDCC1_AHB_CLK>;
468 clock-names = "core", "iface";
474 sdhc_2: sdhci@07864000 {
475 compatible = "qcom,sdhci-msm-v4";
476 reg = <0x07864900 0x11c>, <0x07864000 0x800>;
477 reg-names = "hc_mem", "core_mem";
479 interrupts = <0 125 0>, <0 221 0>;
480 interrupt-names = "hc_irq", "pwr_irq";
481 clocks = <&gcc GCC_SDCC2_APPS_CLK>,
482 <&gcc GCC_SDCC2_AHB_CLK>;
483 clock-names = "core", "iface";
488 usb_dev: usb@78d9000 {
489 compatible = "qcom,ci-hdrc";
490 reg = <0x78d9000 0x400>;
491 dr_mode = "peripheral";
492 interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
493 usb-phy = <&usb_otg>;
497 usb_host: ehci@78d9000 {
498 compatible = "qcom,ehci-host";
499 reg = <0x78d9000 0x400>;
500 interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
501 usb-phy = <&usb_otg>;
505 usb_otg: phy@78d9000 {
506 compatible = "qcom,usb-otg-snps";
507 reg = <0x78d9000 0x400>;
508 interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
509 <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
511 qcom,vdd-levels = <500000 1000000 1320000>;
512 qcom,phy-init-sequence = <0x44 0x6B 0x24 0x13>;
513 dr_mode = "peripheral";
514 qcom,otg-control = <2>; // PMIC
517 clocks = <&gcc GCC_USB_HS_AHB_CLK>,
518 <&gcc GCC_USB_HS_SYSTEM_CLK>,
519 <&gcc GCC_USB2A_PHY_SLEEP_CLK>;
520 clock-names = "iface", "core", "sleep";
522 resets = <&gcc GCC_USB2A_PHY_BCR>,
523 <&gcc GCC_USB_HS_BCR>;
524 reset-names = "phy", "link";
528 intc: interrupt-controller@b000000 {
529 compatible = "qcom,msm-qgic2";
530 interrupt-controller;
531 #interrupt-cells = <3>;
532 reg = <0x0b000000 0x1000>, <0x0b002000 0x1000>;
536 #address-cells = <1>;
539 compatible = "arm,armv7-timer-mem";
540 reg = <0xb020000 0x1000>;
541 clock-frequency = <19200000>;
545 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
546 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
547 reg = <0xb021000 0x1000>,
553 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
554 reg = <0xb023000 0x1000>;
560 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
561 reg = <0xb024000 0x1000>;
567 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
568 reg = <0xb025000 0x1000>;
574 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
575 reg = <0xb026000 0x1000>;
581 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
582 reg = <0xb027000 0x1000>;
588 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
589 reg = <0xb028000 0x1000>;
594 spmi_bus: spmi@200f000 {
595 compatible = "qcom,spmi-pmic-arb";
596 reg = <0x200f000 0x001000>,
597 <0x2400000 0x400000>,
598 <0x2c00000 0x400000>,
599 <0x3800000 0x200000>,
600 <0x200a000 0x002100>;
601 reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
602 interrupt-names = "periph_irq";
603 interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
606 #address-cells = <2>;
608 interrupt-controller;
609 #interrupt-cells = <4>;
613 compatible = "qcom,prng";
614 reg = <0x00022000 0x200>;
615 clocks = <&gcc GCC_PRNG_AHB_CLK>;
616 clock-names = "core";
621 compatible = "qcom,smd";
624 interrupts = <GIC_SPI 168 IRQ_TYPE_EDGE_RISING>;
625 qcom,ipc = <&apcs 8 0>;
626 qcom,smd-edge = <15>;
629 compatible = "qcom,rpm-msm8916";
630 qcom,smd-channels = "rpm_requests";
633 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
637 smd_rpm_regulators: pm8916-regulators {
638 compatible = "qcom,rpm-pm8916-regulators";
668 compatible = "qcom,smp2p";
669 qcom,smem = <435>, <428>;
671 interrupts = <0 27 IRQ_TYPE_EDGE_RISING>;
673 qcom,ipc = <&apcs 8 14>;
675 qcom,local-pid = <0>;
676 qcom,remote-pid = <1>;
678 hexagon_smp2p_out: master-kernel {
679 qcom,entry-name = "master-kernel";
681 #qcom,smem-state-cells = <1>;
684 hexagon_smp2p_in: slave-kernel {
685 qcom,entry-name = "slave-kernel";
687 interrupt-controller;
688 #interrupt-cells = <2>;
693 compatible = "qcom,smp2p";
694 qcom,smem = <451>, <431>;
696 interrupts = <0 143 IRQ_TYPE_EDGE_RISING>;
698 qcom,ipc = <&apcs 8 18>;
700 qcom,local-pid = <0>;
701 qcom,remote-pid = <4>;
703 wcnss_smp2p_out: master-kernel {
704 qcom,entry-name = "master-kernel";
706 #qcom,smem-state-cells = <1>;
709 wcnss_smp2p_in: slave-kernel {
710 qcom,entry-name = "slave-kernel";
712 interrupt-controller;
713 #interrupt-cells = <2>;
718 compatible = "qcom,smsm";
720 #address-cells = <1>;
723 qcom,ipc-1 = <&apcs 0 13>;
724 qcom,ipc-6 = <&apcs 0 19>;
729 #qcom,smem-state-cells = <1>;
732 hexagon_smsm: hexagon@1 {
734 interrupts = <0 26 IRQ_TYPE_EDGE_RISING>;
736 interrupt-controller;
737 #interrupt-cells = <2>;
740 wcnss_smsm: wcnss@6 {
742 interrupts = <0 144 IRQ_TYPE_EDGE_RISING>;
744 interrupt-controller;
745 #interrupt-cells = <2>;
750 #include "msm8916-pins.dtsi"