sun7i-a20.dtsi 38 KB
Newer Older
1
2
3
4
5
/*
 * Copyright 2013 Maxime Ripard
 *
 * Maxime Ripard <maxime.ripard@free-electrons.com>
 *
6
7
8
9
 * This file is dual-licensed: you can use it either under the terms
 * of the GPL or the X11 license, at your option. Note that this dual
 * licensing only applies to this file, and not this project as a
 * whole.
10
 *
Maxime Ripard's avatar
Maxime Ripard committed
11
 *  a) This file is free software; you can redistribute it and/or
12
13
14
15
 *     modify it under the terms of the GNU General Public License as
 *     published by the Free Software Foundation; either version 2 of the
 *     License, or (at your option) any later version.
 *
Maxime Ripard's avatar
Maxime Ripard committed
16
 *     This file is distributed in the hope that it will be useful,
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *
 * Or, alternatively,
 *
 *  b) Permission is hereby granted, free of charge, to any person
 *     obtaining a copy of this software and associated documentation
 *     files (the "Software"), to deal in the Software without
 *     restriction, including without limitation the rights to use,
 *     copy, modify, merge, publish, distribute, sublicense, and/or
 *     sell copies of the Software, and to permit persons to whom the
 *     Software is furnished to do so, subject to the following
 *     conditions:
 *
 *     The above copyright notice and this permission notice shall be
 *     included in all copies or substantial portions of the Software.
 *
 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 *     OTHER DEALINGS IN THE SOFTWARE.
43
44
 */

45
#include "skeleton.dtsi"
46

47
#include <dt-bindings/interrupt-controller/arm-gic.h>
48
#include <dt-bindings/thermal/thermal.h>
49

50
#include <dt-bindings/clock/sun4i-a10-pll2.h>
51
#include <dt-bindings/dma/sun4i-a10.h>
52
#include <dt-bindings/pinctrl/sun4i-a10.h>
53
54
55
56

