sun5i-a13.dtsi 12.8 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
/*
 * Copyright 2012 Maxime Ripard
 *
 * Maxime Ripard <maxime.ripard@free-electrons.com>
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

14
#include "skeleton.dtsi"
15

16 17
#include <dt-bindings/dma/sun4i-a10.h>

18
/ {
19 20
	interrupt-parent = <&intc>;

21 22 23 24 25
	aliases {
		serial0 = &uart1;
		serial1 = &uart3;
	};

26
	cpus {
27 28
		#address-cells = <1>;
		#size-cells = <0>;
29
		cpu@0 {
30
			device_type = "cpu";
31
			compatible = "arm,cortex-a8";
32
			reg = <0x0>;
33 34 35
		};
	};

36 37 38
	memory {
		reg = <0x40000000 0x20000000>;
	};
39

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		/*
		 * This is a dummy clock, to be used as placeholder on
		 * other mux clocks when a specific parent clock is not
		 * yet implemented. It should be dropped when the driver
		 * is complete.
		 */
		dummy: dummy {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <0>;
		};

57
		osc24M: clk@01c20050 {
58
			#clock-cells = <0>;
59
			compatible = "allwinner,sun4i-a10-osc-clk";
60
			reg = <0x01c20050 0x4>;
61
			clock-frequency = <24000000>;
62
			clock-output-names = "osc24M";
63 64
		};

65
		osc32k: clk@0 {
66 67 68
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <32768>;
69
			clock-output-names = "osc32k";
70 71
		};

72
		pll1: clk@01c20000 {
73
			#clock-cells = <0>;
74
			compatible = "allwinner,sun4i-a10-pll1-clk";
75 76
			reg = <0x01c20000 0x4>;
			clocks = <&osc24M>;
77
			clock-output-names = "pll1";
78 79
		};

80
		pll4: clk@01c20018 {
E
Emilio López 已提交
81
			#clock-cells = <0>;
82
			compatible = "allwinner,sun4i-a10-pll1-clk";
E
Emilio López 已提交
83 84
			reg = <0x01c20018 0x4>;
			clocks = <&osc24M>;
85
			clock-output-names = "pll4";
E
Emilio López 已提交
86 87
		};

88
		pll5: clk@01c20020 {
89
			#clock-cells = <1>;
90
			compatible = "allwinner,sun4i-a10-pll5-clk";
91 92 93 94 95
			reg = <0x01c20020 0x4>;
			clocks = <&osc24M>;
			clock-output-names = "pll5_ddr", "pll5_other";
		};

96
		pll6: clk@01c20028 {
97
			#clock-cells = <1>;
98
			compatible = "allwinner,sun4i-a10-pll6-clk";
99 100 101 102 103
			reg = <0x01c20028 0x4>;
			clocks = <&osc24M>;
			clock-output-names = "pll6_sata", "pll6_other", "pll6";
		};

104 105 106
		/* dummy is 200M */
		cpu: cpu@01c20054 {
			#clock-cells = <0>;
107
			compatible = "allwinner,sun4i-a10-cpu-clk";
108 109
			reg = <0x01c20054 0x4>;
			clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
110
			clock-output-names = "cpu";
111 112 113 114
		};

		axi: axi@01c20054 {
			#clock-cells = <0>;
115
			compatible = "allwinner,sun4i-a10-axi-clk";
116 117
			reg = <0x01c20054 0x4>;
			clocks = <&cpu>;
118
			clock-output-names = "axi";
119 120
		};

121
		axi_gates: clk@01c2005c {
122
			#clock-cells = <1>;
123
			compatible = "allwinner,sun4i-a10-axi-gates-clk";
124 125 126 127 128 129 130
			reg = <0x01c2005c 0x4>;
			clocks = <&axi>;
			clock-output-names = "axi_dram";
		};

		ahb: ahb@01c20054 {
			#clock-cells = <0>;
131
			compatible = "allwinner,sun4i-a10-ahb-clk";
132 133
			reg = <0x01c20054 0x4>;
			clocks = <&axi>;
134
			clock-output-names = "ahb";
135 136
		};

