Merge branch 'linux-linaro-lsk-v4.4-android' of git://git.linaro.org/kernel/linux...
[firefly-linux-kernel-4.4.55.git] / arch / arm / boot / dts / berlin2q.dtsi
1 /*
2  * Copyright (C) 2014 Antoine Ténart <antoine.tenart@free-electrons.com>
3  *
4  * This file is dual-licensed: you can use it either under the terms
5  * of the GPL or the X11 license, at your option. Note that this dual
6  * licensing only applies to this file, and not this project as a
7  * whole.
8  *
9  *  a) This file is licensed under the terms of the GNU General Public
10  *     License version 2. This program is licensed "as is" without any
11  *     warranty of any kind, whether express or implied.
12  *
13  * Or, alternatively,
14  *
15  *  b) Permission is hereby granted, free of charge, to any person
16  *     obtaining a copy of this software and associated documentation
17  *     files (the "Software"), to deal in the Software without
18  *     restriction, including without limitation the rights to use,
19  *     copy, modify, merge, publish, distribute, sublicense, and/or
20  *     sell copies of the Software, and to permit persons to whom the
21  *     Software is furnished to do so, subject to the following
22  *     conditions:
23  *
24  *     The above copyright notice and this permission notice shall be
25  *     included in all copies or substantial portions of the Software.
26  *
27  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
29  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
31  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
32  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
33  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
34  *     OTHER DEALINGS IN THE SOFTWARE.
35  */
36
37 #include <dt-bindings/clock/berlin2q.h>
38 #include <dt-bindings/interrupt-controller/arm-gic.h>
39
40 #include "skeleton.dtsi"
41
42 / {
43         model = "Marvell Armada 1500 pro (BG2-Q) SoC";
44         compatible = "marvell,berlin2q", "marvell,berlin";
45
46         aliases {
47                 serial0 = &uart0;
48                 serial1 = &uart1;
49         };
50
51         cpus {
52                 #address-cells = <1>;
53                 #size-cells = <0>;
54                 enable-method = "marvell,berlin-smp";
55
56                 cpu@0 {
57                         compatible = "arm,cortex-a9";
58                         device_type = "cpu";
59                         next-level-cache = <&l2>;
60                         reg = <0>;
61
62                         clocks = <&chip_clk CLKID_CPU>;
63                         clock-latency = <100000>;
64                         /* Can be modified by the bootloader */
65                         operating-points = <
66                                 /* kHz    uV */
67                                 1200000 1200000
68                                 1000000 1200000
69                                 800000  1200000
70                                 600000  1200000
71                         >;
72                 };
73
74                 cpu@1 {
75                         compatible = "arm,cortex-a9";
76                         device_type = "cpu";
77                         next-level-cache = <&l2>;
78                         reg = <1>;
79                 };
80
81                 cpu@2 {
82                         compatible = "arm,cortex-a9";
83                         device_type = "cpu";
84                         next-level-cache = <&l2>;
85                         reg = <2>;
86                 };
87
88                 cpu@3 {
89                         compatible = "arm,cortex-a9";
90                         device_type = "cpu";
91                         next-level-cache = <&l2>;
92                         reg = <3>;
93                 };
94         };
95
96         refclk: oscillator {
97                 compatible = "fixed-clock";
98                 #clock-cells = <0>;
99                 clock-frequency = <25000000>;
100         };
101
102         soc {
103                 compatible = "simple-bus";
104                 #address-cells = <1>;
105                 #size-cells = <1>;
106
107                 ranges = <0 0xf7000000 0x1000000>;
108                 interrupt-parent = <&gic>;
109
110                 pmu {
111                         compatible = "arm,cortex-a9-pmu";
112                         interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>,
113                                      <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>,
114                                      <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
115                                      <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
116                 };
117
118                 sdhci0: sdhci@ab0000 {
119                         compatible = "mrvl,pxav3-mmc";
120                         reg = <0xab0000 0x200>;
121                         clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
122                         clock-names = "io", "core";
123                         interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
124                         status = "disabled";
125                 };
126
127                 sdhci1: sdhci@ab0800 {
128                         compatible = "mrvl,pxav3-mmc";
129                         reg = <0xab0800 0x200>;
130                         clocks = <&chip_clk CLKID_SDIO1XIN>, <&chip_clk CLKID_SDIO>;
131                         clock-names = "io", "core";
132                         interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
133                         status = "disabled";
134                 };
135
136                 sdhci2: sdhci@ab1000 {
137                         compatible = "mrvl,pxav3-mmc";
138                         reg = <0xab1000 0x200>;
139                         interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
140                         clocks = <&chip_clk CLKID_NFC_ECC>, <&chip_clk CLKID_SDIO>;
141                         clock-names = "io", "core";
142                         status = "disabled";
143                 };
144
145                 l2: l2-cache-controller@ac0000 {
146                         compatible = "arm,pl310-cache";
147                         reg = <0xac0000 0x1000>;
148                         cache-level = <2>;
149                         arm,data-latency = <2 2 2>;
150                         arm,tag-latency = <2 2 2>;
151                 };
152
153                 scu: snoop-control-unit@ad0000 {
154                         compatible = "arm,cortex-a9-scu";
155                         reg = <0xad0000 0x58>;
156                 };
157
158                 local-timer@ad0600 {
159                         compatible = "arm,cortex-a9-twd-timer";
160                         reg = <0xad0600 0x20>;
161                         clocks = <&chip_clk CLKID_TWD>;
162                         interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
163                 };
164
165                 gic: interrupt-controller@ad1000 {
166                         compatible = "arm,cortex-a9-gic";
167                         reg = <0xad1000 0x1000>, <0xad0100 0x100>;
168                         interrupt-controller;
169                         #interrupt-cells = <3>;
170                 };
171
172                 usb_phy2: phy@a2f400 {
173                         compatible = "marvell,berlin2cd-usb-phy";
174                         reg = <0xa2f400 0x128>;
175                         #phy-cells = <0>;
176                         resets = <&chip_rst 0x104 14>;
177                         status = "disabled";
178                 };
179
180                 usb2: usb@a30000 {
181                         compatible = "chipidea,usb2";
182                         reg = <0xa30000 0x10000>;
183                         interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
184                         clocks = <&chip_clk CLKID_USB2>;
185                         phys = <&usb_phy2>;
186                         phy-names = "usb-phy";
187                         status = "disabled";
188                 };
189
190                 usb_phy0: phy@b74000 {
191                         compatible = "marvell,berlin2cd-usb-phy";
192                         reg = <0xb74000 0x128>;
193                         #phy-cells = <0>;
194                         resets = <&chip_rst 0x104 12>;
195                         status = "disabled";
196                 };
197
198                 usb_phy1: phy@b78000 {
199                         compatible = "marvell,berlin2cd-usb-phy";
200                         reg = <0xb78000 0x128>;
201                         #phy-cells = <0>;
202                         resets = <&chip_rst 0x104 13>;
203                         status = "disabled";
204                 };
205
206                 eth0: ethernet@b90000 {
207                         compatible = "marvell,pxa168-eth";
208                         reg = <0xb90000 0x10000>;
209                         clocks = <&chip_clk CLKID_GETH0>;
210                         interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
211                         /* set by bootloader */
212                         local-mac-address = [00 00 00 00 00 00];
213                         #address-cells = <1>;
214                         #size-cells = <0>;
215                         phy-connection-type = "mii";
216                         phy-handle = <&ethphy0>;
217                         status = "disabled";
218
219                         ethphy0: ethernet-phy@0 {
220                                 reg = <0>;
221                         };
222                 };
223
224                 cpu-ctrl@dd0000 {
225                         compatible = "marvell,berlin-cpu-ctrl";
226                         reg = <0xdd0000 0x10000>;
227                 };
228
229                 apb@e80000 {
230                         compatible = "simple-bus";
231                         #address-cells = <1>;
232                         #size-cells = <1>;
233
234                         ranges = <0 0xe80000 0x10000>;
235                         interrupt-parent = <&aic>;
236
237                         gpio0: gpio@0400 {
238                                 compatible = "snps,dw-apb-gpio";
239                                 reg = <0x0400 0x400>;
240                                 #address-cells = <1>;
241                                 #size-cells = <0>;
242
243                                 porta: gpio-port@0 {
244                                         compatible = "snps,dw-apb-gpio-port";
245                                         gpio-controller;
246                                         #gpio-cells = <2>;
247                                         snps,nr-gpios = <32>;
248                                         reg = <0>;
249                                         interrupt-controller;
250                                         #interrupt-cells = <2>;
251                                         interrupts = <0>;
252                                 };
253                         };
254
255                         gpio1: gpio@0800 {
256                                 compatible = "snps,dw-apb-gpio";
257                                 reg = <0x0800 0x400>;
258                                 #address-cells = <1>;
259                                 #size-cells = <0>;
260
261                                 portb: gpio-port@1 {
262                                         compatible = "snps,dw-apb-gpio-port";
263                                         gpio-controller;
264                                         #gpio-cells = <2>;
265                                         snps,nr-gpios = <32>;
266                                         reg = <0>;
267                                         interrupt-controller;
268                                         #interrupt-cells = <2>;
269                                         interrupts = <1>;
270                                 };
271                         };
272
273                         gpio2: gpio@0c00 {
274                                 compatible = "snps,dw-apb-gpio";
275                                 reg = <0x0c00 0x400>;
276                                 #address-cells = <1>;
277                                 #size-cells = <0>;
278
279                                 portc: gpio-port@2 {
280                                         compatible = "snps,dw-apb-gpio-port";
281                                         gpio-controller;
282                                         #gpio-cells = <2>;
283                                         snps,nr-gpios = <32>;
284                                         reg = <0>;
285                                         interrupt-controller;
286                                         #interrupt-cells = <2>;
287                                         interrupts = <2>;
288                                 };
289                         };
290
291                         gpio3: gpio@1000 {
292                                 compatible = "snps,dw-apb-gpio";
293                                 reg = <0x1000 0x400>;
294                                 #address-cells = <1>;
295                                 #size-cells = <0>;
296
297                                 portd: gpio-port@3 {
298                                         compatible = "snps,dw-apb-gpio-port";
299                                         gpio-controller;
300                                         #gpio-cells = <2>;
301                                         snps,nr-gpios = <32>;
302                                         reg = <0>;
303                                         interrupt-controller;
304                                         #interrupt-cells = <2>;
305                                         interrupts = <3>;
306                                 };
307                         };
308
309                         i2c0: i2c@1400 {
310                                 compatible = "snps,designware-i2c";
311                                 #address-cells = <1>;
312                                 #size-cells = <0>;
313                                 reg = <0x1400 0x100>;
314                                 interrupt-parent = <&aic>;
315                                 interrupts = <4>;
316                                 clocks = <&chip_clk CLKID_CFG>;
317                                 pinctrl-0 = <&twsi0_pmux>;
318                                 pinctrl-names = "default";
319                                 status = "disabled";
320                         };
321
322                         i2c1: i2c@1800 {
323                                 compatible = "snps,designware-i2c";
324                                 #address-cells = <1>;
325                                 #size-cells = <0>;
326                                 reg = <0x1800 0x100>;
327                                 interrupt-parent = <&aic>;
328                                 interrupts = <5>;
329                                 clocks = <&chip_clk CLKID_CFG>;
330                                 pinctrl-0 = <&twsi1_pmux>;
331                                 pinctrl-names = "default";
332                                 status = "disabled";
333                         };
334
335                         timer0: timer@2c00 {
336                                 compatible = "snps,dw-apb-timer";
337                                 reg = <0x2c00 0x14>;
338                                 clocks = <&chip_clk CLKID_CFG>;
339                                 clock-names = "timer";
340                                 interrupts = <8>;
341                         };
342
343                         timer1: timer@2c14 {
344                                 compatible = "snps,dw-apb-timer";
345                                 reg = <0x2c14 0x14>;
346                                 clocks = <&chip_clk CLKID_CFG>;
347                                 clock-names = "timer";
348                         };
349
350                         timer2: timer@2c28 {
351                                 compatible = "snps,dw-apb-timer";
352                                 reg = <0x2c28 0x14>;
353                                 clocks = <&chip_clk CLKID_CFG>;
354                                 clock-names = "timer";
355                                 status = "disabled";
356                         };
357
358                         timer3: timer@2c3c {
359                                 compatible = "snps,dw-apb-timer";
360                                 reg = <0x2c3c 0x14>;
361                                 clocks = <&chip_clk CLKID_CFG>;
362                                 clock-names = "timer";
363                                 status = "disabled";
364                         };
365
366                         timer4: timer@2c50 {
367                                 compatible = "snps,dw-apb-timer";
368                                 reg = <0x2c50 0x14>;
369                                 clocks = <&chip_clk CLKID_CFG>;
370                                 clock-names = "timer";
371                                 status = "disabled";
372                         };
373
374                         timer5: timer@2c64 {
375                                 compatible = "snps,dw-apb-timer";
376                                 reg = <0x2c64 0x14>;
377                                 clocks = <&chip_clk CLKID_CFG>;
378                                 clock-names = "timer";
379                                 status = "disabled";
380                         };
381
382                         timer6: timer@2c78 {
383                                 compatible = "snps,dw-apb-timer";
384                                 reg = <0x2c78 0x14>;
385                                 clocks = <&chip_clk CLKID_CFG>;
386                                 clock-names = "timer";
387                                 status = "disabled";
388                         };
389
390                         timer7: timer@2c8c {
391                                 compatible = "snps,dw-apb-timer";
392                                 reg = <0x2c8c 0x14>;
393                                 clocks = <&chip_clk CLKID_CFG>;
394                                 clock-names = "timer";
395                                 status = "disabled";
396                         };
397
398                         aic: interrupt-controller@3800 {
399                                 compatible = "snps,dw-apb-ictl";
400                                 reg = <0x3800 0x30>;
401                                 interrupt-controller;
402                                 #interrupt-cells = <1>;
403                                 interrupt-parent = <&gic>;
404                                 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
405                         };
406                 };
407
408                 chip: chip-control@ea0000 {
409                         compatible = "simple-mfd", "syscon";
410                         reg = <0xea0000 0x400>, <0xdd0170 0x10>;
411
412                         chip_clk: clock {
413                                 compatible = "marvell,berlin2q-clk";
414                                 #clock-cells = <1>;
415                                 clocks = <&refclk>;
416                                 clock-names = "refclk";
417                         };
418
419                         soc_pinctrl: pin-controller {
420                                 compatible = "marvell,berlin2q-soc-pinctrl";
421
422                                 twsi0_pmux: twsi0-pmux {
423                                         groups = "G6";
424                                         function = "twsi0";
425                                 };
426
427                                 twsi1_pmux: twsi1-pmux {
428                                         groups = "G7";
429                                         function = "twsi1";
430                                 };
431                         };
432
433                         chip_rst: reset {
434                                 compatible = "marvell,berlin2-reset";
435                                 #reset-cells = <2>;
436                         };
437                 };
438
439                 ahci: sata@e90000 {
440                         compatible = "marvell,berlin2q-ahci", "generic-ahci";
441                         reg = <0xe90000 0x1000>;
442                         interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
443                         clocks = <&chip_clk CLKID_SATA>;
444                         #address-cells = <1>;
445                         #size-cells = <0>;
446
447                         sata0: sata-port@0 {
448                                 reg = <0>;
449                                 phys = <&sata_phy 0>;
450                                 status = "disabled";
451                         };
452
453                         sata1: sata-port@1 {
454                                 reg = <1>;
455                                 phys = <&sata_phy 1>;
456                                 status = "disabled";
457                         };
458                 };
459
460                 sata_phy: phy@e900a0 {
461                         compatible = "marvell,berlin2q-sata-phy";
462                         reg = <0xe900a0 0x200>;
463                         clocks = <&chip_clk CLKID_SATA>;
464                         #address-cells = <1>;
465                         #size-cells = <0>;
466                         #phy-cells = <1>;
467                         status = "disabled";
468
469                         sata-phy@0 {
470                                 reg = <0>;
471                         };
472
473                         sata-phy@1 {
474                                 reg = <1>;
475                         };
476                 };
477
478                 usb0: usb@ed0000 {
479                         compatible = "chipidea,usb2";
480                         reg = <0xed0000 0x10000>;
481                         interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
482                         clocks = <&chip_clk CLKID_USB0>;
483                         phys = <&usb_phy0>;
484                         phy-names = "usb-phy";
485                         status = "disabled";
486                 };
487
488                 usb1: usb@ee0000 {
489                         compatible = "chipidea,usb2";
490                         reg = <0xee0000 0x10000>;
491                         interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
492                         clocks = <&chip_clk CLKID_USB1>;
493                         phys = <&usb_phy1>;
494                         phy-names = "usb-phy";
495                         status = "disabled";
496                 };
497
498                 pwm: pwm@f20000 {
499                         compatible = "marvell,berlin-pwm";
500                         reg = <0xf20000 0x40>;
501                         clocks = <&chip_clk CLKID_CFG>;
502                         #pwm-cells = <3>;
503                 };
504
505                 apb@fc0000 {
506                         compatible = "simple-bus";
507                         #address-cells = <1>;
508                         #size-cells = <1>;
509
510                         ranges = <0 0xfc0000 0x10000>;
511                         interrupt-parent = <&sic>;
512
513                         sm_gpio1: gpio@5000 {
514                                 compatible = "snps,dw-apb-gpio";
515                                 reg = <0x5000 0x400>;
516                                 #address-cells = <1>;
517                                 #size-cells = <0>;
518
519                                 portf: gpio-port@5 {
520                                         compatible = "snps,dw-apb-gpio-port";
521                                         gpio-controller;
522                                         #gpio-cells = <2>;
523                                         snps,nr-gpios = <32>;
524                                         reg = <0>;
525                                 };
526                         };
527
528                         i2c2: i2c@7000 {
529                                 compatible = "snps,designware-i2c";
530                                 #address-cells = <1>;
531                                 #size-cells = <0>;
532                                 reg = <0x7000 0x100>;
533                                 interrupt-parent = <&sic>;
534                                 interrupts = <6>;
535                                 clocks = <&refclk>;
536                                 pinctrl-0 = <&twsi2_pmux>;
537                                 pinctrl-names = "default";
538                                 status = "disabled";
539                         };
540
541                         i2c3: i2c@8000 {
542                                 compatible = "snps,designware-i2c";
543                                 #address-cells = <1>;
544                                 #size-cells = <0>;
545                                 reg = <0x8000 0x100>;
546                                 interrupt-parent = <&sic>;
547                                 interrupts = <7>;
548                                 clocks = <&refclk>;
549                                 pinctrl-0 = <&twsi3_pmux>;
550                                 pinctrl-names = "default";
551                                 status = "disabled";
552                         };
553
554                         uart0: uart@9000 {
555                                 compatible = "snps,dw-apb-uart";
556                                 reg = <0x9000 0x100>;
557                                 interrupt-parent = <&sic>;
558                                 interrupts = <8>;
559                                 clocks = <&refclk>;
560                                 reg-shift = <2>;
561                                 pinctrl-0 = <&uart0_pmux>;
562                                 pinctrl-names = "default";
563                                 status = "disabled";
564                         };
565
566                         uart1: uart@a000 {
567                                 compatible = "snps,dw-apb-uart";
568                                 reg = <0xa000 0x100>;
569                                 interrupt-parent = <&sic>;
570                                 interrupts = <9>;
571                                 clocks = <&refclk>;
572                                 reg-shift = <2>;
573                                 pinctrl-0 = <&uart1_pmux>;
574                                 pinctrl-names = "default";
575                                 status = "disabled";
576                         };
577
578                         sm_gpio0: gpio@c000 {
579                                 compatible = "snps,dw-apb-gpio";
580                                 reg = <0xc000 0x400>;
581                                 #address-cells = <1>;
582                                 #size-cells = <0>;
583
584                                 porte: gpio-port@4 {
585                                         compatible = "snps,dw-apb-gpio-port";
586                                         gpio-controller;
587                                         #gpio-cells = <2>;
588                                         snps,nr-gpios = <32>;
589                                         reg = <0>;
590                                 };
591                         };
592
593                         sysctrl: pin-controller@d000 {
594                                 compatible = "simple-mfd", "syscon";
595                                 reg = <0xd000 0x100>;
596
597                                 sys_pinctrl: pin-controller {
598                                         compatible = "marvell,berlin2q-system-pinctrl";
599
600                                         uart0_pmux: uart0-pmux {
601                                                 groups = "GSM12";
602                                                 function = "uart0";
603                                         };
604
605                                         uart1_pmux: uart1-pmux {
606                                                 groups = "GSM14";
607                                                 function = "uart1";
608                                         };
609
610                                         twsi2_pmux: twsi2-pmux {
611                                                 groups = "GSM13";
612                                                 function = "twsi2";
613                                         };
614
615                                         twsi3_pmux: twsi3-pmux {
616                                                 groups = "GSM14";
617                                                 function = "twsi3";
618                                         };
619                                 };
620
621                                 adc: adc {
622                                         compatible = "marvell,berlin2-adc";
623                                         interrupts = <12>, <14>;
624                                         interrupt-names = "adc", "tsen";
625                                 };
626                         };
627
628                         sic: interrupt-controller@e000 {
629                                 compatible = "snps,dw-apb-ictl";
630                                 reg = <0xe000 0x30>;
631                                 interrupt-controller;
632                                 #interrupt-cells = <1>;
633                                 interrupt-parent = <&gic>;
634                                 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
635                         };
636                 };
637         };
638 };