Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / hisi-x5hd2.dtsi
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 = "simple-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 };