1279377Simp/*
2279377Simp * This file is licensed under the terms of the GNU General Public License
3279377Simp * version 2.  This program is licensed "as is" without any warranty of any
4279377Simp * kind, whether express or implied.
5279377Simp */
6279377Simp
7279377Simp#include <dt-bindings/gpio/gpio.h>
8279377Simp#include <dt-bindings/pinctrl/omap.h>
9279377Simp
10279377Simp#include "skeleton.dtsi"
11279377Simp
12279377Simp/ {
13279377Simp	compatible = "ti,dm816";
14279377Simp	interrupt-parent = <&intc>;
15279377Simp
16279377Simp	aliases {
17279377Simp		i2c0 = &i2c1;
18279377Simp		i2c1 = &i2c2;
19279377Simp		serial0 = &uart1;
20279377Simp		serial1 = &uart2;
21279377Simp		serial2 = &uart3;
22279377Simp		ethernet0 = &eth0;
23279377Simp		ethernet1 = &eth1;
24279377Simp	};
25279377Simp
26279377Simp	cpus {
27279377Simp		#address-cells = <1>;
28279377Simp		#size-cells = <0>;
29279377Simp		cpu@0 {
30279377Simp			compatible = "arm,cortex-a8";
31279377Simp			device_type = "cpu";
32279377Simp			reg = <0>;
33279377Simp		};
34279377Simp	};
35279377Simp
36279377Simp	pmu {
37279377Simp		compatible = "arm,cortex-a8-pmu";
38279377Simp		interrupts = <3>;
39279377Simp	};
40279377Simp
41279377Simp	/*
42279377Simp	 * The soc node represents the soc top level view. It is used for IPs
43279377Simp	 * that are not memory mapped in the MPU view or for the MPU itself.
44279377Simp	 */
45279377Simp	soc {
46279377Simp		compatible = "ti,omap-infra";
47279377Simp		mpu {
48279377Simp			compatible = "ti,omap3-mpu";
49279377Simp			ti,hwmods = "mpu";
50279377Simp		};
51279377Simp	};
52279377Simp
53279377Simp	/*
54279377Simp	 * XXX: Use a flat representation of the dm816x interconnect.
55279377Simp	 * The real dm816x interconnect network is quite complex. Since
56279377Simp	 * it will not bring real advantage to represent that in DT
57279377Simp	 * for the moment, just use a fake OCP bus entry to represent
58279377Simp	 * the whole bus hierarchy.
59279377Simp	 */
60279377Simp	ocp {
61295436Sandrew		compatible = "simple-bus";
62279377Simp		reg = <0x44000000 0x10000>;
63279377Simp		interrupts = <9 10>;
64279377Simp		#address-cells = <1>;
65279377Simp		#size-cells = <1>;
66279377Simp		ranges;
67279377Simp
68279377Simp		prcm: prcm@48180000 {
69279377Simp			compatible = "ti,dm816-prcm";
70279377Simp			reg = <0x48180000 0x4000>;
71279377Simp
72279377Simp			prcm_clocks: clocks {
73279377Simp				#address-cells = <1>;
74279377Simp				#size-cells = <0>;
75279377Simp			};
76279377Simp
77279377Simp			prcm_clockdomains: clockdomains {
78279377Simp			};
79279377Simp		};
80279377Simp
81279377Simp		scrm: scrm@48140000 {
82279377Simp			compatible = "ti,dm816-scrm", "simple-bus";
83279377Simp			reg = <0x48140000 0x21000>;
84279377Simp			#address-cells = <1>;
85279377Simp			#size-cells = <1>;
86279377Simp			ranges = <0 0x48140000 0x21000>;
87279377Simp
88279377Simp			dm816x_pinmux: pinmux@800 {
89279377Simp				compatible = "pinctrl-single";
90279377Simp				reg = <0x800 0x50a>;
91279377Simp				#address-cells = <1>;
92279377Simp				#size-cells = <0>;
93279377Simp				pinctrl-single,register-width = <16>;
94279377Simp				pinctrl-single,function-mask = <0xf>;
95279377Simp			};
96279377Simp
97279377Simp			/* Device Configuration Registers */
98279377Simp			scm_conf: syscon@600 {
99295436Sandrew				compatible = "syscon", "simple-bus";
100279377Simp				reg = <0x600 0x110>;
101279377Simp				#address-cells = <1>;
102279377Simp				#size-cells = <1>;
103295436Sandrew				ranges = <0 0x600 0x110>;
104295436Sandrew
105295436Sandrew				usb_phy0: usb-phy@20 {
106295436Sandrew					compatible = "ti,dm8168-usb-phy";
107295436Sandrew					reg = <0x20 0x8>;
108295436Sandrew					reg-names = "phy";
109295436Sandrew					clocks = <&main_fapll 6>;
110295436Sandrew					clock-names = "refclk";
111295436Sandrew					#phy-cells = <0>;
112295436Sandrew					syscon = <&scm_conf>;
113295436Sandrew				};
114295436Sandrew
115295436Sandrew				usb_phy1: usb-phy@28 {
116295436Sandrew					compatible = "ti,dm8168-usb-phy";
117295436Sandrew					reg = <0x28 0x8>;
118295436Sandrew					reg-names = "phy";
119295436Sandrew					clocks = <&main_fapll 6>;
120295436Sandrew					clock-names = "refclk";
121295436Sandrew					#phy-cells = <0>;
122295436Sandrew					syscon = <&scm_conf>;
123295436Sandrew				};
124279377Simp			};
125279377Simp
126279377Simp			scrm_clocks: clocks {
127279377Simp				#address-cells = <1>;
128279377Simp				#size-cells = <0>;
129279377Simp			};
130279377Simp
131279377Simp			scrm_clockdomains: clockdomains {
132279377Simp			};
133279377Simp		};
134279377Simp
135279377Simp		edma: edma@49000000 {
136279377Simp			compatible = "ti,edma3";
137279377Simp			ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2", "tptc3";
138279377Simp			reg =   <0x49000000 0x10000>,
139279377Simp			        <0x44e10f90 0x40>;
140279377Simp			interrupts = <12 13 14>;
141279377Simp			#dma-cells = <1>;
142279377Simp		};
143279377Simp
144279377Simp		elm: elm@48080000 {
145279377Simp			compatible = "ti,816-elm";
146279377Simp			ti,hwmods = "elm";
147279377Simp			reg = <0x48080000 0x2000>;
148279377Simp			interrupts = <4>;
149279377Simp		};
150279377Simp
151279377Simp		gpio1: gpio@48032000 {
152295436Sandrew			compatible = "ti,omap4-gpio";
153279377Simp			ti,hwmods = "gpio1";
154295436Sandrew			ti,gpio-always-on;
155279377Simp			reg = <0x48032000 0x1000>;
156295436Sandrew			interrupts = <96>;
157295436Sandrew			gpio-controller;
158295436Sandrew			#gpio-cells = <2>;
159295436Sandrew			interrupt-controller;
160295436Sandrew			#interrupt-cells = <2>;
161279377Simp		};
162279377Simp
163279377Simp		gpio2: gpio@4804c000 {
164295436Sandrew			compatible = "ti,omap4-gpio";
165279377Simp			ti,hwmods = "gpio2";
166295436Sandrew			ti,gpio-always-on;
167279377Simp			reg = <0x4804c000 0x1000>;
168295436Sandrew			interrupts = <98>;
169295436Sandrew			gpio-controller;
170295436Sandrew			#gpio-cells = <2>;
171295436Sandrew			interrupt-controller;
172295436Sandrew			#interrupt-cells = <2>;
173279377Simp		};
174279377Simp
175279377Simp		gpmc: gpmc@50000000 {
176279377Simp			compatible = "ti,am3352-gpmc";
177279377Simp			ti,hwmods = "gpmc";
178279377Simp			reg = <0x50000000 0x2000>;
179279377Simp			#address-cells = <2>;
180279377Simp			#size-cells = <1>;
181279377Simp			interrupts = <100>;
182295436Sandrew			dmas = <&edma 52>;
183295436Sandrew			dma-names = "rxtx";
184279377Simp			gpmc,num-cs = <6>;
185279377Simp			gpmc,num-waitpins = <2>;
186279377Simp		};
187279377Simp
188279377Simp		i2c1: i2c@48028000 {
189279377Simp			compatible = "ti,omap4-i2c";
190279377Simp			ti,hwmods = "i2c1";
191279377Simp			reg = <0x48028000 0x1000>;
192279377Simp			#address-cells = <1>;
193279377Simp			#size-cells = <0>;
194279377Simp			interrupts = <70>;
195279377Simp			dmas = <&edma 58 &edma 59>;
196279377Simp			dma-names = "tx", "rx";
197279377Simp		};
198279377Simp
199279377Simp		i2c2: i2c@4802a000 {
200279377Simp			compatible = "ti,omap4-i2c";
201279377Simp			ti,hwmods = "i2c2";
202279377Simp			reg = <0x4802a000 0x1000>;
203279377Simp			#address-cells = <1>;
204279377Simp			#size-cells = <0>;
205279377Simp			interrupts = <71>;
206279377Simp			dmas = <&edma 60 &edma 61>;
207279377Simp			dma-names = "tx", "rx";
208279377Simp		};
209279377Simp
210279377Simp		intc: interrupt-controller@48200000 {
211279377Simp			compatible = "ti,dm816-intc";
212279377Simp			interrupt-controller;
213279377Simp			#interrupt-cells = <1>;
214279377Simp			reg = <0x48200000 0x1000>;
215279377Simp		};
216279377Simp
217279377Simp		mailbox: mailbox@480c8000 {
218279377Simp			compatible = "ti,omap4-mailbox";
219279377Simp			reg = <0x480c8000 0x2000>;
220279377Simp			interrupts = <77>;
221279377Simp			ti,hwmods = "mailbox";
222295436Sandrew			#mbox-cells = <1>;
223279377Simp			ti,mbox-num-users = <4>;
224279377Simp			ti,mbox-num-fifos = <12>;
225279377Simp			mbox_dsp: mbox_dsp {
226279377Simp				ti,mbox-tx = <3 0 0>;
227279377Simp				ti,mbox-rx = <0 0 0>;
228279377Simp			};
229279377Simp		};
230279377Simp
231295436Sandrew		spinbox: spinbox@480ca000 {
232295436Sandrew			compatible = "ti,omap4-hwspinlock";
233295436Sandrew			reg = <0x480ca000 0x2000>;
234295436Sandrew			ti,hwmods = "spinbox";
235295436Sandrew			#hwlock-cells = <1>;
236295436Sandrew		};
237295436Sandrew
238279377Simp		mdio: mdio@4a100800 {
239279377Simp			compatible = "ti,davinci_mdio";
240279377Simp			#address-cells = <1>;
241279377Simp			#size-cells = <0>;
242279377Simp			reg = <0x4a100800 0x100>;
243279377Simp			ti,hwmods = "davinci_mdio";
244279377Simp			bus_freq = <1000000>;
245279377Simp			phy0: ethernet-phy@0 {
246279377Simp				reg = <1>;
247279377Simp			};
248279377Simp			phy1: ethernet-phy@1 {
249279377Simp				reg = <2>;
250279377Simp			};
251279377Simp		};
252279377Simp
253279377Simp		eth0: ethernet@4a100000 {
254279377Simp			compatible = "ti,dm816-emac";
255279377Simp			ti,hwmods = "emac0";
256279377Simp			reg = <0x4a100000 0x800
257279377Simp			       0x4a100900 0x3700>;
258279377Simp			clocks = <&sysclk24_ck>;
259279377Simp			syscon = <&scm_conf>;
260279377Simp			ti,davinci-ctrl-reg-offset = <0>;
261279377Simp			ti,davinci-ctrl-mod-reg-offset = <0x900>;
262279377Simp			ti,davinci-ctrl-ram-offset = <0x2000>;
263279377Simp			ti,davinci-ctrl-ram-size = <0x2000>;
264279377Simp			interrupts = <40 41 42 43>;
265279377Simp			phy-handle = <&phy0>;
266279377Simp		};
267279377Simp
268279377Simp		eth1: ethernet@4a120000 {
269279377Simp			compatible = "ti,dm816-emac";
270279377Simp			ti,hwmods = "emac1";
271279377Simp			reg = <0x4a120000 0x4000>;
272279377Simp			clocks = <&sysclk24_ck>;
273279377Simp			syscon = <&scm_conf>;
274279377Simp			ti,davinci-ctrl-reg-offset = <0>;
275279377Simp			ti,davinci-ctrl-mod-reg-offset = <0x900>;
276279377Simp			ti,davinci-ctrl-ram-offset = <0x2000>;
277279377Simp			ti,davinci-ctrl-ram-size = <0x2000>;
278279377Simp			interrupts = <44 45 46 47>;
279279377Simp			phy-handle = <&phy1>;
280279377Simp		};
281279377Simp
282279377Simp		mcspi1: spi@48030000 {
283279377Simp			compatible = "ti,omap4-mcspi";
284279377Simp			reg = <0x48030000 0x1000>;
285279377Simp			#address-cells = <1>;
286279377Simp			#size-cells = <0>;
287279377Simp			interrupts = <65>;
288279377Simp			ti,spi-num-cs = <4>;
289279377Simp			ti,hwmods = "mcspi1";
290279377Simp			dmas = <&edma 16 &edma 17
291295436Sandrew				&edma 18 &edma 19
292295436Sandrew				&edma 20 &edma 21
293295436Sandrew				&edma 22 &edma 23>;
294295436Sandrew			dma-names = "tx0", "rx0", "tx1", "rx1",
295295436Sandrew				    "tx2", "rx2", "tx3", "rx3";
296279377Simp		};
297279377Simp
298279377Simp		mmc1: mmc@48060000 {
299279377Simp			compatible = "ti,omap4-hsmmc";
300279377Simp			reg = <0x48060000 0x11000>;
301279377Simp			ti,hwmods = "mmc1";
302279377Simp			interrupts = <64>;
303279377Simp			dmas = <&edma 24 &edma 25>;
304279377Simp			dma-names = "tx", "rx";
305279377Simp		};
306279377Simp
307279377Simp		timer1: timer@4802e000 {
308279377Simp			compatible = "ti,dm816-timer";
309279377Simp			reg = <0x4802e000 0x2000>;
310279377Simp			interrupts = <67>;
311279377Simp			ti,hwmods = "timer1";
312279377Simp			ti,timer-alwon;
313279377Simp		};
314279377Simp
315279377Simp		timer2: timer@48040000 {
316279377Simp			compatible = "ti,dm816-timer";
317279377Simp			reg = <0x48040000 0x2000>;
318279377Simp			interrupts = <68>;
319279377Simp			ti,hwmods = "timer2";
320279377Simp		};
321279377Simp
322279377Simp		timer3: timer@48042000 {
323279377Simp			compatible = "ti,dm816-timer";
324279377Simp			reg = <0x48042000 0x2000>;
325279377Simp			interrupts = <69>;
326279377Simp			ti,hwmods = "timer3";
327279377Simp		};
328279377Simp
329279377Simp		timer4: timer@48044000 {
330279377Simp			compatible = "ti,dm816-timer";
331279377Simp			reg = <0x48044000 0x2000>;
332279377Simp			interrupts = <92>;
333279377Simp			ti,hwmods = "timer4";
334295436Sandrew			ti,timer-pwm;
335279377Simp		};
336279377Simp
337279377Simp		timer5: timer@48046000 {
338279377Simp			compatible = "ti,dm816-timer";
339279377Simp			reg = <0x48046000 0x2000>;
340279377Simp			interrupts = <93>;
341279377Simp			ti,hwmods = "timer5";
342295436Sandrew			ti,timer-pwm;
343279377Simp		};
344279377Simp
345279377Simp		timer6: timer@48048000 {
346279377Simp			compatible = "ti,dm816-timer";
347279377Simp			reg = <0x48048000 0x2000>;
348279377Simp			interrupts = <94>;
349279377Simp			ti,hwmods = "timer6";
350295436Sandrew			ti,timer-pwm;
351279377Simp		};
352279377Simp
353279377Simp		timer7: timer@4804a000 {
354279377Simp			compatible = "ti,dm816-timer";
355279377Simp			reg = <0x4804a000 0x2000>;
356279377Simp			interrupts = <95>;
357279377Simp			ti,hwmods = "timer7";
358295436Sandrew			ti,timer-pwm;
359279377Simp		};
360279377Simp
361279377Simp		uart1: uart@48020000 {
362279377Simp			compatible = "ti,omap3-uart";
363279377Simp			ti,hwmods = "uart1";
364279377Simp			reg = <0x48020000 0x2000>;
365279377Simp			clock-frequency = <48000000>;
366279377Simp			interrupts = <72>;
367279377Simp			dmas = <&edma 26 &edma 27>;
368279377Simp			dma-names = "tx", "rx";
369279377Simp		};
370279377Simp
371279377Simp		uart2: uart@48022000 {
372279377Simp			compatible = "ti,omap3-uart";
373279377Simp			ti,hwmods = "uart2";
374279377Simp			reg = <0x48022000 0x2000>;
375279377Simp			clock-frequency = <48000000>;
376279377Simp			interrupts = <73>;
377279377Simp			dmas = <&edma 28 &edma 29>;
378279377Simp			dma-names = "tx", "rx";
379279377Simp		};
380279377Simp
381279377Simp		uart3: uart@48024000 {
382279377Simp			compatible = "ti,omap3-uart";
383279377Simp			ti,hwmods = "uart3";
384279377Simp			reg = <0x48024000 0x2000>;
385279377Simp			clock-frequency = <48000000>;
386279377Simp			interrupts = <74>;
387279377Simp			dmas = <&edma 30 &edma 31>;
388279377Simp			dma-names = "tx", "rx";
389279377Simp		};
390279377Simp
391279377Simp		/* NOTE: USB needs a transceiver driver for phys to work */
392279377Simp		usb: usb_otg_hs@47401000 {
393279377Simp			compatible = "ti,am33xx-usb";
394279377Simp			reg = <0x47401000 0x400000>;
395279377Simp			ranges;
396279377Simp			#address-cells = <1>;
397279377Simp			#size-cells = <1>;
398279377Simp			ti,hwmods = "usb_otg_hs";
399279377Simp
400279377Simp			usb0: usb@47401000 {
401295436Sandrew				compatible = "ti,musb-dm816";
402279377Simp				reg = <0x47401400 0x400
403279377Simp				       0x47401000 0x200>;
404279377Simp				reg-names = "mc", "control";
405279377Simp				interrupts = <18>;
406279377Simp				interrupt-names = "mc";
407295436Sandrew				dr_mode = "host";
408295436Sandrew				interface-type = <0>;
409295436Sandrew				phys = <&usb_phy0>;
410295436Sandrew				phy-names = "usb2-phy";
411279377Simp				mentor,multipoint = <1>;
412279377Simp				mentor,num-eps = <16>;
413279377Simp				mentor,ram-bits = <12>;
414279377Simp				mentor,power = <500>;
415295436Sandrew
416295436Sandrew				dmas = <&cppi41dma  0 0 &cppi41dma  1 0
417295436Sandrew					&cppi41dma  2 0 &cppi41dma  3 0
418295436Sandrew					&cppi41dma  4 0 &cppi41dma  5 0
419295436Sandrew					&cppi41dma  6 0 &cppi41dma  7 0
420295436Sandrew					&cppi41dma  8 0 &cppi41dma  9 0
421295436Sandrew					&cppi41dma 10 0 &cppi41dma 11 0
422295436Sandrew					&cppi41dma 12 0 &cppi41dma 13 0
423295436Sandrew					&cppi41dma 14 0 &cppi41dma  0 1
424295436Sandrew					&cppi41dma  1 1 &cppi41dma  2 1
425295436Sandrew					&cppi41dma  3 1 &cppi41dma  4 1
426295436Sandrew					&cppi41dma  5 1 &cppi41dma  6 1
427295436Sandrew					&cppi41dma  7 1 &cppi41dma  8 1
428295436Sandrew					&cppi41dma  9 1 &cppi41dma 10 1
429295436Sandrew					&cppi41dma 11 1 &cppi41dma 12 1
430295436Sandrew					&cppi41dma 13 1 &cppi41dma 14 1>;
431295436Sandrew				dma-names =
432295436Sandrew					"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
433295436Sandrew					"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
434295436Sandrew					"rx14", "rx15",
435295436Sandrew					"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
436295436Sandrew					"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
437295436Sandrew					"tx14", "tx15";
438279377Simp			};
439279377Simp
440279377Simp			usb1: usb@47401800 {
441295436Sandrew				compatible = "ti,musb-dm816";
442279377Simp				reg = <0x47401c00 0x400
443279377Simp				       0x47401800 0x200>;
444279377Simp				reg-names = "mc", "control";
445279377Simp				interrupts = <19>;
446279377Simp				interrupt-names = "mc";
447295436Sandrew				dr_mode = "host";
448295436Sandrew				interface-type = <0>;
449295436Sandrew				phys = <&usb_phy1>;
450295436Sandrew				phy-names = "usb2-phy";
451279377Simp				mentor,multipoint = <1>;
452279377Simp				mentor,num-eps = <16>;
453279377Simp				mentor,ram-bits = <12>;
454279377Simp				mentor,power = <500>;
455295436Sandrew
456295436Sandrew				dmas = <&cppi41dma 15 0 &cppi41dma 16 0
457295436Sandrew					&cppi41dma 17 0 &cppi41dma 18 0
458295436Sandrew					&cppi41dma 19 0 &cppi41dma 20 0
459295436Sandrew					&cppi41dma 21 0 &cppi41dma 22 0
460295436Sandrew					&cppi41dma 23 0 &cppi41dma 24 0
461295436Sandrew					&cppi41dma 25 0 &cppi41dma 26 0
462295436Sandrew					&cppi41dma 27 0 &cppi41dma 28 0
463295436Sandrew					&cppi41dma 29 0 &cppi41dma 15 1
464295436Sandrew					&cppi41dma 16 1 &cppi41dma 17 1
465295436Sandrew					&cppi41dma 18 1 &cppi41dma 19 1
466295436Sandrew					&cppi41dma 20 1 &cppi41dma 21 1
467295436Sandrew					&cppi41dma 22 1 &cppi41dma 23 1
468295436Sandrew					&cppi41dma 24 1 &cppi41dma 25 1
469295436Sandrew					&cppi41dma 26 1 &cppi41dma 27 1
470295436Sandrew					&cppi41dma 28 1 &cppi41dma 29 1>;
471295436Sandrew				dma-names =
472295436Sandrew					"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
473295436Sandrew					"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
474295436Sandrew					"rx14", "rx15",
475295436Sandrew					"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
476295436Sandrew					"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
477295436Sandrew					"tx14", "tx15";
478279377Simp			};
479295436Sandrew
480295436Sandrew			cppi41dma: dma-controller@47402000 {
481295436Sandrew				compatible = "ti,am3359-cppi41";
482295436Sandrew				reg =  <0x47400000 0x1000
483295436Sandrew					0x47402000 0x1000
484295436Sandrew					0x47403000 0x1000
485295436Sandrew					0x47404000 0x4000>;
486295436Sandrew				reg-names = "glue", "controller", "scheduler", "queuemgr";
487295436Sandrew				interrupts = <17>;
488295436Sandrew				interrupt-names = "glue";
489295436Sandrew				#dma-cells = <2>;
490295436Sandrew				#dma-channels = <30>;
491295436Sandrew				#dma-requests = <256>;
492295436Sandrew			};
493279377Simp		};
494279377Simp
495279377Simp		wd_timer2: wd_timer@480c2000 {
496279377Simp			compatible = "ti,omap3-wdt";
497279377Simp			ti,hwmods = "wd_timer";
498279377Simp			reg = <0x480c2000 0x1000>;
499279377Simp			interrupts = <0>;
500279377Simp		};
501279377Simp	};
502279377Simp};
503279377Simp
504279377Simp#include "dm816x-clocks.dtsi"
505