137
		ahb_gates: clk@01c20060 {
138
			#clock-cells = <1>;
139
			compatible = "allwinner,sun5i-a13-ahb-gates-clk";
140 141
			reg = <0x01c20060 0x8>;
			clocks = <&ahb>;
142 143 144 145 146 147
			clock-output-names = "ahb_usbotg", "ahb_ehci", "ahb_ohci",
				"ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
				"ahb_mmc1", "ahb_mmc2", "ahb_nand", "ahb_sdram",
				"ahb_spi0", "ahb_spi1", "ahb_spi2", "ahb_stimer",
				"ahb_ve", "ahb_lcd", "ahb_csi", "ahb_de_be",
				"ahb_de_fe", "ahb_iep", "ahb_mali400";
148 149 150 151
		};

		apb0: apb0@01c20054 {
			#clock-cells = <0>;
152
			compatible = "allwinner,sun4i-a10-apb0-clk";
153 154
			reg = <0x01c20054 0x4>;
			clocks = <&ahb>;
155
			clock-output-names = "apb0";
156 157
		};

158
		apb0_gates: clk@01c20068 {
159
			#clock-cells = <1>;
160
			compatible = "allwinner,sun5i-a13-apb0-gates-clk";
161 162
			reg = <0x01c20068 0x4>;
			clocks = <&apb0>;
163
			clock-output-names = "apb0_codec", "apb0_pio", "apb0_ir";
164 165
		};

E
Emilio López 已提交
166
		apb1: clk@01c20058 {
167
			#clock-cells = <0>;
168
			compatible = "allwinner,sun4i-a10-apb1-clk";
169
			reg = <0x01c20058 0x4>;
E
Emilio López 已提交
170
			clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
171
			clock-output-names = "apb1";
172 173
		};

174
		apb1_gates: clk@01c2006c {
175
			#clock-cells = <1>;
176
			compatible = "allwinner,sun5i-a13-apb1-gates-clk";
177 178 179
			reg = <0x01c2006c 0x4>;
			clocks = <&apb1>;
			clock-output-names = "apb1_i2c0", "apb1_i2c1",
180
				"apb1_i2c2", "apb1_uart1", "apb1_uart3";
181
		};
E
Emilio López 已提交
182 183 184

		nand_clk: clk@01c20080 {
			#clock-cells = <0>;
185
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
186 187 188 189 190 191 192
			reg = <0x01c20080 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "nand";
		};

		ms_clk: clk@01c20084 {
			#clock-cells = <0>;
193
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
194 195 196 197 198 199 200
			reg = <0x01c20084 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ms";
		};

		mmc0_clk: clk@01c20088 {
			#clock-cells = <0>;
201
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
202 203 204 205 206 207 208
			reg = <0x01c20088 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "mmc0";
		};

		mmc1_clk: clk@01c2008c {
			#clock-cells = <0>;
209
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
210 211 212 213 214 215 216
			reg = <0x01c2008c 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "mmc1";
		};

		mmc2_clk: clk@01c20090 {
			#clock-cells = <0>;
217
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
218 219 220 221 222 223 224
			reg = <0x01c20090 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "mmc2";
		};

		ts_clk: clk@01c20098 {
			#clock-cells = <0>;
225
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
226 227 228 229 230 231 232
			reg = <0x01c20098 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ts";
		};

		ss_clk: clk@01c2009c {
			#clock-cells = <0>;
233
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
234 235 236 237 238 239 240
			reg = <0x01c2009c 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ss";
		};

		spi0_clk: clk@01c200a0 {
			#clock-cells = <0>;
241
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
242 243 244 245 246 247 248
			reg = <0x01c200a0 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi0";
		};

		spi1_clk: clk@01c200a4 {
			#clock-cells = <0>;
249
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
250 251 252 253 254 255 256
			reg = <0x01c200a4 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi1";
		};

		spi2_clk: clk@01c200a8 {
			#clock-cells = <0>;
257
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
258 259 260 261 262 263 264
			reg = <0x01c200a8 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi2";
		};

		ir0_clk: clk@01c200b0 {
			#clock-cells = <0>;
265
			compatible = "allwinner,sun4i-a10-mod0-clk";
E
Emilio López 已提交
266 267 268 269
			reg = <0x01c200b0 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ir0";
		};
270