/ {
	interrupt-parent = <&gic>;

57
	aliases {
58
		ethernet0 = &gmac;
59
60
	};

61
62
63
64
65
	chosen {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

66
		framebuffer@0 {
67
68
			compatible = "allwinner,simple-framebuffer",
				     "simple-framebuffer";
69
			allwinner,pipeline = "de_be0-lcd0-hdmi";
70
			clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 43>,
Chen-Yu Tsai's avatar
Chen-Yu Tsai committed
71
				 <&ahb_gates 44>, <&dram_gates 26>;
72
73
			status = "disabled";
		};
74
75
76
77
78

		framebuffer@1 {
			compatible = "allwinner,simple-framebuffer",
				     "simple-framebuffer";
			allwinner,pipeline = "de_be0-lcd0";
Chen-Yu Tsai's avatar
Chen-Yu Tsai committed
79
80
			clocks = <&pll5 1>, <&ahb_gates 36>, <&ahb_gates 44>,
				 <&dram_gates 26>;
81
82
83
84
85
86
87
88
			status = "disabled";
		};

		framebuffer@2 {
			compatible = "allwinner,simple-framebuffer",
				     "simple-framebuffer";
			allwinner,pipeline = "de_be0-lcd0-tve0";
			clocks = <&pll5 1>, <&ahb_gates 34>, <&ahb_gates 36>,
Chen-Yu Tsai's avatar
Chen-Yu Tsai committed
89
				 <&ahb_gates 44>, <&dram_gates 26>;
90
91
			status = "disabled";
		};
92
93
	};

94
95
96
97
	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

98
		cpu0: cpu@0 {
99
100
101
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			reg = <0>;
102
103
104
			clocks = <&cpu>;
			clock-latency = <244144>; /* 8 32k periods */
			operating-points = <
105
106
107
108
109
110
111
				/* kHz	  uV */
				960000	1400000
				912000	1400000
				864000	1300000
				720000	1200000
				528000	1100000
				312000	1000000
112
				144000	1000000
113
114
115
				>;
			#cooling-cells = <2>;
			cooling-min-level = <0>;
116
			cooling-max-level = <6>;
117
118
119
120
121
122
123
124
125
		};

		cpu@1 {
			compatible = "arm,cortex-a7";
			device_type = "cpu";
			reg = <1>;
		};
	};

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
	thermal-zones {
		cpu_thermal {
			/* milliseconds */
			polling-delay-passive = <250>;
			polling-delay = <1000>;
			thermal-sensors = <&rtp>;

			cooling-maps {
				map0 {
					trip = <&cpu_alert0>;
					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
				};
			};

			trips {
				cpu_alert0: cpu_alert0 {
					/* milliCelsius */
					temperature = <75000>;
					hysteresis = <2000>;
					type = "passive";
				};

				cpu_crit: cpu_crit {
					/* milliCelsius */
					temperature = <100000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};

158
159
160
161
	memory {
		reg = <0x40000000 0x80000000>;
	};

Marc Zyngier's avatar
Marc Zyngier committed
162
163
	timer {
		compatible = "arm,armv7-timer";
164
165
166
167
		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)>;
Marc Zyngier's avatar
Marc Zyngier committed
168
169
	};

170
171
	pmu {
		compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
172
173
		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
			     <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
174
175
	};

176
177
178
179
180
	clocks {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

181
		osc24M: clk@01c20050 {
182
			#clock-cells = <0>;
183
			compatible = "allwinner,sun4i-a10-osc-clk";
184
			reg = <0x01c20050 0x4>;
185
			clock-frequency = <24000000>;
186
			clock-output-names = "osc24M";
187
188
		};

189
		osc32k: clk@0 {
190
191
192
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <32768>;
193
			clock-output-names = "osc32k";
194
		};
195

196
		pll1: clk@01c20000 {
197
			#clock-cells = <0>;
198
			compatible = "allwinner,sun4i-a10-pll1-clk";
199
200
			reg = <0x01c20000 0x4>;
			clocks = <&osc24M>;
201
			clock-output-names = "pll1";
202
203
		};

Maxime Ripard's avatar
Maxime Ripard committed
204
205
206
207
208
209
210
211
212
		pll2: clk@01c20008 {
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-pll2-clk";
			reg = <0x01c20008 0x8>;
			clocks = <&osc24M>;
			clock-output-names = "pll2-1x", "pll2-2x",
					     "pll2-4x", "pll2-8x";
		};

213
		pll4: clk@01c20018 {
214
			#clock-cells = <0>;
215
			compatible = "allwinner,sun7i-a20-pll4-clk";
Emilio López's avatar
Emilio López committed
216
217
			reg = <0x01c20018 0x4>;
			clocks = <&osc24M>;
218
			clock-output-names = "pll4";
Emilio López's avatar
Emilio López committed
219
220
		};

221
		pll5: clk@01c20020 {
222
			#clock-cells = <1>;
223
			compatible = "allwinner,sun4i-a10-pll5-clk";
224
225
226
227
228
			reg = <0x01c20020 0x4>;
			clocks = <&osc24M>;
			clock-output-names = "pll5_ddr", "pll5_other";
		};

229
		pll6: clk@01c20028 {
230
			#clock-cells = <1>;
231
			compatible = "allwinner,sun4i-a10-pll6-clk";
232
233
			reg = <0x01c20028 0x4>;
			clocks = <&osc24M>;
234
235
			clock-output-names = "pll6_sata", "pll6_other", "pll6",
					     "pll6_div_4";
236
237
		};

238
239
240
241
242
243
244
245
		pll8: clk@01c20040 {
			#clock-cells = <0>;
			compatible = "allwinner,sun7i-a20-pll4-clk";
			reg = <0x01c20040 0x4>;
			clocks = <&osc24M>;
			clock-output-names = "pll8";
		};

246
247
		cpu: cpu@01c20054 {
			#clock-cells = <0>;
248
			compatible = "allwinner,sun4i-a10-cpu-clk";
249
			reg = <0x01c20054 0x4>;
250
			clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>;
251
			clock-output-names = "cpu";
252
253
254
255
		};

		axi: axi@01c20054 {
			#clock-cells = <0>;
256
			compatible = "allwinner,sun4i-a10-axi-clk";
257
258
			reg = <0x01c20054 0x4>;
			clocks = <&cpu>;
259
			clock-output-names = "axi";
260
261
262
263
		};

		ahb: ahb@01c20054 {
			#clock-cells = <0>;
264
			compatible = "allwinner,sun5i-a13-ahb-clk";
265
			reg = <0x01c20054 0x4>;
266
			clocks = <&axi>, <&pll6 3>, <&pll6 1>;
267
			clock-output-names = "ahb";
268
269
270
271
272
273
			/*
			 * Use PLL6 as parent, instead of CPU/AXI
			 * which has rate changes due to cpufreq
			 */
			assigned-clocks = <&ahb>;
			assigned-clock-parents = <&pll6 3>;
274
275
		};

276
		ahb_gates: clk@01c20060 {
277
278
279
280
			#clock-cells = <1>;
			compatible = "allwinner,sun7i-a20-ahb-gates-clk";
			reg = <0x01c20060 0x8>;
			clocks = <&ahb>;
Maxime Ripard's avatar
Maxime Ripard committed
281
282
283
284
285
286
287
288
289
290
291
292
293
			clock-indices = <0>, <1>,
					<2>, <3>, <4>,
					<5>, <6>, <7>, <8>,
					<9>, <10>, <11>, <12>,
					<13>, <14>, <16>,
					<17>, <18>, <20>, <21>,
					<22>, <23>, <25>,
					<28>, <32>, <33>, <34>,
					<35>, <36>, <37>, <40>,
					<41>, <42>, <43>,
					<44>, <45>, <46>,
					<47>, <49>, <50>,
					<52>;
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
			clock-output-names = "ahb_usb0", "ahb_ehci0",
				"ahb_ohci0", "ahb_ehci1", "ahb_ohci1",
				"ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
				"ahb_mmc1", "ahb_mmc2", "ahb_mmc3", "ahb_ms",
				"ahb_nand", "ahb_sdram", "ahb_ace",
				"ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
				"ahb_spi2", "ahb_spi3", "ahb_sata",
				"ahb_hstimer", "ahb_ve", "ahb_tvd", "ahb_tve0",
				"ahb_tve1", "ahb_lcd0", "ahb_lcd1", "ahb_csi0",
				"ahb_csi1", "ahb_hdmi1", "ahb_hdmi0",
				"ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
				"ahb_de_fe1", "ahb_gmac", "ahb_mp",
				"ahb_mali";
		};

		apb0: apb0@01c20054 {
			#clock-cells = <0>;
311
			compatible = "allwinner,sun4i-a10-apb0-clk";
312
313
			reg = <0x01c20054 0x4>;
			clocks = <&ahb>;
314
			clock-output-names = "apb0";
315
316
		};

317
		apb0_gates: clk@01c20068 {
318
319
320
321
			#clock-cells = <1>;
			compatible = "allwinner,sun7i-a20-apb0-gates-clk";
			reg = <0x01c20068 0x4>;
			clocks = <&apb0>;
Maxime Ripard's avatar
Maxime Ripard committed
322
323
324
325
			clock-indices = <0>, <1>,
					<2>, <3>, <4>,
					<5>, <6>, <7>,
					<8>, <10>;
326
327
328
329
330
331
			clock-output-names = "apb0_codec", "apb0_spdif",
				"apb0_ac97", "apb0_iis0", "apb0_iis1",
				"apb0_pio", "apb0_ir0", "apb0_ir1",
				"apb0_iis2", "apb0_keypad";
		};

332
		apb1: clk@01c20058 {
333
			#clock-cells = <0>;
334
			compatible = "allwinner,sun4i-a10-apb1-clk";
335
			reg = <0x01c20058 0x4>;
336
			clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
337
			clock-output-names = "apb1";
338
339
		};

340
		apb1_gates: clk@01c2006c {
341
342
343
344
			#clock-cells = <1>;
			compatible = "allwinner,sun7i-a20-apb1-gates-clk";
			reg = <0x01c2006c 0x4>;
			clocks = <&apb1>;
Maxime Ripard's avatar
Maxime Ripard committed
345
346
347
348
349
350
			clock-indices = <0>, <1>,
					<2>, <3>, <4>,
					<5>, <6>, <7>,
					<15>, <16>, <17>,
					<18>, <19>, <20>,
					<21>, <22>, <23>;
351
352
353
354
355
356
357
			clock-output-names = "apb1_i2c0", "apb1_i2c1",
				"apb1_i2c2", "apb1_i2c3", "apb1_can",
				"apb1_scr", "apb1_ps20", "apb1_ps21",
				"apb1_i2c4", "apb1_uart0", "apb1_uart1",
				"apb1_uart2", "apb1_uart3", "apb1_uart4",
				"apb1_uart5", "apb1_uart6", "apb1_uart7";
		};
Emilio López's avatar
Emilio López committed
358
359
360

		nand_clk: clk@01c20080 {
			#clock-cells = <0>;
361
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
362
363
364
365
366
367
368
			reg = <0x01c20080 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "nand";
		};

		ms_clk: clk@01c20084 {
			#clock-cells = <0>;
369
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
370
371
372
373
374
375
			reg = <0x01c20084 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ms";
		};

		mmc0_clk: clk@01c20088 {
376
377
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-mmc-clk";
Emilio López's avatar
Emilio López committed
378
379
			reg = <0x01c20088 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
380
381
382
			clock-output-names = "mmc0",
					     "mmc0_output",
					     "mmc0_sample";
Emilio López's avatar
Emilio López committed
383
384
385
		};

		mmc1_clk: clk@01c2008c {
386
387
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-mmc-clk";
Emilio López's avatar
Emilio López committed
388
389
			reg = <0x01c2008c 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
390
391
392
			clock-output-names = "mmc1",
					     "mmc1_output",
					     "mmc1_sample";
Emilio López's avatar
Emilio López committed
393
394
395
		};

		mmc2_clk: clk@01c20090 {
396
397
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-mmc-clk";
Emilio López's avatar
Emilio López committed
398
399
			reg = <0x01c20090 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
400
401
402
			clock-output-names = "mmc2",
					     "mmc2_output",
					     "mmc2_sample";
Emilio López's avatar
Emilio López committed
403
404
405
		};

		mmc3_clk: clk@01c20094 {
406
407
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-mmc-clk";
Emilio López's avatar
Emilio López committed
408
409
			reg = <0x01c20094 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
410
411
412
			clock-output-names = "mmc3",
					     "mmc3_output",
					     "mmc3_sample";
Emilio López's avatar
Emilio López committed
413
414
415
416
		};

		ts_clk: clk@01c20098 {
			#clock-cells = <0>;
417
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
418
419
420
421
422
423
424
			reg = <0x01c20098 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ts";
		};

		ss_clk: clk@01c2009c {
			#clock-cells = <0>;
425
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
426
427
428
429
430
431
432
			reg = <0x01c2009c 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ss";
		};

		spi0_clk: clk@01c200a0 {
			#clock-cells = <0>;
433
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
434
435
436
437
438
439
440
			reg = <0x01c200a0 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi0";
		};

		spi1_clk: clk@01c200a4 {
			#clock-cells = <0>;
441
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
442
443
444
445
446
447
448
			reg = <0x01c200a4 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi1";
		};

		spi2_clk: clk@01c200a8 {
			#clock-cells = <0>;
449
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
450
451
452
453
454
455
456
			reg = <0x01c200a8 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi2";
		};

		pata_clk: clk@01c200ac {
			#clock-cells = <0>;
457
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
458
459
460
461
462
463
464
			reg = <0x01c200ac 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "pata";
		};

		ir0_clk: clk@01c200b0 {
			#clock-cells = <0>;
465
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
466
467
468
469
470
471
472
			reg = <0x01c200b0 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ir0";
		};

		ir1_clk: clk@01c200b4 {
			#clock-cells = <0>;
473
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
474
475
476
477
478
			reg = <0x01c200b4 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "ir1";
		};

479
480
481
482
483
484
485
486
		keypad_clk: clk@01c200c4 {
			#clock-cells = <0>;
			compatible = "allwinner,sun4i-a10-mod0-clk";
			reg = <0x01c200c4 0x4>;
			clocks = <&osc24M>;
			clock-output-names = "keypad";
		};

487
488
		usb_clk: clk@01c200cc {
			#clock-cells = <1>;
489
			#reset-cells = <1>;
490
491
492
			compatible = "allwinner,sun4i-a10-usb-clk";
			reg = <0x01c200cc 0x4>;
			clocks = <&pll6 1>;
493
494
			clock-output-names = "usb_ohci0", "usb_ohci1",
					     "usb_phy";
495
496
		};

Emilio López's avatar
Emilio López committed
497
498
		spi3_clk: clk@01c200d4 {
			#clock-cells = <0>;
499
			compatible = "allwinner,sun4i-a10-mod0-clk";
Emilio López's avatar
Emilio López committed
500
501
502
503
			reg = <0x01c200d4 0x4>;
			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
			clock-output-names = "spi3";
		};
504

Chen-Yu Tsai's avatar
Chen-Yu Tsai committed
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
		dram_gates: clk@01c20100 {
			#clock-cells = <1>;
			compatible = "allwinner,sun4i-a10-dram-gates-clk";
			reg = <0x01c20100 0x4>;
			clocks = <&pll5 0>;
			clock-indices = <0>,
					<1>, <2>,
					<3>,
					<4>,
					<5>, <6>,
					<15>,
					<24>, <25>,
					<26>, <27>,
					<28>, <29>;
			clock-output-names = "dram_ve",
					     "dram_csi0", "dram_csi1",
					     "dram_ts",
					     "dram_tvd",
					     "dram_tve0", "dram_tve1",
					     "dram_output",
					     "dram_de_fe1", "dram_de_fe0",
					     "dram_de_be0", "dram_de_be1",
					     "dram_de_mp", "dram_ace";
		};

530
531
532
533
534
535
536
537
538
		ve_clk: clk@01c2013c {
			#clock-cells = <0>;
			#reset-cells = <0>;
			compatible = "allwinner,sun4i-a10-ve-clk";
			reg = <0x01c2013c 0x4>;
			clocks = <&pll4>;
			clock-output-names = "ve";
		};

539
540
541
542
543
544
545
546
		codec_clk: clk@01c20140 {
			#clock-cells = <0>;
			compatible = "allwinner,sun4i-a10-codec-clk";
			reg = <0x01c20140 0x4>;
			clocks = <&pll2 SUN4I_A10_PLL2_1X>;
			clock-output-names = "codec";
		};

547
548
		mbus_clk: clk@01c2015c {
			#clock-cells = <0>;
549
			compatible = "allwinner,sun5i-a13-mbus-clk";
550
551
552
553
			reg = <0x01c2015c 0x4>;
			clocks = <&osc24M>, <&pll6 2>, <&pll5 1>;
			clock-output-names = "mbus";
		};
554

555
		/*
556
557
558
559
560
561
562
		 * The following two are dummy clocks, placeholders
		 * used in the gmac_tx clock. The gmac driver will
		 * choose one parent depending on the PHY interface
		 * mode, using clk_set_rate auto-reparenting.
		 *
		 * The actual TX clock rate is not controlled by the
		 * gmac_tx clock.
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
		 */
		mii_phy_tx_clk: clk@2 {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <25000000>;
			clock-output-names = "mii_phy_tx";
		};

		gmac_int_tx_clk: clk@3 {
			#clock-cells = <0>;
			compatible = "fixed-clock";
			clock-frequency = <125000000>;
			clock-output-names = "gmac_int_tx";
		};

		gmac_tx_clk: clk@01c20164 {
			#clock-cells = <0>;
			compatible = "allwinner,sun7i-a20-gmac-clk";
			reg = <0x01c20164 0x4>;
			clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
			clock-output-names = "gmac_tx";
		};

586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
		/*
		 * Dummy clock used by output clocks
		 */
		osc24M_32k: clk@1 {
			#clock-cells = <0>;
			compatible = "fixed-factor-clock";
			clock-div = <750>;
			clock-mult = <1>;
			clocks = <&osc24M>;
			clock-output-names = "osc24M_32k";
		};

		clk_out_a: clk@01c201f0 {
			#clock-cells = <0>;
			compatible = "allwinner,sun7i-a20-out-clk";
			reg = <0x01c201f0 0x4>;
			clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
			clock-output-names = "clk_out_a";
		};

		clk_out_b: clk@01c201f4 {
			#clock-cells = <0>;
			compatible = "allwinner,sun7i-a20-out-clk";
			reg = <0x01c201f4 0x4>;
			clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
			clock-output-names = "clk_out_b";
		};
613
614
615
616
617
618
619
620
	};

	soc@01c00000 {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
		sram-controller@01c00000 {
			compatible = "allwinner,sun4i-a10-sram-controller";
			reg = <0x01c00000 0x30>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges;

			sram_a: sram@00000000 {
				compatible = "mmio-sram";
				reg = <0x00000000 0xc000>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 0x00000000 0xc000>;

				emac_sram: sram-section@8000 {
					compatible = "allwinner,sun4i-a10-sram-a3-a4";
					reg = <0x8000 0x4000>;
					status = "disabled";
				};
			};

			sram_d: sram@00010000 {
				compatible = "mmio-sram";
				reg = <0x00010000 0x1000>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges = <0 0x00010000 0x1000>;

				otg_sram: sram-section@0000 {
					compatible = "allwinner,sun4i-a10-sram-d";
					reg = <0x0000 0x1000>;
					status = "disabled";
				};
			};
		};

657
658
659
660
661
		nmi_intc: interrupt-controller@01c00030 {
			compatible = "allwinner,sun7i-a20-sc-nmi";
			interrupt-controller;
			#interrupt-cells = <2>;
			reg = <0x01c00030 0x0c>;
662
			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
663
664
		};

665
666
667
		dma: dma-controller@01c02000 {
			compatible = "allwinner,sun4i-a10-dma";
			reg = <0x01c02000 0x1000>;
668
			interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
669
670
671
672
			clocks = <&ahb_gates 6>;
			#dma-cells = <2>;
		};

673
674
675
		spi0: spi@01c05000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c05000 0x1000>;
676
			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
677
678
			clocks = <&ahb_gates 20>, <&spi0_clk>;
			clock-names = "ahb", "mod";
679
680
			dmas = <&dma SUN4I_DMA_DEDICATED 27>,
			       <&dma SUN4I_DMA_DEDICATED 26>;
681
			dma-names = "rx", "tx";
682
683
684
685
686
687
688
689
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

		spi1: spi@01c06000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c06000 0x1000>;
690
			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
691
692
			clocks = <&ahb_gates 21>, <&spi1_clk>;
			clock-names = "ahb", "mod";
693
694
			dmas = <&dma SUN4I_DMA_DEDICATED 9>,
			       <&dma SUN4I_DMA_DEDICATED 8>;
695
			dma-names = "rx", "tx";
696
697
698
699
700
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

701
		emac: ethernet@01c0b000 {
702
			compatible = "allwinner,sun4i-a10-emac";
703
			reg = <0x01c0b000 0x1000>;
704
			interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
705
			clocks = <&ahb_gates 17>;
706
			allwinner,sram = <&emac_sram 1>;
707
708
709
			status = "disabled";
		};

710
		mdio: mdio@01c0b080 {
711
			compatible = "allwinner,sun4i-a10-mdio";
712
713
714
715
716
717
			reg = <0x01c0b080 0x14>;
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

718
719
720
		mmc0: mmc@01c0f000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c0f000 0x1000>;
721
722
723
724
725
726
727
728
			clocks = <&ahb_gates 8>,
				 <&mmc0_clk 0>,
				 <&mmc0_clk 1>,
				 <&mmc0_clk 2>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
729
			interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
730
			status = "disabled";
731
732
			#address-cells = <1>;
			#size-cells = <0>;
733
734
735
736
737
		};

		mmc1: mmc@01c10000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c10000 0x1000>;
738
739
740
741
742
743
744
745
			clocks = <&ahb_gates 9>,
				 <&mmc1_clk 0>,
				 <&mmc1_clk 1>,
				 <&mmc1_clk 2>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
746
			interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
747
			status = "disabled";
748
749
			#address-cells = <1>;
			#size-cells = <0>;
750
751
752
753
754
		};

		mmc2: mmc@01c11000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c11000 0x1000>;
755
756
757
758
759
760
761
762
			clocks = <&ahb_gates 10>,
				 <&mmc2_clk 0>,
				 <&mmc2_clk 1>,
				 <&mmc2_clk 2>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
763
			interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
764
			status = "disabled";
765
766
			#address-cells = <1>;
			#size-cells = <0>;
767
768
769
770
771
		};

		mmc3: mmc@01c12000 {
			compatible = "allwinner,sun5i-a13-mmc";
			reg = <0x01c12000 0x1000>;
772
773
774
775
776
777
778
779
			clocks = <&ahb_gates 11>,
				 <&mmc3_clk 0>,
				 <&mmc3_clk 1>,
				 <&mmc3_clk 2>;
			clock-names = "ahb",
				      "mmc",
				      "output",
				      "sample";
780
			interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
781
			status = "disabled";
782
783
			#address-cells = <1>;
			#size-cells = <0>;
784
785
		};

786
787
788
789
790
791
792
793
794
795
796
797
798
		usb_otg: usb@01c13000 {
			compatible = "allwinner,sun4i-a10-musb";
			reg = <0x01c13000 0x0400>;
			clocks = <&ahb_gates 0>;
			interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
			interrupt-names = "mc";
			phys = <&usbphy 0>;
			phy-names = "usb";
			extcon = <&usbphy 0>;
			allwinner,sram = <&otg_sram 1>;
			status = "disabled";
		};

799
800
801
802
803
804
805
		usbphy: phy@01c13400 {
			#phy-cells = <1>;
			compatible = "allwinner,sun7i-a20-usb-phy";
			reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
			reg-names = "phy_ctrl", "pmu1", "pmu2";
			clocks = <&usb_clk 8>;
			clock-names = "usb_phy";
806
807
			resets = <&usb_clk 0>, <&usb_clk 1>, <&usb_clk 2>;
			reset-names = "usb0_reset", "usb1_reset", "usb2_reset";
808
809
810
811
812
813
			status = "disabled";
		};

		ehci0: usb@01c14000 {
			compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
			reg = <0x01c14000 0x100>;
814
			interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
815
816
817
818
819
820
821
822
823
			clocks = <&ahb_gates 1>;
			phys = <&usbphy 1>;
			phy-names = "usb";
			status = "disabled";
		};

		ohci0: usb@01c14400 {
			compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
			reg = <0x01c14400 0x100>;
824
			interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
825
826
827
828
829
830
			clocks = <&usb_clk 6>, <&ahb_gates 2>;
			phys = <&usbphy 1>;
			phy-names = "usb";
			status = "disabled";
		};

831
832
833
834
835
836
837
838
		crypto: crypto-engine@01c15000 {
			compatible = "allwinner,sun4i-a10-crypto";
			reg = <0x01c15000 0x1000>;
			interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&ahb_gates 5>, <&ss_clk>;
			clock-names = "ahb", "mod";
		};

839
840
841
		spi2: spi@01c17000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c17000 0x1000>;
842
			interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
843
844
			clocks = <&ahb_gates 22>, <&spi2_clk>;
			clock-names = "ahb", "mod";
845
846
			dmas = <&dma SUN4I_DMA_DEDICATED 29>,
			       <&dma SUN4I_DMA_DEDICATED 28>;
847
			dma-names = "rx", "tx";
848
849
850
851
852
			status = "disabled";
			#address-cells = <1>;
			#size-cells = <0>;
		};

