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