arm64: zynqmp: Add support for zcu102 1.0 rev
[oweals/u-boot.git] / arch / arm / dts / dm816x.dtsi
1 /*
2  * This file is licensed under the terms of the GNU General Public License
3  * version 2.  This program is licensed "as is" without any warranty of any
4  * kind, whether express or implied.
5  */
6
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/pinctrl/omap.h>
9
10 / {
11         compatible = "ti,dm816";
12         interrupt-parent = <&intc>;
13         #address-cells = <1>;
14         #size-cells = <1>;
15         chosen { };
16
17         aliases {
18                 i2c0 = &i2c1;
19                 i2c1 = &i2c2;
20                 serial0 = &uart1;
21                 serial1 = &uart2;
22                 serial2 = &uart3;
23                 ethernet0 = &eth0;
24                 ethernet1 = &eth1;
25         };
26
27         cpus {
28                 #address-cells = <1>;
29                 #size-cells = <0>;
30                 cpu@0 {
31                         compatible = "arm,cortex-a8";
32                         device_type = "cpu";
33                         reg = <0>;
34                 };
35         };
36
37         pmu {
38                 compatible = "arm,cortex-a8-pmu";
39                 interrupts = <3>;
40         };
41
42         /*
43          * The soc node represents the soc top level view. It is used for IPs
44          * that are not memory mapped in the MPU view or for the MPU itself.
45          */
46         soc {
47                 compatible = "ti,omap-infra";
48                 mpu {
49                         compatible = "ti,omap3-mpu";
50                         ti,hwmods = "mpu";
51                 };
52         };
53
54         /*
55          * XXX: Use a flat representation of the dm816x interconnect.
56          * The real dm816x interconnect network is quite complex. Since
57          * it will not bring real advantage to represent that in DT
58          * for the moment, just use a fake OCP bus entry to represent
59          * the whole bus hierarchy.
60          */
61         ocp {
62                 compatible = "simple-bus";
63                 reg = <0x44000000 0x10000>;
64                 interrupts = <9 10>;
65                 #address-cells = <1>;
66                 #size-cells = <1>;
67                 ranges;
68
69                 prcm: prcm@48180000 {
70                         compatible = "ti,dm816-prcm";
71                         reg = <0x48180000 0x4000>;
72
73                         prcm_clocks: clocks {
74                                 #address-cells = <1>;
75                                 #size-cells = <0>;
76                         };
77
78                         prcm_clockdomains: clockdomains {
79                         };
80                 };
81
82                 scrm: scrm@48140000 {
83                         compatible = "ti,dm816-scrm", "simple-bus";
84                         reg = <0x48140000 0x21000>;
85                         #address-cells = <1>;
86                         #size-cells = <1>;
87                         #pinctrl-cells = <1>;
88                         ranges = <0 0x48140000 0x21000>;
89
90                         dm816x_pinmux: pinmux@800 {
91                                 compatible = "pinctrl-single";
92                                 reg = <0x800 0x50a>;
93                                 #address-cells = <1>;
94                                 #size-cells = <0>;
95                                 #pinctrl-cells = <1>;
96                                 pinctrl-single,register-width = <16>;
97                                 pinctrl-single,function-mask = <0xf>;
98                         };
99
100                         /* Device Configuration Registers */
101                         scm_conf: syscon@600 {
102                                 compatible = "syscon", "simple-bus";
103                                 reg = <0x600 0x110>;
104                                 #address-cells = <1>;
105                                 #size-cells = <1>;
106                                 ranges = <0 0x600 0x110>;
107
108                                 usb_phy0: usb-phy@20 {
109                                         compatible = "ti,dm8168-usb-phy";
110                                         reg = <0x20 0x8>;
111                                         reg-names = "phy";
112                                         clocks = <&main_fapll 6>;
113                                         clock-names = "refclk";
114                                         #phy-cells = <0>;
115                                         syscon = <&scm_conf>;
116                                 };
117
118                                 usb_phy1: usb-phy@28 {
119                                         compatible = "ti,dm8168-usb-phy";
120                                         reg = <0x28 0x8>;
121                                         reg-names = "phy";
122                                         clocks = <&main_fapll 6>;
123                                         clock-names = "refclk";
124                                         #phy-cells = <0>;
125                                         syscon = <&scm_conf>;
126                                 };
127                         };
128
129                         scrm_clocks: clocks {
130                                 #address-cells = <1>;
131                                 #size-cells = <0>;
132                         };
133
134                         scrm_clockdomains: clockdomains {
135                         };
136                 };
137
138                 edma: edma@49000000 {
139                         compatible = "ti,edma3";
140                         ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2", "tptc3";
141                         reg =   <0x49000000 0x10000>,
142                                 <0x44e10f90 0x40>;
143                         interrupts = <12 13 14>;
144                         #dma-cells = <1>;
145                 };
146
147                 elm: elm@48080000 {
148                         compatible = "ti,816-elm";
149                         ti,hwmods = "elm";
150                         reg = <0x48080000 0x2000>;
151                         interrupts = <4>;
152                 };
153
154                 gpio1: gpio@48032000 {
155                         compatible = "ti,omap4-gpio";
156                         ti,hwmods = "gpio1";
157                         ti,gpio-always-on;
158                         reg = <0x48032000 0x1000>;
159                         interrupts = <96>;
160                         gpio-controller;
161                         #gpio-cells = <2>;
162                         interrupt-controller;
163                         #interrupt-cells = <2>;
164                 };
165
166                 gpio2: gpio@4804c000 {
167                         compatible = "ti,omap4-gpio";
168                         ti,hwmods = "gpio2";
169                         ti,gpio-always-on;
170                         reg = <0x4804c000 0x1000>;
171                         interrupts = <98>;
172                         gpio-controller;
173                         #gpio-cells = <2>;
174                         interrupt-controller;
175                         #interrupt-cells = <2>;
176                 };
177
178                 gpmc: gpmc@50000000 {
179                         compatible = "ti,am3352-gpmc";
180                         ti,hwmods = "gpmc";
181                         reg = <0x50000000 0x2000>;
182                         #address-cells = <2>;
183                         #size-cells = <1>;
184                         interrupts = <100>;
185                         dmas = <&edma 52>;
186                         dma-names = "rxtx";
187                         gpmc,num-cs = <6>;
188                         gpmc,num-waitpins = <2>;
189                         interrupt-controller;
190                         #interrupt-cells = <2>;
191                         gpio-controller;
192                         #gpio-cells = <2>;
193                 };
194
195                 i2c1: i2c@48028000 {
196                         compatible = "ti,omap4-i2c";
197                         ti,hwmods = "i2c1";
198                         reg = <0x48028000 0x1000>;
199                         #address-cells = <1>;
200                         #size-cells = <0>;
201                         interrupts = <70>;
202                         dmas = <&edma 58 &edma 59>;
203                         dma-names = "tx", "rx";
204                 };
205
206                 i2c2: i2c@4802a000 {
207                         compatible = "ti,omap4-i2c";
208                         ti,hwmods = "i2c2";
209                         reg = <0x4802a000 0x1000>;
210                         #address-cells = <1>;
211                         #size-cells = <0>;
212                         interrupts = <71>;
213                         dmas = <&edma 60 &edma 61>;
214                         dma-names = "tx", "rx";
215                 };
216
217                 intc: interrupt-controller@48200000 {
218                         compatible = "ti,dm816-intc";
219                         interrupt-controller;
220                         #interrupt-cells = <1>;
221                         reg = <0x48200000 0x1000>;
222                 };
223
224                 rtc: rtc@480c0000 {
225                         compatible = "ti,am3352-rtc", "ti,da830-rtc";
226                         reg = <0x480c0000 0x1000>;
227                         interrupts = <75 76>;
228                         ti,hwmods = "rtc";
229                 };
230
231                 mailbox: mailbox@480c8000 {
232                         compatible = "ti,omap4-mailbox";
233                         reg = <0x480c8000 0x2000>;
234                         interrupts = <77>;
235                         ti,hwmods = "mailbox";
236                         #mbox-cells = <1>;
237                         ti,mbox-num-users = <4>;
238                         ti,mbox-num-fifos = <12>;
239                         mbox_dsp: mbox_dsp {
240                                 ti,mbox-tx = <3 0 0>;
241                                 ti,mbox-rx = <0 0 0>;
242                         };
243                 };
244
245                 spinbox: spinbox@480ca000 {
246                         compatible = "ti,omap4-hwspinlock";
247                         reg = <0x480ca000 0x2000>;
248                         ti,hwmods = "spinbox";
249                         #hwlock-cells = <1>;
250                 };
251
252                 mdio: mdio@4a100800 {
253                         compatible = "ti,davinci_mdio";
254                         #address-cells = <1>;
255                         #size-cells = <0>;
256                         reg = <0x4a100800 0x100>;
257                         ti,hwmods = "davinci_mdio";
258                         bus_freq = <1000000>;
259                         phy0: ethernet-phy@0 {
260                                 reg = <1>;
261                         };
262                         phy1: ethernet-phy@1 {
263                                 reg = <2>;
264                         };
265                 };
266
267                 eth0: ethernet@4a100000 {
268                         compatible = "ti,dm816-emac";
269                         ti,hwmods = "emac0";
270                         reg = <0x4a100000 0x800
271                                0x4a100900 0x3700>;
272                         clocks = <&sysclk24_ck>;
273                         syscon = <&scm_conf>;
274                         ti,davinci-ctrl-reg-offset = <0>;
275                         ti,davinci-ctrl-mod-reg-offset = <0x900>;
276                         ti,davinci-ctrl-ram-offset = <0x2000>;
277                         ti,davinci-ctrl-ram-size = <0x2000>;
278                         interrupts = <40 41 42 43>;
279                         phy-handle = <&phy0>;
280                 };
281
282                 eth1: ethernet@4a120000 {
283                         compatible = "ti,dm816-emac";
284                         ti,hwmods = "emac1";
285                         reg = <0x4a120000 0x4000>;
286                         clocks = <&sysclk24_ck>;
287                         syscon = <&scm_conf>;
288                         ti,davinci-ctrl-reg-offset = <0>;
289                         ti,davinci-ctrl-mod-reg-offset = <0x900>;
290                         ti,davinci-ctrl-ram-offset = <0x2000>;
291                         ti,davinci-ctrl-ram-size = <0x2000>;
292                         interrupts = <44 45 46 47>;
293                         phy-handle = <&phy1>;
294                 };
295
296                 mcspi1: spi@48030000 {
297                         compatible = "ti,omap4-mcspi";
298                         reg = <0x48030000 0x1000>;
299                         #address-cells = <1>;
300                         #size-cells = <0>;
301                         interrupts = <65>;
302                         ti,spi-num-cs = <4>;
303                         ti,hwmods = "mcspi1";
304                         dmas = <&edma 16 &edma 17
305                                 &edma 18 &edma 19
306                                 &edma 20 &edma 21
307                                 &edma 22 &edma 23>;
308                         dma-names = "tx0", "rx0", "tx1", "rx1",
309                                     "tx2", "rx2", "tx3", "rx3";
310                 };
311
312                 mmc1: mmc@48060000 {
313                         compatible = "ti,omap4-hsmmc";
314                         reg = <0x48060000 0x11000>;
315                         ti,hwmods = "mmc1";
316                         interrupts = <64>;
317                         dmas = <&edma 24 &edma 25>;
318                         dma-names = "tx", "rx";
319                 };
320
321                 timer1: timer@4802e000 {
322                         compatible = "ti,dm816-timer";
323                         reg = <0x4802e000 0x2000>;
324                         interrupts = <67>;
325                         ti,hwmods = "timer1";
326                         ti,timer-alwon;
327                 };
328
329                 timer2: timer@48040000 {
330                         compatible = "ti,dm816-timer";
331                         reg = <0x48040000 0x2000>;
332                         interrupts = <68>;
333                         ti,hwmods = "timer2";
334                 };
335
336                 timer3: timer@48042000 {
337                         compatible = "ti,dm816-timer";
338                         reg = <0x48042000 0x2000>;
339                         interrupts = <69>;
340                         ti,hwmods = "timer3";
341                 };
342
343                 timer4: timer@48044000 {
344                         compatible = "ti,dm816-timer";
345                         reg = <0x48044000 0x2000>;
346                         interrupts = <92>;
347                         ti,hwmods = "timer4";
348                         ti,timer-pwm;
349                 };
350
351                 timer5: timer@48046000 {
352                         compatible = "ti,dm816-timer";
353                         reg = <0x48046000 0x2000>;
354                         interrupts = <93>;
355                         ti,hwmods = "timer5";
356                         ti,timer-pwm;
357                 };
358
359                 timer6: timer@48048000 {
360                         compatible = "ti,dm816-timer";
361                         reg = <0x48048000 0x2000>;
362                         interrupts = <94>;
363                         ti,hwmods = "timer6";
364                         ti,timer-pwm;
365                 };
366
367                 timer7: timer@4804a000 {
368                         compatible = "ti,dm816-timer";
369                         reg = <0x4804a000 0x2000>;
370                         interrupts = <95>;
371                         ti,hwmods = "timer7";
372                         ti,timer-pwm;
373                 };
374
375                 uart1: uart@48020000 {
376                         compatible = "ti,am3352-uart", "ti,omap3-uart";
377                         ti,hwmods = "uart1";
378                         reg = <0x48020000 0x2000>;
379                         clock-frequency = <48000000>;
380                         interrupts = <72>;
381                         dmas = <&edma 26 &edma 27>;
382                         dma-names = "tx", "rx";
383                 };
384
385                 uart2: uart@48022000 {
386                         compatible = "ti,am3352-uart", "ti,omap3-uart";
387                         ti,hwmods = "uart2";
388                         reg = <0x48022000 0x2000>;
389                         clock-frequency = <48000000>;
390                         interrupts = <73>;
391                         dmas = <&edma 28 &edma 29>;
392                         dma-names = "tx", "rx";
393                 };
394
395                 uart3: uart@48024000 {
396                         compatible = "ti,am3352-uart", "ti,omap3-uart";
397                         ti,hwmods = "uart3";
398                         reg = <0x48024000 0x2000>;
399                         clock-frequency = <48000000>;
400                         interrupts = <74>;
401                         dmas = <&edma 30 &edma 31>;
402                         dma-names = "tx", "rx";
403                 };
404
405                 /* NOTE: USB needs a transceiver driver for phys to work */
406                 usb: usb_otg_hs@47401000 {
407                         compatible = "ti,am33xx-usb";
408                         reg = <0x47401000 0x400000>;
409                         ranges;
410                         #address-cells = <1>;
411                         #size-cells = <1>;
412                         ti,hwmods = "usb_otg_hs";
413
414                         usb0: usb@47401000 {
415                                 compatible = "ti,musb-dm816";
416                                 reg = <0x47401400 0x400
417                                        0x47401000 0x200>;
418                                 reg-names = "mc", "control";
419                                 interrupts = <18>;
420                                 interrupt-names = "mc";
421                                 dr_mode = "host";
422                                 interface-type = <0>;
423                                 phys = <&usb_phy0>;
424                                 phy-names = "usb2-phy";
425                                 mentor,multipoint = <1>;
426                                 mentor,num-eps = <16>;
427                                 mentor,ram-bits = <12>;
428                                 mentor,power = <500>;
429
430                                 dmas = <&cppi41dma  0 0 &cppi41dma  1 0
431                                         &cppi41dma  2 0 &cppi41dma  3 0
432                                         &cppi41dma  4 0 &cppi41dma  5 0
433                                         &cppi41dma  6 0 &cppi41dma  7 0
434                                         &cppi41dma  8 0 &cppi41dma  9 0
435                                         &cppi41dma 10 0 &cppi41dma 11 0
436                                         &cppi41dma 12 0 &cppi41dma 13 0
437                                         &cppi41dma 14 0 &cppi41dma  0 1
438                                         &cppi41dma  1 1 &cppi41dma  2 1
439                                         &cppi41dma  3 1 &cppi41dma  4 1
440                                         &cppi41dma  5 1 &cppi41dma  6 1
441                                         &cppi41dma  7 1 &cppi41dma  8 1
442                                         &cppi41dma  9 1 &cppi41dma 10 1
443                                         &cppi41dma 11 1 &cppi41dma 12 1
444                                         &cppi41dma 13 1 &cppi41dma 14 1>;
445                                 dma-names =
446                                         "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
447                                         "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
448                                         "rx14", "rx15",
449                                         "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
450                                         "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
451                                         "tx14", "tx15";
452                         };
453
454                         usb1: usb@47401800 {
455                                 compatible = "ti,musb-dm816";
456                                 reg = <0x47401c00 0x400
457                                        0x47401800 0x200>;
458                                 reg-names = "mc", "control";
459                                 interrupts = <19>;
460                                 interrupt-names = "mc";
461                                 dr_mode = "host";
462                                 interface-type = <0>;
463                                 phys = <&usb_phy1>;
464                                 phy-names = "usb2-phy";
465                                 mentor,multipoint = <1>;
466                                 mentor,num-eps = <16>;
467                                 mentor,ram-bits = <12>;
468                                 mentor,power = <500>;
469
470                                 dmas = <&cppi41dma 15 0 &cppi41dma 16 0
471                                         &cppi41dma 17 0 &cppi41dma 18 0
472                                         &cppi41dma 19 0 &cppi41dma 20 0
473                                         &cppi41dma 21 0 &cppi41dma 22 0
474                                         &cppi41dma 23 0 &cppi41dma 24 0
475                                         &cppi41dma 25 0 &cppi41dma 26 0
476                                         &cppi41dma 27 0 &cppi41dma 28 0
477                                         &cppi41dma 29 0 &cppi41dma 15 1
478                                         &cppi41dma 16 1 &cppi41dma 17 1
479                                         &cppi41dma 18 1 &cppi41dma 19 1
480                                         &cppi41dma 20 1 &cppi41dma 21 1
481                                         &cppi41dma 22 1 &cppi41dma 23 1
482                                         &cppi41dma 24 1 &cppi41dma 25 1
483                                         &cppi41dma 26 1 &cppi41dma 27 1
484                                         &cppi41dma 28 1 &cppi41dma 29 1>;
485                                 dma-names =
486                                         "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
487                                         "rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
488                                         "rx14", "rx15",
489                                         "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
490                                         "tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
491                                         "tx14", "tx15";
492                         };
493
494                         cppi41dma: dma-controller@47402000 {
495                                 compatible = "ti,am3359-cppi41";
496                                 reg =  <0x47400000 0x1000
497                                         0x47402000 0x1000
498                                         0x47403000 0x1000
499                                         0x47404000 0x4000>;
500                                 reg-names = "glue", "controller", "scheduler", "queuemgr";
501                                 interrupts = <17>;
502                                 interrupt-names = "glue";
503                                 #dma-cells = <2>;
504                                 #dma-channels = <30>;
505                                 #dma-requests = <256>;
506                         };
507                 };
508
509                 wd_timer2: wd_timer@480c2000 {
510                         compatible = "ti,omap3-wdt";
511                         ti,hwmods = "wd_timer";
512                         reg = <0x480c2000 0x1000>;
513                         interrupts = <0>;
514                 };
515         };
516 };
517
518 #include "dm816x-clocks.dtsi"