1/*-
2 * Copyright (c) 2013-2014 Ruslan Bukin <br@bsdpad.com>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD$
27 */
28
29/ {
30	compatible = "samsung,exynos5";
31	#address-cells = <1>;
32	#size-cells = <1>;
33	interrupt-parent = <&GIC>;
34
35	aliases {
36		soc = &SOC;
37		serial0 = &serial0;
38		serial1 = &serial1;
39		serial2 = &serial2;
40		serial3 = &serial3;
41		clk0 = &clk0;
42		dp0 = &dp0;
43		fimd0 = &fimd0;
44	};
45
46	SOC: Exynos5@0 {
47		#address-cells = <1>;
48		#size-cells = <1>;
49		compatible = "simple-bus";
50		ranges;
51		bus-frequency = <0>;
52
53		pmu_system_controller: system-controller@10040000 {
54			reg = <0x10040000 0x5000>;
55			status = "disabled";
56		};
57
58		GIC: interrupt-controller@10481000 {
59			compatible = "arm,gic";
60			reg =	< 0x10481000 0x1000 >,	/* Distributor Registers */
61				< 0x10482000 0x2000 >;	/* CPU Interface Registers */
62			interrupt-controller;
63			#address-cells = <0>;
64			#interrupt-cells = <1>;
65		};
66
67		combiner: interrupt-controller@10440000 {
68			compatible = "exynos,combiner";
69			reg = <0x10440000 0x1000>;
70			interrupts = < 32 33 34 35 36 37 38 39
71				       40 41 42 43 44 45 46 47
72				       48 49 50 51 52 53 54 55
73				       56 57 58 59 60 61 62 63 >;
74			interrupt-parent = <&GIC>;
75		};
76
77		clk0: clk@10010000 {
78			compatible = "exynos,clk";
79			reg = < 0x10020000 0x20000 >;
80		};
81
82		mct {
83			compatible = "exynos,mct";
84			reg = < 0x101C0000 0x1000 >;
85			clock-frequency = <24000000>;
86		};
87
88		generic_timer {
89			compatible = "arm,armv7-timer";
90			clock-frequency = <24000000>;
91			interrupts = < 29 30 27 26 >;
92			interrupt-parent = <&GIC>;
93		};
94
95		pwm {
96			compatible = "samsung,s3c24x0-timer";
97			reg = <0x12DD0000 0x1000>;
98			interrupts = < 71 >;
99			interrupt-parent = <&GIC>;
100			clock-frequency = <24000000>;
101		};
102
103		pad0: pad@11400000 {
104			status = "disabled";
105		};
106
107		usbdrd_phy0: phy@12100000 {
108			compatible = "samsung,exynos5420-usbdrd-phy";
109			status = "disabled";
110			reg = <0x12100000 0x100>;
111			samsung,pmu-syscon = <&pmu_system_controller>;
112		};
113
114		usbdrd_phy1: phy@12500000 {
115			compatible = "samsung,exynos5420-usbdrd-phy";
116			status = "disabled";
117			reg = <0x12500000 0x100>;
118			samsung,pmu-syscon = <&pmu_system_controller>;
119		};
120
121		xhci@12000000 {
122			compatible = "samsung,exynos5250-dwusb3";
123			status = "disabled";
124			reg = <0x12000000 0x1000>,
125			      <0x1200c100 0x1000>;
126			interrupts = < 104 >;
127			interrupt-parent = <&GIC>;
128		};
129
130		xhci@12400000 {
131			compatible = "samsung,exynos5250-dwusb3";
132			status = "disabled";
133			reg = <0x12400000 0x1000>,
134			      <0x1240c100 0x1000>;
135			interrupts = < 105 >;
136			interrupt-parent = <&GIC>;
137		};
138
139		usb@12110000 {
140			compatible = "exynos,usb-ehci", "usb-ehci";
141			status = "disabled";
142			reg = <0x12110000 0x1000>, /* EHCI */
143			      <0x12130000 0x1000>, /* EHCI host ctrl */
144			      <0x10050230 0x10>; /* Sysreg */
145			interrupts = < 103 >;
146			interrupt-parent = <&GIC>;
147		};
148
149		usb@12120000 {
150			compatible = "exynos,usb-ohci", "usb-ohci";
151			status = "disabled";
152			reg = <0x12120000 0x10000>;
153			interrupts = < 103 >;
154			interrupt-parent = <&GIC>;
155		};
156
157		sdhci@12200000 {
158			compatible = "sdhci_generic";
159			status = "disabled";
160			reg = <0x12200000 0x1000>;
161			interrupts = <107>;
162			interrupt-parent = <&GIC>;
163			max-frequency = <24000000>; /* TODO: verify freq */
164		};
165
166		sdhci@12210000 {
167			compatible = "sdhci_generic";
168			status = "disabled";
169			reg = <0x12210000 0x1000>;
170			interrupts = <108>;
171			interrupt-parent = <&GIC>;
172			max-frequency = <24000000>;
173		};
174
175		sdhci@12220000 {
176			compatible = "sdhci_generic";
177			status = "disabled";
178			reg = <0x12220000 0x1000>;
179			interrupts = <109>;
180			interrupt-parent = <&GIC>;
181			max-frequency = <24000000>;
182		};
183
184		sdhci@12230000 {
185			compatible = "sdhci_generic";
186			status = "disabled";
187			reg = <0x12230000 0x1000>;
188			interrupts = <110>;
189			interrupt-parent = <&GIC>;
190			max-frequency = <24000000>;
191		};
192
193		serial0: serial@12C00000 {
194			compatible = "exynos";
195			status = "disabled";
196			reg = <0x12C00000 0x100>;
197			interrupts = < 83 >;
198			interrupt-parent = <&GIC>;
199			clock-frequency = < 100000000 >;
200			current-speed = <115200>;
201		};
202
203		serial1: serial@12C10000 {
204			compatible = "exynos";
205			status = "disabled";
206			reg = <0x12C10000 0x100>;
207			interrupts = < 84 >;
208			interrupt-parent = <&GIC>;
209			clock-frequency = < 100000000 >;
210			current-speed = <115200>;
211		};
212
213		serial2: serial@12C20000 {
214			compatible = "exynos";
215			status = "disabled";
216			reg = <0x12C20000 0x100>;
217			interrupts = < 85 >;
218			interrupt-parent = <&GIC>;
219			clock-frequency = < 100000000 >;
220			current-speed = <115200>;
221		};
222
223		serial3: serial@12C30000 {
224			compatible = "exynos";
225			status = "disabled";
226			reg = <0x12C30000 0x100>;
227			interrupts = < 86 >;
228			interrupt-parent = <&GIC>;
229			clock-frequency = < 100000000 >;
230			current-speed = <115200>;
231		};
232
233		spi0: spi@12d20000 {
234			compatible = "samsung,exynos5-spi";
235			status = "disabled";
236			reg = <0x12d20000 0x100>;
237			interrupts = < 100 >;
238			interrupt-parent = <&GIC>;
239		};
240
241		spi1: spi@12d30000 {
242			compatible = "samsung,exynos5-spi";
243			status = "disabled";
244			reg = <0x12d30000 0x100>;
245			interrupts = < 101 >;
246			interrupt-parent = <&GIC>;
247		};
248
249		spi2: spi@12d40000 {
250			compatible = "samsung,exynos5-spi";
251			status = "disabled";
252			reg = <0x12d40000 0x100>;
253			interrupts = < 102 >;
254			interrupt-parent = <&GIC>;
255		};
256
257		i2c0: i2c@12C60000 {
258			compatible = "exynos,i2c";
259			status = "disabled";
260			reg = <0x12C60000 0x10000>;
261			interrupts = < 88 >;
262			interrupt-parent = <&GIC>;
263		};
264
265		i2c1: i2c@12C70000 {
266			compatible = "exynos,i2c";
267			status = "disabled";
268			reg = <0x12C70000 0x10000>;
269			interrupts = < 89 >;
270			interrupt-parent = <&GIC>;
271		};
272
273		i2c2: i2c@12C80000 {
274			compatible = "exynos,i2c";
275			status = "disabled";
276			reg = <0x12C80000 0x10000>;
277			interrupts = < 90 >;
278			interrupt-parent = <&GIC>;
279		};
280
281		i2c3: i2c@12C90000 {
282			compatible = "exynos,i2c";
283			status = "disabled";
284			reg = <0x12C90000 0x10000>;
285			interrupts = < 91 >;
286			interrupt-parent = <&GIC>;
287		};
288
289		i2c4: i2c@12CA0000 {
290			compatible = "exynos,i2c";
291			status = "disabled";
292			reg = <0x12CA0000 0x10000>;
293			interrupts = < 92 >;
294			interrupt-parent = <&GIC>;
295		};
296
297		i2c5: i2c@12CB0000 {
298			compatible = "exynos,i2c";
299			status = "disabled";
300			reg = <0x12CB0000 0x10000>;
301			interrupts = < 93 >;
302			interrupt-parent = <&GIC>;
303		};
304
305		i2c6: i2c@12CC0000 {
306			compatible = "exynos,i2c";
307			status = "disabled";
308			reg = <0x12CC0000 0x10000>;
309			interrupts = < 94 >;
310			interrupt-parent = <&GIC>;
311		};
312
313		i2c7: i2c@12CD0000 {
314			compatible = "exynos,i2c";
315			status = "disabled";
316			reg = <0x12CD0000 0x10000>;
317			interrupts = < 95 >;
318			interrupt-parent = <&GIC>;
319		};
320
321		fimd0: fimd@14400000 {
322			compatible = "exynos,fimd";
323			status = "disabled";
324			reg = < 0x14400000 0x10000 >, /* fimd */
325			      < 0x14420000 0x10000 >, /* disp */
326			      < 0x10050000 0x220 >; /* sysreg */
327			interrupt-parent = <&GIC>;
328		};
329
330		dp0: dp@145B0000 {
331			compatible = "exynos,dp";
332			status = "disabled";
333			reg = < 0x145B0000 0x10000 >;
334			interrupt-parent = <&GIC>;
335		};
336	};
337};
338