2 * Copyright (C) 2013 Spreadtrum Communication Incorporated
3 * http://www.spreadtrum.com/
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
11 /* memory reserved for SMEM */
12 /memreserve/ 0x87800000 0x200000; /* 2MK */
14 /* memory reserved for CPW modem */
15 /memreserve/ 0x88000000 0x1b00000; /* 27M */
17 /* memory reserved for CPWCN modem */
18 /memreserve/ 0x8a800000 0x201000;/*Offset:168M, SIZE:2M+4k*/
20 /* memory reserved for fb */
21 /memreserve/ 0x8F8DF000 0x321000; /* 480*854*4*2, 4K alignment */
23 /* memory reserved for ION */
24 /memreserve/ 0x8fc00000 0x0; /* 0MK */
26 /include/ "skeleton.dtsi"
27 /include/ "scx30g-clocks.dtsi"
28 /include/ "scx30g-regulators.dtsi"
29 /include/ "sprd-sound.dtsi"
30 /include/ "sprd-battery.dtsi"
33 model = "Spreadtrum SP8835EB board";
34 compatible = "sprd,sp8835eb";
35 sprd,sc-id = <8830 1 0x20000>;
38 interrupt-parent = <&gic>;
41 bootargs = "loglevel=1 console=ttyS1,115200n8 init=/init root=/dev/ram0 rw vmalloc=756M";
42 linux,initrd-start = <0x85500000>;
43 linux,initrd-end = <0x855a3212>;
47 device_type = "memory";
48 reg = <0x80000000 0x10000000>;
64 hwspinlock0 = &hwspinlock0;
65 hwspinlock1 = &hwspinlock1;
74 compatible = "arm,cortex-a7";
80 compatible = "arm,cortex-a7";
86 compatible = "arm,cortex-a7";
92 compatible = "arm,cortex-a7";
97 compatible = "arm,cortex-a7-pmu";
98 interrupts = <0 92 0x400>,
104 gic: interrupt-controller@12001000 {
105 compatible = "arm,cortex-a15-gic", "arm,cortex-a9-gic";
106 #interrupt-cells = <3>;
107 #address-cells = <0>;
108 interrupt-controller;
109 reg = <0x12001000 0x1000>,
113 uart0: uart@f5360000{
114 compatible = "sprd,serial";
115 interrupts = <0 2 0x0>;
116 reg = <0xf5360000 0x1000>;
117 clock-names = "clk_uart0";
118 clocks = <&clock 60>;
119 sprdclk = <48000000>;
120 sprdwaketype = "BT_RTS_HIGH_WHEN_SLEEP";
122 uart1: uart@f5362000{
123 compatible = "sprd,serial";
124 interrupts = <0 3 0x0>;
125 reg = <0xf5362000 0x1000>;
126 clock-names = "clk_uart1";
127 clocks = <&clock 61>;
128 sprdclk = <26000000>;
129 sprdwaketype = "BT_RTS_HIGH_WHEN_SLEEP";
131 uart2: uart@f5364000{
132 compatible = "sprd,serial";
133 interrupts = <0 4 0x0>;
134 reg = <0xf5364000 0x1000>;
135 clock-names = "clk_uart2";
136 clocks = <&clock 62>;
137 sprdclk = <26000000>;
138 sprdwaketype = "BT_RTS_HIGH_WHEN_SLEEP";
140 uart3: uart@f5366000{
141 compatible = "sprd,serial";
142 interrupts = <0 5 0x0>;
143 reg = <0xf5366000 0x1000>;
144 clock-names = "clk_uart3";
145 clocks = <&clock 63>;
146 sprdclk = <26000000>;
147 sprdwaketype = "BT_RTS_HIGH_WHEN_SLEEP";
151 compatible = "sprd,scx35-timer";
152 reg = <0xf5204000 0x1000>,
157 interrupts = <0 118 0x0>,
164 compatible = "sprd,scx35-clock";
167 d_eic_gpio: gpio@f5200000{
168 compatible = "sprd,d-eic-gpio";
169 reg = <0Xf5200000 0x1000>;
171 interrupt-controller;
172 #interrupt-cells = <2>;
176 interrupts = <0 37 0x0>;
178 d_gpio_gpio: gpio@f5220000{
179 compatible = "sprd,d-gpio-gpio";
180 reg = <0Xf5220000 0x1000>;
182 interrupt-controller;
183 #interrupt-cells = <2>;
187 interrupts = <0 35 0x0>;
190 compatible = "sprd,pinctrl";
191 reg = <0xf5224000 0x1000>;
192 pwr_domain = "vdd28",
199 ctrl_desc = <0x10 0 1
208 compatible = "sprd,adic";
209 reg = <0Xf53f0000 0x1000>;
212 compatible = "sprd,adi-bus";
213 interrupts = <0 38 0x0>;
214 reg = <0Xf53f8000 0x1000>;
215 interrupt-controller;
217 #interrupt-cells = <2>;
218 #address-cells = <1>;
220 ranges = <0X40 0Xf53f8040 0x40>,
221 <0X80 0Xf53f8080 0x80>,
222 <0X100 0Xf53f8100 0x80>,
223 <0X480 0Xf53f8480 0x80>;
225 compatible = "sprd,sprd_backlight";
231 compatible = "sprd,headset-detect";
235 irq_trigger_level_detect = <1>;
236 irq_trigger_level_button = <1>;
237 adc_threshold_3pole_detect = <100>;
238 adc_threshold_4pole_detect = <3100>;
239 irq_threshold_buttont = <1>;
240 voltage_headmicbias = <3000000>;
250 compatible = "sprd,keyboard-backlight";
253 compatible = "sprd,watchdog";
255 interrupts = <3 0x0>;
258 compatible = "sprd,rtc";
260 interrupts = <2 0x0>;
262 a_eic_gpio: gpio@100{
263 compatible = "sprd,a-eic-gpio";
264 reg = <0X100 0x80>; /* adi reg */
266 interrupt-controller;
267 #interrupt-cells = <2>;
271 interrupt-parent = <&adi>;
272 interrupts = <5 0x0>; /* ext irq 5 */
274 a_gpio_gpio: gpio@480{
275 compatible = "sprd,a-gpio-gpio";
276 reg = <0X480 0x80>; /* adi reg */
278 interrupt-controller;
279 #interrupt-cells = <2>;
283 interrupt-parent = <&adi>;
284 interrupts = <1 0x0>; /* ext irq 1 */
288 compatible = "sprd,sci-keypad";
289 reg = <0Xf5208000 0x1000>;
290 gpios = <&a_eic_gpio 2 0>;
291 interrupts = <0 36 0x0>;
292 sprd,keypad-num-rows = <2>;
293 sprd,keypad-num-columns = <2>;
294 sprd,keypad-rows-choose-hw = <0x30000>;
295 sprd,keypad-cols-choose-hw = <0x300>;
296 sprd,debounce_time = <5000>;
297 linux,keypad-no-autorepeat;
298 sprd,support_long_key;
317 compatible = "sprd,sprd_vsp";
318 reg = <0Xf5300000 0xc000>;
319 interrupts = <0 43 0x0>;
320 clock-names = "clk_mm_i", "clk_vsp";
321 clocks = <&clk_mm>, <&clk_vsp>;
325 compatible = "sprd,sprd_jpg";
326 reg = <0Xf5320000 0x8000>;
327 interrupts = <0 42 0x0>;
328 clock-names = "clk_mm_i","clk_jpg";
329 clocks = <&clk_mm>, <&clk_jpg>;
334 compatible = "sprd,i2c";
335 interrupts = <0 11 0x0>;
336 reg = <0xf536a000 0x1000>;
337 #address-cells = <1>;
340 compatible = "sprd,sensor_main";
344 compatible = "sprd,sensor_sub";
349 compatible = "sprd,i2c";
350 interrupts = <0 12 0x0>;
351 reg = <0xf536c000 0x1000>;
352 #address-cells = <1>;
355 compatible = "focaltech,focaltech_ts";
357 gpios = <&d_gpio_gpio 81 0
360 virtualkeys = <100 1020 80 65
368 compatible = "sprd,i2c";
369 interrupts = <0 13 0x0>;
370 reg = <0xf5370000 0x1000>;
371 #address-cells = <1>;
374 compatible = "ST,lis3dh_acc";
376 poll_interval = <10>;
387 compatible = "LITEON,ltr_558als";
389 gpios = <&d_gpio_gpio 216 0>;
393 compatible = "sprd,i2c";
394 interrupts = <0 14 0x0>;
395 reg = <0xf5372000 0x1000>;
396 #address-cells = <1>;
400 compatible = "sprd,sprd_dcam";
401 interrupts = <0 45 0>;
402 reg = <0xf52f0000 0x100000>;
403 clock-names = "clk_mm_i","clk_dcam";
404 clocks = <&clk_mm>, <&clk_dcam>;
407 compatible = "sprd,sprd_scale";
410 compatible = "sprd,sprd_rotation";
413 compatible = "sprd,sprd_sensor";
414 reg = <0x60c00000 0x100000>;
415 gpios = <&d_gpio_gpio 186 0 /*main reset*/
416 &d_gpio_gpio 187 0 /*main power down*/
417 &d_gpio_gpio 186 0 /*sub reset */
418 &d_gpio_gpio 188 0 /*sub power down*/
419 &d_gpio_gpio 0 0 /*main core voltage*/
423 clock-names ="clk_mm_i","clk_sensor","clk_ccir","clk_dcam","clk_dcam_mipi";
424 clocks = <&clk_mm>, <&clk_sensor>,<&clk_ccir>, <&clk_dcam>, <&clk_dcam_mipi>;
427 compatible = "sprd,sprd_isp";
428 clock-names = "clk_mm_i","clk_isp";
429 clocks = <&clk_mm>, <&clk_isp>;
432 compatible = "sprd,sprd_dma_copy";
435 compatible = "sprd,sprdfb";
436 reg = <0xf5122000 0x1000>,<0xf5146000 0x1000>;
437 interrupts = <0 46 0x0>,<0 48 0x0>, <0 49 0x0>;
438 clock-names = "dispc_clk_parent", "dispc_dbi_clk_parent", "dispc_dpi_clk_parent", "dispc_emc_clk_parent", "dispc_clk", "dispc_dbi_clk", "dispc_dpi_clk", "dispc_emc_clk", "fb_spi_clock", "fb_spi_clock_parent";
439 clocks = <&clk_256m>, <&clk_256m>, <&clk_384m>, <&clk_aon_apb>, <&clk_dispc0>, <&clk_dispc0_dbi>, <&clk_dispc0_dpi>, <&clk_disp_emc>, <&clk_spi2>, <&ext_26m>;
440 clock-src = <256000000 256000000 384000000>;
442 sprd,fb_use_reservemem;
443 sprd,fb_mem = <0x8F8DF000 0x321000>;
444 sprd,fb_display_size = <480 854>;
447 compatible = "sprd,gsp";
448 reg = <0xf5126000 0x1000>;
449 interrupts = <0 51 0x0>;
450 clock-names = "clk_gsp", "clk_gsp_emc", "clk_gsp_parent", "clk_aon_apb";
451 clocks = <&clk_gsp>, <&clk_gsp_emc>, <&clk_256m>, <&clk_aon_apb>;
452 gsp_mmu_ctrl_base = <0xf5418000>;
455 sprd_fm: sprd_fm@40270000{
456 compatible = "sprd,sprd_fm";
457 reg = <0xf5210000 0x1000>,
458 <0xf5250000 0x10000>,
459 <0xf5230000 0x10000>,
460 <0xf5242000 0x10000>;
463 /* sipc initializer */
465 sipc: sipc@0x87800000 {
466 compatible = "sprd,sipc";
467 reg = <0x87800000 0x200000>; /* <SMEM SIZE>*/
468 //#interrupt-cells = <2>;
469 #address-cells = <1>;
471 ranges = <0x8000000 0x88000000 0x1b00000>,
472 <0x07800000 0x87800000 0x140000>,
473 <0x9aff000 0x89aff000 0x1000>,
474 <0x0a800000 0x8a800000 0x201000>,/*WCN MEMORY:OFFSET ADDRESS SIZE*/
475 <0x07940000 0x87940000 0xc0000>,
476 <0x0aa00000 0x8aa00000 0x1000>;/*WCN SIPC-RING:OFFSET ADDRESS SIZE*/
478 sprd,name = "sipc-w";
480 sprd,ap2cp = <0xf5240000>; /* base on ipi reggister */
481 sprd,cp2ap = <0xf5240004>;
482 sprd,trig = <0x01>; /* trigger bit */
483 sprd,clr = <0x01>; /* clear bit */
484 interrupts = <0 68 0x0>;
485 reg = <0x8000000 0x1b00000> , /* <CP_start_addr size> */
486 <0x07800000 0x140000>, /* <SMEM_phy_addr total_size> */
487 <0x9aff000 0x1000>; /* smsg ring buffer <base size> */
489 sipc_wcn@0x0a800000 {
490 sprd,name = "sipc-wcn";
492 sprd,ap2cp = <0xf5240000>; /* base on ipi reggister */
493 sprd,cp2ap = <0xf5240004>;
494 sprd,trig = <0x100>; /* trigger bit */
495 sprd,clr = <0x100>; /* clear bit */
496 interrupts = <0 73 0x0>;
497 reg = <0x0a800000 0x201000> , /* <CP_start_addr size> */
498 <0x07940000 0xc0000>, /* <SMEM_phy_addr total_size> */
499 <0x0aa00000 0x1000>; /* smsg ring buffer <base size> */
505 /* cpw virtual devices */
508 compatible = "sprd,spipe";
509 sprd,name = "spipe_w";
513 sprd,size-rxbuf = <0x1000>; /* 4*1024 */
514 sprd,size-txbuf = <0x1000>; /* 4*1024 */
518 compatible = "sprd,spipe";
519 sprd,name = "slog_w";
523 sprd,size-rxbuf = <0x40000>; /* 256*1024*/
524 sprd,size-txbuf = <0x8000>; /* 32*1024 */
528 compatible = "sprd,spipe";
529 sprd,name = "stty_w";
533 sprd,size-rxbuf = <0x0800>; /* 2*1024*/
534 sprd,size-txbuf = <0x0800>; /* 2*1024 */
538 compatible = "sprd,seth";
539 sprd,name = "seth_w0";
546 compatible = "sprd,seth";
547 sprd,name = "seth_w1";
554 compatible = "sprd,seth";
555 sprd,name = "seth_w2";
561 scproc_cpw: scproc@0x88000000 {
562 compatible = "sprd,scproc";
564 sprd,ctrl-reg = <0x44 0x44 0xb0 0xbc>; /* <shut_down deep_sleep reset get_status> */
565 sprd,ctrl-mask = <0x02000000 0x10000000 0x01 0xf0000>; /* masks <> */
566 sprd,iram-data = <0xe59f0000 0xe12fff10 0x88300000>; /* 3rd param equals modem_addr*/
567 reg = <0x88000000 0x1b00000>, /* <CP_start_addr total_size> = <+128M 26M> */
568 <0xf53d4000 0x0c>, /* <iram1_base size> */
569 <0xf5230000 0x10000>; /* <pmu_base size> */
570 interrupts = <0 84 0x0>; /* cp1_wdg_int */
571 #address-cells = <1>;
574 ranges = <0x300000 0x88300000 0x00800000>,
575 <0x20000 0x88020000 0x00220000>;
577 cproc,name = "modem";
578 reg = <0x300000 0x00800000>; /* <modem_addr size> */
582 reg = <0x20000 0x00220000>; /* <dsp_addr size>*/
587 compatible = "sprd,saudio";
588 sprd,saudio-dst-id = <2>;
589 sprd,saudio-names = "saudio_w";
592 compatible = "sprd,saudio";
593 sprd,saudio-dst-id = <2>;
594 sprd,saudio-names = "saudiovoip";
597 /* cpwcn virtual devices */
600 compatible = "sprd,spipe";
601 sprd,name = "spipe_wcn";
605 sprd,size-rxbuf = <0x1000>; /* 4*1024 */
606 sprd,size-txbuf = <0x1000>; /* 4*1024 */
610 compatible = "sprd,spipe";
611 sprd,name = "slog_wcn";
615 sprd,size-rxbuf = <0x40000>; /* 256*1024*/
616 sprd,size-txbuf = <0x8000>; /* 32*1024 */
620 compatible = "sprd,stty4bt";
621 sprd,name = "sttybt";
627 scproc_cpwcn: scproc@0x8a800000 {
628 compatible = "sprd,scproc";
630 sprd,ctrl-reg = <0x68 0x68 0xb0 0xb0>; /* <shut_down deep_sleep reset get_status> */
631 sprd,ctrl-mask = <0x02000000 0x10000000 0x04 0x04>; /* masks <> */
632 sprd,iram-data = <0xe59f0000 0xe12fff10 0x8a808000>; /* 3rd param equals modem_addr*/
633 reg = <0x8a800000 0x201000>, /* <CP_start_addr total_size> = <+168M 2M+4k> */
634 <0x50003000 0x1000>, /* <iram1_phys size> use iram1 phys because of cp2 iram not maped */
635 <0xf5230000 0x10000>; /* <pmu_base size> */
636 interrupts = <0 85 0x0>; /* cp2_wdg_int */
637 #address-cells = <1>;
640 ranges = <0x8000 0x8a808000 0x201000>;
642 cproc,name = "modem";
643 reg = <0x8000 0x201000>; /* <modem_addr size> */
648 compatible = "sprd,sprd_wlan";
651 sdhci0: sdhci@f5117000{
652 compatible = "sprd,sdhci-shark";
653 interrupts = <0 57 0x0>;
654 reg = <0xf5117000 0x1000>;
657 max-frequency = <384000000>;
658 keep-power-in-suspend = <1>;
661 host-caps-mask = <0x05000000>;
663 sd-supply = <&vddsd>;
664 vdd-level = <0 0 1800000 3000000>;
665 vqmmc-voltage-level = <3000000>;
666 pinmap-offset = <0x0184>;
671 clock-names = "clk_sdio0";
672 clocks = <&clk_sdio0>, <&clk_384m>;
678 sdhci1: sdhci@f5118000{
679 compatible = "sprd,sdhci-shark";
680 interrupts = <0 58 0x0>;
681 reg = <0xf5118000 0x1000>;
684 max-frequency = <96000000>;
685 keep-power-in-suspend = <1>;
686 cap-power-off-card = <1>;
688 clock-names = "clk_sdio1";
689 clocks = <&clk_sdio1>, <&clk_96m>;
696 nand0:nand@f5128000 {
697 compatible = "sprd,sprd-nand";
698 reg = <0xf5128000 0x1000>;
702 compatible = "sprd,usb";
703 interrupts = <0 55 0x0>;
705 gpios = <&a_eic_gpio 0 0>,<&d_gpio_gpio 72 0>;
706 reg = <0xf5116000 0x1000>;
707 tune_value = <0x44073e33>;
708 usb-supply = <&vddusb>;
709 #address-cells = <1>;
713 compatible = "sprd,sprd-thermal";
715 interrupts = <0 26 0x0>;
716 reg = <0x402f0000 0x1000>;
717 trip_points_active = <105>;
718 trip_points_critical = <114>;
723 compatible = "sprd,sprd-spi";
724 interrupts = <0 7 0x0>;
725 reg = <0xf5376000 0x1000>;
726 clock-names = "clk_spi0";
727 #address-cells = <1>;
731 compatible = "sprd,sprd-spi";
732 interrupts = <0 8 0x0>;
733 reg = <0xf5378000 0x1000>;
734 clock-names = "clk_spi1";
735 #address-cells = <1>;
739 compatible = "sprd,sprd-spi";
740 interrupts = <0 9 0x0>;
741 reg = <0xf537a000 0x1000>;
742 clock-names = "clk_spi2";
743 #address-cells = <1>;
747 compatible = "sprd,sprd-dma";
748 interrupts = <0 50 0x0>;
749 reg = <0xf5112000 0x4000>;
752 compatible = "sprd,sprd-adc";
753 reg = <0xf53f8300 0x400>;
755 hwspinlock0: hwspinlock0@20c00000{
756 compatible = "sprd,sprd-hwspinlock";
757 reg = <0xf512a000 0x1000>;
759 hwspinlock1: hwspinlock1@40060000{
760 compatible = "sprd,sprd-hwspinlock";
761 reg = <0xf51f6000 0x1000>;
764 compatible = "sprd,mali-utgard";
765 mali_pp_core_number = <4>;
766 interrupt-names = "mali_gp_irq",
772 reg-names = "mali_l2",
780 interrupts = <0 39 0x0>, // MALI_GP_IRQ,
781 <0 39 0x0>, // MALI_GP_MMU_IRQ,
782 <0 39 0x0>, // MALI_PP0_IRQ,
783 <0 39 0x0>, // MALI_PP0_MMU_IRQ,
784 <0 39 0x0>, // MALI_PP1_IRQ,
785 <0 39 0x0>; // MALI_PP1_MMU_IRQ,
786 reg = <0x60001000 0x200>,// MALI_L2,MALI_GPU_RESOURCE_L2(base_addr + 0x1000)
787 <0x60000000 0x100>,// MALI_GP,
788 <0x60003000 0x100>,// MALI_GP_MMU,
789 <0x60008000 0x1100>,// MALI_PP0,
790 <0x60004000 0x100>,// MALI_PP0_MMU,
791 <0x6000A000 0x1100>,// MALI_PP1,
792 <0x60005000 0x100>,// MALI_PP1_MMU,
793 <0x60002000 0x100>;// MALI_PMU,
794 clock-names = "clk_gpu_axi","clk_gpu","clk_153m6","clk_208m","clk_256m","clk_312m","clk_384m","clk_460m8";
795 clocks = <&clk_gpu_axi>,<&clk_gpu>,<&clk_153m6>,<&clk_208m>,<&clk_256m>,<&clk_312m>,<&clk_384m>,<&clk_460m8>;
798 compatible = "sprd,ion-sprd";
799 #address-cells = <1>;
803 reg = <1>; /* SYSTEM */
804 reg-names = "ion_heap_system";
805 sprd,ion-heap-type = <0>; /* SYSTEM */
806 sprd,ion-heap-mem = <0x0 0x0>;
811 reg-names = "ion_heap_carveout_mm";
812 sprd,ion-heap-type = <0>; /* carveout mm */
813 sprd,ion-heap-mem = <0x88b00000 0x7100000>;
817 reg = <3>; /* OVERLAY */
818 reg-names = "ion_heap_carveout_overlay";
819 sprd,ion-heap-type = <2>; /* CARVEOUT */
820 sprd,ion-heap-mem = <0x8fc00000 0x0>; /* 0M */
823 sprd_iommu0:sprd_iommu@F5410000 {
824 compatible = "sprd,sprd_iommu";//gsp
825 func-name = "sprd_iommu_gsp";
826 reg = <0x10000000 0x2000000>, //iova
827 <0xF5410000 0x8000>, //pgt
828 <0xF5418000 0x8000>; //ctrl_reg
829 reg_name = "iova","pgt","ctrl_reg";
830 clock-names = "clk_gsp_emc","clk_153m6","clk_gsp";
831 clocks = <&clk_gsp_emc>, <&clk_153m6>,<&clk_gsp>;
834 sprd_iommu1:sprd_iommu@F5430000 {
835 compatible = "sprd,sprd_iommu";//mm
836 func-name = "sprd_iommu_mm";
837 reg = <0x20000000 0x8000000>, //iova
838 <0xF5430000 0x20000>, //pgt
839 <0xF5450000 0x2000>; //ctrl_reg
840 reg_name = "iova","pgt","ctrl_reg";
841 clock-names = "clk_mmu","clk_mm_i";
842 clocks = <&clk_mmu>,<&clk_mm>;
845 sprd_rf2351: sprd_rf2351@40070000{
846 compatible = "sprd,sprd_rf2351";
847 reg = <0xf51f8000 0x1000>, /*RFSPI*/
848 <0xf5250000 0x10000>; /*APB_EB0*/
849 clock-names = "clk_cpll";
850 clocks = <&clk_cpll>;
852 gps_2351: gps_2351@21c00000{
853 compatible = "sprd,gps_2351";
854 interrupts = <0 52 0x0>;
855 gpios = <&d_gpio_gpio 50 0>;
856 reg = <0xf5150000 0x1000>, /*GPS CORE BASE*/
857 <0xf5130000 0x10000>, /*AHB_ADDR*/
858 <0xf5230000 0x10000>; /*PMU BASE*/
868 sprd,audio_power_ver = <3>;
873 sprd,config = <&pcm_def_config>;
890 sprd,i2s = <&i2s0>, <&i2s1>, <&i2s2>, <&i2s3>;
893 chg-end-vol-l = <4150>;