271 272 273 274 275 276 277 278 279
		usb_clk: clk@01c200cc {
			#clock-cells = <1>;
		        #reset-cells = <1>;
			compatible = "allwinner,sun5i-a13-usb-clk";
			reg = <0x01c200cc 0x4>;
			clocks = <&pll6 1>;
			clock-output-names = "usb_ohci0", "usb_phy";
		};

280 281
		mbus_clk: clk@01c2015c {
			#clock-cells = <0>;
282
			compatible = "allwinner,sun5i-a13-mbus-clk";
283 284 285 286
			reg = <0x01c2015c 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "mbus";
		};
287 288
	};

289
	soc@01c00000 {
290 291 292 293 294
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

295 296 297 298 299 300 301 302
		dma: dma-controller@01c02000 {
			compatible = "allwinner,sun4i-a10-dma";
			reg = <0x01c02000 0x1000>;
			interrupts = <27>;
			clocks = <&ahb_gates 6>;
			#dma-cells = <2>;
		};

303 304 305 306 307 308
		spi0: spi@01c05000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c05000 0x1000>;
			interrupts = <10>;
			clocks = <&ahb_gates 20>, <&spi0_clk>;
			clock-names = "ahb", "mod";
309 310
			dmas = <&dma SUN4I_DMA_DEDICATED 27>,
			       <&dma SUN4I_DMA_DEDICATED 26>;
311
			dma-names = "rx", "tx";
312 313 314 315 316 317 318 319 320 321 322
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		spi1: spi@01c06000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c06000 0x1000>;
			interrupts = <11>;
			clocks = <&ahb_gates 21>, <&spi1_clk>;
			clock-names = "ahb", "mod";
323 324
			dmas = <&dma SUN4I_DMA_DEDICATED 9>,
			       <&dma SUN4I_DMA_DEDICATED 8>;
325
			dma-names = "rx", "tx";
326 327 328 329 330
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348
		mmc0: mmc@01c0f000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c0f000 0x1000>;
			clocks = <&ahb_gates 8>, <&mmc0_clk>;
			clock-names = "ahb", "mmc";
			interrupts = <32>;
			status = "disabled";
		};

		mmc2: mmc@01c11000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c11000 0x1000>;
			clocks = <&ahb_gates 10>, <&mmc2_clk>;
			clock-names = "ahb", "mmc";
			interrupts = <34>;
			status = "disabled";
		};

349 350 351 352 353 354 355
		usbphy: phy@01c13400 {
			#phy-cells = <1>;
			compatible = "allwinner,sun5i-a13-usb-phy";
			reg = <0x01c13400 0x10 0x01c14800 0x4>;
			reg-names = "phy_ctrl", "pmu1";
			clocks = <&usb_clk 8>;
			clock-names = "usb_phy";
356 357
			resets = <&usb_clk 0>, <&usb_clk 1>;
			reset-names = "usb0_reset", "usb1_reset";
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380
			status = "disabled";
		};

		ehci0: usb@01c14000 {
			compatible = "allwinner,sun5i-a13-ehci", "generic-ehci";
			reg = <0x01c14000 0x100>;
			interrupts = <39>;
			clocks = <&ahb_gates 1>;
			phys = <&usbphy 1>;
			phy-names = "usb";
			status = "disabled";
		};

		ohci0: usb@01c14400 {
			compatible = "allwinner,sun5i-a13-ohci", "generic-ohci";
			reg = <0x01c14400 0x100>;
			interrupts = <40>;
			clocks = <&usb_clk 6>, <&ahb_gates 2>;
			phys = <&usbphy 1>;
			phy-names = "usb";
			status = "disabled";
		};

381 382 383 384 385 386
		spi2: spi@01c17000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c17000 0x1000>;
			interrupts = <12>;
			clocks = <&ahb_gates 22>, <&spi2_clk>;
			clock-names = "ahb", "mod";
387 388
			dmas = <&dma SUN4I_DMA_DEDICATED 29>,
			       <&dma SUN4I_DMA_DEDICATED 28>;
389
			dma-names = "rx", "tx";
390 391 392 393 394
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

395
		intc: interrupt-controller@01c20400 {
396
			compatible = "allwinner,sun4i-a10-ic";
397 398 399 400 401
			reg = <0x01c20400 0x400>;
			interrupt-controller;
			#interrupt-cells = <1>;
		};