853
854
855
		ahci: sata@01c18000 {
			compatible = "allwinner,sun4i-a10-ahci";
			reg = <0x01c18000 0x1000>;
856
			interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
857
858
859
860
			clocks = <&pll6 0>, <&ahb_gates 25>;
			status = "disabled";
		};

861
862
863
		ehci1: usb@01c1c000 {
			compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
			reg = <0x01c1c000 0x100>;
864
			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
865
866
867
868
869
870
871
872
873
			clocks = <&ahb_gates 3>;
			phys = <&usbphy 2>;
			phy-names = "usb";
			status = "disabled";
		};

		ohci1: usb@01c1c400 {
			compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
			reg = <0x01c1c400 0x100>;
874
			interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
875
876
877
878
879
880
			clocks = <&usb_clk 7>, <&ahb_gates 4>;
			phys = <&usbphy 2>;
			phy-names = "usb";
			status = "disabled";
		};

881
882
883
		spi3: spi@01c1f000 {
			compatible = "allwinner,sun4i-a10-spi";
			reg = <0x01c1f000 0x1000>;
884
			interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
885
886
			clocks = <&ahb_gates 23>, <&spi3_clk>;
			clock-names = "ahb", "mod";
887
888
			dmas = <&dma SUN4I_DMA_DEDICATED 31>,
			       <&dma SUN4I_DMA_DEDICATED 30>;
889
			dma-names = "rx", "tx";
890
			status = "disabled";
891
892
893
894
			#address-cells = <1>;
			#size-cells = <0>;
		};

