hisi-x5hd2.dtsi revision 284090
1/*
2 * Copyright (c) 2013-2014 Linaro Ltd.
3 * Copyright (c) 2013-2014 Hisilicon Limited.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * publishhed by the Free Software Foundation.
8 */
9
10#include "skeleton.dtsi"
11#include <dt-bindings/clock/hix5hd2-clock.h>
12
13/ {
14	aliases {
15		serial0 = &uart0;
16	};
17
18	gic: interrupt-controller@f8a01000 {
19		compatible = "arm,cortex-a9-gic";
20		#interrupt-cells = <3>;
21		#address-cells = <0>;
22		interrupt-controller;
23		/* gic dist base, gic cpu base */
24		reg = <0xf8a01000 0x1000>, <0xf8a00100 0x100>;
25	};
26
27	soc {
28		#address-cells = <1>;
29		#size-cells = <1>;
30		compatible = "simple-bus";
31		interrupt-parent = <&gic>;
32		ranges = <0 0xf8000000 0x8000000>;
33
34		amba {
35			#address-cells = <1>;
36			#size-cells = <1>;
37			compatible = "arm,amba-bus";
38			ranges;
39
40			timer0: timer@00002000 {
41				compatible = "arm,sp804", "arm,primecell";
42				reg = <0x00002000 0x1000>;
43				/* timer00 & timer01 */
44				interrupts = <0 24 4>;
45				clocks = <&clock HIX5HD2_FIXED_24M>;
46				status = "disabled";
47			};
48
49			timer1: timer@00a29000 {
50				/*
51				 * Only used in NORMAL state, not available ins
52				 * SLOW or DOZE state.
53				 * The rate is fixed in 24MHz.
54				 */
55				compatible = "arm,sp804", "arm,primecell";
56				reg = <0x00a29000 0x1000>;
57				/* timer10 & timer11 */
58				interrupts = <0 25 4>;
59				clocks = <&clock HIX5HD2_FIXED_24M>;
60				status = "disabled";
61			};
62
63			timer2: timer@00a2a000 {
64				compatible = "arm,sp804", "arm,primecell";
65				reg = <0x00a2a000 0x1000>;
66				/* timer20 & timer21 */
67				interrupts = <0 26 4>;
68				clocks = <&clock HIX5HD2_FIXED_24M>;
69				status = "disabled";
70			};
71
72			timer3: timer@00a2b000 {
73				compatible = "arm,sp804", "arm,primecell";
74				reg = <0x00a2b000 0x1000>;
75				/* timer30 & timer31 */
76				interrupts = <0 27 4>;
77				clocks = <&clock HIX5HD2_FIXED_24M>;
78				status = "disabled";
79			};
80
81			timer4: timer@00a81000 {
82				compatible = "arm,sp804", "arm,primecell";
83				reg = <0x00a81000 0x1000>;
84				/* timer30 & timer31 */
85				interrupts = <0 28 4>;
86				clocks = <&clock HIX5HD2_FIXED_24M>;
87				status = "disabled";
88			};
89
90			uart0: uart@00b00000 {
91				compatible = "arm,pl011", "arm,primecell";
92				reg = <0x00b00000 0x1000>;
93				interrupts = <0 49 4>;
94				clocks = <&clock HIX5HD2_FIXED_83M>;
95				clock-names = "apb_pclk";
96				status = "disabled";
97			};
98
99			uart1: uart@00006000 {
100				compatible = "arm,pl011", "arm,primecell";
101				reg = <0x00006000 0x1000>;
102				interrupts = <0 50 4>;
103				clocks = <&clock HIX5HD2_FIXED_83M>;
104				clock-names = "apb_pclk";
105				status = "disabled";
106			};
107
108			uart2: uart@00b02000 {
109				compatible = "arm,pl011", "arm,primecell";
110				reg = <0x00b02000 0x1000>;
111				interrupts = <0 51 4>;
112				clocks = <&clock HIX5HD2_FIXED_83M>;
113				clock-names = "apb_pclk";
114				status = "disabled";
115			};
116
117			uart3: uart@00b03000 {
118				compatible = "arm,pl011", "arm,primecell";
119				reg = <0x00b03000 0x1000>;
120				interrupts = <0 52 4>;
121				clocks = <&clock HIX5HD2_FIXED_83M>;
122				clock-names = "apb_pclk";
123				status = "disabled";
124			};
125
126			uart4: uart@00b04000 {
127				compatible = "arm,pl011", "arm,primecell";
128				reg = <0xb04000 0x1000>;
129				interrupts = <0 53 4>;
130				clocks = <&clock HIX5HD2_FIXED_83M>;
131				clock-names = "apb_pclk";
132				status = "disabled";
133			};
134
135			gpio0: gpio@b20000 {
136				compatible = "arm,pl061", "arm,primecell";
137				reg = <0xb20000 0x1000>;
138				interrupts = <0 108 0x4>;
139				gpio-controller;
140				#gpio-cells = <2>;
141				clocks = <&clock HIX5HD2_FIXED_100M>;
142				clock-names = "apb_pclk";
143				interrupt-controller;
144				#interrupt-cells = <2>;
145				status = "disabled";
146			};
147
148			gpio1: gpio@b21000 {
149				compatible = "arm,pl061", "arm,primecell";
150				reg = <0xb21000 0x1000>;
151				interrupts = <0 109 0x4>;
152				gpio-controller;
153				#gpio-cells = <2>;
154				clocks = <&clock HIX5HD2_FIXED_100M>;
155				clock-names = "apb_pclk";
156				interrupt-controller;
157				#interrupt-cells = <2>;
158				status = "disabled";
159			};
160
161			gpio2: gpio@b22000 {
162				compatible = "arm,pl061", "arm,primecell";
163				reg = <0xb22000 0x1000>;
164				interrupts = <0 110 0x4>;
165				gpio-controller;
166				#gpio-cells = <2>;
167				clocks = <&clock HIX5HD2_FIXED_100M>;
168				clock-names = "apb_pclk";
169				interrupt-controller;
170				#interrupt-cells = <2>;
171				status = "disabled";
172			};
173
174			gpio3: gpio@b23000 {
175				compatible = "arm,pl061", "arm,primecell";
176				reg = <0xb23000 0x1000>;
177				interrupts = <0 111 0x4>;
178				gpio-controller;
179				#gpio-cells = <2>;
180				clocks = <&clock HIX5HD2_FIXED_100M>;
181				clock-names = "apb_pclk";
182				interrupt-controller;
183				#interrupt-cells = <2>;
184				status = "disabled";
185			};
186
187			gpio4: gpio@b24000 {
188				compatible = "arm,pl061", "arm,primecell";
189				reg = <0xb24000 0x1000>;
190				interrupts = <0 112 0x4>;
191				gpio-controller;
192				#gpio-cells = <2>;
193				clocks = <&clock HIX5HD2_FIXED_100M>;
194				clock-names = "apb_pclk";
195				interrupt-controller;
196				#interrupt-cells = <2>;
197				status = "disabled";
198			};
199
200			gpio5: gpio@004000 {
201				compatible = "arm,pl061", "arm,primecell";
202				reg = <0x004000 0x1000>;
203				interrupts = <0 113 0x4>;
204				gpio-controller;
205				#gpio-cells = <2>;
206				clocks = <&clock HIX5HD2_FIXED_100M>;
207				clock-names = "apb_pclk";
208				interrupt-controller;
209				#interrupt-cells = <2>;
210				status = "disabled";
211			};
212
213			gpio6: gpio@b26000 {
214				compatible = "arm,pl061", "arm,primecell";
215				reg = <0xb26000 0x1000>;
216				interrupts = <0 114 0x4>;
217				gpio-controller;
218				#gpio-cells = <2>;
219				clocks = <&clock HIX5HD2_FIXED_100M>;
220				clock-names = "apb_pclk";
221				interrupt-controller;
222				#interrupt-cells = <2>;
223				status = "disabled";
224			};
225
226			gpio7: gpio@b27000 {
227				compatible = "arm,pl061", "arm,primecell";
228				reg = <0xb27000 0x1000>;
229				interrupts = <0 115 0x4>;
230				gpio-controller;
231				#gpio-cells = <2>;
232				clocks = <&clock HIX5HD2_FIXED_100M>;
233				clock-names = "apb_pclk";
234				interrupt-controller;
235				#interrupt-cells = <2>;
236				status = "disabled";
237			};
238
239			gpio8: gpio@b28000 {
240				compatible = "arm,pl061", "arm,primecell";
241				reg = <0xb28000 0x1000>;
242				interrupts = <0 116 0x4>;
243				gpio-controller;
244				#gpio-cells = <2>;
245				clocks = <&clock HIX5HD2_FIXED_100M>;
246				clock-names = "apb_pclk";
247				interrupt-controller;
248				#interrupt-cells = <2>;
249				status = "disabled";
250			};
251
252			gpio9: gpio@b29000 {
253				compatible = "arm,pl061", "arm,primecell";
254				reg = <0xb29000 0x1000>;
255				interrupts = <0 117 0x4>;
256				gpio-controller;
257				#gpio-cells = <2>;
258				clocks = <&clock HIX5HD2_FIXED_100M>;
259				clock-names = "apb_pclk";
260				interrupt-controller;
261				#interrupt-cells = <2>;
262				status = "disabled";
263			};
264
265			gpio10: gpio@b2a000 {
266				compatible = "arm,pl061", "arm,primecell";
267				reg = <0xb2a000 0x1000>;
268				interrupts = <0 118 0x4>;
269				gpio-controller;
270				#gpio-cells = <2>;
271				clocks = <&clock HIX5HD2_FIXED_100M>;
272				clock-names = "apb_pclk";
273				interrupt-controller;
274				#interrupt-cells = <2>;
275				status = "disabled";
276			};
277
278			gpio11: gpio@b2b000 {
279				compatible = "arm,pl061", "arm,primecell";
280				reg = <0xb2b000 0x1000>;
281				interrupts = <0 119 0x4>;
282				gpio-controller;
283				#gpio-cells = <2>;
284				clocks = <&clock HIX5HD2_FIXED_100M>;
285				clock-names = "apb_pclk";
286				interrupt-controller;
287				#interrupt-cells = <2>;
288				status = "disabled";
289			};
290
291			gpio12: gpio@b2c000 {
292				compatible = "arm,pl061", "arm,primecell";
293				reg = <0xb2c000 0x1000>;
294				interrupts = <0 120 0x4>;
295				gpio-controller;
296				#gpio-cells = <2>;
297				clocks = <&clock HIX5HD2_FIXED_100M>;
298				clock-names = "apb_pclk";
299				interrupt-controller;
300				#interrupt-cells = <2>;
301				status = "disabled";
302			};
303
304			gpio13: gpio@b2d000 {
305				compatible = "arm,pl061", "arm,primecell";
306				reg = <0xb2d000 0x1000>;
307				interrupts = <0 121 0x4>;
308				gpio-controller;
309				#gpio-cells = <2>;
310				clocks = <&clock HIX5HD2_FIXED_100M>;
311				clock-names = "apb_pclk";
312				interrupt-controller;
313				#interrupt-cells = <2>;
314				status = "disabled";
315			};
316
317			gpio14: gpio@b2e000 {
318				compatible = "arm,pl061", "arm,primecell";
319				reg = <0xb2e000 0x1000>;
320				interrupts = <0 122 0x4>;
321				gpio-controller;
322				#gpio-cells = <2>;
323				clocks = <&clock HIX5HD2_FIXED_100M>;
324				clock-names = "apb_pclk";
325				interrupt-controller;
326				#interrupt-cells = <2>;
327				status = "disabled";
328			};
329
330			gpio15: gpio@b2f000 {
331				compatible = "arm,pl061", "arm,primecell";
332				reg = <0xb2f000 0x1000>;
333				interrupts = <0 123 0x4>;
334				gpio-controller;
335				#gpio-cells = <2>;
336				clocks = <&clock HIX5HD2_FIXED_100M>;
337				clock-names = "apb_pclk";
338				interrupt-controller;
339				#interrupt-cells = <2>;
340				status = "disabled";
341			};
342
343			gpio16: gpio@b30000 {
344				compatible = "arm,pl061", "arm,primecell";
345				reg = <0xb30000 0x1000>;
346				interrupts = <0 124 0x4>;
347				gpio-controller;
348				#gpio-cells = <2>;
349				clocks = <&clock HIX5HD2_FIXED_100M>;
350				clock-names = "apb_pclk";
351				interrupt-controller;
352				#interrupt-cells = <2>;
353				status = "disabled";
354			};
355
356			gpio17: gpio@b31000 {
357				compatible = "arm,pl061", "arm,primecell";
358				reg = <0xb31000 0x1000>;
359				interrupts = <0 125 0x4>;
360				gpio-controller;
361				#gpio-cells = <2>;
362				clocks = <&clock HIX5HD2_FIXED_100M>;
363				clock-names = "apb_pclk";
364				interrupt-controller;
365				#interrupt-cells = <2>;
366				status = "disabled";
367			};
368
369			wdt0: watchdog@a2c000 {
370				compatible = "arm,sp805", "arm,primecell";
371				arm,primecell-periphid = <0x00141805>;
372				reg = <0xa2c000 0x1000>;
373				interrupts = <0 29 4>;
374				clocks = <&clock HIX5HD2_WDG0_RST>;
375				clock-names = "apb_pclk";
376			};
377		};
378
379		local_timer@00a00600 {
380			compatible = "arm,cortex-a9-twd-timer";
381			reg = <0x00a00600 0x20>;
382			interrupts = <1 13 0xf01>;
383		};
384
385		l2: l2-cache {
386			compatible = "arm,pl310-cache";
387			reg = <0x00a10000 0x100000>;
388			interrupts = <0 15 4>;
389			cache-unified;
390			cache-level = <2>;
391		};
392
393		sysctrl: system-controller@00000000 {
394			compatible = "hisilicon,sysctrl", "syscon";
395			reg = <0x00000000 0x1000>;
396		};
397
398		reboot {
399			compatible = "syscon-reboot";
400			regmap = <&sysctrl>;
401			offset = <0x4>;
402			mask = <0xdeadbeef>;
403		};
404
405		cpuctrl@00a22000 {
406			compatible = "hisilicon,cpuctrl";
407			#address-cells = <1>;
408			#size-cells = <1>;
409			reg = <0x00a22000 0x2000>;
410			ranges = <0 0x00a22000 0x2000>;
411
412			clock: clock@0 {
413				compatible = "hisilicon,hix5hd2-clock";
414				reg = <0 0x2000>;
415				#clock-cells = <1>;
416			};
417		};
418
419		/* unremovable emmc as mmcblk0 */
420		mmc: mmc@1830000 {
421			compatible = "snps,dw-mshc";
422			reg = <0x1830000 0x1000>;
423			interrupts = <0 35 4>;
424			clocks = <&clock HIX5HD2_MMC_CIU_RST>,
425				 <&clock HIX5HD2_MMC_BIU_CLK>;
426			clock-names = "ciu", "biu";
427		};
428
429		sd: mmc@1820000 {
430			compatible = "snps,dw-mshc";
431			reg = <0x1820000 0x1000>;
432			interrupts = <0 34 4>;
433			clocks = <&clock HIX5HD2_SD_CIU_RST>,
434				 <&clock HIX5HD2_SD_BIU_CLK>;
435			clock-names = "ciu","biu";
436		};
437
438		gmac0: ethernet@1840000 {
439			compatible = "hisilicon,hix5hd2-gmac";
440			reg = <0x1840000 0x1000>,<0x184300c 0x4>;
441			interrupts = <0 71 4>;
442			clocks = <&clock HIX5HD2_MAC0_CLK>;
443			status = "disabled";
444		};
445
446		gmac1: ethernet@1841000 {
447			compatible = "hisilicon,hix5hd2-gmac";
448			reg = <0x1841000 0x1000>,<0x1843010 0x4>;
449			interrupts = <0 72 4>;
450			clocks = <&clock HIX5HD2_MAC1_CLK>;
451			status = "disabled";
452		};
453
454		usb0: ehci@1890000 {
455			compatible = "generic-ehci";
456			reg = <0x1890000 0x1000>;
457			interrupts = <0 66 4>;
458			clocks = <&clock HIX5HD2_USB_CLK>;
459		};
460
461		usb1: ohci@1880000 {
462			compatible = "generic-ohci";
463			reg = <0x1880000 0x1000>;
464			interrupts = <0 67 4>;
465			clocks = <&clock HIX5HD2_USB_CLK>;
466		};
467
468		peripheral_ctrl: syscon@a20000 {
469			compatible = "syscon";
470			reg = <0xa20000 0x1000>;
471		};
472
473		sata_phy: phy@1900000 {
474			compatible = "hisilicon,hix5hd2-sata-phy";
475			reg = <0x1900000 0x10000>;
476			#phy-cells = <0>;
477			hisilicon,peripheral-syscon = <&peripheral_ctrl>;
478			hisilicon,power-reg = <0x8 10>;
479		};
480
481		ahci: sata@1900000 {
482			compatible = "hisilicon,hisi-ahci";
483			reg = <0x1900000 0x10000>;
484			interrupts = <0 70 4>;
485			clocks = <&clock HIX5HD2_SATA_CLK>;
486		};
487
488		ir: ir@001000 {
489			compatible = "hisilicon,hix5hd2-ir";
490			reg = <0x001000 0x1000>;
491			interrupts = <0 47 4>;
492			clocks = <&clock HIX5HD2_FIXED_24M>;
493			hisilicon,power-syscon = <&sysctrl>;
494		};
495
496		i2c0: i2c@b10000 {
497			compatible = "hisilicon,hix5hd2-i2c";
498			reg = <0xb10000 0x1000>;
499			interrupts = <0 38 4>;
500			clocks = <&clock HIX5HD2_I2C0_RST>;
501			#address-cells = <1>;
502			#size-cells = <0>;
503			status = "disabled";
504		};
505
506		i2c1: i2c@b11000 {
507			compatible = "hisilicon,hix5hd2-i2c";
508			reg = <0xb11000 0x1000>;
509			interrupts = <0 39 4>;
510			clocks = <&clock HIX5HD2_I2C1_RST>;
511			#address-cells = <1>;
512			#size-cells = <0>;
513			status = "disabled";
514		};
515
516		i2c2: i2c@b12000 {
517			compatible = "hisilicon,hix5hd2-i2c";
518			reg = <0xb12000 0x1000>;
519			interrupts = <0 40 4>;
520			clocks = <&clock HIX5HD2_I2C2_RST>;
521			#address-cells = <1>;
522			#size-cells = <0>;
523			status = "disabled";
524		};
525
526		i2c3: i2c@b13000 {
527			compatible = "hisilicon,hix5hd2-i2c";
528			reg = <0xb13000 0x1000>;
529			interrupts = <0 41 4>;
530			clocks = <&clock HIX5HD2_I2C3_RST>;
531			#address-cells = <1>;
532			#size-cells = <0>;
533			status = "disabled";
534		};
535
536		i2c4: i2c@b16000 {
537			compatible = "hisilicon,hix5hd2-i2c";
538			reg = <0xb16000 0x1000>;
539			interrupts = <0 43 4>;
540			clocks = <&clock HIX5HD2_I2C4_RST>;
541			#address-cells = <1>;
542			#size-cells = <0>;
543			status = "disabled";
544		};
545
546		i2c5: i2c@b17000 {
547			compatible = "hisilicon,hix5hd2-i2c";
548			reg = <0xb17000 0x1000>;
549			interrupts = <0 44 4>;
550			clocks = <&clock HIX5HD2_I2C5_RST>;
551			#address-cells = <1>;
552			#size-cells = <0>;
553			status = "disabled";
554		};
555	};
556};
557