exynos5440.dtsi 8.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/*
 * SAMSUNG EXYNOS5440 SoC device tree source
 *
 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
 *		http://www.samsung.com
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
*/

12
#include <dt-bindings/clock/exynos5440.h>
13
#include <dt-bindings/interrupt-controller/arm-gic.h>
14
#include <dt-bindings/interrupt-controller/irq.h>
15 16

/ {
17
	compatible = "samsung,exynos5440", "samsung,exynos5";
18 19

	interrupt-parent = <&gic>;
20 21
	#address-cells = <1>;
	#size-cells = <1>;
22

23
	aliases {
24 25
		serial0 = &serial_0;
		serial1 = &serial_1;
26
		spi0 = &spi_0;
27 28 29
		tmuctrl0 = &tmuctrl_0;
		tmuctrl1 = &tmuctrl_1;
		tmuctrl2 = &tmuctrl_2;
30 31
	};

32
	clock: clock-controller@160000 {
33 34 35 36 37
		compatible = "samsung,exynos5440-clock";
		reg = <0x160000 0x1000>;
		#clock-cells = <1>;
	};

38
	gic: interrupt-controller@2E0000 {
39 40 41
		compatible = "arm,cortex-a15-gic";
		#interrupt-cells = <3>;
		interrupt-controller;
42
		reg =	<0x2E1000 0x1000>,
43
			<0x2E2000 0x2000>,
44 45
			<0x2E4000 0x2000>,
			<0x2E6000 0x2000>;
46 47
		interrupts = <GIC_PPI 9
				(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
48 49 50
	};

	cpus {
51 52 53
		#address-cells = <1>;
		#size-cells = <0>;

54
		cpu@0 {
55
			device_type = "cpu";
56
			compatible = "arm,cortex-a15";
57
			reg = <0>;
58 59
		};
		cpu@1 {
60
			device_type = "cpu";
61
			compatible = "arm,cortex-a15";
62
			reg = <1>;
63 64
		};
		cpu@2 {
65
			device_type = "cpu";
66
			compatible = "arm,cortex-a15";
67
			reg = <2>;
68 69
		};
		cpu@3 {
70
			device_type = "cpu";
71
			compatible = "arm,cortex-a15";
72
			reg = <3>;
73 74 75
		};
	};

76 77
	arm-pmu {
		compatible = "arm,cortex-a15-pmu", "arm,cortex-a9-pmu";
78 79 80 81
		interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
82 83
	};

84 85 86
	timer {
		compatible = "arm,cortex-a15-timer",
			     "arm,armv7-timer";
87 88 89 90
		interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
			     <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
91 92 93
		clock-frequency = <50000000>;
	};

94 95 96
	cpufreq@160000 {
		compatible = "samsung,exynos5440-cpufreq";
		reg = <0x160000 0x1000>;
97
		interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
98 99
		operating-points = <
				/* KHz	  uV */
100 101 102
				1500000 1100000
				1400000 1075000
				1300000 1050000
103
				1200000 1025000
104
				1100000 1000000
105
				1000000 975000
106
				900000  950000
107 108 109 110
				800000  925000
		>;
	};

111
	serial_0: serial@B0000 {
112 113
		compatible = "samsung,exynos4210-uart";
		reg = <0xB0000 0x1000>;
114
		interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
115
		clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
116
		clock-names = "uart", "clk_uart_baud0";
117 118
	};

119
	serial_1: serial@C0000 {
120 121
		compatible = "samsung,exynos4210-uart";
		reg = <0xC0000 0x1000>;
122
		interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
123
		clocks = <&clock CLK_B_125>, <&clock CLK_B_125>;
124
		clock-names = "uart", "clk_uart_baud0";
125 126
	};

127 128 129
	spi_0: spi@D0000 {
		compatible = "samsung,exynos5440-spi";
		reg = <0xD0000 0x100>;
130
		interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
131 132
		#address-cells = <1>;
		#size-cells = <0>;
133 134
		samsung,spi-src-clk = <0>;
		num-cs = <1>;
135
		clocks = <&clock CLK_B_125>, <&clock CLK_SPI_BAUD>;
136
		clock-names = "spi", "spi_busclk0";
137 138
	};

139
	pin_ctrl: pinctrl@E0000 {
140
		compatible = "samsung,exynos5440-pinctrl";
141
		reg = <0xE0000 0x1000>;
142 143 144 145 146 147 148 149
		interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
150 151
		interrupt-controller;
		#interrupt-cells = <2>;
152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
		#gpio-cells = <2>;

		fan: fan {
			samsung,exynos5440-pin-function = <1>;
		};

		hdd_led0: hdd_led0 {
			samsung,exynos5440-pin-function = <2>;
		};

		hdd_led1: hdd_led1 {
			samsung,exynos5440-pin-function = <3>;
		};

		uart1: uart1 {
			samsung,exynos5440-pin-function = <4>;
		};
169 170 171
	};

	i2c@F0000 {
172
		compatible = "samsung,exynos5440-i2c";
173
		reg = <0xF0000 0x1000>;
174
		interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
175 176
		#address-cells = <1>;
		#size-cells = <0>;
177
		clocks = <&clock CLK_B_125>;
178
		clock-names = "i2c";
179 180 181
	};

	i2c@100000 {
182
		compatible = "samsung,exynos5440-i2c";
183
		reg = <0x100000 0x1000>;
184
		interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
185 186
		#address-cells = <1>;
		#size-cells = <0>;
187
		clocks = <&clock CLK_B_125>;
188
		clock-names = "i2c";
189 190
	};

191
	watchdog@110000 {
192 193
		compatible = "samsung,s3c2410-wdt";
		reg = <0x110000 0x1000>;
194
		interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
195
		clocks = <&clock CLK_B_125>;
196
		clock-names = "watchdog";
197 198
	};

199
	gmac: ethernet@00230000 {
200
		compatible = "snps,dwmac-3.70a", "snps,dwmac";
201 202
		reg = <0x00230000 0x8000>;
		interrupt-parent = <&gic>;
203
		interrupts = <GIC_SPI 31 4>;
204 205
		interrupt-names = "macirq";
		phy-mode = "sgmii";
206
		clocks = <&clock CLK_GMAC0>;
207 208 209
		clock-names = "stmmaceth";
	};

210 211 212
	amba {
		#address-cells = <1>;
		#size-cells = <1>;
213
		compatible = "simple-bus";
214 215 216 217
		interrupt-parent = <&gic>;
		ranges;
	};

218
	rtc@130000 {
219 220
		compatible = "samsung,s3c6410-rtc";
		reg = <0x130000 0x1000>;
221 222
		interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
223
		clocks = <&clock CLK_B_125>;
224
		clock-names = "rtc";
225
	};
226

227 228 229
	tmuctrl_0: tmuctrl@160118 {
		compatible = "samsung,exynos5440-tmu";
		reg = <0x160118 0x230>, <0x160368 0x10>;
230
		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
231
		clocks = <&clock CLK_B_125>;
232
		clock-names = "tmu_apbif";
233
		#include "exynos5440-tmu-sensor-conf.dtsi"
234 235 236 237 238
	};

	tmuctrl_1: tmuctrl@16011C {
		compatible = "samsung,exynos5440-tmu";
		reg = <0x16011C 0x230>, <0x160368 0x10>;
239
		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
240
		clocks = <&clock CLK_B_125>;
241
		clock-names = "tmu_apbif";
242
		#include "exynos5440-tmu-sensor-conf.dtsi"
243 244 245 246 247
	};

	tmuctrl_2: tmuctrl@160120 {
		compatible = "samsung,exynos5440-tmu";
		reg = <0x160120 0x230>, <0x160368 0x10>;
248
		interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
249
		clocks = <&clock CLK_B_125>;
250
		clock-names = "tmu_apbif";
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266
		#include "exynos5440-tmu-sensor-conf.dtsi"
	};

	thermal-zones {
		cpu0_thermal: cpu0-thermal {
			thermal-sensors = <&tmuctrl_0>;
			#include "exynos5440-trip-points.dtsi"
		};
		cpu1_thermal: cpu1-thermal {
		       thermal-sensors = <&tmuctrl_1>;
		       #include "exynos5440-trip-points.dtsi"
		};
		cpu2_thermal: cpu2-thermal {
		       thermal-sensors = <&tmuctrl_2>;
		       #include "exynos5440-trip-points.dtsi"
		};
267 268
	};

269 270 271
	sata@210000 {
		compatible = "snps,exynos5440-ahci";
		reg = <0x210000 0x10000>;
272
		interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
273
		clocks = <&clock CLK_SATA>;
274 275 276
		clock-names = "sata";
	};

277 278 279
	ohci@220000 {
		compatible = "samsung,exynos5440-ohci";
		reg = <0x220000 0x1000>;
280
		interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
281
		clocks = <&clock CLK_USB>;
282 283 284 285 286 287
		clock-names = "usbhost";
	};

	ehci@221000 {
		compatible = "samsung,exynos5440-ehci";
		reg = <0x221000 0x1000>;
288
		interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
289
		clocks = <&clock CLK_USB>;
290
		clock-names = "usbhost";
291
	};
292

293 294 295 296 297 298 299 300 301 302 303 304
	pcie_phy0: pcie-phy@270000 {
		#phy-cells = <0>;
		compatible = "samsung,exynos5440-pcie-phy";
		reg = <0x270000 0x1000>, <0x271000 0x40>;
	};

	pcie_phy1: pcie-phy@272000 {
		#phy-cells = <0>;
		compatible = "samsung,exynos5440-pcie-phy";
		reg = <0x272000 0x1000>, <0x271040 0x40>;
	};

305
	pcie_0: pcie@290000 {
306
		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
307 308
		reg = <0x290000 0x1000>, <0x40000000 0x1000>;
		reg-names = "elbi", "config";
309 310 311
		interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
312
		clocks = <&clock CLK_PR0_250_O>, <&clock CLK_PB0_250_O>;
313 314 315 316
		clock-names = "pcie", "pcie_bus";
		#address-cells = <3>;
		#size-cells = <2>;
		device_type = "pci";
317 318
		phys = <&pcie_phy0>;
		ranges = <0x81000000 0 0	  0x40001000 0 0x00010000   /* downstream I/O */
319 320 321 322
			  0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */
		#interrupt-cells = <1>;
		interrupt-map-mask = <0 0 0 0>;
		interrupt-map = <0x0 0 &gic 53>;
323
		num-lanes = <4>;
324
		status = "disabled";
325 326
	};

327
	pcie_1: pcie@2a0000 {
328
		compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
329 330
		reg = <0x2a0000 0x1000>, <0x60000000 0x1000>;
		reg-names = "elbi", "config";
331 332 333
		interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
334
		clocks = <&clock CLK_PR1_250_O>, <&clock CLK_PB0_250_O>;
335 336 337 338
		clock-names = "pcie", "pcie_bus";
		#address-cells = <3>;
		#size-cells = <2>;
		device_type = "pci";
339 340
		phys = <&pcie_phy1>;
		ranges = <0x81000000 0 0	  0x60001000 0 0x00010000   /* downstream I/O */
341 342 343 344
			  0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */
		#interrupt-cells = <1>;
		interrupt-map-mask = <0 0 0 0>;
		interrupt-map = <0x0 0 &gic 56>;
345
		num-lanes = <4>;
346
		status = "disabled";
347
	};
348
};