895
896
897
		pio: pinctrl@01c20800 {
			compatible = "allwinner,sun7i-a20-pinctrl";
			reg = <0x01c20800 0x400>;
898
			interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
899
			clocks = <&apb0_gates 5>;
900
901
			gpio-controller;
			interrupt-controller;
902
			#interrupt-cells = <3>;
903
			#gpio-cells = <3>;
904

905
906
907
			pwm0_pins_a: pwm0@0 {
				allwinner,pins = "PB2";
				allwinner,function = "pwm";
908
909
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
910
911
912
913
914
			};

			pwm1_pins_a: pwm1@0 {
				allwinner,pins = "PI3";
				allwinner,function = "pwm";
915
916
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
917
918
			};

919
920
921
			uart0_pins_a: uart0@0 {
				allwinner,pins = "PB22", "PB23";
				allwinner,function = "uart0";
922
923
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
924
925
			};

926
927
928
			uart2_pins_a: uart2@0 {
				allwinner,pins = "PI16", "PI17", "PI18", "PI19";
				allwinner,function = "uart2";
929
930
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
931
932
			};

933
934
935
			uart3_pins_a: uart3@0 {
				allwinner,pins = "PG6", "PG7", "PG8", "PG9";
				allwinner,function = "uart3";
936
937
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
938
939
			};

940
941
942
			uart3_pins_b: uart3@1 {
				allwinner,pins = "PH0", "PH1";
				allwinner,function = "uart3";
943
944
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
945
946
			};

947
948
949
			uart4_pins_a: uart4@0 {
				allwinner,pins = "PG10", "PG11";
				allwinner,function = "uart4";
950
951
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
952
953
			};

954
955
956
957
958
959
960
			uart4_pins_b: uart4@1 {
				allwinner,pins = "PH4", "PH5";
				allwinner,function = "uart4";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

961
962
963
			uart5_pins_a: uart5@0 {
				allwinner,pins = "PI10", "PI11";
				allwinner,function = "uart5";
964
965
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
966
967
			};

968
969
970
			uart6_pins_a: uart6@0 {
				allwinner,pins = "PI12", "PI13";
				allwinner,function = "uart6";
971
972
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
973
974
975
976
977
			};

			uart7_pins_a: uart7@0 {
				allwinner,pins = "PI20", "PI21";
				allwinner,function = "uart7";
978
979
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
980
			};
981

982
983
984
			i2c0_pins_a: i2c0@0 {
				allwinner,pins = "PB0", "PB1";
				allwinner,function = "i2c0";
985
986
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
987
988
989
990
991
			};

			i2c1_pins_a: i2c1@0 {
				allwinner,pins = "PB18", "PB19";
				allwinner,function = "i2c1";
992
993
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
994
995
996
997
998
			};

			i2c2_pins_a: i2c2@0 {
				allwinner,pins = "PB20", "PB21";
				allwinner,function = "i2c2";
999
1000
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1001
1002
			};

1003
1004
1005
			i2c3_pins_a: i2c3@0 {
				allwinner,pins = "PI0", "PI1";
				allwinner,function = "i2c3";
1006
1007
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1008
1009
			};

1010
1011
1012
1013
1014
1015
1016
			emac_pins_a: emac0@0 {
				allwinner,pins = "PA0", "PA1", "PA2",
						"PA3", "PA4", "PA5", "PA6",
						"PA7", "PA8", "PA9", "PA10",
						"PA11", "PA12", "PA13", "PA14",
						"PA15", "PA16";
				allwinner,function = "emac";
1017
1018
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1019
			};
1020
1021
1022
1023

			clk_out_a_pins_a: clk_out_a@0 {
				allwinner,pins = "PI12";
				allwinner,function = "clk_out_a";
1024
1025
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1026
1027
1028
1029
1030
			};

			clk_out_b_pins_a: clk_out_b@0 {
				allwinner,pins = "PI13";
				allwinner,function = "clk_out_b";
1031
1032
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1033
			};
1034
1035
1036
1037
1038
1039
1040
1041

			gmac_pins_mii_a: gmac_mii@0 {
				allwinner,pins = "PA0", "PA1", "PA2",
						"PA3", "PA4", "PA5", "PA6",
						"PA7", "PA8", "PA9", "PA10",
						"PA11", "PA12", "PA13", "PA14",
						"PA15", "PA16";
				allwinner,function = "gmac";
1042
1043
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
			};

			gmac_pins_rgmii_a: gmac_rgmii@0 {
				allwinner,pins = "PA0", "PA1", "PA2",
						"PA3", "PA4", "PA5", "PA6",
						"PA7", "PA8", "PA10",
						"PA11", "PA12", "PA13",
						"PA15", "PA16";
				allwinner,function = "gmac";
				/*
				 * data lines in RGMII mode use DDR mode
				 * and need a higher signal drive strength
				 */
1057
1058
				allwinner,drive = <SUN4I_PINCTRL_40_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1059
			};
1060

1061
			spi0_pins_a: spi0@0 {
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
				allwinner,pins = "PI11", "PI12", "PI13";
				allwinner,function = "spi0";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			spi0_cs0_pins_a: spi0_cs0@0 {
				allwinner,pins = "PI10";
				allwinner,function = "spi0";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			spi0_cs1_pins_a: spi0_cs1@0 {
				allwinner,pins = "PI14";
1077
				allwinner,function = "spi0";
1078
1079
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1080
1081
			};

1082
			spi1_pins_a: spi1@0 {
1083
1084
1085
1086
1087
1088
1089
1090
				allwinner,pins = "PI17", "PI18", "PI19";
				allwinner,function = "spi1";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			spi1_cs0_pins_a: spi1_cs0@0 {
				allwinner,pins = "PI16";
1091
				allwinner,function = "spi1";
1092
1093
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1094
1095
1096
			};

			spi2_pins_a: spi2@0 {
1097
				allwinner,pins = "PC20", "PC21", "PC22";
1098
				allwinner,function = "spi2";
1099
1100
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1101
1102
1103
			};

			spi2_pins_b: spi2@1 {
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
				allwinner,pins = "PB15", "PB16", "PB17";
				allwinner,function = "spi2";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			spi2_cs0_pins_a: spi2_cs0@0 {
				allwinner,pins = "PC19";
				allwinner,function = "spi2";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			spi2_cs0_pins_b: spi2_cs0@1 {
				allwinner,pins = "PB14";
1119
				allwinner,function = "spi2";
1120
1121
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1122
			};
1123
1124

			mmc0_pins_a: mmc0@0 {
1125
1126
				allwinner,pins = "PF0", "PF1", "PF2",
						 "PF3", "PF4", "PF5";
1127
				allwinner,function = "mmc0";
1128
1129
				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1130
1131
1132
1133
1134
			};

			mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
				allwinner,pins = "PH1";
				allwinner,function = "gpio_in";
1135
1136
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
1137
1138
			};

1139
			mmc2_pins_a: mmc2@0 {
1140
1141
				allwinner,pins = "PC6", "PC7", "PC8",
						 "PC9", "PC10", "PC11";
1142
				allwinner,function = "mmc2";
1143
1144
				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
				allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
1145
1146
			};

1147
			mmc3_pins_a: mmc3@0 {
1148
1149
				allwinner,pins = "PI4", "PI5", "PI6",
						 "PI7", "PI8", "PI9";
1150
				allwinner,function = "mmc3";
1151
1152
				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1153
			};
1154

1155
1156
			ir0_rx_pins_a: ir0@0 {
				    allwinner,pins = "PB4";
1157
				    allwinner,function = "ir0";
1158
1159
				    allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				    allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1160
1161
			};

1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
			ir0_tx_pins_a: ir0@1 {
				    allwinner,pins = "PB3";
				    allwinner,function = "ir0";
				    allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				    allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			ir1_rx_pins_a: ir1@0 {
				    allwinner,pins = "PB23";
				    allwinner,function = "ir1";
				    allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				    allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			ir1_tx_pins_a: ir1@1 {
				    allwinner,pins = "PB22";
1178
				    allwinner,function = "ir1";
1179
1180
				    allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				    allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1181
			};
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194

			ps20_pins_a: ps20@0 {
				allwinner,pins = "PI20", "PI21";
				allwinner,function = "ps2";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
			};

			ps21_pins_a: ps21@0 {
				allwinner,pins = "PH12", "PH13";
				allwinner,function = "ps2";
				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
1195
			};
1196
1197
		};

1198
		timer@01c20c00 {
1199
			compatible = "allwinner,sun4i-a10-timer";
1200
			reg = <0x01c20c00 0x90>;
1201
1202
1203
1204
1205
1206
			interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>,
				     <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
1207
1208
1209
1210
			clocks = <&osc24M>;
		};

		wdt: watchdog@01c20c90 {
1211
			compatible = "allwinner,sun4i-a10-wdt";
1212
1213
1214
			reg = <0x01c20c90 0x10>;
		};

1215
1216
1217
		rtc: rtc@01c20d00 {
			compatible = "allwinner,sun7i-a20-rtc";
			reg = <0x01c20d00 0x20>;
1218
			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
1219
1220
		};

1221
1222
1223
1224
1225
1226
1227
1228
		pwm: pwm@01c20e00 {
			compatible = "allwinner,sun7i-a20-pwm";
			reg = <0x01c20e00 0xc>;
			clocks = <&osc24M>;
			#pwm-cells = <3>;
			status = "disabled";
		};

1229
		ir0: ir@01c21800 {
1230
			compatible = "allwinner,sun4i-a10-ir";
1231
1232
			clocks = <&apb0_gates 6>, <&ir0_clk>;
			clock-names = "apb", "ir";
1233
			interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
1234
1235
1236
1237
1238
			reg = <0x01c21800 0x40>;
			status = "disabled";
		};

		ir1: ir@01c21c00 {
1239
			compatible = "allwinner,sun4i-a10-ir";
1240
1241
			clocks = <&apb0_gates 7>, <&ir1_clk>;
			clock-names = "apb", "ir";
1242
			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
1243
1244
1245
1246
			reg = <0x01c21c00 0x40>;
			status = "disabled";
		};

1247
1248
1249
		lradc: lradc@01c22800 {
			compatible = "allwinner,sun4i-a10-lradc-keys";
			reg = <0x01c22800 0x100>;
1250
			interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
1251
1252
1253
			status = "disabled";
		};

1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
		codec: codec@01c22c00 {
			#sound-dai-cells = <0>;
			compatible = "allwinner,sun7i-a20-codec";
			reg = <0x01c22c00 0x40>;
			interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
			clocks = <&apb0_gates 0>, <&codec_clk>;
			clock-names = "apb", "codec";
			dmas = <&dma SUN4I_DMA_NORMAL 19>,
			       <&dma SUN4I_DMA_NORMAL 19>;
			dma-names = "rx", "tx";
			status = "disabled";
		};

1267
1268
1269
1270
1271
		sid: eeprom@01c23800 {
			compatible = "allwinner,sun7i-a20-sid";
			reg = <0x01c23800 0x200>;
		};

1272
		rtp: rtp@01c25000 {
1273
			compatible = "allwinner,sun5i-a13-ts";
1274
			reg = <0x01c25000 0x100>;
1275
			interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
1276
			#thermal-sensor-cells = <0>;
1277
1278
		};

1279
1280
1281
		uart0: serial@01c28000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28000 0x400>;
1282
			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
1283
1284
			reg-shift = <2>;
			reg-io-width = <4>;
1285
			clocks = <&apb1_gates 16>;
1286
1287
1288
1289
1290
1291
			status = "disabled";
		};

		uart1: serial@01c28400 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28400 0x400>;
1292
			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
1293
1294
			reg-shift = <2>;
			reg-io-width = <4>;
1295
			clocks = <&apb1_gates 17>;
1296
1297
1298
1299
1300
1301
			status = "disabled";
		};

		uart2: serial@01c28800 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28800 0x400>;
1302
			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
1303
1304
			reg-shift = <2>;
			reg-io-width = <4>;
1305
			clocks = <&apb1_gates 18>;
1306
1307
1308
1309
1310
1311
			status = "disabled";
		};

		uart3: serial@01c28c00 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c28c00 0x400>;
1312
			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
1313
1314
			reg-shift = <2>;
			reg-io-width = <4>;
1315
			clocks = <&apb1_gates 19>;
1316
1317
1318
1319
1320
1321
			status = "disabled";
		};

		uart4: serial@01c29000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c29000 0x400>;
1322
			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
1323
1324
			reg-shift = <2>;
			reg-io-width = <4>;
1325
			clocks = <&apb1_gates 20>;
1326
1327
1328
1329
1330
1331
			status = "disabled";
		};

		uart5: serial@01c29400 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c29400 0x400>;
1332
			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
1333
1334
			reg-shift = <2>;
			reg-io-width = <4>;
1335
			clocks = <&apb1_gates 21>;
1336
1337
1338
1339
1340
1341
			status = "disabled";
		};

		uart6: serial@01c29800 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c29800 0x400>;
1342
			interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
1343
1344
			reg-shift = <2>;
			reg-io-width = <4>;
1345
			clocks = <&apb1_gates 22>;
1346
1347
1348
1349
1350
1351
			status = "disabled";
		};

		uart7: serial@01c29c00 {
			compatible = "snps,dw-apb-uart";
			reg = <0x01c29c00 0x400>;
1352
			interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
1353
1354
			reg-shift = <2>;
			reg-io-width = <4>;
1355
			clocks = <&apb1_gates 23>;
1356
1357
1358
			status = "disabled";
		};

1359
		i2c0: i2c@01c2ac00 {
1360
1361
			compatible = "allwinner,sun7i-a20-i2c",
				     "allwinner,sun4i-a10-i2c";
1362
			reg = <0x01c2ac00 0x400>;
1363
			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
1364
1365
			clocks = <&apb1_gates 0>;
			status = "disabled";
1366
1367
			#address-cells = <1>;
			#size-cells = <0>;
1368
1369
1370
		};

		i2c1: i2c@01c2b000 {
1371
1372
			compatible = "allwinner,sun7i-a20-i2c",
				     "allwinner,sun4i-a10-i2c";
1373
			reg = <0x01c2b000 0x400>;
1374
			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;