ARM: dts: rk3288: limit vpu aclk freq to 400M
[firefly-linux-kernel-4.4.55.git] / arch / arm / boot / dts / rk3288.dtsi
1 /*
2  * This file is dual-licensed: you can use it either under the terms
3  * of the GPL or the X11 license, at your option. Note that this dual
4  * licensing only applies to this file, and not this project as a
5  * whole.
6  *
7  *  a) This file is free software; you can redistribute it and/or
8  *     modify it under the terms of the GNU General Public License as
9  *     published by the Free Software Foundation; either version 2 of the
10  *     License, or (at your option) any later version.
11  *
12  *     This file is distributed in the hope that it will be useful,
13  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *     GNU General Public License for more details.
16  *
17  * Or, alternatively,
18  *
19  *  b) Permission is hereby granted, free of charge, to any person
20  *     obtaining a copy of this software and associated documentation
21  *     files (the "Software"), to deal in the Software without
22  *     restriction, including without limitation the rights to use,
23  *     copy, modify, merge, publish, distribute, sublicense, and/or
24  *     sell copies of the Software, and to permit persons to whom the
25  *     Software is furnished to do so, subject to the following
26  *     conditions:
27  *
28  *     The above copyright notice and this permission notice shall be
29  *     included in all copies or substantial portions of the Software.
30  *
31  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
33  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
35  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
36  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
37  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
38  *     OTHER DEALINGS IN THE SOFTWARE.
39  */
40
41 #include <dt-bindings/gpio/gpio.h>
42 #include <dt-bindings/interrupt-controller/irq.h>
43 #include <dt-bindings/interrupt-controller/arm-gic.h>
44 #include <dt-bindings/pinctrl/rockchip.h>
45 #include <dt-bindings/clock/rk3288-cru.h>
46 #include <dt-bindings/thermal/thermal.h>
47 #include <dt-bindings/power/rk3288-power.h>
48 #include "skeleton.dtsi"
49
50 / {
51         compatible = "rockchip,rk3288";
52
53         interrupt-parent = <&gic>;
54
55         aliases {
56                 i2c0 = &i2c0;
57                 i2c1 = &i2c1;
58                 i2c2 = &i2c2;
59                 i2c3 = &i2c3;
60                 i2c4 = &i2c4;
61                 i2c5 = &i2c5;
62                 mshc0 = &emmc;
63                 mshc1 = &sdmmc;
64                 mshc2 = &sdio0;
65                 mshc3 = &sdio1;
66                 serial0 = &uart0;
67                 serial1 = &uart1;
68                 serial2 = &uart2;
69                 serial3 = &uart3;
70                 serial4 = &uart4;
71                 spi0 = &spi0;
72                 spi1 = &spi1;
73                 spi2 = &spi2;
74         };
75
76         arm-pmu {
77                 compatible = "arm,cortex-a12-pmu";
78                 interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
79                              <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
80                              <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
81                              <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
82                 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
83         };
84
85         cpus {
86                 #address-cells = <1>;
87                 #size-cells = <0>;
88                 enable-method = "rockchip,rk3066-smp";
89                 rockchip,pmu = <&pmu>;
90
91                 cpu0: cpu@500 {
92                         device_type = "cpu";
93                         compatible = "arm,cortex-a12";
94                         reg = <0x500>;
95                         resets = <&cru SRST_CORE0>;
96                         operating-points = <
97                                 /* KHz    uV */
98                                 1608000 1350000
99                                 1512000 1300000
100                                 1416000 1200000
101                                 1200000 1100000
102                                 1008000 1050000
103                                  816000 1000000
104                                  696000  950000
105                                  600000  900000
106                                  408000  900000
107                                  312000  900000
108                                  216000  900000
109                                  126000  900000
110                         >;
111                         #cooling-cells = <2>; /* min followed by max */
112                         clock-latency = <40000>;
113                         clocks = <&cru ARMCLK>;
114                 };
115                 cpu1: cpu@501 {
116                         device_type = "cpu";
117                         compatible = "arm,cortex-a12";
118                         reg = <0x501>;
119                         resets = <&cru SRST_CORE1>;
120                 };
121                 cpu2: cpu@502 {
122                         device_type = "cpu";
123                         compatible = "arm,cortex-a12";
124                         reg = <0x502>;
125                         resets = <&cru SRST_CORE2>;
126                 };
127                 cpu3: cpu@503 {
128                         device_type = "cpu";
129                         compatible = "arm,cortex-a12";
130                         reg = <0x503>;
131                         resets = <&cru SRST_CORE3>;
132                 };
133         };
134
135         amba {
136                 compatible = "arm,amba-bus";
137                 #address-cells = <1>;
138                 #size-cells = <1>;
139                 ranges;
140
141                 dmac_peri: dma-controller@ff250000 {
142                         compatible = "arm,pl330", "arm,primecell";
143                         reg = <0xff250000 0x4000>;
144                         interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
145                                      <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
146                         #dma-cells = <1>;
147                         arm,pl330-broken-no-flushp;
148                         peripherals-req-type-burst;
149                         clocks = <&cru ACLK_DMAC2>;
150                         clock-names = "apb_pclk";
151                 };
152
153                 dmac_bus_ns: dma-controller@ff600000 {
154                         compatible = "arm,pl330", "arm,primecell";
155                         reg = <0xff600000 0x4000>;
156                         interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
157                                      <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
158                         #dma-cells = <1>;
159                         arm,pl330-broken-no-flushp;
160                         peripherals-req-type-burst;
161                         clocks = <&cru ACLK_DMAC1>;
162                         clock-names = "apb_pclk";
163                         status = "disabled";
164                 };
165
166                 dmac_bus_s: dma-controller@ffb20000 {
167                         compatible = "arm,pl330", "arm,primecell";
168                         reg = <0xffb20000 0x4000>;
169                         interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
170                                      <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
171                         #dma-cells = <1>;
172                         arm,pl330-broken-no-flushp;
173                         peripherals-req-type-burst;
174                         clocks = <&cru ACLK_DMAC1>;
175                         clock-names = "apb_pclk";
176                 };
177         };
178
179         reserved-memory {
180                 #address-cells = <1>;
181                 #size-cells = <1>;
182                 ranges;
183
184                 /*
185                  * The rk3288 cannot use the memory area above 0xfe000000
186                  * for dma operations for some reason. While there is
187                  * probably a better solution available somewhere, we
188                  * haven't found it yet and while devices with 2GB of ram
189                  * are not affected, this issue prevents 4GB from booting.
190                  * So to make these devices at least bootable, block
191                  * this area for the time being until the real solution
192                  * is found.
193                  */
194                 dma-unusable@fe000000 {
195                         reg = <0xfe000000 0x1000000>;
196                 };
197         };
198
199         xin24m: oscillator {
200                 compatible = "fixed-clock";
201                 clock-frequency = <24000000>;
202                 clock-output-names = "xin24m";
203                 #clock-cells = <0>;
204         };
205
206         edp_phy: edp-phy {
207                 compatible = "rockchip,rk3288-dp-phy";
208                 clocks = <&cru SCLK_EDP_24M>;
209                 clock-names = "24m";
210                 rockchip,grf = <&grf>;
211                 #phy-cells = <0>;
212                 status = "disabled";
213         };
214
215         timer {
216                 compatible = "arm,armv7-timer";
217                 arm,cpu-registers-not-fw-configured;
218                 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
219                              <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
220                              <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
221                              <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
222                 clock-frequency = <24000000>;
223         };
224
225         timer: timer@ff810000 {
226                 compatible = "rockchip,rk3288-timer";
227                 reg = <0xff810000 0x20>;
228                 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
229                 clocks = <&xin24m>, <&cru PCLK_TIMER>;
230                 clock-names = "timer", "pclk";
231         };
232
233         display-subsystem {
234                 compatible = "rockchip,display-subsystem";
235                 ports = <&vopl_out>, <&vopb_out>;
236         };
237
238         sdmmc: dwmmc@ff0c0000 {
239                 compatible = "rockchip,rk3288-dw-mshc";
240                 clock-freq-min-max = <400000 150000000>;
241                 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
242                          <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
243                 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
244                 fifo-depth = <0x100>;
245                 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
246                 reg = <0xff0c0000 0x4000>;
247                 status = "disabled";
248         };
249
250         sdio0: dwmmc@ff0d0000 {
251                 compatible = "rockchip,rk3288-dw-mshc";
252                 clock-freq-min-max = <400000 150000000>;
253                 clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
254                          <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
255                 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
256                 fifo-depth = <0x100>;
257                 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
258                 reg = <0xff0d0000 0x4000>;
259                 status = "disabled";
260         };
261
262         sdio1: dwmmc@ff0e0000 {
263                 compatible = "rockchip,rk3288-dw-mshc";
264                 clock-freq-min-max = <400000 150000000>;
265                 clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
266                          <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
267                 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
268                 fifo-depth = <0x100>;
269                 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
270                 reg = <0xff0e0000 0x4000>;
271                 status = "disabled";
272         };
273
274         emmc: dwmmc@ff0f0000 {
275                 compatible = "rockchip,rk3288-dw-mshc";
276                 clock-freq-min-max = <400000 150000000>;
277                 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
278                          <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
279                 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
280                 fifo-depth = <0x100>;
281                 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
282                 reg = <0xff0f0000 0x4000>;
283                 status = "disabled";
284                 supports-emmc;
285         };
286
287         saradc: saradc@ff100000 {
288                 compatible = "rockchip,saradc";
289                 reg = <0xff100000 0x100>;
290                 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
291                 #io-channel-cells = <1>;
292                 clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
293                 clock-names = "saradc", "apb_pclk";
294                 status = "disabled";
295         };
296
297         spi0: spi@ff110000 {
298                 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
299                 clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
300                 clock-names = "spiclk", "apb_pclk";
301                 dmas = <&dmac_peri 11>, <&dmac_peri 12>;
302                 dma-names = "tx", "rx";
303                 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
304                 pinctrl-names = "default";
305                 pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
306                 reg = <0xff110000 0x1000>;
307                 #address-cells = <1>;
308                 #size-cells = <0>;
309                 status = "disabled";
310         };
311
312         spi1: spi@ff120000 {
313                 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
314                 clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
315                 clock-names = "spiclk", "apb_pclk";
316                 dmas = <&dmac_peri 13>, <&dmac_peri 14>;
317                 dma-names = "tx", "rx";
318                 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
319                 pinctrl-names = "default";
320                 pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
321                 reg = <0xff120000 0x1000>;
322                 #address-cells = <1>;
323                 #size-cells = <0>;
324                 status = "disabled";
325         };
326
327         spi2: spi@ff130000 {
328                 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
329                 clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
330                 clock-names = "spiclk", "apb_pclk";
331                 dmas = <&dmac_peri 15>, <&dmac_peri 16>;
332                 dma-names = "tx", "rx";
333                 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
334                 pinctrl-names = "default";
335                 pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
336                 reg = <0xff130000 0x1000>;
337                 #address-cells = <1>;
338                 #size-cells = <0>;
339                 status = "disabled";
340         };
341
342         i2c1: i2c@ff140000 {
343                 compatible = "rockchip,rk3288-i2c";
344                 reg = <0xff140000 0x1000>;
345                 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
346                 #address-cells = <1>;
347                 #size-cells = <0>;
348                 clock-names = "i2c";
349                 clocks = <&cru PCLK_I2C1>;
350                 pinctrl-names = "default";
351                 pinctrl-0 = <&i2c1_xfer>;
352                 status = "disabled";
353         };
354
355         i2c3: i2c@ff150000 {
356                 compatible = "rockchip,rk3288-i2c";
357                 reg = <0xff150000 0x1000>;
358                 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
359                 #address-cells = <1>;
360                 #size-cells = <0>;
361                 clock-names = "i2c";
362                 clocks = <&cru PCLK_I2C3>;
363                 pinctrl-names = "default";
364                 pinctrl-0 = <&i2c3_xfer>;
365                 status = "disabled";
366         };
367
368         i2c4: i2c@ff160000 {
369                 compatible = "rockchip,rk3288-i2c";
370                 reg = <0xff160000 0x1000>;
371                 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
372                 #address-cells = <1>;
373                 #size-cells = <0>;
374                 clock-names = "i2c";
375                 clocks = <&cru PCLK_I2C4>;
376                 pinctrl-names = "default";
377                 pinctrl-0 = <&i2c4_xfer>;
378                 status = "disabled";
379         };
380
381         i2c5: i2c@ff170000 {
382                 compatible = "rockchip,rk3288-i2c";
383                 reg = <0xff170000 0x1000>;
384                 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
385                 #address-cells = <1>;
386                 #size-cells = <0>;
387                 clock-names = "i2c";
388                 clocks = <&cru PCLK_I2C5>;
389                 pinctrl-names = "default";
390                 pinctrl-0 = <&i2c5_xfer>;
391                 status = "disabled";
392         };
393
394         uart0: serial@ff180000 {
395                 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
396                 reg = <0xff180000 0x100>;
397                 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
398                 reg-shift = <2>;
399                 reg-io-width = <4>;
400                 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
401                 clock-names = "baudclk", "apb_pclk";
402                 pinctrl-names = "default";
403                 pinctrl-0 = <&uart0_xfer>;
404                 status = "disabled";
405         };
406
407         uart1: serial@ff190000 {
408                 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
409                 reg = <0xff190000 0x100>;
410                 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
411                 reg-shift = <2>;
412                 reg-io-width = <4>;
413                 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
414                 clock-names = "baudclk", "apb_pclk";
415                 pinctrl-names = "default";
416                 pinctrl-0 = <&uart1_xfer>;
417                 status = "disabled";
418         };
419
420         uart2: serial@ff690000 {
421                 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
422                 reg = <0xff690000 0x100>;
423                 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
424                 reg-shift = <2>;
425                 reg-io-width = <4>;
426                 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
427                 clock-names = "baudclk", "apb_pclk";
428                 pinctrl-names = "default";
429                 pinctrl-0 = <&uart2_xfer>;
430                 status = "disabled";
431         };
432
433         uart3: serial@ff1b0000 {
434                 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
435                 reg = <0xff1b0000 0x100>;
436                 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
437                 reg-shift = <2>;
438                 reg-io-width = <4>;
439                 clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
440                 clock-names = "baudclk", "apb_pclk";
441                 pinctrl-names = "default";
442                 pinctrl-0 = <&uart3_xfer>;
443                 status = "disabled";
444         };
445
446         uart4: serial@ff1c0000 {
447                 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
448                 reg = <0xff1c0000 0x100>;
449                 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
450                 reg-shift = <2>;
451                 reg-io-width = <4>;
452                 clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
453                 clock-names = "baudclk", "apb_pclk";
454                 pinctrl-names = "default";
455                 pinctrl-0 = <&uart4_xfer>;
456                 status = "disabled";
457         };
458
459         thermal-zones {
460                 #include "rk3288-thermal.dtsi"
461         };
462
463         tsadc: tsadc@ff280000 {
464                 compatible = "rockchip,rk3288-tsadc";
465                 reg = <0xff280000 0x100>;
466                 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
467                 clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
468                 clock-names = "tsadc", "apb_pclk";
469                 resets = <&cru SRST_TSADC>;
470                 reset-names = "tsadc-apb";
471                 pinctrl-names = "init", "default", "sleep";
472                 pinctrl-0 = <&otp_gpio>;
473                 pinctrl-1 = <&otp_out>;
474                 pinctrl-2 = <&otp_gpio>;
475                 #thermal-sensor-cells = <1>;
476                 rockchip,hw-tshut-temp = <95000>;
477                 status = "disabled";
478         };
479
480         gmac: ethernet@ff290000 {
481                 compatible = "rockchip,rk3288-gmac";
482                 reg = <0xff290000 0x10000>;
483                 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
484                 interrupt-names = "macirq";
485                 rockchip,grf = <&grf>;
486                 clocks = <&cru SCLK_MAC>,
487                         <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
488                         <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
489                         <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
490                 clock-names = "stmmaceth",
491                         "mac_clk_rx", "mac_clk_tx",
492                         "clk_mac_ref", "clk_mac_refout",
493                         "aclk_mac", "pclk_mac";
494                 resets = <&cru SRST_MAC>;
495                 reset-names = "stmmaceth";
496                 status = "disabled";
497         };
498
499         usb_host0_ehci: usb@ff500000 {
500                 compatible = "generic-ehci";
501                 reg = <0xff500000 0x100>;
502                 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
503                 clocks = <&cru HCLK_USBHOST0>;
504                 clock-names = "usbhost";
505                 phys = <&usbphy1>;
506                 phy-names = "usb";
507                 status = "disabled";
508         };
509
510         /* NOTE: ohci@ff520000 doesn't actually work on hardware */
511
512         usb_host1: usb@ff540000 {
513                 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
514                                 "snps,dwc2";
515                 reg = <0xff540000 0x40000>;
516                 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
517                 clocks = <&cru HCLK_USBHOST1>;
518                 clock-names = "otg";
519                 dr_mode = "host";
520                 phys = <&usbphy2>;
521                 phy-names = "usb2-phy";
522                 status = "disabled";
523         };
524
525         usb_otg: usb@ff580000 {
526                 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
527                                 "snps,dwc2";
528                 reg = <0xff580000 0x40000>;
529                 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
530                 clocks = <&cru HCLK_OTG0>;
531                 clock-names = "otg";
532                 dr_mode = "otg";
533                 g-np-tx-fifo-size = <16>;
534                 g-rx-fifo-size = <275>;
535                 g-tx-fifo-size = <256 128 128 64 64 32>;
536                 g-use-dma;
537                 phys = <&usbphy0>;
538                 phy-names = "usb2-phy";
539                 status = "disabled";
540         };
541
542         usb_hsic: usb@ff5c0000 {
543                 compatible = "generic-ehci";
544                 reg = <0xff5c0000 0x100>;
545                 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
546                 clocks = <&cru HCLK_HSIC>;
547                 clock-names = "usbhost";
548                 status = "disabled";
549         };
550
551         i2c0: i2c@ff650000 {
552                 compatible = "rockchip,rk3288-i2c";
553                 reg = <0xff650000 0x1000>;
554                 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
555                 #address-cells = <1>;
556                 #size-cells = <0>;
557                 clock-names = "i2c";
558                 clocks = <&cru PCLK_I2C0>;
559                 pinctrl-names = "default";
560                 pinctrl-0 = <&i2c0_xfer>;
561                 status = "disabled";
562         };
563
564         i2c2: i2c@ff660000 {
565                 compatible = "rockchip,rk3288-i2c";
566                 reg = <0xff660000 0x1000>;
567                 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
568                 #address-cells = <1>;
569                 #size-cells = <0>;
570                 clock-names = "i2c";
571                 clocks = <&cru PCLK_I2C2>;
572                 pinctrl-names = "default";
573                 pinctrl-0 = <&i2c2_xfer>;
574                 status = "disabled";
575         };
576
577         pwm0: pwm@ff680000 {
578                 compatible = "rockchip,rk3288-pwm";
579                 reg = <0xff680000 0x10>;
580                 #pwm-cells = <3>;
581                 pinctrl-names = "default";
582                 pinctrl-0 = <&pwm0_pin>;
583                 clocks = <&cru PCLK_PWM>;
584                 clock-names = "pwm";
585                 status = "disabled";
586         };
587
588         pwm1: pwm@ff680010 {
589                 compatible = "rockchip,rk3288-pwm";
590                 reg = <0xff680010 0x10>;
591                 #pwm-cells = <3>;
592                 pinctrl-names = "default";
593                 pinctrl-0 = <&pwm1_pin>;
594                 clocks = <&cru PCLK_PWM>;
595                 clock-names = "pwm";
596                 status = "disabled";
597         };
598
599         pwm2: pwm@ff680020 {
600                 compatible = "rockchip,rk3288-pwm";
601                 reg = <0xff680020 0x10>;
602                 #pwm-cells = <3>;
603                 pinctrl-names = "default";
604                 pinctrl-0 = <&pwm2_pin>;
605                 clocks = <&cru PCLK_PWM>;
606                 clock-names = "pwm";
607                 status = "disabled";
608         };
609
610         pwm3: pwm@ff680030 {
611                 compatible = "rockchip,rk3288-pwm";
612                 reg = <0xff680030 0x10>;
613                 #pwm-cells = <2>;
614                 pinctrl-names = "default";
615                 pinctrl-0 = <&pwm3_pin>;
616                 clocks = <&cru PCLK_PWM>;
617                 clock-names = "pwm";
618                 status = "disabled";
619         };
620
621         bus_intmem@ff700000 {
622                 compatible = "mmio-sram";
623                 reg = <0xff700000 0x18000>;
624                 #address-cells = <1>;
625                 #size-cells = <1>;
626                 ranges = <0 0xff700000 0x18000>;
627                 smp-sram@0 {
628                         compatible = "rockchip,rk3066-smp-sram";
629                         reg = <0x00 0x10>;
630                 };
631         };
632
633         sram@ff720000 {
634                 compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
635                 reg = <0xff720000 0x1000>;
636         };
637
638         pmu: power-management@ff730000 {
639                 compatible = "rockchip,rk3288-pmu", "syscon", "simple-mfd";
640                 reg = <0xff730000 0x100>;
641
642                 power: power-controller {
643                         compatible = "rockchip,rk3288-power-controller";
644                         #power-domain-cells = <1>;
645                         #address-cells = <1>;
646                         #size-cells = <0>;
647
648                         /*
649                          * Note: Although SCLK_* are the working clocks
650                          * of device without including on the NOC, needed for
651                          * synchronous reset.
652                          *
653                          * The clocks on the which NOC:
654                          * ACLK_IEP/ACLK_VIP/ACLK_VOP0 are on ACLK_VIO0_NIU.
655                          * ACLK_ISP/ACLK_VOP1 are on ACLK_VIO1_NIU.
656                          * ACLK_RGA is on ACLK_RGA_NIU.
657                          * The others (HCLK_*,PLCK_*) are on HCLK_VIO_NIU.
658                          *
659                          * Which clock are device clocks:
660                          *      clocks          devices
661                          *      *_IEP           IEP:Image Enhancement Processor
662                          *      *_ISP           ISP:Image Signal Processing
663                          *      *_VIP           VIP:Video Input Processor
664                          *      *_VOP*          VOP:Visual Output Processor
665                          *      *_RGA           RGA
666                          *      *_EDP*          EDP
667                          *      *_LVDS_*        LVDS
668                          *      *_HDMI          HDMI
669                          *      *_MIPI_*        MIPI
670                          */
671                         pd_vio {
672                                 reg = <RK3288_PD_VIO>;
673                                 clocks = <&cru ACLK_IEP>,
674                                          <&cru ACLK_ISP>,
675                                          <&cru ACLK_RGA>,
676                                          <&cru ACLK_VIP>,
677                                          <&cru ACLK_VOP0>,
678                                          <&cru ACLK_VOP1>,
679                                          <&cru DCLK_VOP0>,
680                                          <&cru DCLK_VOP1>,
681                                          <&cru HCLK_IEP>,
682                                          <&cru HCLK_ISP>,
683                                          <&cru HCLK_RGA>,
684                                          <&cru HCLK_VIP>,
685                                          <&cru HCLK_VOP0>,
686                                          <&cru HCLK_VOP1>,
687                                          <&cru PCLK_EDP_CTRL>,
688                                          <&cru PCLK_HDMI_CTRL>,
689                                          <&cru PCLK_LVDS_PHY>,
690                                          <&cru PCLK_MIPI_CSI>,
691                                          <&cru PCLK_MIPI_DSI0>,
692                                          <&cru PCLK_MIPI_DSI1>,
693                                          <&cru SCLK_EDP_24M>,
694                                          <&cru SCLK_EDP>,
695                                          <&cru SCLK_ISP_JPE>,
696                                          <&cru SCLK_ISP>,
697                                          <&cru SCLK_RGA>;
698                         };
699
700                         /*
701                          * Note: The following 3 are HEVC(H.265) clocks,
702                          * and on the ACLK_HEVC_NIU (NOC).
703                          */
704                         pd_hevc {
705                                 reg = <RK3288_PD_HEVC>;
706                                 clocks = <&cru ACLK_HEVC>,
707                                          <&cru SCLK_HEVC_CABAC>,
708                                          <&cru SCLK_HEVC_CORE>;
709                         };
710
711                         /*
712                          * Note: ACLK_VCODEC/HCLK_VCODEC are VCODEC
713                          * (video endecoder & decoder) clocks that on the
714                          * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
715                          */
716                         pd_video {
717                                 reg = <RK3288_PD_VIDEO>;
718                                 clocks = <&cru ACLK_VCODEC>,
719                                          <&cru HCLK_VCODEC>;
720                         };
721
722                         /*
723                          * Note: ACLK_GPU is the GPU clock,
724                          * and on the ACLK_GPU_NIU (NOC).
725                          */
726                         pd_gpu {
727                                 reg = <RK3288_PD_GPU>;
728                                 clocks = <&cru ACLK_GPU>;
729                         };
730                 };
731         };
732
733         sgrf: syscon@ff740000 {
734                 compatible = "rockchip,rk3288-sgrf", "syscon";
735                 reg = <0xff740000 0x1000>;
736         };
737
738         cru: clock-controller@ff760000 {
739                 compatible = "rockchip,rk3288-cru";
740                 reg = <0xff760000 0x1000>;
741                 rockchip,grf = <&grf>;
742                 #clock-cells = <1>;
743                 #reset-cells = <1>;
744                 assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>,
745                                   <&cru PLL_GPLL>, <&cru PLL_CPLL>,
746                                   <&cru PLL_NPLL>, <&cru ACLK_CPU>,
747                                   <&cru HCLK_CPU>, <&cru PCLK_CPU>,
748                                   <&cru ACLK_PERI>, <&cru HCLK_PERI>,
749                                   <&cru PCLK_PERI>;
750                 assigned-clock-rates = <0>, <0>,
751                                        <594000000>, <400000000>,
752                                        <500000000>, <300000000>,
753                                        <150000000>, <75000000>,
754                                        <300000000>, <150000000>,
755                                        <75000000>;
756                 assigned-clock-parents = <&cru PLL_NPLL>, <&cru PLL_GPLL>;
757         };
758
759         grf: syscon@ff770000 {
760                 compatible = "rockchip,rk3288-grf", "syscon";
761                 reg = <0xff770000 0x1000>;
762         };
763
764         wdt: watchdog@ff800000 {
765                 compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
766                 reg = <0xff800000 0x100>;
767                 clocks = <&cru PCLK_WDT>;
768                 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
769                 status = "disabled";
770         };
771
772         spdif: sound@ff88b0000 {
773                 compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
774                 reg = <0xff8b0000 0x10000>;
775                 #sound-dai-cells = <0>;
776                 clock-names = "hclk", "mclk";
777                 clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>;
778                 dmas = <&dmac_bus_s 3>;
779                 dma-names = "tx";
780                 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
781                 pinctrl-names = "default";
782                 pinctrl-0 = <&spdif_tx>;
783                 rockchip,grf = <&grf>;
784                 status = "disabled";
785         };
786
787         i2s: i2s@ff890000 {
788                 compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
789                 reg = <0xff890000 0x10000>;
790                 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
791                 #address-cells = <1>;
792                 #size-cells = <0>;
793                 dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
794                 dma-names = "tx", "rx";
795                 clock-names = "i2s_hclk", "i2s_clk";
796                 clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
797                 pinctrl-names = "default";
798                 pinctrl-0 = <&i2s0_bus>;
799                 status = "disabled";
800         };
801
802         vopb: vop@ff930000 {
803                 compatible = "rockchip,rk3288-vop";
804                 reg = <0xff930000 0x19c>;
805                 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
806                 clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
807                 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
808                 power-domains = <&power RK3288_PD_VIO>;
809                 resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
810                 reset-names = "axi", "ahb", "dclk";
811                 iommus = <&vopb_mmu>;
812                 status = "disabled";
813
814                 vopb_out: port {
815                         #address-cells = <1>;
816                         #size-cells = <0>;
817
818                         vopb_out_hdmi: endpoint@0 {
819                                 reg = <0>;
820                                 remote-endpoint = <&hdmi_in_vopb>;
821                         };
822
823                         vopb_out_edp: endpoint@1 {
824                                 reg = <1>;
825                                 remote-endpoint = <&edp_in_vopb>;
826                         };
827
828                         vopb_out_mipi: endpoint@2 {
829                                 reg = <2>;
830                                 remote-endpoint = <&mipi_in_vopb>;
831                         };
832
833                         vopb_out_lvds: endpoint@3 {
834                                 reg = <3>;
835                                 remote-endpoint = <&lvds_in_vopb>;
836                         };
837                 };
838         };
839
840         vopb_mmu: iommu@ff930300 {
841                 compatible = "rockchip,iommu";
842                 reg = <0xff930300 0x100>;
843                 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
844                 interrupt-names = "vopb_mmu";
845                 power-domains = <&power RK3288_PD_VIO>;
846                 #iommu-cells = <0>;
847                 status = "disabled";
848         };
849
850         vopl: vop@ff940000 {
851                 compatible = "rockchip,rk3288-vop";
852                 reg = <0xff940000 0x19c>;
853                 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
854                 clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
855                 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
856                 power-domains = <&power RK3288_PD_VIO>;
857                 resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
858                 reset-names = "axi", "ahb", "dclk";
859                 iommus = <&vopl_mmu>;
860                 status = "disabled";
861
862                 vopl_out: port {
863                         #address-cells = <1>;
864                         #size-cells = <0>;
865
866                         vopl_out_hdmi: endpoint@0 {
867                                 reg = <0>;
868                                 remote-endpoint = <&hdmi_in_vopl>;
869                         };
870
871                         vopl_out_edp: endpoint@1 {
872                                 reg = <1>;
873                                 remote-endpoint = <&edp_in_vopl>;
874                         };
875
876                         vopl_out_mipi: endpoint@2 {
877                                 reg = <2>;
878                                 remote-endpoint = <&mipi_in_vopl>;
879                         };
880
881                         vopl_out_lvds: endpoint@3 {
882                                 reg = <3>;
883                                 remote-endpoint = <&lvds_in_vopl>;
884                         };
885
886                 };
887         };
888
889         vopl_mmu: iommu@ff940300 {
890                 compatible = "rockchip,iommu";
891                 reg = <0xff940300 0x100>;
892                 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
893                 interrupt-names = "vopl_mmu";
894                 power-domains = <&power RK3288_PD_VIO>;
895                 #iommu-cells = <0>;
896                 status = "disabled";
897         };
898
899         mipi_dsi: mipi@ff960000 {
900                 compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
901                 reg = <0xff960000 0x4000>;
902                 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
903                 clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>;
904                 clock-names = "ref", "pclk";
905                 rockchip,grf = <&grf>;
906                 #address-cells = <1>;
907                 #size-cells = <0>;
908                 status = "disabled";
909
910                 ports {
911                         #address-cells = <1>;
912                         #size-cells = <0>;
913                         reg = <1>;
914
915                         mipi_in: port {
916                                 #address-cells = <1>;
917                                 #size-cells = <0>;
918                                 mipi_in_vopb: endpoint@0 {
919                                         reg = <0>;
920                                         remote-endpoint = <&vopb_out_mipi>;
921                                 };
922                                 mipi_in_vopl: endpoint@1 {
923                                         reg = <1>;
924                                         remote-endpoint = <&vopl_out_mipi>;
925                                 };
926                         };
927                 };
928         };
929
930         edp: dp@ff970000 {
931                 compatible = "rockchip,rk3288-dp";
932                 reg = <0xff970000 0x4000>;
933                 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
934                 clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>;
935                 clock-names = "dp", "pclk";
936                 phys = <&edp_phy>;
937                 phy-names = "dp";
938                 resets = <&cru SRST_EDP>;
939                 reset-names = "dp";
940                 rockchip,grf = <&grf>;
941                 status = "disabled";
942
943                 ports {
944                         #address-cells = <1>;
945                         #size-cells = <0>;
946                         edp_in: port@0 {
947                                 reg = <0>;
948                                 #address-cells = <1>;
949                                 #size-cells = <0>;
950                                 edp_in_vopb: endpoint@0 {
951                                         reg = <0>;
952                                         remote-endpoint = <&vopb_out_edp>;
953                                 };
954                                 edp_in_vopl: endpoint@1 {
955                                         reg = <1>;
956                                         remote-endpoint = <&vopl_out_edp>;
957                                 };
958                         };
959                 };
960         };
961
962         lvds: lvds@ff96c000 {
963                 compatible = "rockchip,rk3288-lvds";
964                 reg = <0xff96c000 0x4000>;
965                 clocks = <&cru PCLK_LVDS_PHY>;
966                 clock-names = "pclk_lvds";
967                 pinctrl-names = "default";
968                 pinctrl-0 = <&lcdc0_ctl>;
969                 power-domains = <&power RK3288_PD_VIO>;
970                 rockchip,grf = <&grf>;
971                 status = "disabled";
972
973                 ports {
974                         #address-cells = <1>;
975                         #size-cells = <0>;
976
977                         lvds_in: port@0 {
978                                 reg = <0>;
979
980                                 #address-cells = <1>;
981                                 #size-cells = <0>;
982
983                                 lvds_in_vopb: endpoint@0 {
984                                         reg = <0>;
985                                         remote-endpoint = <&vopb_out_lvds>;
986                                 };
987                                 lvds_in_vopl: endpoint@1 {
988                                         reg = <1>;
989                                         remote-endpoint = <&vopl_out_lvds>;
990                                 };
991                         };
992                 };
993         };
994
995         hdmi: hdmi@ff980000 {
996                 compatible = "rockchip,rk3288-dw-hdmi";
997                 reg = <0xff980000 0x20000>;
998                 reg-io-width = <4>;
999                 rockchip,grf = <&grf>;
1000                 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
1001                 clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
1002                 clock-names = "iahb", "isfr";
1003                 power-domains = <&power RK3288_PD_VIO>;
1004                 status = "disabled";
1005
1006                 ports {
1007                         hdmi_in: port {
1008                                 #address-cells = <1>;
1009                                 #size-cells = <0>;
1010                                 hdmi_in_vopb: endpoint@0 {
1011                                         reg = <0>;
1012                                         remote-endpoint = <&vopb_out_hdmi>;
1013                                 };
1014                                 hdmi_in_vopl: endpoint@1 {
1015                                         reg = <1>;
1016                                         remote-endpoint = <&vopl_out_hdmi>;
1017                                 };
1018                         };
1019                 };
1020         };
1021
1022         gpu: gpu@ffa30000 {
1023                 compatible = "arm,malit764",
1024                              "arm,malit76x",
1025                              "arm,malit7xx",
1026                              "arm,mali-midgard";
1027                 reg = <0xffa30000 0x10000>;
1028                 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
1029                              <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
1030                              <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1031                 interrupt-names = "JOB", "MMU", "GPU";
1032                 clocks = <&cru ACLK_GPU>;
1033                 clock-names = "clk_mali";
1034                 operating-points = <
1035                         /* KHz uV */
1036                         600000 1250000
1037                         /* 500000 1200000 - See crosbug.com/p/33857 */
1038                         400000 1100000
1039                         300000 1000000
1040                         200000 950000
1041                         100000 950000
1042                 >;
1043                 #cooling-cells = <2>; /* min followed by max */
1044                 power-domains = <&power RK3288_PD_GPU>;
1045                 status = "disabled";
1046         };
1047
1048         vpu: video-codec@ff9a0000 {
1049                 compatible = "rockchip,rk3288-vpu";
1050                 reg = <0xff9a0000 0x800>;
1051                 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
1052                                 <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
1053                 interrupt-names = "vepu", "vdpu";
1054                 clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
1055                 clock-names = "aclk", "hclk";
1056                 power-domains = <&power RK3288_PD_VIDEO>;
1057                 iommus = <&vpu_mmu>;
1058                 assigned-clocks = <&cru ACLK_VCODEC>;
1059                 assigned-clock-rates = <400000000>;
1060                 status = "disabled";
1061         };
1062
1063         vpu_mmu: iommu@ff9a0800 {
1064                 compatible = "rockchip,iommu";
1065                 reg = <0xff9a0800 0x100>;
1066                 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
1067                 interrupt-names = "vpu_mmu";
1068                 power-domains = <&power RK3288_PD_VIDEO>;
1069                 #iommu-cells = <0>;
1070         };
1071
1072         gic: interrupt-controller@ffc01000 {
1073                 compatible = "arm,gic-400";
1074                 interrupt-controller;
1075                 #interrupt-cells = <3>;
1076                 #address-cells = <0>;
1077
1078                 reg = <0xffc01000 0x1000>,
1079                       <0xffc02000 0x1000>,
1080                       <0xffc04000 0x2000>,
1081                       <0xffc06000 0x2000>;
1082                 interrupts = <GIC_PPI 9 0xf04>;
1083         };
1084
1085         usbphy: phy {
1086                 compatible = "rockchip,rk3288-usb-phy";
1087                 rockchip,grf = <&grf>;
1088                 #address-cells = <1>;
1089                 #size-cells = <0>;
1090                 status = "disabled";
1091
1092                 usbphy0: usb-phy0 {
1093                         #phy-cells = <0>;
1094                         reg = <0x320>;
1095                         clocks = <&cru SCLK_OTGPHY0>;
1096                         clock-names = "phyclk";
1097                 };
1098
1099                 usbphy1: usb-phy1 {
1100                         #phy-cells = <0>;
1101                         reg = <0x334>;
1102                         clocks = <&cru SCLK_OTGPHY1>;
1103                         clock-names = "phyclk";
1104                 };
1105
1106                 usbphy2: usb-phy2 {
1107                         #phy-cells = <0>;
1108                         reg = <0x348>;
1109                         clocks = <&cru SCLK_OTGPHY2>;
1110                         clock-names = "phyclk";
1111                 };
1112         };
1113
1114         pinctrl: pinctrl {
1115                 compatible = "rockchip,rk3288-pinctrl";
1116                 rockchip,grf = <&grf>;
1117                 rockchip,pmu = <&pmu>;
1118                 #address-cells = <1>;
1119                 #size-cells = <1>;
1120                 ranges;
1121
1122                 gpio0: gpio0@ff750000 {
1123                         compatible = "rockchip,gpio-bank";
1124                         reg =   <0xff750000 0x100>;
1125                         interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
1126                         clocks = <&cru PCLK_GPIO0>;
1127
1128                         gpio-controller;
1129                         #gpio-cells = <2>;
1130
1131                         interrupt-controller;
1132                         #interrupt-cells = <2>;
1133                 };
1134
1135                 gpio1: gpio1@ff780000 {
1136                         compatible = "rockchip,gpio-bank";
1137                         reg = <0xff780000 0x100>;
1138                         interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
1139                         clocks = <&cru PCLK_GPIO1>;
1140
1141                         gpio-controller;
1142                         #gpio-cells = <2>;
1143
1144                         interrupt-controller;
1145                         #interrupt-cells = <2>;
1146                 };
1147
1148                 gpio2: gpio2@ff790000 {
1149                         compatible = "rockchip,gpio-bank";
1150                         reg = <0xff790000 0x100>;
1151                         interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1152                         clocks = <&cru PCLK_GPIO2>;
1153
1154                         gpio-controller;
1155                         #gpio-cells = <2>;
1156
1157                         interrupt-controller;
1158                         #interrupt-cells = <2>;
1159                 };
1160
1161                 gpio3: gpio3@ff7a0000 {
1162                         compatible = "rockchip,gpio-bank";
1163                         reg = <0xff7a0000 0x100>;
1164                         interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1165                         clocks = <&cru PCLK_GPIO3>;
1166
1167                         gpio-controller;
1168                         #gpio-cells = <2>;
1169
1170                         interrupt-controller;
1171                         #interrupt-cells = <2>;
1172                 };
1173
1174                 gpio4: gpio4@ff7b0000 {
1175                         compatible = "rockchip,gpio-bank";
1176                         reg = <0xff7b0000 0x100>;
1177                         interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
1178                         clocks = <&cru PCLK_GPIO4>;
1179
1180                         gpio-controller;
1181                         #gpio-cells = <2>;
1182
1183                         interrupt-controller;
1184                         #interrupt-cells = <2>;
1185                 };
1186
1187                 gpio5: gpio5@ff7c0000 {
1188                         compatible = "rockchip,gpio-bank";
1189                         reg = <0xff7c0000 0x100>;
1190                         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
1191                         clocks = <&cru PCLK_GPIO5>;
1192
1193                         gpio-controller;
1194                         #gpio-cells = <2>;
1195
1196                         interrupt-controller;
1197                         #interrupt-cells = <2>;
1198                 };
1199
1200                 gpio6: gpio6@ff7d0000 {
1201                         compatible = "rockchip,gpio-bank";
1202                         reg = <0xff7d0000 0x100>;
1203                         interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
1204                         clocks = <&cru PCLK_GPIO6>;
1205
1206                         gpio-controller;
1207                         #gpio-cells = <2>;
1208
1209                         interrupt-controller;
1210                         #interrupt-cells = <2>;
1211                 };
1212
1213                 gpio7: gpio7@ff7e0000 {
1214                         compatible = "rockchip,gpio-bank";
1215                         reg = <0xff7e0000 0x100>;
1216                         interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1217                         clocks = <&cru PCLK_GPIO7>;
1218
1219                         gpio-controller;
1220                         #gpio-cells = <2>;
1221
1222                         interrupt-controller;
1223                         #interrupt-cells = <2>;
1224                 };
1225
1226                 gpio8: gpio8@ff7f0000 {
1227                         compatible = "rockchip,gpio-bank";
1228                         reg = <0xff7f0000 0x100>;
1229                         interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1230                         clocks = <&cru PCLK_GPIO8>;
1231
1232                         gpio-controller;
1233                         #gpio-cells = <2>;
1234
1235                         interrupt-controller;
1236                         #interrupt-cells = <2>;
1237                 };
1238
1239                 hdmi {
1240                         hdmi_ddc: hdmi-ddc {
1241                                 rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>,
1242                                                 <7 20 RK_FUNC_2 &pcfg_pull_none>;
1243                         };
1244                 };
1245
1246                 pcfg_pull_up: pcfg-pull-up {
1247                         bias-pull-up;
1248                 };
1249
1250                 pcfg_pull_down: pcfg-pull-down {
1251                         bias-pull-down;
1252                 };
1253
1254                 pcfg_pull_none: pcfg-pull-none {
1255                         bias-disable;
1256                 };
1257
1258                 pcfg_pull_none_12ma: pcfg-pull-none-12ma {
1259                         bias-disable;
1260                         drive-strength = <12>;
1261                 };
1262
1263                 sleep {
1264                         global_pwroff: global-pwroff {
1265                                 rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
1266                         };
1267
1268                         ddrio_pwroff: ddrio-pwroff {
1269                                 rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
1270                         };
1271
1272                         ddr0_retention: ddr0-retention {
1273                                 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
1274                         };
1275
1276                         ddr1_retention: ddr1-retention {
1277                                 rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
1278                         };
1279                 };
1280
1281                 edp {
1282                         edp_hpd: edp-hpd {
1283                                 rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>;
1284                         };
1285                 };
1286
1287                 i2c0 {
1288                         i2c0_xfer: i2c0-xfer {
1289                                 rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
1290                                                 <0 16 RK_FUNC_1 &pcfg_pull_none>;
1291                         };
1292                 };
1293
1294                 i2c1 {
1295                         i2c1_xfer: i2c1-xfer {
1296                                 rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
1297                                                 <8 5 RK_FUNC_1 &pcfg_pull_none>;
1298                         };
1299                 };
1300
1301                 i2c2 {
1302                         i2c2_xfer: i2c2-xfer {
1303                                 rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
1304                                                 <6 10 RK_FUNC_1 &pcfg_pull_none>;
1305                         };
1306                 };
1307
1308                 i2c3 {
1309                         i2c3_xfer: i2c3-xfer {
1310                                 rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
1311                                                 <2 17 RK_FUNC_1 &pcfg_pull_none>;
1312                         };
1313                 };
1314
1315                 i2c4 {
1316                         i2c4_xfer: i2c4-xfer {
1317                                 rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
1318                                                 <7 18 RK_FUNC_1 &pcfg_pull_none>;
1319                         };
1320                 };
1321
1322                 i2c5 {
1323                         i2c5_xfer: i2c5-xfer {
1324                                 rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
1325                                                 <7 20 RK_FUNC_1 &pcfg_pull_none>;
1326                         };
1327                 };
1328
1329                 i2s0 {
1330                         i2s0_bus: i2s0-bus {
1331                                 rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
1332                                                 <6 1 RK_FUNC_1 &pcfg_pull_none>,
1333                                                 <6 2 RK_FUNC_1 &pcfg_pull_none>,
1334                                                 <6 3 RK_FUNC_1 &pcfg_pull_none>,
1335                                                 <6 4 RK_FUNC_1 &pcfg_pull_none>,
1336                                                 <6 8 RK_FUNC_1 &pcfg_pull_none>;
1337                         };
1338                 };
1339
1340                 lcdc0 {
1341                         lcdc0_ctl: lcdc0-ctl {
1342                                 rockchip,pins = <1 24 RK_FUNC_1 &pcfg_pull_none>,
1343                                                 <1 25 RK_FUNC_1 &pcfg_pull_none>,
1344                                                 <1 26 RK_FUNC_1 &pcfg_pull_none>,
1345                                                 <1 27 RK_FUNC_1 &pcfg_pull_none>;
1346                         };
1347                 };
1348
1349                 sdmmc {
1350                         sdmmc_clk: sdmmc-clk {
1351                                 rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
1352                         };
1353
1354                         sdmmc_cmd: sdmmc-cmd {
1355                                 rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
1356                         };
1357
1358                         sdmmc_cd: sdmcc-cd {
1359                                 rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
1360                         };
1361
1362                         sdmmc_bus1: sdmmc-bus1 {
1363                                 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
1364                         };
1365
1366                         sdmmc_bus4: sdmmc-bus4 {
1367                                 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
1368                                                 <6 17 RK_FUNC_1 &pcfg_pull_up>,
1369                                                 <6 18 RK_FUNC_1 &pcfg_pull_up>,
1370                                                 <6 19 RK_FUNC_1 &pcfg_pull_up>;
1371                         };
1372                 };
1373
1374                 sdio0 {
1375                         sdio0_bus1: sdio0-bus1 {
1376                                 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
1377                         };
1378
1379                         sdio0_bus4: sdio0-bus4 {
1380                                 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
1381                                                 <4 21 RK_FUNC_1 &pcfg_pull_up>,
1382                                                 <4 22 RK_FUNC_1 &pcfg_pull_up>,
1383                                                 <4 23 RK_FUNC_1 &pcfg_pull_up>;
1384                         };
1385
1386                         sdio0_cmd: sdio0-cmd {
1387                                 rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
1388                         };
1389
1390                         sdio0_clk: sdio0-clk {
1391                                 rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
1392                         };
1393
1394                         sdio0_cd: sdio0-cd {
1395                                 rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
1396                         };
1397
1398                         sdio0_wp: sdio0-wp {
1399                                 rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
1400                         };
1401
1402                         sdio0_pwr: sdio0-pwr {
1403                                 rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
1404                         };
1405
1406                         sdio0_bkpwr: sdio0-bkpwr {
1407                                 rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
1408                         };
1409
1410                         sdio0_int: sdio0-int {
1411                                 rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
1412                         };
1413                 };
1414
1415                 sdio1 {
1416                         sdio1_bus1: sdio1-bus1 {
1417                                 rockchip,pins = <3 24 4 &pcfg_pull_up>;
1418                         };
1419
1420                         sdio1_bus4: sdio1-bus4 {
1421                                 rockchip,pins = <3 24 4 &pcfg_pull_up>,
1422                                                 <3 25 4 &pcfg_pull_up>,
1423                                                 <3 26 4 &pcfg_pull_up>,
1424                                                 <3 27 4 &pcfg_pull_up>;
1425                         };
1426
1427                         sdio1_cd: sdio1-cd {
1428                                 rockchip,pins = <3 28 4 &pcfg_pull_up>;
1429                         };
1430
1431                         sdio1_wp: sdio1-wp {
1432                                 rockchip,pins = <3 29 4 &pcfg_pull_up>;
1433                         };
1434
1435                         sdio1_bkpwr: sdio1-bkpwr {
1436                                 rockchip,pins = <3 30 4 &pcfg_pull_up>;
1437                         };
1438
1439                         sdio1_int: sdio1-int {
1440                                 rockchip,pins = <3 31 4 &pcfg_pull_up>;
1441                         };
1442
1443                         sdio1_cmd: sdio1-cmd {
1444                                 rockchip,pins = <4 6 4 &pcfg_pull_up>;
1445                         };
1446
1447                         sdio1_clk: sdio1-clk {
1448                                 rockchip,pins = <4 7 4 &pcfg_pull_none>;
1449                         };
1450
1451                         sdio1_pwr: sdio1-pwr {
1452                                 rockchip,pins = <4 9 4 &pcfg_pull_up>;
1453                         };
1454                 };
1455
1456                 emmc {
1457                         emmc_clk: emmc-clk {
1458                                 rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
1459                         };
1460
1461                         emmc_cmd: emmc-cmd {
1462                                 rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
1463                         };
1464
1465                         emmc_pwr: emmc-pwr {
1466                                 rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
1467                         };
1468
1469                         emmc_bus1: emmc-bus1 {
1470                                 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
1471                         };
1472
1473                         emmc_bus4: emmc-bus4 {
1474                                 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1475                                                 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1476                                                 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1477                                                 <3 3 RK_FUNC_2 &pcfg_pull_up>;
1478                         };
1479
1480                         emmc_bus8: emmc-bus8 {
1481                                 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1482                                                 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1483                                                 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1484                                                 <3 3 RK_FUNC_2 &pcfg_pull_up>,
1485                                                 <3 4 RK_FUNC_2 &pcfg_pull_up>,
1486                                                 <3 5 RK_FUNC_2 &pcfg_pull_up>,
1487                                                 <3 6 RK_FUNC_2 &pcfg_pull_up>,
1488                                                 <3 7 RK_FUNC_2 &pcfg_pull_up>;
1489                         };
1490                 };
1491
1492                 spi0 {
1493                         spi0_clk: spi0-clk {
1494                                 rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
1495                         };
1496                         spi0_cs0: spi0-cs0 {
1497                                 rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
1498                         };
1499                         spi0_tx: spi0-tx {
1500                                 rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
1501                         };
1502                         spi0_rx: spi0-rx {
1503                                 rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
1504                         };
1505                         spi0_cs1: spi0-cs1 {
1506                                 rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
1507                         };
1508                 };
1509                 spi1 {
1510                         spi1_clk: spi1-clk {
1511                                 rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
1512                         };
1513                         spi1_cs0: spi1-cs0 {
1514                                 rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
1515                         };
1516                         spi1_rx: spi1-rx {
1517                                 rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
1518                         };
1519                         spi1_tx: spi1-tx {
1520                                 rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
1521                         };
1522                 };
1523
1524                 spi2 {
1525                         spi2_cs1: spi2-cs1 {
1526                                 rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
1527                         };
1528                         spi2_clk: spi2-clk {
1529                                 rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
1530                         };
1531                         spi2_cs0: spi2-cs0 {
1532                                 rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
1533                         };
1534                         spi2_rx: spi2-rx {
1535                                 rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
1536                         };
1537                         spi2_tx: spi2-tx {
1538                                 rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
1539                         };
1540                 };
1541
1542                 uart0 {
1543                         uart0_xfer: uart0-xfer {
1544                                 rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
1545                                                 <4 17 RK_FUNC_1 &pcfg_pull_none>;
1546                         };
1547
1548                         uart0_cts: uart0-cts {
1549                                 rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>;
1550                         };
1551
1552                         uart0_rts: uart0-rts {
1553                                 rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
1554                         };
1555                 };
1556
1557                 uart1 {
1558                         uart1_xfer: uart1-xfer {
1559                                 rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
1560                                                 <5 9 RK_FUNC_1 &pcfg_pull_none>;
1561                         };
1562
1563                         uart1_cts: uart1-cts {
1564                                 rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_up>;
1565                         };
1566
1567                         uart1_rts: uart1-rts {
1568                                 rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
1569                         };
1570                 };
1571
1572                 uart2 {
1573                         uart2_xfer: uart2-xfer {
1574                                 rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
1575                                                 <7 23 RK_FUNC_1 &pcfg_pull_none>;
1576                         };
1577                         /* no rts / cts for uart2 */
1578                 };
1579
1580                 uart3 {
1581                         uart3_xfer: uart3-xfer {
1582                                 rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
1583                                                 <7 8 RK_FUNC_1 &pcfg_pull_none>;
1584                         };
1585
1586                         uart3_cts: uart3-cts {
1587                                 rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_up>;
1588                         };
1589
1590                         uart3_rts: uart3-rts {
1591                                 rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
1592                         };
1593                 };
1594
1595                 uart4 {
1596                         uart4_xfer: uart4-xfer {
1597                                 rockchip,pins = <5 12 3 &pcfg_pull_up>,
1598                                                 <5 13 3 &pcfg_pull_none>;
1599                         };
1600
1601                         uart4_cts: uart4-cts {
1602                                 rockchip,pins = <5 14 3 &pcfg_pull_up>;
1603                         };
1604
1605                         uart4_rts: uart4-rts {
1606                                 rockchip,pins = <5 15 3 &pcfg_pull_none>;
1607                         };
1608                 };
1609
1610                 tsadc {
1611                         otp_gpio: otp-gpio {
1612                                 rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
1613                         };
1614
1615                         otp_out: otp-out {
1616                                 rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
1617                         };
1618                 };
1619
1620                 pwm0 {
1621                         pwm0_pin: pwm0-pin {
1622                                 rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
1623                         };
1624                 };
1625
1626                 pwm1 {
1627                         pwm1_pin: pwm1-pin {
1628                                 rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
1629                         };
1630                 };
1631
1632                 pwm2 {
1633                         pwm2_pin: pwm2-pin {
1634                                 rockchip,pins = <7 22 3 &pcfg_pull_none>;
1635                         };
1636                 };
1637
1638                 pwm3 {
1639                         pwm3_pin: pwm3-pin {
1640                                 rockchip,pins = <7 23 3 &pcfg_pull_none>;
1641                         };
1642                 };
1643
1644                 gmac {
1645                         rgmii_pins: rgmii-pins {
1646                                 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1647                                                 <3 31 3 &pcfg_pull_none>,
1648                                                 <3 26 3 &pcfg_pull_none>,
1649                                                 <3 27 3 &pcfg_pull_none>,
1650                                                 <3 28 3 &pcfg_pull_none_12ma>,
1651                                                 <3 29 3 &pcfg_pull_none_12ma>,
1652                                                 <3 24 3 &pcfg_pull_none_12ma>,
1653                                                 <3 25 3 &pcfg_pull_none_12ma>,
1654                                                 <4 0 3 &pcfg_pull_none>,
1655                                                 <4 5 3 &pcfg_pull_none>,
1656                                                 <4 6 3 &pcfg_pull_none>,
1657                                                 <4 9 3 &pcfg_pull_none_12ma>,
1658                                                 <4 4 3 &pcfg_pull_none_12ma>,
1659                                                 <4 1 3 &pcfg_pull_none>,
1660                                                 <4 3 3 &pcfg_pull_none>;
1661                         };
1662
1663                         rmii_pins: rmii-pins {
1664                                 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1665                                                 <3 31 3 &pcfg_pull_none>,
1666                                                 <3 28 3 &pcfg_pull_none>,
1667                                                 <3 29 3 &pcfg_pull_none>,
1668                                                 <4 0 3 &pcfg_pull_none>,
1669                                                 <4 5 3 &pcfg_pull_none>,
1670                                                 <4 4 3 &pcfg_pull_none>,
1671                                                 <4 1 3 &pcfg_pull_none>,
1672                                                 <4 2 3 &pcfg_pull_none>,
1673                                                 <4 3 3 &pcfg_pull_none>;
1674                         };
1675                 };
1676
1677                 spdif {
1678                         spdif_tx: spdif-tx {
1679                                 rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
1680                         };
1681                 };
1682         };
1683 };