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