1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
3 * Copyright (c) 2016 Fuzhou Rockchip Electronics Co., Ltd
6 #include <dt-bindings/clock/rk3399-cru.h>
7 #include <dt-bindings/gpio/gpio.h>
8 #include <dt-bindings/interrupt-controller/arm-gic.h>
9 #include <dt-bindings/interrupt-controller/irq.h>
10 #include <dt-bindings/pinctrl/rockchip.h>
11 #include <dt-bindings/power/rk3399-power.h>
12 #include <dt-bindings/thermal/thermal.h>
15 compatible = "rockchip,rk3399";
17 interrupt-parent = <&gic>;
71 compatible = "arm,cortex-a53";
73 enable-method = "psci";
74 capacity-dmips-mhz = <485>;
75 clocks = <&cru ARMCLKL>;
76 #cooling-cells = <2>; /* min followed by max */
77 dynamic-power-coefficient = <100>;
78 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
83 compatible = "arm,cortex-a53";
85 enable-method = "psci";
86 capacity-dmips-mhz = <485>;
87 clocks = <&cru ARMCLKL>;
88 #cooling-cells = <2>; /* min followed by max */
89 dynamic-power-coefficient = <100>;
90 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
95 compatible = "arm,cortex-a53";
97 enable-method = "psci";
98 capacity-dmips-mhz = <485>;
99 clocks = <&cru ARMCLKL>;
100 #cooling-cells = <2>; /* min followed by max */
101 dynamic-power-coefficient = <100>;
102 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
107 compatible = "arm,cortex-a53";
109 enable-method = "psci";
110 capacity-dmips-mhz = <485>;
111 clocks = <&cru ARMCLKL>;
112 #cooling-cells = <2>; /* min followed by max */
113 dynamic-power-coefficient = <100>;
114 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
119 compatible = "arm,cortex-a72";
121 enable-method = "psci";
122 capacity-dmips-mhz = <1024>;
123 clocks = <&cru ARMCLKB>;
124 #cooling-cells = <2>; /* min followed by max */
125 dynamic-power-coefficient = <436>;
126 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
129 #cooling-cells = <2>;
130 duration-us = <10000>;
131 exit-latency-us = <500>;
137 compatible = "arm,cortex-a72";
139 enable-method = "psci";
140 capacity-dmips-mhz = <1024>;
141 clocks = <&cru ARMCLKB>;
142 #cooling-cells = <2>; /* min followed by max */
143 dynamic-power-coefficient = <436>;
144 cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>;
147 #cooling-cells = <2>;
148 duration-us = <10000>;
149 exit-latency-us = <500>;
154 entry-method = "psci";
156 CPU_SLEEP: cpu-sleep {
157 compatible = "arm,idle-state";
159 arm,psci-suspend-param = <0x0010000>;
160 entry-latency-us = <120>;
161 exit-latency-us = <250>;
162 min-residency-us = <900>;
165 CLUSTER_SLEEP: cluster-sleep {
166 compatible = "arm,idle-state";
168 arm,psci-suspend-param = <0x1010000>;
169 entry-latency-us = <400>;
170 exit-latency-us = <500>;
171 min-residency-us = <2000>;
177 compatible = "rockchip,display-subsystem";
178 ports = <&vopl_out>, <&vopb_out>;
181 dmc: memory-controller {
182 compatible = "rockchip,rk3399-dmc";
183 rockchip,pmu = <&pmugrf>;
184 devfreq-events = <&dfi>;
185 clocks = <&cru SCLK_DDRC>;
186 clock-names = "dmc_clk";
191 compatible = "arm,cortex-a53-pmu";
192 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster0>;
196 compatible = "arm,cortex-a72-pmu";
197 interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_LOW &ppi_cluster1>;
201 compatible = "arm,psci-1.0";
206 compatible = "arm,armv8-timer";
207 interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW 0>,
208 <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW 0>,
209 <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW 0>,
210 <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW 0>;
211 arm,no-tick-in-suspend;
215 compatible = "fixed-clock";
216 clock-frequency = <24000000>;
217 clock-output-names = "xin24m";
221 pcie0: pcie@f8000000 {
222 compatible = "rockchip,rk3399-pcie";
223 reg = <0x0 0xf8000000 0x0 0x2000000>,
224 <0x0 0xfd000000 0x0 0x1000000>;
225 reg-names = "axi-base", "apb-base";
227 #address-cells = <3>;
229 #interrupt-cells = <1>;
231 bus-range = <0x0 0x1f>;
232 clocks = <&cru ACLK_PCIE>, <&cru ACLK_PERF_PCIE>,
233 <&cru PCLK_PCIE>, <&cru SCLK_PCIE_PM>;
234 clock-names = "aclk", "aclk-perf",
236 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH 0>,
237 <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH 0>,
238 <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH 0>;
239 interrupt-names = "sys", "legacy", "client";
240 interrupt-map-mask = <0 0 0 7>;
241 interrupt-map = <0 0 0 1 &pcie0_intc 0>,
242 <0 0 0 2 &pcie0_intc 1>,
243 <0 0 0 3 &pcie0_intc 2>,
244 <0 0 0 4 &pcie0_intc 3>;
245 max-link-speed = <1>;
246 msi-map = <0x0 &its 0x0 0x1000>;
247 phys = <&pcie_phy 0>, <&pcie_phy 1>,
248 <&pcie_phy 2>, <&pcie_phy 3>;
249 phy-names = "pcie-phy-0", "pcie-phy-1",
250 "pcie-phy-2", "pcie-phy-3";
251 ranges = <0x82000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>,
252 <0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>;
253 resets = <&cru SRST_PCIE_CORE>, <&cru SRST_PCIE_MGMT>,
254 <&cru SRST_PCIE_MGMT_STICKY>, <&cru SRST_PCIE_PIPE>,
255 <&cru SRST_PCIE_PM>, <&cru SRST_P_PCIE>,
257 reset-names = "core", "mgmt", "mgmt-sticky", "pipe",
258 "pm", "pclk", "aclk";
261 pcie0_intc: interrupt-controller {
262 interrupt-controller;
263 #address-cells = <0>;
264 #interrupt-cells = <1>;
268 gmac: ethernet@fe300000 {
269 compatible = "rockchip,rk3399-gmac";
270 reg = <0x0 0xfe300000 0x0 0x10000>;
271 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH 0>;
272 interrupt-names = "macirq";
273 clocks = <&cru SCLK_MAC>, <&cru SCLK_MAC_RX>,
274 <&cru SCLK_MAC_TX>, <&cru SCLK_MACREF>,
275 <&cru SCLK_MACREF_OUT>, <&cru ACLK_GMAC>,
277 clock-names = "stmmaceth", "mac_clk_rx",
278 "mac_clk_tx", "clk_mac_ref",
279 "clk_mac_refout", "aclk_mac",
281 power-domains = <&power RK3399_PD_GMAC>;
282 resets = <&cru SRST_A_GMAC>;
283 reset-names = "stmmaceth";
284 rockchip,grf = <&grf>;
289 sdio0: mmc@fe310000 {
290 compatible = "rockchip,rk3399-dw-mshc",
291 "rockchip,rk3288-dw-mshc";
292 reg = <0x0 0xfe310000 0x0 0x4000>;
293 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH 0>;
294 max-frequency = <150000000>;
295 clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
296 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
297 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
298 fifo-depth = <0x100>;
299 power-domains = <&power RK3399_PD_SDIOAUDIO>;
300 resets = <&cru SRST_SDIO0>;
301 reset-names = "reset";
305 sdmmc: mmc@fe320000 {
306 compatible = "rockchip,rk3399-dw-mshc",
307 "rockchip,rk3288-dw-mshc";
308 reg = <0x0 0xfe320000 0x0 0x4000>;
309 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH 0>;
310 max-frequency = <150000000>;
311 assigned-clocks = <&cru HCLK_SD>;
312 assigned-clock-rates = <200000000>;
313 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
314 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
315 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
316 fifo-depth = <0x100>;
317 power-domains = <&power RK3399_PD_SD>;
318 resets = <&cru SRST_SDMMC>;
319 reset-names = "reset";
323 sdhci: mmc@fe330000 {
324 compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
325 reg = <0x0 0xfe330000 0x0 0x10000>;
326 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH 0>;
327 arasan,soc-ctl-syscon = <&grf>;
328 assigned-clocks = <&cru SCLK_EMMC>;
329 assigned-clock-rates = <200000000>;
330 clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
331 clock-names = "clk_xin", "clk_ahb";
332 clock-output-names = "emmc_cardclock";
335 phy-names = "phy_arasan";
336 power-domains = <&power RK3399_PD_EMMC>;
341 usb_host0_ehci: usb@fe380000 {
342 compatible = "generic-ehci";
343 reg = <0x0 0xfe380000 0x0 0x20000>;
344 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH 0>;
345 clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>,
347 phys = <&u2phy0_host>;
352 usb_host0_ohci: usb@fe3a0000 {
353 compatible = "generic-ohci";
354 reg = <0x0 0xfe3a0000 0x0 0x20000>;
355 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH 0>;
356 clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>,
358 phys = <&u2phy0_host>;
363 usb_host1_ehci: usb@fe3c0000 {
364 compatible = "generic-ehci";
365 reg = <0x0 0xfe3c0000 0x0 0x20000>;
366 interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH 0>;
367 clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>,
369 phys = <&u2phy1_host>;
374 usb_host1_ohci: usb@fe3e0000 {
375 compatible = "generic-ohci";
376 reg = <0x0 0xfe3e0000 0x0 0x20000>;
377 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH 0>;
378 clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>,
380 phys = <&u2phy1_host>;
386 compatible = "arm,coresight-cpu-debug", "arm,primecell";
387 reg = <0 0xfe430000 0 0x1000>;
388 clocks = <&cru PCLK_COREDBG_L>;
389 clock-names = "apb_pclk";
394 compatible = "arm,coresight-cpu-debug", "arm,primecell";
395 reg = <0 0xfe432000 0 0x1000>;
396 clocks = <&cru PCLK_COREDBG_L>;
397 clock-names = "apb_pclk";
402 compatible = "arm,coresight-cpu-debug", "arm,primecell";
403 reg = <0 0xfe434000 0 0x1000>;
404 clocks = <&cru PCLK_COREDBG_L>;
405 clock-names = "apb_pclk";
410 compatible = "arm,coresight-cpu-debug", "arm,primecell";
411 reg = <0 0xfe436000 0 0x1000>;
412 clocks = <&cru PCLK_COREDBG_L>;
413 clock-names = "apb_pclk";
418 compatible = "arm,coresight-cpu-debug", "arm,primecell";
419 reg = <0 0xfe610000 0 0x1000>;
420 clocks = <&cru PCLK_COREDBG_B>;
421 clock-names = "apb_pclk";
426 compatible = "arm,coresight-cpu-debug", "arm,primecell";
427 reg = <0 0xfe710000 0 0x1000>;
428 clocks = <&cru PCLK_COREDBG_B>;
429 clock-names = "apb_pclk";
433 usbdrd3_0: usb@fe800000 {
434 compatible = "rockchip,rk3399-dwc3";
435 #address-cells = <2>;
438 clocks = <&cru SCLK_USB3OTG0_REF>, <&cru SCLK_USB3OTG0_SUSPEND>,
439 <&cru ACLK_USB3OTG0>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
440 <&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
441 clock-names = "ref_clk", "suspend_clk",
442 "bus_clk", "aclk_usb3_rksoc_axi_perf",
443 "aclk_usb3", "grf_clk";
444 resets = <&cru SRST_A_USB3_OTG0>;
445 reset-names = "usb3-otg";
448 usbdrd_dwc3_0: usb@fe800000 {
449 compatible = "snps,dwc3";
450 reg = <0x0 0xfe800000 0x0 0x100000>;
451 interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
452 clocks = <&cru SCLK_USB3OTG0_REF>, <&cru ACLK_USB3OTG0>,
453 <&cru SCLK_USB3OTG0_SUSPEND>;
454 clock-names = "ref", "bus_early", "suspend";
456 phys = <&u2phy0_otg>, <&tcphy0_usb3>;
457 phy-names = "usb2-phy", "usb3-phy";
458 phy_type = "utmi_wide";
459 snps,dis_enblslpm_quirk;
460 snps,dis-u2-freeclk-exists-quirk;
461 snps,dis_u2_susphy_quirk;
462 snps,dis-del-phy-power-chg-quirk;
463 snps,dis-tx-ipgap-linecheck-quirk;
464 power-domains = <&power RK3399_PD_USB3>;
469 usbdrd3_1: usb@fe900000 {
470 compatible = "rockchip,rk3399-dwc3";
471 #address-cells = <2>;
474 clocks = <&cru SCLK_USB3OTG1_REF>, <&cru SCLK_USB3OTG1_SUSPEND>,
475 <&cru ACLK_USB3OTG1>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
476 <&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
477 clock-names = "ref_clk", "suspend_clk",
478 "bus_clk", "aclk_usb3_rksoc_axi_perf",
479 "aclk_usb3", "grf_clk";
480 resets = <&cru SRST_A_USB3_OTG1>;
481 reset-names = "usb3-otg";
484 usbdrd_dwc3_1: usb@fe900000 {
485 compatible = "snps,dwc3";
486 reg = <0x0 0xfe900000 0x0 0x100000>;
487 interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH 0>;
488 clocks = <&cru SCLK_USB3OTG1_REF>, <&cru ACLK_USB3OTG1>,
489 <&cru SCLK_USB3OTG1_SUSPEND>;
490 clock-names = "ref", "bus_early", "suspend";
492 phys = <&u2phy1_otg>, <&tcphy1_usb3>;
493 phy-names = "usb2-phy", "usb3-phy";
494 phy_type = "utmi_wide";
495 snps,dis_enblslpm_quirk;
496 snps,dis-u2-freeclk-exists-quirk;
497 snps,dis_u2_susphy_quirk;
498 snps,dis-del-phy-power-chg-quirk;
499 snps,dis-tx-ipgap-linecheck-quirk;
500 power-domains = <&power RK3399_PD_USB3>;
505 cdn_dp: dp@fec00000 {
506 compatible = "rockchip,rk3399-cdn-dp";
507 reg = <0x0 0xfec00000 0x0 0x100000>;
508 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
509 assigned-clocks = <&cru SCLK_DP_CORE>, <&cru SCLK_SPDIF_REC_DPTX>;
510 assigned-clock-rates = <100000000>, <200000000>;
511 clocks = <&cru SCLK_DP_CORE>, <&cru PCLK_DP_CTRL>,
512 <&cru SCLK_SPDIF_REC_DPTX>, <&cru PCLK_VIO_GRF>;
513 clock-names = "core-clk", "pclk", "spdif", "grf";
514 phys = <&tcphy0_dp>, <&tcphy1_dp>;
515 power-domains = <&power RK3399_PD_HDCP>;
516 resets = <&cru SRST_DPTX_SPDIF_REC>, <&cru SRST_P_UPHY0_DPTX>,
517 <&cru SRST_P_UPHY0_APB>, <&cru SRST_DP_CORE>;
518 reset-names = "spdif", "dptx", "apb", "core";
519 rockchip,grf = <&grf>;
520 #sound-dai-cells = <1>;
525 #address-cells = <1>;
528 dp_in_vopb: endpoint@0 {
530 remote-endpoint = <&vopb_out_dp>;
533 dp_in_vopl: endpoint@1 {
535 remote-endpoint = <&vopl_out_dp>;
541 gic: interrupt-controller@fee00000 {
542 compatible = "arm,gic-v3";
543 #interrupt-cells = <4>;
544 #address-cells = <2>;
547 interrupt-controller;
549 reg = <0x0 0xfee00000 0 0x10000>, /* GICD */
550 <0x0 0xfef00000 0 0xc0000>, /* GICR */
551 <0x0 0xfff00000 0 0x10000>, /* GICC */
552 <0x0 0xfff10000 0 0x10000>, /* GICH */
553 <0x0 0xfff20000 0 0x10000>; /* GICV */
554 interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
555 its: msi-controller@fee20000 {
556 compatible = "arm,gic-v3-its";
559 reg = <0x0 0xfee20000 0x0 0x20000>;
563 ppi_cluster0: interrupt-partition-0 {
564 affinity = <&cpu_l0 &cpu_l1 &cpu_l2 &cpu_l3>;
567 ppi_cluster1: interrupt-partition-1 {
568 affinity = <&cpu_b0 &cpu_b1>;
573 saradc: saradc@ff100000 {
574 compatible = "rockchip,rk3399-saradc";
575 reg = <0x0 0xff100000 0x0 0x100>;
576 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH 0>;
577 #io-channel-cells = <1>;
578 clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
579 clock-names = "saradc", "apb_pclk";
580 resets = <&cru SRST_P_SARADC>;
581 reset-names = "saradc-apb";
585 crypto0: crypto@ff8b0000 {
586 compatible = "rockchip,rk3399-crypto";
587 reg = <0x0 0xff8b0000 0x0 0x4000>;
588 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH 0>;
589 clocks = <&cru HCLK_M_CRYPTO0>, <&cru HCLK_S_CRYPTO0>, <&cru SCLK_CRYPTO0>;
590 clock-names = "hclk_master", "hclk_slave", "sclk";
591 resets = <&cru SRST_CRYPTO0>, <&cru SRST_CRYPTO0_S>, <&cru SRST_CRYPTO0_M>;
592 reset-names = "master", "slave", "crypto-rst";
595 crypto1: crypto@ff8b8000 {
596 compatible = "rockchip,rk3399-crypto";
597 reg = <0x0 0xff8b8000 0x0 0x4000>;
598 interrupts = <GIC_SPI 135 IRQ_TYPE_LEVEL_HIGH 0>;
599 clocks = <&cru HCLK_M_CRYPTO1>, <&cru HCLK_S_CRYPTO1>, <&cru SCLK_CRYPTO1>;
600 clock-names = "hclk_master", "hclk_slave", "sclk";
601 resets = <&cru SRST_CRYPTO1>, <&cru SRST_CRYPTO1_S>, <&cru SRST_CRYPTO1_M>;
602 reset-names = "master", "slave", "crypto-rst";
606 compatible = "rockchip,rk3399-i2c";
607 reg = <0x0 0xff110000 0x0 0x1000>;
608 assigned-clocks = <&cru SCLK_I2C1>;
609 assigned-clock-rates = <200000000>;
610 clocks = <&cru SCLK_I2C1>, <&cru PCLK_I2C1>;
611 clock-names = "i2c", "pclk";
612 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH 0>;
613 pinctrl-names = "default";
614 pinctrl-0 = <&i2c1_xfer>;
615 #address-cells = <1>;
621 compatible = "rockchip,rk3399-i2c";
622 reg = <0x0 0xff120000 0x0 0x1000>;
623 assigned-clocks = <&cru SCLK_I2C2>;
624 assigned-clock-rates = <200000000>;
625 clocks = <&cru SCLK_I2C2>, <&cru PCLK_I2C2>;
626 clock-names = "i2c", "pclk";
627 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH 0>;
628 pinctrl-names = "default";
629 pinctrl-0 = <&i2c2_xfer>;
630 #address-cells = <1>;
636 compatible = "rockchip,rk3399-i2c";
637 reg = <0x0 0xff130000 0x0 0x1000>;
638 assigned-clocks = <&cru SCLK_I2C3>;
639 assigned-clock-rates = <200000000>;
640 clocks = <&cru SCLK_I2C3>, <&cru PCLK_I2C3>;
641 clock-names = "i2c", "pclk";
642 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH 0>;
643 pinctrl-names = "default";
644 pinctrl-0 = <&i2c3_xfer>;
645 #address-cells = <1>;
651 compatible = "rockchip,rk3399-i2c";
652 reg = <0x0 0xff140000 0x0 0x1000>;
653 assigned-clocks = <&cru SCLK_I2C5>;
654 assigned-clock-rates = <200000000>;
655 clocks = <&cru SCLK_I2C5>, <&cru PCLK_I2C5>;
656 clock-names = "i2c", "pclk";
657 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH 0>;
658 pinctrl-names = "default";
659 pinctrl-0 = <&i2c5_xfer>;
660 #address-cells = <1>;
666 compatible = "rockchip,rk3399-i2c";
667 reg = <0x0 0xff150000 0x0 0x1000>;
668 assigned-clocks = <&cru SCLK_I2C6>;
669 assigned-clock-rates = <200000000>;
670 clocks = <&cru SCLK_I2C6>, <&cru PCLK_I2C6>;
671 clock-names = "i2c", "pclk";
672 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH 0>;
673 pinctrl-names = "default";
674 pinctrl-0 = <&i2c6_xfer>;
675 #address-cells = <1>;
681 compatible = "rockchip,rk3399-i2c";
682 reg = <0x0 0xff160000 0x0 0x1000>;
683 assigned-clocks = <&cru SCLK_I2C7>;
684 assigned-clock-rates = <200000000>;
685 clocks = <&cru SCLK_I2C7>, <&cru PCLK_I2C7>;
686 clock-names = "i2c", "pclk";
687 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH 0>;
688 pinctrl-names = "default";
689 pinctrl-0 = <&i2c7_xfer>;
690 #address-cells = <1>;
695 uart0: serial@ff180000 {
696 compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
697 reg = <0x0 0xff180000 0x0 0x100>;
698 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
699 clock-names = "baudclk", "apb_pclk";
700 interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH 0>;
703 pinctrl-names = "default";
704 pinctrl-0 = <&uart0_xfer>;
708 uart1: serial@ff190000 {
709 compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
710 reg = <0x0 0xff190000 0x0 0x100>;
711 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
712 clock-names = "baudclk", "apb_pclk";
713 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH 0>;
716 pinctrl-names = "default";
717 pinctrl-0 = <&uart1_xfer>;
721 uart2: serial@ff1a0000 {
722 compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
723 reg = <0x0 0xff1a0000 0x0 0x100>;
724 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
725 clock-names = "baudclk", "apb_pclk";
726 interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH 0>;
729 pinctrl-names = "default";
730 pinctrl-0 = <&uart2c_xfer>;
734 uart3: serial@ff1b0000 {
735 compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
736 reg = <0x0 0xff1b0000 0x0 0x100>;
737 clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
738 clock-names = "baudclk", "apb_pclk";
739 interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH 0>;
742 pinctrl-names = "default";
743 pinctrl-0 = <&uart3_xfer>;
748 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
749 reg = <0x0 0xff1c0000 0x0 0x1000>;
750 clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
751 clock-names = "spiclk", "apb_pclk";
752 interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH 0>;
753 dmas = <&dmac_peri 10>, <&dmac_peri 11>;
754 dma-names = "tx", "rx";
755 pinctrl-names = "default";
756 pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
757 #address-cells = <1>;
763 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
764 reg = <0x0 0xff1d0000 0x0 0x1000>;
765 clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
766 clock-names = "spiclk", "apb_pclk";
767 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH 0>;
768 dmas = <&dmac_peri 12>, <&dmac_peri 13>;
769 dma-names = "tx", "rx";
770 pinctrl-names = "default";
771 pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
772 #address-cells = <1>;
778 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
779 reg = <0x0 0xff1e0000 0x0 0x1000>;
780 clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
781 clock-names = "spiclk", "apb_pclk";
782 interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH 0>;
783 dmas = <&dmac_peri 14>, <&dmac_peri 15>;
784 dma-names = "tx", "rx";
785 pinctrl-names = "default";
786 pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
787 #address-cells = <1>;
793 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
794 reg = <0x0 0xff1f0000 0x0 0x1000>;
795 clocks = <&cru SCLK_SPI4>, <&cru PCLK_SPI4>;
796 clock-names = "spiclk", "apb_pclk";
797 interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH 0>;
798 dmas = <&dmac_peri 18>, <&dmac_peri 19>;
799 dma-names = "tx", "rx";
800 pinctrl-names = "default";
801 pinctrl-0 = <&spi4_clk &spi4_tx &spi4_rx &spi4_cs0>;
802 #address-cells = <1>;
808 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
809 reg = <0x0 0xff200000 0x0 0x1000>;
810 clocks = <&cru SCLK_SPI5>, <&cru PCLK_SPI5>;
811 clock-names = "spiclk", "apb_pclk";
812 interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH 0>;
813 dmas = <&dmac_bus 8>, <&dmac_bus 9>;
814 dma-names = "tx", "rx";
815 pinctrl-names = "default";
816 pinctrl-0 = <&spi5_clk &spi5_tx &spi5_rx &spi5_cs0>;
817 power-domains = <&power RK3399_PD_SDIOAUDIO>;
818 #address-cells = <1>;
823 thermal_zones: thermal-zones {
824 cpu_thermal: cpu-thermal {
825 polling-delay-passive = <100>;
826 polling-delay = <1000>;
828 thermal-sensors = <&tsadc 0>;
831 cpu_alert0: cpu_alert0 {
832 temperature = <70000>;
836 cpu_alert1: cpu_alert1 {
837 temperature = <75000>;
842 temperature = <95000>;
850 trip = <&cpu_alert0>;
852 <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
853 <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
856 trip = <&cpu_alert1>;
858 <&cpu_l0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
859 <&cpu_l1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
860 <&cpu_l2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
861 <&cpu_l3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
862 <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
863 <&cpu_b1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
868 gpu_thermal: gpu-thermal {
869 polling-delay-passive = <100>;
870 polling-delay = <1000>;
872 thermal-sensors = <&tsadc 1>;
875 gpu_alert0: gpu_alert0 {
876 temperature = <75000>;
881 temperature = <95000>;
889 trip = <&gpu_alert0>;
891 <&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
897 tsadc: tsadc@ff260000 {
898 compatible = "rockchip,rk3399-tsadc";
899 reg = <0x0 0xff260000 0x0 0x100>;
900 interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH 0>;
901 assigned-clocks = <&cru SCLK_TSADC>;
902 assigned-clock-rates = <750000>;
903 clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
904 clock-names = "tsadc", "apb_pclk";
905 resets = <&cru SRST_TSADC>;
906 reset-names = "tsadc-apb";
907 rockchip,grf = <&grf>;
908 rockchip,hw-tshut-temp = <95000>;
909 pinctrl-names = "init", "default", "sleep";
910 pinctrl-0 = <&otp_pin>;
911 pinctrl-1 = <&otp_out>;
912 pinctrl-2 = <&otp_pin>;
913 #thermal-sensor-cells = <1>;
917 qos_emmc: qos@ffa58000 {
918 compatible = "rockchip,rk3399-qos", "syscon";
919 reg = <0x0 0xffa58000 0x0 0x20>;
922 qos_gmac: qos@ffa5c000 {
923 compatible = "rockchip,rk3399-qos", "syscon";
924 reg = <0x0 0xffa5c000 0x0 0x20>;
927 qos_pcie: qos@ffa60080 {
928 compatible = "rockchip,rk3399-qos", "syscon";
929 reg = <0x0 0xffa60080 0x0 0x20>;
932 qos_usb_host0: qos@ffa60100 {
933 compatible = "rockchip,rk3399-qos", "syscon";
934 reg = <0x0 0xffa60100 0x0 0x20>;
937 qos_usb_host1: qos@ffa60180 {
938 compatible = "rockchip,rk3399-qos", "syscon";
939 reg = <0x0 0xffa60180 0x0 0x20>;
942 qos_usb_otg0: qos@ffa70000 {
943 compatible = "rockchip,rk3399-qos", "syscon";
944 reg = <0x0 0xffa70000 0x0 0x20>;
947 qos_usb_otg1: qos@ffa70080 {
948 compatible = "rockchip,rk3399-qos", "syscon";
949 reg = <0x0 0xffa70080 0x0 0x20>;
952 qos_sd: qos@ffa74000 {
953 compatible = "rockchip,rk3399-qos", "syscon";
954 reg = <0x0 0xffa74000 0x0 0x20>;
957 qos_sdioaudio: qos@ffa76000 {
958 compatible = "rockchip,rk3399-qos", "syscon";
959 reg = <0x0 0xffa76000 0x0 0x20>;
962 qos_hdcp: qos@ffa90000 {
963 compatible = "rockchip,rk3399-qos", "syscon";
964 reg = <0x0 0xffa90000 0x0 0x20>;
967 qos_iep: qos@ffa98000 {
968 compatible = "rockchip,rk3399-qos", "syscon";
969 reg = <0x0 0xffa98000 0x0 0x20>;
972 qos_isp0_m0: qos@ffaa0000 {
973 compatible = "rockchip,rk3399-qos", "syscon";
974 reg = <0x0 0xffaa0000 0x0 0x20>;
977 qos_isp0_m1: qos@ffaa0080 {
978 compatible = "rockchip,rk3399-qos", "syscon";
979 reg = <0x0 0xffaa0080 0x0 0x20>;
982 qos_isp1_m0: qos@ffaa8000 {
983 compatible = "rockchip,rk3399-qos", "syscon";
984 reg = <0x0 0xffaa8000 0x0 0x20>;
987 qos_isp1_m1: qos@ffaa8080 {
988 compatible = "rockchip,rk3399-qos", "syscon";
989 reg = <0x0 0xffaa8080 0x0 0x20>;
992 qos_rga_r: qos@ffab0000 {
993 compatible = "rockchip,rk3399-qos", "syscon";
994 reg = <0x0 0xffab0000 0x0 0x20>;
997 qos_rga_w: qos@ffab0080 {
998 compatible = "rockchip,rk3399-qos", "syscon";
999 reg = <0x0 0xffab0080 0x0 0x20>;
1002 qos_video_m0: qos@ffab8000 {
1003 compatible = "rockchip,rk3399-qos", "syscon";
1004 reg = <0x0 0xffab8000 0x0 0x20>;
1007 qos_video_m1_r: qos@ffac0000 {
1008 compatible = "rockchip,rk3399-qos", "syscon";
1009 reg = <0x0 0xffac0000 0x0 0x20>;
1012 qos_video_m1_w: qos@ffac0080 {
1013 compatible = "rockchip,rk3399-qos", "syscon";
1014 reg = <0x0 0xffac0080 0x0 0x20>;
1017 qos_vop_big_r: qos@ffac8000 {
1018 compatible = "rockchip,rk3399-qos", "syscon";
1019 reg = <0x0 0xffac8000 0x0 0x20>;
1022 qos_vop_big_w: qos@ffac8080 {
1023 compatible = "rockchip,rk3399-qos", "syscon";
1024 reg = <0x0 0xffac8080 0x0 0x20>;
1027 qos_vop_little: qos@ffad0000 {
1028 compatible = "rockchip,rk3399-qos", "syscon";
1029 reg = <0x0 0xffad0000 0x0 0x20>;
1032 qos_perihp: qos@ffad8080 {
1033 compatible = "rockchip,rk3399-qos", "syscon";
1034 reg = <0x0 0xffad8080 0x0 0x20>;
1037 qos_gpu: qos@ffae0000 {
1038 compatible = "rockchip,rk3399-qos", "syscon";
1039 reg = <0x0 0xffae0000 0x0 0x20>;
1042 pmu: power-management@ff310000 {
1043 compatible = "rockchip,rk3399-pmu", "syscon", "simple-mfd";
1044 reg = <0x0 0xff310000 0x0 0x1000>;
1047 * Note: RK3399 supports 6 voltage domains including VD_CORE_L,
1048 * VD_CORE_B, VD_CENTER, VD_GPU, VD_LOGIC and VD_PMU.
1049 * Some of the power domains are grouped together for every
1051 * The detail contents as below.
1053 power: power-controller {
1054 compatible = "rockchip,rk3399-power-controller";
1055 #power-domain-cells = <1>;
1056 #address-cells = <1>;
1059 /* These power domains are grouped by VD_CENTER */
1060 power-domain@RK3399_PD_IEP {
1061 reg = <RK3399_PD_IEP>;
1062 clocks = <&cru ACLK_IEP>,
1064 pm_qos = <&qos_iep>;
1065 #power-domain-cells = <0>;
1067 power-domain@RK3399_PD_RGA {
1068 reg = <RK3399_PD_RGA>;
1069 clocks = <&cru ACLK_RGA>,
1071 pm_qos = <&qos_rga_r>,
1073 #power-domain-cells = <0>;
1075 power-domain@RK3399_PD_VCODEC {
1076 reg = <RK3399_PD_VCODEC>;
1077 clocks = <&cru ACLK_VCODEC>,
1079 pm_qos = <&qos_video_m0>;
1080 #power-domain-cells = <0>;
1082 power-domain@RK3399_PD_VDU {
1083 reg = <RK3399_PD_VDU>;
1084 clocks = <&cru ACLK_VDU>,
1086 pm_qos = <&qos_video_m1_r>,
1088 #power-domain-cells = <0>;
1091 /* These power domains are grouped by VD_GPU */
1092 power-domain@RK3399_PD_GPU {
1093 reg = <RK3399_PD_GPU>;
1094 clocks = <&cru ACLK_GPU>;
1095 pm_qos = <&qos_gpu>;
1096 #power-domain-cells = <0>;
1099 /* These power domains are grouped by VD_LOGIC */
1100 power-domain@RK3399_PD_EDP {
1101 reg = <RK3399_PD_EDP>;
1102 clocks = <&cru PCLK_EDP_CTRL>;
1103 #power-domain-cells = <0>;
1105 power-domain@RK3399_PD_EMMC {
1106 reg = <RK3399_PD_EMMC>;
1107 clocks = <&cru ACLK_EMMC>;
1108 pm_qos = <&qos_emmc>;
1109 #power-domain-cells = <0>;
1111 power-domain@RK3399_PD_GMAC {
1112 reg = <RK3399_PD_GMAC>;
1113 clocks = <&cru ACLK_GMAC>,
1115 pm_qos = <&qos_gmac>;
1116 #power-domain-cells = <0>;
1118 power-domain@RK3399_PD_SD {
1119 reg = <RK3399_PD_SD>;
1120 clocks = <&cru HCLK_SDMMC>,
1123 #power-domain-cells = <0>;
1125 power-domain@RK3399_PD_SDIOAUDIO {
1126 reg = <RK3399_PD_SDIOAUDIO>;
1127 clocks = <&cru HCLK_SDIO>;
1128 pm_qos = <&qos_sdioaudio>;
1129 #power-domain-cells = <0>;
1131 power-domain@RK3399_PD_TCPD0 {
1132 reg = <RK3399_PD_TCPD0>;
1133 clocks = <&cru SCLK_UPHY0_TCPDCORE>,
1134 <&cru SCLK_UPHY0_TCPDPHY_REF>;
1135 #power-domain-cells = <0>;
1137 power-domain@RK3399_PD_TCPD1 {
1138 reg = <RK3399_PD_TCPD1>;
1139 clocks = <&cru SCLK_UPHY1_TCPDCORE>,
1140 <&cru SCLK_UPHY1_TCPDPHY_REF>;
1141 #power-domain-cells = <0>;
1143 power-domain@RK3399_PD_USB3 {
1144 reg = <RK3399_PD_USB3>;
1145 clocks = <&cru ACLK_USB3>;
1146 pm_qos = <&qos_usb_otg0>,
1148 #power-domain-cells = <0>;
1150 power-domain@RK3399_PD_VIO {
1151 reg = <RK3399_PD_VIO>;
1152 #power-domain-cells = <1>;
1153 #address-cells = <1>;
1156 power-domain@RK3399_PD_HDCP {
1157 reg = <RK3399_PD_HDCP>;
1158 clocks = <&cru ACLK_HDCP>,
1161 pm_qos = <&qos_hdcp>;
1162 #power-domain-cells = <0>;
1164 power-domain@RK3399_PD_ISP0 {
1165 reg = <RK3399_PD_ISP0>;
1166 clocks = <&cru ACLK_ISP0>,
1168 pm_qos = <&qos_isp0_m0>,
1170 #power-domain-cells = <0>;
1172 power-domain@RK3399_PD_ISP1 {
1173 reg = <RK3399_PD_ISP1>;
1174 clocks = <&cru ACLK_ISP1>,
1176 pm_qos = <&qos_isp1_m0>,
1178 #power-domain-cells = <0>;
1180 power-domain@RK3399_PD_VO {
1181 reg = <RK3399_PD_VO>;
1182 #power-domain-cells = <1>;
1183 #address-cells = <1>;
1186 power-domain@RK3399_PD_VOPB {
1187 reg = <RK3399_PD_VOPB>;
1188 clocks = <&cru ACLK_VOP0>,
1190 pm_qos = <&qos_vop_big_r>,
1192 #power-domain-cells = <0>;
1194 power-domain@RK3399_PD_VOPL {
1195 reg = <RK3399_PD_VOPL>;
1196 clocks = <&cru ACLK_VOP1>,
1198 pm_qos = <&qos_vop_little>;
1199 #power-domain-cells = <0>;
1206 pmugrf: syscon@ff320000 {
1207 compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
1208 reg = <0x0 0xff320000 0x0 0x1000>;
1210 pmu_io_domains: io-domains {
1211 compatible = "rockchip,rk3399-pmu-io-voltage-domain";
1212 status = "disabled";
1216 spi3: spi@ff350000 {
1217 compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
1218 reg = <0x0 0xff350000 0x0 0x1000>;
1219 clocks = <&pmucru SCLK_SPI3_PMU>, <&pmucru PCLK_SPI3_PMU>;
1220 clock-names = "spiclk", "apb_pclk";
1221 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH 0>;
1222 pinctrl-names = "default";
1223 pinctrl-0 = <&spi3_clk &spi3_tx &spi3_rx &spi3_cs0>;
1224 #address-cells = <1>;
1226 status = "disabled";
1229 uart4: serial@ff370000 {
1230 compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
1231 reg = <0x0 0xff370000 0x0 0x100>;
1232 clocks = <&pmucru SCLK_UART4_PMU>, <&pmucru PCLK_UART4_PMU>;
1233 clock-names = "baudclk", "apb_pclk";
1234 interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH 0>;
1237 pinctrl-names = "default";
1238 pinctrl-0 = <&uart4_xfer>;
1239 status = "disabled";
1242 i2c0: i2c@ff3c0000 {
1243 compatible = "rockchip,rk3399-i2c";
1244 reg = <0x0 0xff3c0000 0x0 0x1000>;
1245 assigned-clocks = <&pmucru SCLK_I2C0_PMU>;
1246 assigned-clock-rates = <200000000>;
1247 clocks = <&pmucru SCLK_I2C0_PMU>, <&pmucru PCLK_I2C0_PMU>;
1248 clock-names = "i2c", "pclk";
1249 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH 0>;
1250 pinctrl-names = "default";
1251 pinctrl-0 = <&i2c0_xfer>;
1252 #address-cells = <1>;
1254 status = "disabled";
1257 i2c4: i2c@ff3d0000 {
1258 compatible = "rockchip,rk3399-i2c";
1259 reg = <0x0 0xff3d0000 0x0 0x1000>;
1260 assigned-clocks = <&pmucru SCLK_I2C4_PMU>;
1261 assigned-clock-rates = <200000000>;
1262 clocks = <&pmucru SCLK_I2C4_PMU>, <&pmucru PCLK_I2C4_PMU>;
1263 clock-names = "i2c", "pclk";
1264 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH 0>;
1265 pinctrl-names = "default";
1266 pinctrl-0 = <&i2c4_xfer>;
1267 #address-cells = <1>;
1269 status = "disabled";
1272 i2c8: i2c@ff3e0000 {
1273 compatible = "rockchip,rk3399-i2c";
1274 reg = <0x0 0xff3e0000 0x0 0x1000>;
1275 assigned-clocks = <&pmucru SCLK_I2C8_PMU>;
1276 assigned-clock-rates = <200000000>;
1277 clocks = <&pmucru SCLK_I2C8_PMU>, <&pmucru PCLK_I2C8_PMU>;
1278 clock-names = "i2c", "pclk";
1279 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH 0>;
1280 pinctrl-names = "default";
1281 pinctrl-0 = <&i2c8_xfer>;
1282 #address-cells = <1>;
1284 status = "disabled";
1287 pwm0: pwm@ff420000 {
1288 compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
1289 reg = <0x0 0xff420000 0x0 0x10>;
1291 pinctrl-names = "default";
1292 pinctrl-0 = <&pwm0_pin>;
1293 clocks = <&pmucru PCLK_RKPWM_PMU>;
1294 status = "disabled";
1297 pwm1: pwm@ff420010 {
1298 compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
1299 reg = <0x0 0xff420010 0x0 0x10>;
1301 pinctrl-names = "default";
1302 pinctrl-0 = <&pwm1_pin>;
1303 clocks = <&pmucru PCLK_RKPWM_PMU>;
1304 status = "disabled";
1307 pwm2: pwm@ff420020 {
1308 compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
1309 reg = <0x0 0xff420020 0x0 0x10>;
1311 pinctrl-names = "default";
1312 pinctrl-0 = <&pwm2_pin>;
1313 clocks = <&pmucru PCLK_RKPWM_PMU>;
1314 status = "disabled";
1317 pwm3: pwm@ff420030 {
1318 compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
1319 reg = <0x0 0xff420030 0x0 0x10>;
1321 pinctrl-names = "default";
1322 pinctrl-0 = <&pwm3a_pin>;
1323 clocks = <&pmucru PCLK_RKPWM_PMU>;
1324 status = "disabled";
1328 reg = <0x00 0xff630000 0x00 0x4000>;
1329 compatible = "rockchip,rk3399-dfi";
1330 rockchip,pmu = <&pmugrf>;
1331 interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH 0>;
1332 clocks = <&cru PCLK_DDR_MON>;
1333 clock-names = "pclk_ddr_mon";
1334 status = "disabled";
1337 vpu: video-codec@ff650000 {
1338 compatible = "rockchip,rk3399-vpu";
1339 reg = <0x0 0xff650000 0x0 0x800>;
1340 interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH 0>,
1341 <GIC_SPI 113 IRQ_TYPE_LEVEL_HIGH 0>;
1342 interrupt-names = "vepu", "vdpu";
1343 clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
1344 clock-names = "aclk", "hclk";
1345 iommus = <&vpu_mmu>;
1346 power-domains = <&power RK3399_PD_VCODEC>;
1349 vpu_mmu: iommu@ff650800 {
1350 compatible = "rockchip,iommu";
1351 reg = <0x0 0xff650800 0x0 0x40>;
1352 interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_HIGH 0>;
1353 clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
1354 clock-names = "aclk", "iface";
1356 power-domains = <&power RK3399_PD_VCODEC>;
1359 vdec: video-codec@ff660000 {
1360 compatible = "rockchip,rk3399-vdec";
1361 reg = <0x0 0xff660000 0x0 0x400>;
1362 interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
1363 clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
1364 <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;
1365 clock-names = "axi", "ahb", "cabac", "core";
1366 iommus = <&vdec_mmu>;
1367 power-domains = <&power RK3399_PD_VDU>;
1370 vdec_mmu: iommu@ff660480 {
1371 compatible = "rockchip,iommu";
1372 reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>;
1373 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH 0>;
1374 clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>;
1375 clock-names = "aclk", "iface";
1376 power-domains = <&power RK3399_PD_VDU>;
1380 iep_mmu: iommu@ff670800 {
1381 compatible = "rockchip,iommu";
1382 reg = <0x0 0xff670800 0x0 0x40>;
1383 interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH 0>;
1384 clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
1385 clock-names = "aclk", "iface";
1387 status = "disabled";
1391 compatible = "rockchip,rk3399-rga";
1392 reg = <0x0 0xff680000 0x0 0x10000>;
1393 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH 0>;
1394 clocks = <&cru ACLK_RGA>, <&cru HCLK_RGA>, <&cru SCLK_RGA_CORE>;
1395 clock-names = "aclk", "hclk", "sclk";
1396 resets = <&cru SRST_RGA_CORE>, <&cru SRST_A_RGA>, <&cru SRST_H_RGA>;
1397 reset-names = "core", "axi", "ahb";
1398 power-domains = <&power RK3399_PD_RGA>;
1401 efuse0: efuse@ff690000 {
1402 compatible = "rockchip,rk3399-efuse";
1403 reg = <0x0 0xff690000 0x0 0x80>;
1404 #address-cells = <1>;
1406 clocks = <&cru PCLK_EFUSE1024NS>;
1407 clock-names = "pclk_efuse";
1413 cpub_leakage: cpu-leakage@17 {
1416 gpu_leakage: gpu-leakage@18 {
1419 center_leakage: center-leakage@19 {
1422 cpul_leakage: cpu-leakage@1a {
1425 logic_leakage: logic-leakage@1b {
1428 wafer_info: wafer-info@1c {
1433 dmac_bus: dma-controller@ff6d0000 {
1434 compatible = "arm,pl330", "arm,primecell";
1435 reg = <0x0 0xff6d0000 0x0 0x4000>;
1436 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH 0>,
1437 <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH 0>;
1439 arm,pl330-periph-burst;
1440 clocks = <&cru ACLK_DMAC0_PERILP>;
1441 clock-names = "apb_pclk";
1444 dmac_peri: dma-controller@ff6e0000 {
1445 compatible = "arm,pl330", "arm,primecell";
1446 reg = <0x0 0xff6e0000 0x0 0x4000>;
1447 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH 0>,
1448 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH 0>;
1450 arm,pl330-periph-burst;
1451 clocks = <&cru ACLK_DMAC1_PERILP>;
1452 clock-names = "apb_pclk";
1455 pmucru: clock-controller@ff750000 {
1456 compatible = "rockchip,rk3399-pmucru";
1457 reg = <0x0 0xff750000 0x0 0x1000>;
1459 clock-names = "xin24m";
1460 rockchip,grf = <&pmugrf>;
1463 assigned-clocks = <&pmucru PLL_PPLL>;
1464 assigned-clock-rates = <676000000>;
1467 cru: clock-controller@ff760000 {
1468 compatible = "rockchip,rk3399-cru";
1469 reg = <0x0 0xff760000 0x0 0x1000>;
1471 clock-names = "xin24m";
1472 rockchip,grf = <&grf>;
1476 <&cru PLL_GPLL>, <&cru PLL_CPLL>,
1478 <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>,
1480 <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>,
1481 <&cru PCLK_PERILP0>, <&cru ACLK_CCI>,
1482 <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>,
1483 <&cru ACLK_VIO>, <&cru ACLK_HDCP>,
1484 <&cru ACLK_GIC_PRE>,
1487 assigned-clock-rates =
1488 <594000000>, <800000000>,
1490 <150000000>, <75000000>,
1492 <100000000>, <100000000>,
1493 <50000000>, <600000000>,
1494 <100000000>, <50000000>,
1495 <400000000>, <400000000>,
1501 grf: syscon@ff770000 {
1502 compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
1503 reg = <0x0 0xff770000 0x0 0x10000>;
1504 #address-cells = <1>;
1507 io_domains: io-domains {
1508 compatible = "rockchip,rk3399-io-voltage-domain";
1509 status = "disabled";
1512 mipi_dphy_rx0: mipi-dphy-rx0 {
1513 compatible = "rockchip,rk3399-mipi-dphy-rx0";
1514 clocks = <&cru SCLK_MIPIDPHY_REF>,
1515 <&cru SCLK_DPHY_RX0_CFG>,
1516 <&cru PCLK_VIO_GRF>;
1517 clock-names = "dphy-ref", "dphy-cfg", "grf";
1518 power-domains = <&power RK3399_PD_VIO>;
1520 status = "disabled";
1523 u2phy0: usb2phy@e450 {
1524 compatible = "rockchip,rk3399-usb2phy";
1525 reg = <0xe450 0x10>;
1526 clocks = <&cru SCLK_USB2PHY0_REF>;
1527 clock-names = "phyclk";
1529 clock-output-names = "clk_usbphy0_480m";
1530 status = "disabled";
1532 u2phy0_host: host-port {
1534 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH 0>;
1535 interrupt-names = "linestate";
1536 status = "disabled";
1539 u2phy0_otg: otg-port {
1541 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH 0>,
1542 <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH 0>,
1543 <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH 0>;
1544 interrupt-names = "otg-bvalid", "otg-id",
1546 status = "disabled";
1550 u2phy1: usb2phy@e460 {
1551 compatible = "rockchip,rk3399-usb2phy";
1552 reg = <0xe460 0x10>;
1553 clocks = <&cru SCLK_USB2PHY1_REF>;
1554 clock-names = "phyclk";
1556 clock-output-names = "clk_usbphy1_480m";
1557 status = "disabled";
1559 u2phy1_host: host-port {
1561 interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH 0>;
1562 interrupt-names = "linestate";
1563 status = "disabled";
1566 u2phy1_otg: otg-port {
1568 interrupts = <GIC_SPI 108 IRQ_TYPE_LEVEL_HIGH 0>,
1569 <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH 0>,
1570 <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH 0>;
1571 interrupt-names = "otg-bvalid", "otg-id",
1573 status = "disabled";
1577 emmc_phy: phy@f780 {
1578 compatible = "rockchip,rk3399-emmc-phy";
1579 reg = <0xf780 0x24>;
1581 clock-names = "emmcclk";
1582 drive-impedance-ohm = <50>;
1584 status = "disabled";
1587 pcie_phy: pcie-phy {
1588 compatible = "rockchip,rk3399-pcie-phy";
1589 clocks = <&cru SCLK_PCIEPHY_REF>;
1590 clock-names = "refclk";
1592 resets = <&cru SRST_PCIEPHY>;
1593 reset-names = "phy";
1594 status = "disabled";
1598 tcphy0: phy@ff7c0000 {
1599 compatible = "rockchip,rk3399-typec-phy";
1600 reg = <0x0 0xff7c0000 0x0 0x40000>;
1601 clocks = <&cru SCLK_UPHY0_TCPDCORE>,
1602 <&cru SCLK_UPHY0_TCPDPHY_REF>;
1603 clock-names = "tcpdcore", "tcpdphy-ref";
1604 assigned-clocks = <&cru SCLK_UPHY0_TCPDCORE>;
1605 assigned-clock-rates = <50000000>;
1606 power-domains = <&power RK3399_PD_TCPD0>;
1607 resets = <&cru SRST_UPHY0>,
1608 <&cru SRST_UPHY0_PIPE_L00>,
1609 <&cru SRST_P_UPHY0_TCPHY>;
1610 reset-names = "uphy", "uphy-pipe", "uphy-tcphy";
1611 rockchip,grf = <&grf>;
1612 status = "disabled";
1614 tcphy0_dp: dp-port {
1618 tcphy0_usb3: usb3-port {
1623 tcphy1: phy@ff800000 {
1624 compatible = "rockchip,rk3399-typec-phy";
1625 reg = <0x0 0xff800000 0x0 0x40000>;
1626 clocks = <&cru SCLK_UPHY1_TCPDCORE>,
1627 <&cru SCLK_UPHY1_TCPDPHY_REF>;
1628 clock-names = "tcpdcore", "tcpdphy-ref";
1629 assigned-clocks = <&cru SCLK_UPHY1_TCPDCORE>;
1630 assigned-clock-rates = <50000000>;
1631 power-domains = <&power RK3399_PD_TCPD1>;
1632 resets = <&cru SRST_UPHY1>,
1633 <&cru SRST_UPHY1_PIPE_L00>,
1634 <&cru SRST_P_UPHY1_TCPHY>;
1635 reset-names = "uphy", "uphy-pipe", "uphy-tcphy";
1636 rockchip,grf = <&grf>;
1637 status = "disabled";
1639 tcphy1_dp: dp-port {
1643 tcphy1_usb3: usb3-port {
1649 compatible = "rockchip,rk3399-wdt", "snps,dw-wdt";
1650 reg = <0x0 0xff848000 0x0 0x100>;
1651 clocks = <&cru PCLK_WDT>;
1652 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH 0>;
1655 rktimer: rktimer@ff850000 {
1656 compatible = "rockchip,rk3399-timer";
1657 reg = <0x0 0xff850000 0x0 0x1000>;
1658 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH 0>;
1659 clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER00>;
1660 clock-names = "pclk", "timer";
1663 spdif: spdif@ff870000 {
1664 compatible = "rockchip,rk3399-spdif";
1665 reg = <0x0 0xff870000 0x0 0x1000>;
1666 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH 0>;
1667 dmas = <&dmac_bus 7>;
1669 clock-names = "mclk", "hclk";
1670 clocks = <&cru SCLK_SPDIF_8CH>, <&cru HCLK_SPDIF>;
1671 pinctrl-names = "default";
1672 pinctrl-0 = <&spdif_bus>;
1673 power-domains = <&power RK3399_PD_SDIOAUDIO>;
1674 #sound-dai-cells = <0>;
1675 status = "disabled";
1678 i2s0: i2s@ff880000 {
1679 compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
1680 reg = <0x0 0xff880000 0x0 0x1000>;
1681 rockchip,grf = <&grf>;
1682 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH 0>;
1683 dmas = <&dmac_bus 0>, <&dmac_bus 1>;
1684 dma-names = "tx", "rx";
1685 clock-names = "i2s_clk", "i2s_hclk";
1686 clocks = <&cru SCLK_I2S0_8CH>, <&cru HCLK_I2S0_8CH>;
1687 pinctrl-names = "bclk_on", "bclk_off";
1688 pinctrl-0 = <&i2s0_8ch_bus>;
1689 pinctrl-1 = <&i2s0_8ch_bus_bclk_off>;
1690 power-domains = <&power RK3399_PD_SDIOAUDIO>;
1691 #sound-dai-cells = <0>;
1692 status = "disabled";
1695 i2s1: i2s@ff890000 {
1696 compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
1697 reg = <0x0 0xff890000 0x0 0x1000>;
1698 interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH 0>;
1699 dmas = <&dmac_bus 2>, <&dmac_bus 3>;
1700 dma-names = "tx", "rx";
1701 clock-names = "i2s_clk", "i2s_hclk";
1702 clocks = <&cru SCLK_I2S1_8CH>, <&cru HCLK_I2S1_8CH>;
1703 pinctrl-names = "default";
1704 pinctrl-0 = <&i2s1_2ch_bus>;
1705 power-domains = <&power RK3399_PD_SDIOAUDIO>;
1706 #sound-dai-cells = <0>;
1707 status = "disabled";
1710 i2s2: i2s@ff8a0000 {
1711 compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
1712 reg = <0x0 0xff8a0000 0x0 0x1000>;
1713 interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH 0>;
1714 dmas = <&dmac_bus 4>, <&dmac_bus 5>;
1715 dma-names = "tx", "rx";
1716 clock-names = "i2s_clk", "i2s_hclk";
1717 clocks = <&cru SCLK_I2S2_8CH>, <&cru HCLK_I2S2_8CH>;
1718 power-domains = <&power RK3399_PD_SDIOAUDIO>;
1719 #sound-dai-cells = <0>;
1720 status = "disabled";
1723 vopl: vop@ff8f0000 {
1724 compatible = "rockchip,rk3399-vop-lit";
1725 reg = <0x0 0xff8f0000 0x0 0x2000>, <0x0 0xff8f2000 0x0 0x400>;
1726 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>;
1727 assigned-clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
1728 assigned-clock-rates = <400000000>, <100000000>;
1729 clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
1730 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
1731 iommus = <&vopl_mmu>;
1732 power-domains = <&power RK3399_PD_VOPL>;
1733 resets = <&cru SRST_A_VOP1>, <&cru SRST_H_VOP1>, <&cru SRST_D_VOP1>;
1734 reset-names = "axi", "ahb", "dclk";
1735 status = "disabled";
1738 #address-cells = <1>;
1741 vopl_out_mipi: endpoint@0 {
1743 remote-endpoint = <&mipi_in_vopl>;
1746 vopl_out_edp: endpoint@1 {
1748 remote-endpoint = <&edp_in_vopl>;
1751 vopl_out_hdmi: endpoint@2 {
1753 remote-endpoint = <&hdmi_in_vopl>;
1756 vopl_out_mipi1: endpoint@3 {
1758 remote-endpoint = <&mipi1_in_vopl>;
1761 vopl_out_dp: endpoint@4 {
1763 remote-endpoint = <&dp_in_vopl>;
1768 vopl_mmu: iommu@ff8f3f00 {
1769 compatible = "rockchip,iommu";
1770 reg = <0x0 0xff8f3f00 0x0 0x100>;
1771 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH 0>;
1772 clocks = <&cru ACLK_VOP1>, <&cru HCLK_VOP1>;
1773 clock-names = "aclk", "iface";
1774 power-domains = <&power RK3399_PD_VOPL>;
1776 status = "disabled";
1779 vopb: vop@ff900000 {
1780 compatible = "rockchip,rk3399-vop-big";
1781 reg = <0x0 0xff900000 0x0 0x2000>, <0x0 0xff902000 0x0 0x1000>;
1782 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;
1783 assigned-clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
1784 assigned-clock-rates = <400000000>, <100000000>;
1785 clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
1786 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
1787 iommus = <&vopb_mmu>;
1788 power-domains = <&power RK3399_PD_VOPB>;
1789 resets = <&cru SRST_A_VOP0>, <&cru SRST_H_VOP0>, <&cru SRST_D_VOP0>;
1790 reset-names = "axi", "ahb", "dclk";
1791 status = "disabled";
1794 #address-cells = <1>;
1797 vopb_out_edp: endpoint@0 {
1799 remote-endpoint = <&edp_in_vopb>;
1802 vopb_out_mipi: endpoint@1 {
1804 remote-endpoint = <&mipi_in_vopb>;
1807 vopb_out_hdmi: endpoint@2 {
1809 remote-endpoint = <&hdmi_in_vopb>;
1812 vopb_out_mipi1: endpoint@3 {
1814 remote-endpoint = <&mipi1_in_vopb>;
1817 vopb_out_dp: endpoint@4 {
1819 remote-endpoint = <&dp_in_vopb>;
1824 vopb_mmu: iommu@ff903f00 {
1825 compatible = "rockchip,iommu";
1826 reg = <0x0 0xff903f00 0x0 0x100>;
1827 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;
1828 clocks = <&cru ACLK_VOP0>, <&cru HCLK_VOP0>;
1829 clock-names = "aclk", "iface";
1830 power-domains = <&power RK3399_PD_VOPB>;
1832 status = "disabled";
1835 isp0: isp0@ff910000 {
1836 compatible = "rockchip,rk3399-cif-isp";
1837 reg = <0x0 0xff910000 0x0 0x4000>;
1838 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
1839 clocks = <&cru SCLK_ISP0>,
1840 <&cru ACLK_ISP0_WRAPPER>,
1841 <&cru HCLK_ISP0_WRAPPER>;
1842 clock-names = "isp", "aclk", "hclk";
1843 iommus = <&isp0_mmu>;
1844 phys = <&mipi_dphy_rx0>;
1846 power-domains = <&power RK3399_PD_ISP0>;
1847 status = "disabled";
1850 #address-cells = <1>;
1855 #address-cells = <1>;
1861 isp0_mmu: iommu@ff914000 {
1862 compatible = "rockchip,iommu";
1863 reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>;
1864 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
1865 clocks = <&cru ACLK_ISP0_WRAPPER>, <&cru HCLK_ISP0_WRAPPER>;
1866 clock-names = "aclk", "iface";
1868 power-domains = <&power RK3399_PD_ISP0>;
1869 rockchip,disable-mmu-reset;
1872 isp1: isp1@ff920000 {
1873 compatible = "rockchip,rk3399-cif-isp";
1874 reg = <0x0 0xff920000 0x0 0x4000>;
1875 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH 0>;
1876 clocks = <&cru SCLK_ISP1>,
1877 <&cru ACLK_ISP1_WRAPPER>,
1878 <&cru HCLK_ISP1_WRAPPER>;
1879 clock-names = "isp", "aclk", "hclk";
1880 iommus = <&isp1_mmu>;
1881 phys = <&mipi_dsi1>;
1883 power-domains = <&power RK3399_PD_ISP1>;
1884 status = "disabled";
1887 #address-cells = <1>;
1892 #address-cells = <1>;
1898 isp1_mmu: iommu@ff924000 {
1899 compatible = "rockchip,iommu";
1900 reg = <0x0 0xff924000 0x0 0x100>, <0x0 0xff925000 0x0 0x100>;
1901 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH 0>;
1902 clocks = <&cru ACLK_ISP1_WRAPPER>, <&cru HCLK_ISP1_WRAPPER>;
1903 clock-names = "aclk", "iface";
1905 power-domains = <&power RK3399_PD_ISP1>;
1906 rockchip,disable-mmu-reset;
1909 hdmi_sound: hdmi-sound {
1910 compatible = "simple-audio-card";
1911 simple-audio-card,format = "i2s";
1912 simple-audio-card,mclk-fs = <256>;
1913 simple-audio-card,name = "hdmi-sound";
1914 status = "disabled";
1916 simple-audio-card,cpu {
1917 sound-dai = <&i2s2>;
1919 simple-audio-card,codec {
1920 sound-dai = <&hdmi>;
1924 hdmi: hdmi@ff940000 {
1925 compatible = "rockchip,rk3399-dw-hdmi";
1926 reg = <0x0 0xff940000 0x0 0x20000>;
1927 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH 0>;
1928 clocks = <&cru PCLK_HDMI_CTRL>,
1929 <&cru SCLK_HDMI_SFR>,
1930 <&cru SCLK_HDMI_CEC>,
1931 <&cru PCLK_VIO_GRF>,
1933 clock-names = "iahb", "isfr", "cec", "grf", "ref";
1934 power-domains = <&power RK3399_PD_HDCP>;
1936 rockchip,grf = <&grf>;
1937 #sound-dai-cells = <0>;
1938 status = "disabled";
1942 #address-cells = <1>;
1945 hdmi_in_vopb: endpoint@0 {
1947 remote-endpoint = <&vopb_out_hdmi>;
1949 hdmi_in_vopl: endpoint@1 {
1951 remote-endpoint = <&vopl_out_hdmi>;
1957 mipi_dsi: dsi@ff960000 {
1958 compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi";
1959 reg = <0x0 0xff960000 0x0 0x8000>;
1960 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH 0>;
1961 clocks = <&cru SCLK_DPHY_PLL>, <&cru PCLK_MIPI_DSI0>,
1962 <&cru SCLK_DPHY_TX0_CFG>, <&cru PCLK_VIO_GRF>;
1963 clock-names = "ref", "pclk", "phy_cfg", "grf";
1964 power-domains = <&power RK3399_PD_VIO>;
1965 resets = <&cru SRST_P_MIPI_DSI0>;
1966 reset-names = "apb";
1967 rockchip,grf = <&grf>;
1968 #address-cells = <1>;
1970 status = "disabled";
1973 #address-cells = <1>;
1978 #address-cells = <1>;
1981 mipi_in_vopb: endpoint@0 {
1983 remote-endpoint = <&vopb_out_mipi>;
1986 mipi_in_vopl: endpoint@1 {
1988 remote-endpoint = <&vopl_out_mipi>;
1998 mipi_dsi1: dsi@ff968000 {
1999 compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi";
2000 reg = <0x0 0xff968000 0x0 0x8000>;
2001 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH 0>;
2002 clocks = <&cru SCLK_DPHY_PLL>, <&cru PCLK_MIPI_DSI1>,
2003 <&cru SCLK_DPHY_TX1RX1_CFG>, <&cru PCLK_VIO_GRF>;
2004 clock-names = "ref", "pclk", "phy_cfg", "grf";
2005 power-domains = <&power RK3399_PD_VIO>;
2006 resets = <&cru SRST_P_MIPI_DSI1>;
2007 reset-names = "apb";
2008 rockchip,grf = <&grf>;
2009 #address-cells = <1>;
2012 status = "disabled";
2015 #address-cells = <1>;
2020 #address-cells = <1>;
2023 mipi1_in_vopb: endpoint@0 {
2025 remote-endpoint = <&vopb_out_mipi1>;
2028 mipi1_in_vopl: endpoint@1 {
2030 remote-endpoint = <&vopl_out_mipi1>;
2041 compatible = "rockchip,rk3399-edp";
2042 reg = <0x0 0xff970000 0x0 0x8000>;
2043 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH 0>;
2044 clocks = <&cru PCLK_EDP>, <&cru PCLK_EDP_CTRL>, <&cru PCLK_VIO_GRF>;
2045 clock-names = "dp", "pclk", "grf";
2046 pinctrl-names = "default";
2047 pinctrl-0 = <&edp_hpd>;
2048 power-domains = <&power RK3399_PD_EDP>;
2049 resets = <&cru SRST_P_EDP_CTRL>;
2051 rockchip,grf = <&grf>;
2052 status = "disabled";
2055 #address-cells = <1>;
2060 #address-cells = <1>;
2063 edp_in_vopb: endpoint@0 {
2065 remote-endpoint = <&vopb_out_edp>;
2068 edp_in_vopl: endpoint@1 {
2070 remote-endpoint = <&vopl_out_edp>;
2081 compatible = "rockchip,rk3399-mali", "arm,mali-t860";
2082 reg = <0x0 0xff9a0000 0x0 0x10000>;
2083 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH 0>,
2084 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH 0>,
2085 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH 0>;
2086 interrupt-names = "job", "mmu", "gpu";
2087 clocks = <&cru ACLK_GPU>;
2088 #cooling-cells = <2>;
2089 power-domains = <&power RK3399_PD_GPU>;
2090 status = "disabled";
2094 compatible = "rockchip,rk3399-pinctrl";
2095 rockchip,grf = <&grf>;
2096 rockchip,pmu = <&pmugrf>;
2097 #address-cells = <2>;
2101 gpio0: gpio@ff720000 {
2102 compatible = "rockchip,gpio-bank";
2103 reg = <0x0 0xff720000 0x0 0x100>;
2104 clocks = <&pmucru PCLK_GPIO0_PMU>;
2105 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH 0>;
2108 #gpio-cells = <0x2>;
2110 interrupt-controller;
2111 #interrupt-cells = <0x2>;
2114 gpio1: gpio@ff730000 {
2115 compatible = "rockchip,gpio-bank";
2116 reg = <0x0 0xff730000 0x0 0x100>;
2117 clocks = <&pmucru PCLK_GPIO1_PMU>;
2118 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH 0>;
2121 #gpio-cells = <0x2>;
2123 interrupt-controller;
2124 #interrupt-cells = <0x2>;
2127 gpio2: gpio@ff780000 {
2128 compatible = "rockchip,gpio-bank";
2129 reg = <0x0 0xff780000 0x0 0x100>;
2130 clocks = <&cru PCLK_GPIO2>;
2131 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH 0>;
2134 #gpio-cells = <0x2>;
2136 interrupt-controller;
2137 #interrupt-cells = <0x2>;
2140 gpio3: gpio@ff788000 {
2141 compatible = "rockchip,gpio-bank";
2142 reg = <0x0 0xff788000 0x0 0x100>;
2143 clocks = <&cru PCLK_GPIO3>;
2144 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH 0>;
2147 #gpio-cells = <0x2>;
2149 interrupt-controller;
2150 #interrupt-cells = <0x2>;
2153 gpio4: gpio@ff790000 {
2154 compatible = "rockchip,gpio-bank";
2155 reg = <0x0 0xff790000 0x0 0x100>;
2156 clocks = <&cru PCLK_GPIO4>;
2157 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH 0>;
2160 #gpio-cells = <0x2>;
2162 interrupt-controller;
2163 #interrupt-cells = <0x2>;
2166 pcfg_pull_up: pcfg-pull-up {
2170 pcfg_pull_down: pcfg-pull-down {
2174 pcfg_pull_none: pcfg-pull-none {
2178 pcfg_pull_none_12ma: pcfg-pull-none-12ma {
2180 drive-strength = <12>;
2183 pcfg_pull_none_13ma: pcfg-pull-none-13ma {
2185 drive-strength = <13>;
2188 pcfg_pull_none_18ma: pcfg-pull-none-18ma {
2190 drive-strength = <18>;
2193 pcfg_pull_none_20ma: pcfg-pull-none-20ma {
2195 drive-strength = <20>;
2198 pcfg_pull_up_2ma: pcfg-pull-up-2ma {
2200 drive-strength = <2>;
2203 pcfg_pull_up_8ma: pcfg-pull-up-8ma {
2205 drive-strength = <8>;
2208 pcfg_pull_up_18ma: pcfg-pull-up-18ma {
2210 drive-strength = <18>;
2213 pcfg_pull_up_20ma: pcfg-pull-up-20ma {
2215 drive-strength = <20>;
2218 pcfg_pull_down_4ma: pcfg-pull-down-4ma {
2220 drive-strength = <4>;
2223 pcfg_pull_down_8ma: pcfg-pull-down-8ma {
2225 drive-strength = <8>;
2228 pcfg_pull_down_12ma: pcfg-pull-down-12ma {
2230 drive-strength = <12>;
2233 pcfg_pull_down_18ma: pcfg-pull-down-18ma {
2235 drive-strength = <18>;
2238 pcfg_pull_down_20ma: pcfg-pull-down-20ma {
2240 drive-strength = <20>;
2243 pcfg_output_high: pcfg-output-high {
2247 pcfg_output_low: pcfg-output-low {
2251 pcfg_input_enable: pcfg-input-enable {
2255 pcfg_input_pull_up: pcfg-input-pull-up {
2260 pcfg_input_pull_down: pcfg-input-pull-down {
2267 rockchip,pins = <0 RK_PA0 2 &pcfg_pull_none>;
2272 cif_clkin: cif-clkin {
2274 <2 RK_PB2 3 &pcfg_pull_none>;
2277 cif_clkouta: cif-clkouta {
2279 <2 RK_PB3 3 &pcfg_pull_none>;
2286 <4 RK_PC7 2 &pcfg_pull_none>;
2291 rgmii_pins: rgmii-pins {
2294 <3 RK_PC1 1 &pcfg_pull_none_13ma>,
2296 <3 RK_PB6 1 &pcfg_pull_none>,
2298 <3 RK_PB5 1 &pcfg_pull_none>,
2300 <3 RK_PB4 1 &pcfg_pull_none_13ma>,
2302 <3 RK_PB3 1 &pcfg_pull_none>,
2304 <3 RK_PB1 1 &pcfg_pull_none>,
2306 <3 RK_PB0 1 &pcfg_pull_none>,
2308 <3 RK_PA7 1 &pcfg_pull_none>,
2310 <3 RK_PA6 1 &pcfg_pull_none>,
2312 <3 RK_PA5 1 &pcfg_pull_none_13ma>,
2314 <3 RK_PA4 1 &pcfg_pull_none_13ma>,
2316 <3 RK_PA3 1 &pcfg_pull_none>,
2318 <3 RK_PA2 1 &pcfg_pull_none>,
2320 <3 RK_PA1 1 &pcfg_pull_none_13ma>,
2322 <3 RK_PA0 1 &pcfg_pull_none_13ma>;
2325 rmii_pins: rmii-pins {
2328 <3 RK_PB5 1 &pcfg_pull_none>,
2330 <3 RK_PB4 1 &pcfg_pull_none_13ma>,
2332 <3 RK_PB3 1 &pcfg_pull_none>,
2334 <3 RK_PB2 1 &pcfg_pull_none>,
2336 <3 RK_PB1 1 &pcfg_pull_none>,
2338 <3 RK_PB0 1 &pcfg_pull_none>,
2340 <3 RK_PA7 1 &pcfg_pull_none>,
2342 <3 RK_PA6 1 &pcfg_pull_none>,
2344 <3 RK_PA5 1 &pcfg_pull_none_13ma>,
2346 <3 RK_PA4 1 &pcfg_pull_none_13ma>;
2351 i2c0_xfer: i2c0-xfer {
2353 <1 RK_PB7 2 &pcfg_pull_none>,
2354 <1 RK_PC0 2 &pcfg_pull_none>;
2359 i2c1_xfer: i2c1-xfer {
2361 <4 RK_PA2 1 &pcfg_pull_none>,
2362 <4 RK_PA1 1 &pcfg_pull_none>;
2367 i2c2_xfer: i2c2-xfer {
2369 <2 RK_PA1 2 &pcfg_pull_none_12ma>,
2370 <2 RK_PA0 2 &pcfg_pull_none_12ma>;
2375 i2c3_xfer: i2c3-xfer {
2377 <4 RK_PC1 1 &pcfg_pull_none>,
2378 <4 RK_PC0 1 &pcfg_pull_none>;
2383 i2c4_xfer: i2c4-xfer {
2385 <1 RK_PB4 1 &pcfg_pull_none>,
2386 <1 RK_PB3 1 &pcfg_pull_none>;
2391 i2c5_xfer: i2c5-xfer {
2393 <3 RK_PB3 2 &pcfg_pull_none>,
2394 <3 RK_PB2 2 &pcfg_pull_none>;
2399 i2c6_xfer: i2c6-xfer {
2401 <2 RK_PB2 2 &pcfg_pull_none>,
2402 <2 RK_PB1 2 &pcfg_pull_none>;
2407 i2c7_xfer: i2c7-xfer {
2409 <2 RK_PB0 2 &pcfg_pull_none>,
2410 <2 RK_PA7 2 &pcfg_pull_none>;
2415 i2c8_xfer: i2c8-xfer {
2417 <1 RK_PC5 1 &pcfg_pull_none>,
2418 <1 RK_PC4 1 &pcfg_pull_none>;
2423 i2s0_2ch_bus: i2s0-2ch-bus {
2425 <3 RK_PD0 1 &pcfg_pull_none>,
2426 <3 RK_PD1 1 &pcfg_pull_none>,
2427 <3 RK_PD2 1 &pcfg_pull_none>,
2428 <3 RK_PD3 1 &pcfg_pull_none>,
2429 <3 RK_PD7 1 &pcfg_pull_none>,
2430 <4 RK_PA0 1 &pcfg_pull_none>;
2433 i2s0_8ch_bus: i2s0-8ch-bus {
2435 <3 RK_PD0 1 &pcfg_pull_none>,
2436 <3 RK_PD1 1 &pcfg_pull_none>,
2437 <3 RK_PD2 1 &pcfg_pull_none>,
2438 <3 RK_PD3 1 &pcfg_pull_none>,
2439 <3 RK_PD4 1 &pcfg_pull_none>,
2440 <3 RK_PD5 1 &pcfg_pull_none>,
2441 <3 RK_PD6 1 &pcfg_pull_none>,
2442 <3 RK_PD7 1 &pcfg_pull_none>,
2443 <4 RK_PA0 1 &pcfg_pull_none>;
2446 i2s0_8ch_bus_bclk_off: i2s0-8ch-bus-bclk-off {
2448 <3 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>,
2449 <3 RK_PD1 1 &pcfg_pull_none>,
2450 <3 RK_PD2 1 &pcfg_pull_none>,
2451 <3 RK_PD3 1 &pcfg_pull_none>,
2452 <3 RK_PD4 1 &pcfg_pull_none>,
2453 <3 RK_PD5 1 &pcfg_pull_none>,
2454 <3 RK_PD6 1 &pcfg_pull_none>,
2455 <3 RK_PD7 1 &pcfg_pull_none>,
2456 <4 RK_PA0 1 &pcfg_pull_none>;
2461 i2s1_2ch_bus: i2s1-2ch-bus {
2463 <4 RK_PA3 1 &pcfg_pull_none>,
2464 <4 RK_PA4 1 &pcfg_pull_none>,
2465 <4 RK_PA5 1 &pcfg_pull_none>,
2466 <4 RK_PA6 1 &pcfg_pull_none>,
2467 <4 RK_PA7 1 &pcfg_pull_none>;
2470 i2s1_2ch_bus_bclk_off: i2s1-2ch-bus-bclk-off {
2472 <4 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>,
2473 <4 RK_PA4 1 &pcfg_pull_none>,
2474 <4 RK_PA5 1 &pcfg_pull_none>,
2475 <4 RK_PA6 1 &pcfg_pull_none>,
2476 <4 RK_PA7 1 &pcfg_pull_none>;
2481 sdio0_bus1: sdio0-bus1 {
2483 <2 RK_PC4 1 &pcfg_pull_up>;
2486 sdio0_bus4: sdio0-bus4 {
2488 <2 RK_PC4 1 &pcfg_pull_up>,
2489 <2 RK_PC5 1 &pcfg_pull_up>,
2490 <2 RK_PC6 1 &pcfg_pull_up>,
2491 <2 RK_PC7 1 &pcfg_pull_up>;
2494 sdio0_cmd: sdio0-cmd {
2496 <2 RK_PD0 1 &pcfg_pull_up>;
2499 sdio0_clk: sdio0-clk {
2501 <2 RK_PD1 1 &pcfg_pull_none>;
2504 sdio0_cd: sdio0-cd {
2506 <2 RK_PD2 1 &pcfg_pull_up>;
2509 sdio0_pwr: sdio0-pwr {
2511 <2 RK_PD3 1 &pcfg_pull_up>;
2514 sdio0_bkpwr: sdio0-bkpwr {
2516 <2 RK_PD4 1 &pcfg_pull_up>;
2519 sdio0_wp: sdio0-wp {
2521 <0 RK_PA3 1 &pcfg_pull_up>;
2524 sdio0_int: sdio0-int {
2526 <0 RK_PA4 1 &pcfg_pull_up>;
2531 sdmmc_bus1: sdmmc-bus1 {
2533 <4 RK_PB0 1 &pcfg_pull_up>;
2536 sdmmc_bus4: sdmmc-bus4 {
2538 <4 RK_PB0 1 &pcfg_pull_up>,
2539 <4 RK_PB1 1 &pcfg_pull_up>,
2540 <4 RK_PB2 1 &pcfg_pull_up>,
2541 <4 RK_PB3 1 &pcfg_pull_up>;
2544 sdmmc_clk: sdmmc-clk {
2546 <4 RK_PB4 1 &pcfg_pull_none>;
2549 sdmmc_cmd: sdmmc-cmd {
2551 <4 RK_PB5 1 &pcfg_pull_up>;
2554 sdmmc_cd: sdmmc-cd {
2556 <0 RK_PA7 1 &pcfg_pull_up>;
2559 sdmmc_wp: sdmmc-wp {
2561 <0 RK_PB0 1 &pcfg_pull_up>;
2566 ap_pwroff: ap-pwroff {
2567 rockchip,pins = <1 RK_PA5 1 &pcfg_pull_none>;
2570 ddrio_pwroff: ddrio-pwroff {
2571 rockchip,pins = <0 RK_PA1 1 &pcfg_pull_none>;
2576 spdif_bus: spdif-bus {
2578 <4 RK_PC5 1 &pcfg_pull_none>;
2581 spdif_bus_1: spdif-bus-1 {
2583 <3 RK_PC0 3 &pcfg_pull_none>;
2588 spi0_clk: spi0-clk {
2590 <3 RK_PA6 2 &pcfg_pull_up>;
2592 spi0_cs0: spi0-cs0 {
2594 <3 RK_PA7 2 &pcfg_pull_up>;
2596 spi0_cs1: spi0-cs1 {
2598 <3 RK_PB0 2 &pcfg_pull_up>;
2602 <3 RK_PA5 2 &pcfg_pull_up>;
2606 <3 RK_PA4 2 &pcfg_pull_up>;
2611 spi1_clk: spi1-clk {
2613 <1 RK_PB1 2 &pcfg_pull_up>;
2615 spi1_cs0: spi1-cs0 {
2617 <1 RK_PB2 2 &pcfg_pull_up>;
2621 <1 RK_PA7 2 &pcfg_pull_up>;
2625 <1 RK_PB0 2 &pcfg_pull_up>;
2630 spi2_clk: spi2-clk {
2632 <2 RK_PB3 1 &pcfg_pull_up>;
2634 spi2_cs0: spi2-cs0 {
2636 <2 RK_PB4 1 &pcfg_pull_up>;
2640 <2 RK_PB1 1 &pcfg_pull_up>;
2644 <2 RK_PB2 1 &pcfg_pull_up>;
2649 spi3_clk: spi3-clk {
2651 <1 RK_PC1 1 &pcfg_pull_up>;
2653 spi3_cs0: spi3-cs0 {
2655 <1 RK_PC2 1 &pcfg_pull_up>;
2659 <1 RK_PB7 1 &pcfg_pull_up>;
2663 <1 RK_PC0 1 &pcfg_pull_up>;
2668 spi4_clk: spi4-clk {
2670 <3 RK_PA2 2 &pcfg_pull_up>;
2672 spi4_cs0: spi4-cs0 {
2674 <3 RK_PA3 2 &pcfg_pull_up>;
2678 <3 RK_PA0 2 &pcfg_pull_up>;
2682 <3 RK_PA1 2 &pcfg_pull_up>;
2687 spi5_clk: spi5-clk {
2689 <2 RK_PC6 2 &pcfg_pull_up>;
2691 spi5_cs0: spi5-cs0 {
2693 <2 RK_PC7 2 &pcfg_pull_up>;
2697 <2 RK_PC4 2 &pcfg_pull_up>;
2701 <2 RK_PC5 2 &pcfg_pull_up>;
2706 test_clkout0: test-clkout0 {
2708 <0 RK_PA0 1 &pcfg_pull_none>;
2711 test_clkout1: test-clkout1 {
2713 <2 RK_PD1 2 &pcfg_pull_none>;
2716 test_clkout2: test-clkout2 {
2718 <0 RK_PB0 3 &pcfg_pull_none>;
2724 rockchip,pins = <1 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
2728 rockchip,pins = <1 RK_PA6 1 &pcfg_pull_none>;
2733 uart0_xfer: uart0-xfer {
2735 <2 RK_PC0 1 &pcfg_pull_up>,
2736 <2 RK_PC1 1 &pcfg_pull_none>;
2739 uart0_cts: uart0-cts {
2741 <2 RK_PC2 1 &pcfg_pull_none>;
2744 uart0_rts: uart0-rts {
2746 <2 RK_PC3 1 &pcfg_pull_none>;
2751 uart1_xfer: uart1-xfer {
2753 <3 RK_PB4 2 &pcfg_pull_up>,
2754 <3 RK_PB5 2 &pcfg_pull_none>;
2759 uart2a_xfer: uart2a-xfer {
2761 <4 RK_PB0 2 &pcfg_pull_up>,
2762 <4 RK_PB1 2 &pcfg_pull_none>;
2767 uart2b_xfer: uart2b-xfer {
2769 <4 RK_PC0 2 &pcfg_pull_up>,
2770 <4 RK_PC1 2 &pcfg_pull_none>;
2775 uart2c_xfer: uart2c-xfer {
2777 <4 RK_PC3 1 &pcfg_pull_up>,
2778 <4 RK_PC4 1 &pcfg_pull_none>;
2783 uart3_xfer: uart3-xfer {
2785 <3 RK_PB6 2 &pcfg_pull_up>,
2786 <3 RK_PB7 2 &pcfg_pull_none>;
2789 uart3_cts: uart3-cts {
2791 <3 RK_PC0 2 &pcfg_pull_none>;
2794 uart3_rts: uart3-rts {
2796 <3 RK_PC1 2 &pcfg_pull_none>;
2801 uart4_xfer: uart4-xfer {
2803 <1 RK_PA7 1 &pcfg_pull_up>,
2804 <1 RK_PB0 1 &pcfg_pull_none>;
2809 uarthdcp_xfer: uarthdcp-xfer {
2811 <4 RK_PC5 2 &pcfg_pull_up>,
2812 <4 RK_PC6 2 &pcfg_pull_none>;
2817 pwm0_pin: pwm0-pin {
2819 <4 RK_PC2 1 &pcfg_pull_none>;
2822 pwm0_pin_pull_down: pwm0-pin-pull-down {
2824 <4 RK_PC2 1 &pcfg_pull_down>;
2827 vop0_pwm_pin: vop0-pwm-pin {
2829 <4 RK_PC2 2 &pcfg_pull_none>;
2832 vop1_pwm_pin: vop1-pwm-pin {
2834 <4 RK_PC2 3 &pcfg_pull_none>;
2839 pwm1_pin: pwm1-pin {
2841 <4 RK_PC6 1 &pcfg_pull_none>;
2844 pwm1_pin_pull_down: pwm1-pin-pull-down {
2846 <4 RK_PC6 1 &pcfg_pull_down>;
2851 pwm2_pin: pwm2-pin {
2853 <1 RK_PC3 1 &pcfg_pull_none>;
2856 pwm2_pin_pull_down: pwm2-pin-pull-down {
2858 <1 RK_PC3 1 &pcfg_pull_down>;
2863 pwm3a_pin: pwm3a-pin {
2865 <0 RK_PA6 1 &pcfg_pull_none>;
2870 pwm3b_pin: pwm3b-pin {
2872 <1 RK_PB6 1 &pcfg_pull_none>;
2877 hdmi_i2c_xfer: hdmi-i2c-xfer {
2879 <4 RK_PC1 3 &pcfg_pull_none>,
2880 <4 RK_PC0 3 &pcfg_pull_none>;
2883 hdmi_cec: hdmi-cec {
2885 <4 RK_PC7 1 &pcfg_pull_none>;
2890 pcie_clkreqn_cpm: pci-clkreqn-cpm {
2892 <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
2895 pcie_clkreqnb_cpm: pci-clkreqnb-cpm {
2897 <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;