Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
[linux-2.6-microblaze.git] / arch / arm / boot / dts / mmp2.dtsi
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *  Copyright (C) 2012 Marvell Technology Group Ltd.
4  *  Author: Haojian Zhuang <haojian.zhuang@marvell.com>
5  */
6
7 #include <dt-bindings/clock/marvell,mmp2.h>
8 #include <dt-bindings/power/marvell,mmp2.h>
9 #include <dt-bindings/clock/marvell,mmp2-audio.h>
10
11 / {
12         #address-cells = <1>;
13         #size-cells = <1>;
14
15         aliases {
16                 serial0 = &uart1;
17                 serial1 = &uart2;
18                 serial2 = &uart3;
19                 serial3 = &uart4;
20                 i2c0 = &twsi1;
21                 i2c1 = &twsi2;
22         };
23
24         soc {
25                 #address-cells = <1>;
26                 #size-cells = <1>;
27                 compatible = "simple-bus";
28                 interrupt-parent = <&intc>;
29                 ranges;
30
31                 L2: l2-cache {
32                         compatible = "marvell,tauros2-cache";
33                         marvell,tauros2-cache-features = <0x3>;
34                 };
35
36                 axi@d4200000 {  /* AXI */
37                         compatible = "mrvl,axi-bus", "simple-bus";
38                         #address-cells = <1>;
39                         #size-cells = <1>;
40                         reg = <0xd4200000 0x00200000>;
41                         ranges;
42
43                         gpu: gpu@d420d000 {
44                                 compatible = "vivante,gc";
45                                 reg = <0xd420d000 0x4000>;
46                                 interrupts = <8>;
47                                 status = "disabled";
48                                 clocks = <&soc_clocks MMP2_CLK_GPU_3D>,
49                                          <&soc_clocks MMP2_CLK_GPU_BUS>;
50                                 clock-names = "core", "bus";
51                                 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_GPU>;
52                         };
53
54                         intc: interrupt-controller@d4282000 {
55                                 compatible = "mrvl,mmp2-intc";
56                                 interrupt-controller;
57                                 #interrupt-cells = <1>;
58                                 reg = <0xd4282000 0x1000>;
59                                 mrvl,intc-nr-irqs = <64>;
60                         };
61
62                         intcmux4: interrupt-controller@d4282150 {
63                                 compatible = "mrvl,mmp2-mux-intc";
64                                 interrupts = <4>;
65                                 interrupt-controller;
66                                 #interrupt-cells = <1>;
67                                 reg = <0x150 0x4>, <0x168 0x4>;
68                                 reg-names = "mux status", "mux mask";
69                                 mrvl,intc-nr-irqs = <2>;
70                         };
71
72                         intcmux5: interrupt-controller@d4282154 {
73                                 compatible = "mrvl,mmp2-mux-intc";
74                                 interrupts = <5>;
75                                 interrupt-controller;
76                                 #interrupt-cells = <1>;
77                                 reg = <0x154 0x4>, <0x16c 0x4>;
78                                 reg-names = "mux status", "mux mask";
79                                 mrvl,intc-nr-irqs = <2>;
80                                 mrvl,clr-mfp-irq = <1>;
81                         };
82
83                         intcmux9: interrupt-controller@d4282180 {
84                                 compatible = "mrvl,mmp2-mux-intc";
85                                 interrupts = <9>;
86                                 interrupt-controller;
87                                 #interrupt-cells = <1>;
88                                 reg = <0x180 0x4>, <0x17c 0x4>;
89                                 reg-names = "mux status", "mux mask";
90                                 mrvl,intc-nr-irqs = <3>;
91                         };
92
93                         intcmux17: interrupt-controller@d4282158 {
94                                 compatible = "mrvl,mmp2-mux-intc";
95                                 interrupts = <17>;
96                                 interrupt-controller;
97                                 #interrupt-cells = <1>;
98                                 reg = <0x158 0x4>, <0x170 0x4>;
99                                 reg-names = "mux status", "mux mask";
100                                 mrvl,intc-nr-irqs = <5>;
101                         };
102
103                         intcmux35: interrupt-controller@d428215c {
104                                 compatible = "mrvl,mmp2-mux-intc";
105                                 interrupts = <35>;
106                                 interrupt-controller;
107                                 #interrupt-cells = <1>;
108                                 reg = <0x15c 0x4>, <0x174 0x4>;
109                                 reg-names = "mux status", "mux mask";
110                                 mrvl,intc-nr-irqs = <15>;
111                         };
112
113                         intcmux51: interrupt-controller@d4282160 {
114                                 compatible = "mrvl,mmp2-mux-intc";
115                                 interrupts = <51>;
116                                 interrupt-controller;
117                                 #interrupt-cells = <1>;
118                                 reg = <0x160 0x4>, <0x178 0x4>;
119                                 reg-names = "mux status", "mux mask";
120                                 mrvl,intc-nr-irqs = <2>;
121                         };
122
123                         intcmux55: interrupt-controller@d4282188 {
124                                 compatible = "mrvl,mmp2-mux-intc";
125                                 interrupts = <55>;
126                                 interrupt-controller;
127                                 #interrupt-cells = <1>;
128                                 reg = <0x188 0x4>, <0x184 0x4>;
129                                 reg-names = "mux status", "mux mask";
130                                 mrvl,intc-nr-irqs = <2>;
131                         };
132
133                         usb_phy0: usb-phy@d4207000 {
134                                 compatible = "marvell,mmp2-usb-phy";
135                                 reg = <0xd4207000 0x40>;
136                                 #phy-cells = <0>;
137                                 status = "disabled";
138                         };
139
140                         usb_otg0: usb-otg@d4208000 {
141                                 compatible = "marvell,pxau2o-ehci";
142                                 reg = <0xd4208000 0x200>;
143                                 interrupts = <44>;
144                                 clocks = <&soc_clocks MMP2_CLK_USB>;
145                                 clock-names = "USBCLK";
146                                 phys = <&usb_phy0>;
147                                 phy-names = "usb";
148                                 status = "disabled";
149                         };
150
151                         mmc1: mmc@d4280000 {
152                                 compatible = "mrvl,pxav3-mmc";
153                                 reg = <0xd4280000 0x120>;
154                                 clocks = <&soc_clocks MMP2_CLK_SDH0>;
155                                 clock-names = "io";
156                                 interrupts = <39>;
157                                 status = "disabled";
158                         };
159
160                         mmc2: mmc@d4280800 {
161                                 compatible = "mrvl,pxav3-mmc";
162                                 reg = <0xd4280800 0x120>;
163                                 clocks = <&soc_clocks MMP2_CLK_SDH1>;
164                                 clock-names = "io";
165                                 interrupts = <52>;
166                                 status = "disabled";
167                         };
168
169                         mmc3: mmc@d4281000 {
170                                 compatible = "mrvl,pxav3-mmc";
171                                 reg = <0xd4281000 0x120>;
172                                 clocks = <&soc_clocks MMP2_CLK_SDH2>;
173                                 clock-names = "io";
174                                 interrupts = <53>;
175                                 status = "disabled";
176                         };
177
178                         mmc4: mmc@d4281800 {
179                                 compatible = "mrvl,pxav3-mmc";
180                                 reg = <0xd4281800 0x120>;
181                                 clocks = <&soc_clocks MMP2_CLK_SDH3>;
182                                 clock-names = "io";
183                                 interrupts = <54>;
184                                 status = "disabled";
185                         };
186
187                         camera0: camera@d420a000 {
188                                 compatible = "marvell,mmp2-ccic";
189                                 reg = <0xd420a000 0x800>;
190                                 interrupts = <42>;
191                                 clocks = <&soc_clocks MMP2_CLK_CCIC0>;
192                                 clock-names = "axi";
193                                 #clock-cells = <0>;
194                                 clock-output-names = "mclk";
195                                 status = "disabled";
196                         };
197
198                         camera1: camera@d420a800 {
199                                 compatible = "marvell,mmp2-ccic";
200                                 reg = <0xd420a800 0x800>;
201                                 interrupts = <30>;
202                                 clocks = <&soc_clocks MMP2_CLK_CCIC1>;
203                                 clock-names = "axi";
204                                 #clock-cells = <0>;
205                                 clock-output-names = "mclk";
206                                 status = "disabled";
207                         };
208
209                         adma0: dma-controller@d42a0800 {
210                                 compatible = "marvell,adma-1.0";
211                                 reg = <0xd42a0800 0x100>;
212                                 interrupts = <48>;
213                                 #dma-cells = <1>;
214                                 asram = <&asram>;
215                                 iram = <&asram>;
216                                 status = "disabled";
217                         };
218
219                         adma1: dma-controller@d42a0900 {
220                                 compatible = "marvell,adma-1.0";
221                                 reg = <0xd42a0900 0x100>;
222                                 interrupts = <48>;
223                                 #dma-cells = <1>;
224                                 status = "disabled";
225                         };
226
227                         audio_clk: clocks@d42a0c30 {
228                                 compatible = "marvell,mmp2-audio-clock";
229                                 reg = <0xd42a0c30 0x10>;
230                                 clock-names = "audio", "vctcxo", "i2s0", "i2s1";
231                                 clocks = <&soc_clocks MMP2_CLK_AUDIO>,
232                                          <&soc_clocks MMP2_CLK_VCTCXO>,
233                                          <&soc_clocks MMP2_CLK_I2S0>,
234                                          <&soc_clocks MMP2_CLK_I2S1>;
235                                 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
236                                 #clock-cells = <1>;
237                                 status = "disabled";
238                         };
239
240                         sspa0: audio-controller@d42a0c00 {
241                                 compatible = "marvell,mmp-sspa";
242                                 reg = <0xd42a0c00 0x30>,
243                                       <0xd42a0c80 0x30>;
244                                 interrupts = <2>;
245                                 clock-names = "audio", "bitclk";
246                                 clocks = <&soc_clocks MMP2_CLK_AUDIO>,
247                                          <&audio_clk MMP2_CLK_AUDIO_SSPA0>;
248                                 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
249                                 #sound-dai-cells = <0>;
250                                 status = "disabled";
251                         };
252
253                         sspa1: audio-controller@d42a0d00 {
254                                 compatible = "marvell,mmp-sspa";
255                                 reg = <0xd42a0d00 0x30>,
256                                       <0xd42a0d80 0x30>;
257                                 interrupts = <3>;
258                                 clock-names = "audio", "bitclk";
259                                 clocks = <&soc_clocks MMP2_CLK_AUDIO>,
260                                          <&audio_clk MMP2_CLK_AUDIO_SSPA1>;
261                                 power-domains = <&soc_clocks MMP2_POWER_DOMAIN_AUDIO>;
262                                 #sound-dai-cells = <0>;
263                                 status = "disabled";
264                         };
265                 };
266
267                 apb@d4000000 {  /* APB */
268                         compatible = "mrvl,apb-bus", "simple-bus";
269                         #address-cells = <1>;
270                         #size-cells = <1>;
271                         reg = <0xd4000000 0x00200000>;
272                         ranges;
273
274                         dma-controller@d4000000 {
275                                 compatible = "marvell,pdma-1.0";
276                                 reg = <0xd4000000 0x10000>;
277                                 interrupts = <48>;
278                                 #dma-channels = <16>;
279                                 status = "disabled";
280                         };
281
282                         timer0: timer@d4014000 {
283                                 compatible = "mrvl,mmp-timer";
284                                 reg = <0xd4014000 0x100>;
285                                 interrupts = <13>;
286                                 clocks = <&soc_clocks MMP2_CLK_TIMER>;
287                         };
288
289                         uart1: serial@d4030000 {
290                                 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
291                                 reg = <0xd4030000 0x1000>;
292                                 interrupts = <27>;
293                                 clocks = <&soc_clocks MMP2_CLK_UART0>;
294                                 resets = <&soc_clocks MMP2_CLK_UART0>;
295                                 reg-shift = <2>;
296                                 status = "disabled";
297                         };
298
299                         uart2: serial@d4017000 {
300                                 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
301                                 reg = <0xd4017000 0x1000>;
302                                 interrupts = <28>;
303                                 clocks = <&soc_clocks MMP2_CLK_UART1>;
304                                 resets = <&soc_clocks MMP2_CLK_UART1>;
305                                 reg-shift = <2>;
306                                 status = "disabled";
307                         };
308
309                         uart3: serial@d4018000 {
310                                 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
311                                 reg = <0xd4018000 0x1000>;
312                                 interrupts = <24>;
313                                 clocks = <&soc_clocks MMP2_CLK_UART2>;
314                                 resets = <&soc_clocks MMP2_CLK_UART2>;
315                                 reg-shift = <2>;
316                                 status = "disabled";
317                         };
318
319                         uart4: serial@d4016000 {
320                                 compatible = "mrvl,mmp-uart", "intel,xscale-uart";
321                                 reg = <0xd4016000 0x1000>;
322                                 interrupts = <46>;
323                                 clocks = <&soc_clocks MMP2_CLK_UART3>;
324                                 resets = <&soc_clocks MMP2_CLK_UART3>;
325                                 reg-shift = <2>;
326                                 status = "disabled";
327                         };
328
329                         gpio: gpio@d4019000 {
330                                 compatible = "marvell,mmp2-gpio";
331                                 #address-cells = <1>;
332                                 #size-cells = <1>;
333                                 reg = <0xd4019000 0x1000>;
334                                 gpio-controller;
335                                 #gpio-cells = <2>;
336                                 interrupts = <49>;
337                                 interrupt-names = "gpio_mux";
338                                 clocks = <&soc_clocks MMP2_CLK_GPIO>;
339                                 resets = <&soc_clocks MMP2_CLK_GPIO>;
340                                 interrupt-controller;
341                                 #interrupt-cells = <2>;
342                                 ranges;
343
344                                 gcb0: gpio@d4019000 {
345                                         reg = <0xd4019000 0x4>;
346                                 };
347
348                                 gcb1: gpio@d4019004 {
349                                         reg = <0xd4019004 0x4>;
350                                 };
351
352                                 gcb2: gpio@d4019008 {
353                                         reg = <0xd4019008 0x4>;
354                                 };
355
356                                 gcb3: gpio@d4019100 {
357                                         reg = <0xd4019100 0x4>;
358                                 };
359
360                                 gcb4: gpio@d4019104 {
361                                         reg = <0xd4019104 0x4>;
362                                 };
363
364                                 gcb5: gpio@d4019108 {
365                                         reg = <0xd4019108 0x4>;
366                                 };
367                         };
368
369                         twsi1: i2c@d4011000 {
370                                 compatible = "mrvl,mmp-twsi";
371                                 reg = <0xd4011000 0x1000>;
372                                 interrupts = <7>;
373                                 clocks = <&soc_clocks MMP2_CLK_TWSI0>;
374                                 resets = <&soc_clocks MMP2_CLK_TWSI0>;
375                                 #address-cells = <1>;
376                                 #size-cells = <0>;
377                                 mrvl,i2c-fast-mode;
378                                 status = "disabled";
379                         };
380
381                         twsi2: i2c@d4031000 {
382                                 compatible = "mrvl,mmp-twsi";
383                                 reg = <0xd4031000 0x1000>;
384                                 interrupt-parent = <&intcmux17>;
385                                 interrupts = <0>;
386                                 clocks = <&soc_clocks MMP2_CLK_TWSI1>;
387                                 resets = <&soc_clocks MMP2_CLK_TWSI1>;
388                                 #address-cells = <1>;
389                                 #size-cells = <0>;
390                                 status = "disabled";
391                         };
392
393                         twsi3: i2c@d4032000 {
394                                 compatible = "mrvl,mmp-twsi";
395                                 reg = <0xd4032000 0x1000>;
396                                 interrupt-parent = <&intcmux17>;
397                                 interrupts = <1>;
398                                 clocks = <&soc_clocks MMP2_CLK_TWSI2>;
399                                 resets = <&soc_clocks MMP2_CLK_TWSI2>;
400                                 #address-cells = <1>;
401                                 #size-cells = <0>;
402                                 status = "disabled";
403                         };
404
405                         twsi4: i2c@d4033000 {
406                                 compatible = "mrvl,mmp-twsi";
407                                 reg = <0xd4033000 0x1000>;
408                                 interrupt-parent = <&intcmux17>;
409                                 interrupts = <2>;
410                                 clocks = <&soc_clocks MMP2_CLK_TWSI3>;
411                                 resets = <&soc_clocks MMP2_CLK_TWSI3>;
412                                 #address-cells = <1>;
413                                 #size-cells = <0>;
414                                 status = "disabled";
415                         };
416
417
418                         twsi5: i2c@d4033800 {
419                                 compatible = "mrvl,mmp-twsi";
420                                 reg = <0xd4033800 0x1000>;
421                                 interrupt-parent = <&intcmux17>;
422                                 interrupts = <3>;
423                                 clocks = <&soc_clocks MMP2_CLK_TWSI4>;
424                                 resets = <&soc_clocks MMP2_CLK_TWSI4>;
425                                 #address-cells = <1>;
426                                 #size-cells = <0>;
427                                 status = "disabled";
428                         };
429
430                         twsi6: i2c@d4034000 {
431                                 compatible = "mrvl,mmp-twsi";
432                                 reg = <0xd4034000 0x1000>;
433                                 interrupt-parent = <&intcmux17>;
434                                 interrupts = <4>;
435                                 clocks = <&soc_clocks MMP2_CLK_TWSI5>;
436                                 resets = <&soc_clocks MMP2_CLK_TWSI5>;
437                                 #address-cells = <1>;
438                                 #size-cells = <0>;
439                                 status = "disabled";
440                         };
441
442                         rtc: rtc@d4010000 {
443                                 compatible = "mrvl,mmp-rtc";
444                                 reg = <0xd4010000 0x1000>;
445                                 interrupts = <1>, <0>;
446                                 interrupt-names = "rtc 1Hz", "rtc alarm";
447                                 interrupt-parent = <&intcmux5>;
448                                 clocks = <&soc_clocks MMP2_CLK_RTC>;
449                                 resets = <&soc_clocks MMP2_CLK_RTC>;
450                                 status = "disabled";
451                         };
452
453                         ssp1: spi@d4035000 {
454                                 compatible = "marvell,mmp2-ssp";
455                                 reg = <0xd4035000 0x1000>;
456                                 clocks = <&soc_clocks MMP2_CLK_SSP0>;
457                                 interrupts = <0>;
458                                 #address-cells = <1>;
459                                 #size-cells = <0>;
460                                 status = "disabled";
461                         };
462
463                         ssp2: spi@d4036000 {
464                                 compatible = "marvell,mmp2-ssp";
465                                 reg = <0xd4036000 0x1000>;
466                                 clocks = <&soc_clocks MMP2_CLK_SSP1>;
467                                 interrupts = <1>;
468                                 #address-cells = <1>;
469                                 #size-cells = <0>;
470                                 status = "disabled";
471                         };
472
473                         ssp3: spi@d4037000 {
474                                 compatible = "marvell,mmp2-ssp";
475                                 reg = <0xd4037000 0x1000>;
476                                 clocks = <&soc_clocks MMP2_CLK_SSP2>;
477                                 interrupts = <20>;
478                                 #address-cells = <1>;
479                                 #size-cells = <0>;
480                                 status = "disabled";
481                         };
482
483                         ssp4: spi@d4039000 {
484                                 compatible = "marvell,mmp2-ssp";
485                                 reg = <0xd4039000 0x1000>;
486                                 clocks = <&soc_clocks MMP2_CLK_SSP3>;
487                                 interrupts = <21>;
488                                 #address-cells = <1>;
489                                 #size-cells = <0>;
490                                 status = "disabled";
491                         };
492                 };
493
494                 asram: sram@e0000000 {
495                         compatible = "mmio-sram";
496                         reg = <0xe0000000 0x10000>;
497                         ranges = <0 0xe0000000 0x10000>;
498                         #address-cells = <1>;
499                         #size-cells = <1>;
500                         status = "disabled";
501                 };
502
503                 soc_clocks: clocks {
504                         compatible = "marvell,mmp2-clock";
505                         reg = <0xd4050000 0x2000>,
506                               <0xd4282800 0x400>,
507                               <0xd4015000 0x1000>;
508                         reg-names = "mpmu", "apmu", "apbc";
509                         #clock-cells = <1>;
510                         #reset-cells = <1>;
511                         #power-domain-cells = <1>;
512                 };
513         };
514 };