1/*
2 * SAMSUNG EXYNOS5440 SoC device tree source
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 *		http://www.samsung.com
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10*/
11
12#include <dt-bindings/clock/exynos5440.h>
13#include "skeleton.dtsi"
14
15/ {
16	compatible = "samsung,exynos5440", "samsung,exynos5";
17
18	interrupt-parent = <&gic>;
19
20	aliases {
21		serial0 = &serial_0;
22		serial1 = &serial_1;
23		spi0 = &spi_0;
24		tmuctrl0 = &tmuctrl_0;
25		tmuctrl1 = &tmuctrl_1;
26		tmuctrl2 = &tmuctrl_2;
27	};
28
29	clock: clock-controller@160000 {
30		compatible = "samsung,exynos5440-clock";
31		reg = <0x160000 0x1000>;
32		#clock-cells = <1>;
33	};
34
35	gic: interrupt-controller@2E0000 {
36		compatible = "arm,cortex-a15-gic";
37		#interrupt-cells = <3>;
38		interrupt-controller;
39		reg =	<0x2E1000 0x1000>,
40			<0x2E2000 0x1000>,
41			<0x2E4000 0x2000>,
42			<0x2E6000 0x2000>;
43		interrupts = <1 9 0xf04>;
44	};
45
46	cpus {
47		#address-cells = <1>;
48		#size-cells = <0>;
49
50		cpu@0 {
51			device_type = "cpu";
52			compatible = "arm,cortex-a15";
53			reg = <0>;
54		};
55		cpu@1 {
56			device_type = "cpu";
57			compatible = "arm,cortex-a15";
58			reg = <1>;
59		};
60		cpu@2 {
61			device_type = "cpu";
62			compatible = "arm,cortex-a15";
63			reg = <2>;
64		};
65		cpu@3 {
66			device_type = "cpu";
67			compatible = "arm,cortex-a15";
68			reg = <3>;
69		};
70	};
71
72	arm-pmu {
73		compatible = "arm,cortex-a15-pmu", "arm,cortex-a9-pmu";
74		interrupts = <0 52 4>,
75			     <0 53 4>,
76			     <0 54 4>,
77			     <0 55 4>;
78	};
79
80	timer {
81		compatible = "arm,cortex-a15-timer",
82			     "arm,armv7-timer";
83		interrupts = <1 13 0xf08>,
84			     <1 14 0xf08>,
85			     <1 11 0xf08>,
86			     <1 10 0xf08>;
87		clock-frequency = <50000000>;
88	};
89
90	cpufreq@160000 {
91		compatible = "samsung,exynos5440-cpufreq";
92		reg = <0x160000 0x1000>;
93		interrupts = <0 57 0>;
94		operating-points = <
95				/* KHz	  uV */
96				1500000 1100000
97				1400000 1075000
98				1300000 1050000
99				1200000 1025000
100				1100000 1000000
101				1000000 975000
102				900000  950000
103				800000  925000
104		>;
105	};
106
107	serial_0: serial@B0000 {
108		compatible = "samsung,exynos4210-uart";
109		reg = <0xB0000 0x1000>;
110		interrupts = <0 2 0>;
111		clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
112		clock-names = "uart", "clk_uart_baud0";
113	};
114
115	serial_1: serial@C0000 {
116		compatible = "samsung,exynos4210-uart";
117		reg = <0xC0000 0x1000>;
118		interrupts = <0 3 0>;
119		clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
120		clock-names = "uart", "clk_uart_baud0";
121	};
122
123	spi_0: spi@D0000 {
124		compatible = "samsung,exynos5440-spi";
125		reg = <0xD0000 0x100>;
126		interrupts = <0 4 0>;
127		#address-cells = <1>;
128		#size-cells = <0>;
129		samsung,spi-src-clk = <0>;
130		num-cs = <1>;
131		clocks = <&clock CLK_B_125>, <&clock CLK_SPI_BAUD>;
132		clock-names = "spi", "spi_busclk0";
133	};
134
135	pin_ctrl: pinctrl {
136		compatible = "samsung,exynos5440-pinctrl";
137		reg = <0xE0000 0x1000>;
138		interrupts = <0 37 0>, <0 38 0>, <0 39 0>, <0 40 0>,
139			     <0 41 0>, <0 42 0>, <0 43 0>, <0 44 0>;
140		interrupt-controller;
141		#interrupt-cells = <2>;
142		#gpio-cells = <2>;
143
144		fan: fan {
145			samsung,exynos5440-pin-function = <1>;
146		};
147
148		hdd_led0: hdd_led0 {
149			samsung,exynos5440-pin-function = <2>;
150		};
151
152		hdd_led1: hdd_led1 {
153			samsung,exynos5440-pin-function = <3>;
154		};
155
156		uart1: uart1 {
157			samsung,exynos5440-pin-function = <4>;
158		};
159	};
160
161	i2c@F0000 {
162		compatible = "samsung,exynos5440-i2c";
163		reg = <0xF0000 0x1000>;
164		interrupts = <0 5 0>;
165		#address-cells = <1>;
166		#size-cells = <0>;
167		clocks = <&clock CLK_B_125>;
168		clock-names = "i2c";
169	};
170
171	i2c@100000 {
172		compatible = "samsung,exynos5440-i2c";
173		reg = <0x100000 0x1000>;
174		interrupts = <0 6 0>;
175		#address-cells = <1>;
176		#size-cells = <0>;
177		clocks = <&clock CLK_B_125>;
178		clock-names = "i2c";
179	};
180
181	watchdog@110000 {
182		compatible = "samsung,s3c2410-wdt";
183		reg = <0x110000 0x1000>;
184		interrupts = <0 1 0>;
185		clocks = <&clock CLK_B_125>;
186		clock-names = "watchdog";
187	};
188
189	gmac: ethernet@00230000 {
190		compatible = "snps,dwmac-3.70a";
191		reg = <0x00230000 0x8000>;
192		interrupt-parent = <&gic>;
193		interrupts = <0 31 4>;
194		interrupt-names = "macirq";
195		phy-mode = "sgmii";
196		clocks = <&clock CLK_GMAC0>;
197		clock-names = "stmmaceth";
198	};
199
200	amba {
201		#address-cells = <1>;
202		#size-cells = <1>;
203		compatible = "arm,amba-bus";
204		interrupt-parent = <&gic>;
205		ranges;
206	};
207
208	rtc {
209		compatible = "samsung,s3c6410-rtc";
210		reg = <0x130000 0x1000>;
211		interrupts = <0 17 0>, <0 16 0>;
212		clocks = <&clock CLK_B_125>;
213		clock-names = "rtc";
214	};
215
216	tmuctrl_0: tmuctrl@160118 {
217		compatible = "samsung,exynos5440-tmu";
218		reg = <0x160118 0x230>, <0x160368 0x10>;
219		interrupts = <0 58 0>;
220		clocks = <&clock CLK_B_125>;
221		clock-names = "tmu_apbif";
222		#include "exynos5440-tmu-sensor-conf.dtsi"
223	};
224
225	tmuctrl_1: tmuctrl@16011C {
226		compatible = "samsung,exynos5440-tmu";
227		reg = <0x16011C 0x230>, <0x160368 0x10>;
228		interrupts = <0 58 0>;
229		clocks = <&clock CLK_B_125>;
230		clock-names = "tmu_apbif";
231		#include "exynos5440-tmu-sensor-conf.dtsi"
232	};
233
234	tmuctrl_2: tmuctrl@160120 {
235		compatible = "samsung,exynos5440-tmu";
236		reg = <0x160120 0x230>, <0x160368 0x10>;
237		interrupts = <0 58 0>;
238		clocks = <&clock CLK_B_125>;
239		clock-names = "tmu_apbif";
240		#include "exynos5440-tmu-sensor-conf.dtsi"
241	};
242
243	thermal-zones {
244		cpu0_thermal: cpu0-thermal {
245			thermal-sensors = <&tmuctrl_0>;
246			#include "exynos5440-trip-points.dtsi"
247		};
248		cpu1_thermal: cpu1-thermal {
249		       thermal-sensors = <&tmuctrl_1>;
250		       #include "exynos5440-trip-points.dtsi"
251		};
252		cpu2_thermal: cpu2-thermal {
253		       thermal-sensors = <&tmuctrl_2>;
254		       #include "exynos5440-trip-points.dtsi"
255		};
256	};
257
258	sata@210000 {
259		compatible = "snps,exynos5440-ahci";
260		reg = <0x210000 0x10000>;
261		interrupts = <0 30 0>;
262		clocks = <&clock CLK_SATA>;
263		clock-names = "sata";
264	};
265
266	ohci@220000 {
267		compatible = "samsung,exynos5440-ohci";
268		reg = <0x220000 0x1000>;
269		interrupts = <0 29 0>;
270		clocks = <&clock CLK_USB>;
271		clock-names = "usbhost";
272	};
273
274	ehci@221000 {
275		compatible = "samsung,exynos5440-ehci";
276		reg = <0x221000 0x1000>;
277		interrupts = <0 29 0>;
278		clocks = <&clock CLK_USB>;
279		clock-names = "usbhost";
280	};
281
282	pcie_0: pcie@290000 {
283		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
284		reg = <0x290000 0x1000
285			0x270000 0x1000
286			0x271000 0x40>;
287		interrupts = <0 20 0>, <0 21 0>, <0 22 0>;
288		clocks = <&clock CLK_PR0_250_O>, <&clock CLK_PB0_250_O>;
289		clock-names = "pcie", "pcie_bus";
290		#address-cells = <3>;
291		#size-cells = <2>;
292		device_type = "pci";
293		ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000   /* configuration space */
294			  0x81000000 0 0	  0x40001000 0 0x00010000   /* downstream I/O */
295			  0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */
296		#interrupt-cells = <1>;
297		interrupt-map-mask = <0 0 0 0>;
298		interrupt-map = <0x0 0 &gic 53>;
299		num-lanes = <4>;
300		status = "disabled";
301	};
302
303	pcie_1: pcie@2a0000 {
304		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
305		reg = <0x2a0000 0x1000
306			0x272000 0x1000
307			0x271040 0x40>;
308		interrupts = <0 23 0>, <0 24 0>, <0 25 0>;
309		clocks = <&clock CLK_PR1_250_O>, <&clock CLK_PB0_250_O>;
310		clock-names = "pcie", "pcie_bus";
311		#address-cells = <3>;
312		#size-cells = <2>;
313		device_type = "pci";
314		ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000   /* configuration space */
315			  0x81000000 0 0	  0x60001000 0 0x00010000   /* downstream I/O */
316			  0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */
317		#interrupt-cells = <1>;
318		interrupt-map-mask = <0 0 0 0>;
319		interrupt-map = <0x0 0 &gic 56>;
320		num-lanes = <4>;
321		status = "disabled";
322	};
323};
324