402
		pio: pinctrl@01c20800 {
403 404
			compatible = "allwinner,sun5i-a13-pinctrl";
			reg = <0x01c20800 0x400>;
405
			interrupts = <28>;
406
			clocks = <&apb0_gates 5>;
407
			gpio-controller;
408
			interrupt-controller;
409
			#interrupt-cells = <2>;
410
			#size-cells = <0>;
411
			#gpio-cells = <3>;
412 413 414 415 416 417 418 419 420 421 422 423 424 425

			uart1_pins_a: uart1@0 {
				allwinner,pins = "PE10", "PE11";
				allwinner,function = "uart1";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			uart1_pins_b: uart1@1 {
				allwinner,pins = "PG3", "PG4";
				allwinner,function = "uart1";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};
426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446

			i2c0_pins_a: i2c0@0 {
				allwinner,pins = "PB0", "PB1";
				allwinner,function = "i2c0";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			i2c1_pins_a: i2c1@0 {
				allwinner,pins = "PB15", "PB16";
				allwinner,function = "i2c1";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};

			i2c2_pins_a: i2c2@0 {
				allwinner,pins = "PB17", "PB18";
				allwinner,function = "i2c2";
				allwinner,drive = <0>;
				allwinner,pull = <0>;
			};
447 448 449 450 451 452 453

			mmc0_pins_a: mmc0@0 {
				allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
				allwinner,function = "mmc0";
				allwinner,drive = <2>;
				allwinner,pull = <0>;
			};
454
		};
455 456

		timer@01c20c00 {
457
			compatible = "allwinner,sun4i-a10-timer";
458 459 460 461 462 463
			reg = <0x01c20c00 0x90>;
			interrupts = <22>;
			clocks = <&osc24M>;
		};

		wdt: watchdog@01c20c90 {
464
			compatible = "allwinner,sun4i-a10-wdt";
465 466 467
			reg = <0x01c20c90 0x10>;
		};

H
Hans de Goede 已提交
468 469 470 471 472 473 474
		lradc: lradc@01c22800 {
			compatible = "allwinner,sun4i-a10-lradc-keys";
			reg = <0x01c22800 0x100>;
			interrupts = <31>;
			status = "disabled";
		};

475
		sid: eeprom@01c23800 {
476
			compatible = "allwinner,sun4i-a10-sid";
477 478 479
			reg = <0x01c23800 0x10>;
		};

480
		rtp: rtp@01c25000 {
481
			compatible = "allwinner,sun4i-a10-ts";
482 483 484 485
			reg = <0x01c25000 0x100>;
			interrupts = <29>;
		};

486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504
		uart1: serial@01c28400 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28400 0x400>;
			interrupts = <2>;
			reg-shift = <2>;
			reg-io-width = <4>;
			clocks = <&apb1_gates 17>;
			status = "disabled";
		};

		uart3: serial@01c28c00 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28c00 0x400>;
			interrupts = <4>;
			reg-shift = <2>;
			reg-io-width = <4>;
			clocks = <&apb1_gates 19>;
			status = "disabled";
		};
505 506

		i2c0: i2c@01c2ac00 {
507
			compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
508 509 510 511
			reg = <0x01c2ac00 0x400>;
			interrupts = <7>;
			clocks = <&apb1_gates 0>;
			status = "disabled";
512 513
			#address-cells = <1>;
			#size-cells = <0>;
514 515 516
		};

		i2c1: i2c@01c2b000 {
517
			compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
518 519 520 521
			reg = <0x01c2b000 0x400>;
			interrupts = <8>;
			clocks = <&apb1_gates 1>;
			status = "disabled";
522 523
			#address-cells = <1>;
			#size-cells = <0>;
524 525 526
		};

		i2c2: i2c@01c2b400 {
527
			compatible = "allwinner,sun5i-a13-i2c", "allwinner,sun4i-a10-i2c";
528 529 530 531
			reg = <0x01c2b400 0x400>;
			interrupts = <9>;
			clocks = <&apb1_gates 2>;
			status = "disabled";
532 533
			#address-cells = <1>;
			#size-cells = <0>;
534
		};
535 536 537 538 539 540 541

		timer@01c60000 {
			compatible = "allwinner,sun5i-a13-hstimer";
			reg = <0x01c60000 0x1000>;
			interrupts = <82>, <83>;
			clocks = <&ahb_gates 28>;
		};
542
	};
543
};