Merge tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:47:01 +0000 (18:47 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:47:01 +0000 (18:47 -0400)
Pull 64-bit ARM DT updates from Olof Johansson:
 "Just as the 32-bit contents, the 64-bit device tree branch also
  contains a number of additions this release cycle.

  New platforms:
   - LG LG1313
   - Mediatek MT6755
   - Renesas r8a7796
   - Broadcom 2837

  Other platforms with larger updates are:
   - Nvidia X1 platforms (USB 3.0, regulators, display subsystem)
   - Mediatek MT8173 (display subsystem added)
   - Rockchip RK3399 (a lot of new peripherals)
   - ARM Juno reference implementation (SCPI power domains, coresight,
     thermal)"

* tag 'armsoc-dt64' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (118 commits)
  arm64: tegra: Enable HDMI on Jetson TX1
  arm64: tegra: Add sor1_src clock
  arm64: tegra: Add XUSB powergates on Tegra210
  arm64: tegra: Add DPAUX pinctrl bindings
  arm64: tegra: Add ACONNECT bus node for Tegra210
  arm64: tegra: Add audio powergate node for Tegra210
  arm64: tegra: Add regulators for Tegra210 Smaug
  arm64: tegra: Correct Tegra210 XUSB mailbox interrupt
  arm64: tegra: Enable XUSB controller on Jetson TX1
  arm64: tegra: Enable debug serial on Jetson TX1
  arm64: tegra: Add Tegra210 XUSB controller
  arm64: tegra: Add Tegra210 XUSB pad controller
  arm64: tegra: Add DSI panel on Jetson TX1
  arm64: tegra: p2597: Add SDMMC power supplies
  arm64: tegra: Add PMIC support on Jetson TX1
  Revert "ARM64: DTS: meson-gxbb: switch ethernet to real clock"
  arm64: dts: hi6220: Add pl031 RTC support
  arm64: dts: r8a7796/salvator-x: Enable watchdog timer
  arm64: dts: r8a7796: Add RWDT node
  arm64: dts: r8a7796: Use SYSC "always-on" PM Domain
  ...

1  2 
Documentation/devicetree/bindings/arm/shmobile.txt
arch/arm64/Kconfig.platforms
arch/arm64/boot/dts/apm/apm-shadowcat.dtsi
arch/arm64/boot/dts/apm/apm-storm.dtsi
arch/arm64/boot/dts/broadcom/ns2-svk.dts
arch/arm64/boot/dts/broadcom/ns2.dtsi
arch/arm64/boot/dts/freescale/fsl-ls1043a.dtsi
arch/arm64/boot/dts/hisilicon/hi6220.dtsi
arch/arm64/boot/dts/mediatek/mt8173.dtsi
arch/arm64/boot/dts/rockchip/rk3399.dtsi

@@@ -29,6 -29,8 +29,8 @@@ SoCs
      compatible = "renesas,r8a7794"
    - R-Car H3 (R8A77950)
      compatible = "renesas,r8a7795"
+   - R-Car M3-W (R8A77960)
+     compatible = "renesas,r8a7796"
  
  
  Boards:
@@@ -39,8 -41,6 +41,8 @@@
      compatible = "renesas,ape6evm", "renesas,r8a73a4"
    - Atmark Techno Armadillo-800 EVA
      compatible = "renesas,armadillo800eva"
 +  - Blanche (RTP0RC7792SEB00010S)
 +    compatible = "renesas,blanche", "renesas,r8a7792"
    - BOCK-W
      compatible = "renesas,bockw", "renesas,r8a7778"
    - Genmai (RTK772100BC00000BR)
@@@ -63,5 -63,7 +65,7 @@@
      compatible = "renesas,porter", "renesas,r8a7791"
    - Salvator-X (RTP0RC7795SIPB0010S)
      compatible = "renesas,salvator-x", "renesas,r8a7795";
+   - Salvator-X
+     compatible = "renesas,salvator-x", "renesas,r8a7796";
    - SILK (RTP0RC7794LCB00011S)
      compatible = "renesas,silk", "renesas,r8a7794"
@@@ -13,19 -13,6 +13,19 @@@ config ARCH_ALPIN
          This enables support for the Annapurna Labs Alpine
          Soc family.
  
 +config ARCH_BCM2835
 +      bool "Broadcom BCM2835 family"
 +      select ARCH_REQUIRE_GPIOLIB
 +      select CLKSRC_OF
 +      select PINCTRL
 +      select PINCTRL_BCM2835
 +      select ARM_AMBA
 +      select ARM_TIMER_SP804
 +      select HAVE_ARM_ARCH_TIMER
 +      help
 +        This enables support for the Broadcom BCM2837 SoC.
 +        This SoC is used in the Raspberry Pi 3 device.
 +
  config ARCH_BCM_IPROC
        bool "Broadcom iProc SoC Family"
        select COMMON_CLK_IPROC
@@@ -49,7 -36,6 +49,7 @@@ config ARCH_EXYNO
        select HAVE_S3C_RTC if RTC_CLASS
        select PINCTRL
        select PINCTRL_EXYNOS
 +      select SOC_SAMSUNG
        help
          This enables support for ARMv8 based Samsung Exynos SoC family.
  
@@@ -80,10 -66,6 +80,10 @@@ config ARCH_MEDIATE
  
  config ARCH_MESON
        bool "Amlogic Platforms"
 +      select PINCTRL
 +      select PINCTRL_MESON
 +      select COMMON_CLK_AMLOGIC
 +      select COMMON_CLK_GXBB
        help
          This enables support for the Amlogic S905 SoCs.
  
@@@ -91,7 -73,6 +91,7 @@@ config ARCH_MVEB
        bool "Marvell EBU SoC Family"
        select ARMADA_AP806_SYSCON
        select ARMADA_CP110_SYSCON
 +      select ARMADA_37XX_CLK
        select MVEBU_ODMI
        help
          This enables support for Marvell EBU familly, including:
@@@ -140,6 -121,12 +140,12 @@@ config ARCH_R8A779
        help
          This enables support for the Renesas R-Car H3 SoC.
  
+ config ARCH_R8A7796
+       bool "Renesas R-Car M3-W SoC Platform"
+       depends on ARCH_RENESAS
+       help
+         This enables support for the Renesas R-Car M3-W SoC.
  config ARCH_STRATIX10
        bool "Altera's Stratix 10 SoCFPGA Family"
        help
@@@ -179,8 -166,6 +185,8 @@@ config ARCH_VEXPRES
        bool "ARMv8 software model (Versatile Express)"
        select ARCH_REQUIRE_GPIOLIB
        select COMMON_CLK_VERSATILE
 +      select PM
 +      select PM_GENERIC_DOMAINS
        select POWER_RESET_VEXPRESS
        select VEXPRESS_CONFIG
        help
  
  config ARCH_VULCAN
        bool "Broadcom Vulcan SOC Family"
 +      select GPIOLIB
        help
          This enables support for Broadcom Vulcan SoC Family
  
                interrupts = <1 9 0xf04>;       /* GIC Maintenence IRQ */
                ranges = <0 0 0 0x79000000 0x0 0x800000>; /* MSI Range */
                reg = <0x0 0x78090000 0x0 0x10000>,     /* GIC Dist */
-                     <0x0 0x780A0000 0x0 0x20000>,     /* GIC CPU */
-                     <0x0 0x780C0000 0x0 0x10000>,     /* GIC VCPU Control */
-                     <0x0 0x780E0000 0x0 0x20000>;     /* GIC VCPU */
-               v2m0: v2m@0x00000 {
+                     <0x0 0x780a0000 0x0 0x20000>,     /* GIC CPU */
+                     <0x0 0x780c0000 0x0 0x10000>,     /* GIC VCPU Control */
+                     <0x0 0x780e0000 0x0 0x20000>;     /* GIC VCPU */
+               v2m0: v2m@00000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x0 0x0 0x1000>;
                };
-               v2m1: v2m@0x10000 {
+               v2m1: v2m@10000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x10000 0x0 0x1000>;
                };
-               v2m2: v2m@0x20000 {
+               v2m2: v2m@20000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x20000 0x0 0x1000>;
                };
-               v2m3: v2m@0x30000 {
+               v2m3: v2m@30000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x30000 0x0 0x1000>;
                };
-               v2m4: v2m@0x40000 {
+               v2m4: v2m@40000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x40000 0x0 0x1000>;
                };
-               v2m5: v2m@0x50000 {
+               v2m5: v2m@50000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x50000 0x0 0x1000>;
                };
-               v2m6: v2m@0x60000 {
+               v2m6: v2m@60000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x60000 0x0 0x1000>;
                };
-               v2m7: v2m@0x70000 {
+               v2m7: v2m@70000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x70000 0x0 0x1000>;
                };
-               v2m8: v2m@0x80000 {
+               v2m8: v2m@80000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x80000 0x0 0x1000>;
                };
-               v2m9: v2m@0x90000 {
+               v2m9: v2m@90000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
                        reg = <0x0 0x90000 0x0 0x1000>;
                };
-               v2m10: v2m@0xA0000 {
+               v2m10: v2m@a0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xA0000 0x0 0x1000>;
+                       reg = <0x0 0xa0000 0x0 0x1000>;
                };
-               v2m11: v2m@0xB0000 {
+               v2m11: v2m@b0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xB0000 0x0 0x1000>;
+                       reg = <0x0 0xb0000 0x0 0x1000>;
                };
-               v2m12: v2m@0xC0000 {
+               v2m12: v2m@c0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xC0000 0x0 0x1000>;
+                       reg = <0x0 0xc0000 0x0 0x1000>;
                };
-               v2m13: v2m@0xD0000 {
+               v2m13: v2m@d0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xD0000 0x0 0x1000>;
+                       reg = <0x0 0xd0000 0x0 0x1000>;
                };
-               v2m14: v2m@0xE0000 {
+               v2m14: v2m@e0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xE0000 0x0 0x1000>;
+                       reg = <0x0 0xe0000 0x0 0x1000>;
                };
-               v2m15: v2m@0xF0000 {
+               v2m15: v2m@f0000 {
                        compatible = "arm,gic-v2m-frame";
                        msi-controller;
-                       reg = <0x0 0xF0000 0x0 0x1000>;
+                       reg = <0x0 0xf0000 0x0 0x1000>;
                };
        };
  
  
        timer {
                compatible = "arm,armv8-timer";
-               interrupts = <1 0 0xff04>,      /* Secure Phys IRQ */
-                            <1 13 0xff04>,     /* Non-secure Phys IRQ */
-                            <1 14 0xff04>,     /* Virt IRQ */
-                            <1 15 0xff04>;     /* Hyp IRQ */
+               interrupts = <1 0 0xff08>,      /* Secure Phys IRQ */
+                            <1 13 0xff08>,     /* Non-secure Phys IRQ */
+                            <1 14 0xff08>,     /* Virt IRQ */
+                            <1 15 0xff08>;     /* Hyp IRQ */
                clock-frequency = <50000000>;
        };
  
                        apm,irq-start = <8>;
                };
  
 +              mdio: mdio@1f610000 {
 +                      compatible = "apm,xgene-mdio-xfi";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +                      reg = <0x0 0x1f610000 0x0 0xd100>;
 +                      clocks = <&xge0clk 0>;
 +              };
 +
                sgenet0: ethernet@1f610000 {
                        compatible = "apm,xgene2-sgenet";
                        status = "disabled";
 -                      reg = <0x0 0x1f610000 0x0 0x10000>,
 +                      reg = <0x0 0x1f610000 0x0 0xd100>,
-                             <0x0 0x1f600000 0x0 0Xd100>,
-                             <0x0 0x20000000 0x0 0X20000>;
+                             <0x0 0x1f600000 0x0 0xd100>,
+                             <0x0 0x20000000 0x0 0x20000>;
                        interrupts = <0 96 4>,
                                     <0 97 4>;
                        dma-coherent;
                        clocks = <&xge0clk 0>;
                        local-mac-address = [00 01 73 00 00 01];
                        phy-connection-type = "sgmii";
 +                      phy-handle = <&sgenet0phy>;
                };
  
                xgenet1: ethernet@1f620000 {
                        compatible = "apm,xgene2-xgenet";
                        status = "disabled";
                        reg = <0x0 0x1f620000 0x0 0x10000>,
-                             <0x0 0x1f600000 0x0 0Xd100>,
-                             <0x0 0x20000000 0x0 0X220000>;
+                             <0x0 0x1f600000 0x0 0xd100>,
+                             <0x0 0x20000000 0x0 0x220000>;
                        interrupts = <0 108 4>,
                                     <0 109 4>,
                                     <0 110 4>,
                        #size-cells = <0>;
                        compatible = "snps,designware-i2c";
                        reg = <0x0 0x10640000 0x0 0x1000>;
-                       interrupts = <0 0x3A 0x4>;
+                       interrupts = <0 0x3a 0x4>;
                        clocks = <&i2c4clk 0>;
                        bus_num = <4>;
                };
                                clock-output-names = "sdioclk";
                        };
  
-                       qmlclk: qmlclk {
-                               compatible = "apm,xgene-device-clock";
-                               #clock-cells = <1>;
-                               clocks = <&socplldiv2 0>;
-                               clock-names = "qmlclk";
-                               reg = <0x0 0x1703C000 0x0 0x1000>;
-                               reg-names = "csr-reg";
-                               clock-output-names = "qmlclk";
-                       };
                        ethclk: ethclk {
                                compatible = "apm,xgene-device-clock";
                                #clock-cells = <1>;
                                compatible = "apm,xgene-device-clock";
                                #clock-cells = <1>;
                                clocks = <&ethclk 0>;
-                               reg = <0x0 0x1702C000 0x0 0x1000>;
+                               reg = <0x0 0x1702c000 0x0 0x1000>;
                                reg-names = "csr-reg";
                                clock-output-names = "menetclk";
                        };
                                clocks = <&socplldiv2 0>;
                                reg = <0x0 0x1f21c000 0x0 0x1000>;
                                reg-names = "csr-reg";
 -                              csr-mask = <0x3>;
 +                              csr-mask = <0xa>;
 +                              enable-mask = <0xf>;
                                clock-output-names = "sge0clk";
                        };
  
 -                      sge1clk: sge1clk@1f21c000 {
 -                              compatible = "apm,xgene-device-clock";
 -                              #clock-cells = <1>;
 -                              clocks = <&socplldiv2 0>;
 -                              reg = <0x0 0x1f21c000 0x0 0x1000>;
 -                              reg-names = "csr-reg";
 -                              csr-mask = <0xc>;
 -                              clock-output-names = "sge1clk";
 -                      };
 -
                        xge0clk: xge0clk@1f61c000 {
                                compatible = "apm,xgene-device-clock";
                                #clock-cells = <1>;
                        clocks = <&rtcclk 0>;
                };
  
 +              mdio: mdio@17020000 {
 +                      compatible = "apm,xgene-mdio-rgmii";
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +                      reg = <0x0 0x17020000 0x0 0xd100>;
 +                      clocks = <&menetclk 0>;
 +              };
 +
                menet: ethernet@17020000 {
                        compatible = "apm,xgene-enet";
                        status = "disabled";
                        reg = <0x0 0x17020000 0x0 0xd100>,
-                             <0x0 0X17030000 0x0 0Xc300>,
-                             <0x0 0X10000000 0x0 0X200>;
+                             <0x0 0x17030000 0x0 0xc300>,
+                             <0x0 0x10000000 0x0 0x200>;
                        reg-names = "enet_csr", "ring_csr", "ring_cmd";
                        interrupts = <0x0 0x3c 0x4>;
                        dma-coherent;
                        /* mac address will be overwritten by the bootloader */
                        local-mac-address = [00 00 00 00 00 00];
                        phy-connection-type = "rgmii";
 -                      phy-handle = <&menetphy>;
 +                      phy-handle = <&menet0phy>,<&menetphy>;
                        mdio {
                                compatible = "apm,xgene-mdio";
                                #address-cells = <1>;
                        compatible = "apm,xgene1-sgenet";
                        status = "disabled";
                        reg = <0x0 0x1f210000 0x0 0xd100>,
-                             <0x0 0x1f200000 0x0 0Xc300>,
-                             <0x0 0x1B000000 0x0 0X200>;
+                             <0x0 0x1f200000 0x0 0xc300>,
+                             <0x0 0x1b000000 0x0 0x200>;
                        reg-names = "enet_csr", "ring_csr", "ring_cmd";
-                       interrupts = <0x0 0xA0 0x4>,
-                                    <0x0 0xA1 0x4>;
+                       interrupts = <0x0 0xa0 0x4>,
+                                    <0x0 0xa1 0x4>;
                        dma-coherent;
                        clocks = <&sge0clk 0>;
                        local-mac-address = [00 00 00 00 00 00];
                        phy-connection-type = "sgmii";
 +                      phy-handle = <&sgenet0phy>;
                };
  
                sgenet1: ethernet@1f210030 {
                        compatible = "apm,xgene1-sgenet";
                        status = "disabled";
                        reg = <0x0 0x1f210030 0x0 0xd100>,
-                             <0x0 0x1f200000 0x0 0Xc300>,
-                             <0x0 0x1B000000 0x0 0X8000>;
+                             <0x0 0x1f200000 0x0 0xc300>,
+                             <0x0 0x1b000000 0x0 0x8000>;
                        reg-names = "enet_csr", "ring_csr", "ring_cmd";
-                       interrupts = <0x0 0xAC 0x4>,
-                                    <0x0 0xAD 0x4>;
+                       interrupts = <0x0 0xac 0x4>,
+                                    <0x0 0xad 0x4>;
                        port-id = <1>;
                        dma-coherent;
 -                      clocks = <&sge1clk 0>;
                        local-mac-address = [00 00 00 00 00 00];
                        phy-connection-type = "sgmii";
 +                      phy-handle = <&sgenet1phy>;
                };
  
                xgenet: ethernet@1f610000 {
                        compatible = "apm,xgene1-xgenet";
                        status = "disabled";
                        reg = <0x0 0x1f610000 0x0 0xd100>,
-                             <0x0 0x1f600000 0x0 0Xc300>,
-                             <0x0 0x18000000 0x0 0X200>;
+                             <0x0 0x1f600000 0x0 0xc300>,
+                             <0x0 0x18000000 0x0 0x200>;
                        reg-names = "enet_csr", "ring_csr", "ring_cmd";
                        interrupts = <0x0 0x60 0x4>,
                                     <0x0 0x61 0x4>,
                        compatible = "apm,xgene1-xgenet";
                        status = "disabled";
                        reg = <0x0 0x1f620000 0x0 0xd100>,
-                             <0x0 0x1f600000 0x0 0Xc300>,
-                             <0x0 0x18000000 0x0 0X8000>;
+                             <0x0 0x1f600000 0x0 0xc300>,
+                             <0x0 0x18000000 0x0 0x8000>;
                        reg-names = "enet_csr", "ring_csr", "ring_cmd";
-                       interrupts = <0x0 0x6C 0x4>,
-                                    <0x0 0x6D 0x4>;
+                       interrupts = <0x0 0x6c 0x4>,
+                                    <0x0 0x6d 0x4>;
                        port-id = <1>;
                        dma-coherent;
                        clocks = <&xge1clk 0>;
  
        aliases {
                serial0 = &uart3;
+               serial1 = &uart0;
+               serial2 = &uart1;
+               serial3 = &uart2;
        };
  
        chosen {
                stdout-path = "serial0:115200n8";
+               bootargs = "earlycon=uart8250,mmio32,0x66130000";
        };
  
        memory {
        };
  };
  
 +&pci_phy0 {
 +      status = "ok";
 +};
 +
 +&pci_phy1 {
 +      status = "ok";
 +};
 +
  &pcie0 {
        status = "ok";
  };
        status = "ok";
  };
  
+ &uart0 {
+       status = "ok";
+ };
+ &uart1 {
+       status = "ok";
+ };
+ &uart2 {
+       status = "ok";
+ };
  &uart3 {
        status = "ok";
  };
        };
  };
  
+ &sata_phy0 {
+       status = "ok";
+ };
+ &sata_phy1 {
+       status = "ok";
+ };
+ &sata {
+       status = "ok";
+ };
  &sdio0 {
        status = "ok";
  };
        };
  };
  
 +&mdio_mux_iproc {
 +      mdio@10 {
 +              gphy0: eth-phy@10 {
 +                      reg = <0x10>;
 +              };
 +      };
 +};
++
+ &pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&nand_sel>;
+       nand_sel: nand_sel {
+               function = "nand";
+               groups = "nand_grp";
+       };
+ };
                        mmu-masters;
                };
  
+               pinctrl: pinctrl@6501d130 {
+                       compatible = "brcm,ns2-pinmux";
+                       reg = <0x6501d130 0x08>,
+                             <0x660a0028 0x04>,
+                             <0x660009b0 0x40>;
+               };
+               gpio_aon: gpio@65024800 {
+                       compatible = "brcm,iproc-gpio";
+                       reg = <0x65024800 0x50>,
+                             <0x65024008 0x18>;
+                       ngpios = <6>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+               };
                gic: interrupt-controller@65210000 {
                        compatible = "arm,gic-400";
                        #interrupt-cells = <3>;
                                      IRQ_TYPE_LEVEL_HIGH)>;
                };
  
+               cci@65590000 {
+                       compatible = "arm,cci-400";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       reg = <0x65590000 0x1000>;
+                       ranges = <0 0x65590000 0x10000>;
+                       pmu@9000 {
+                               compatible = "arm,cci-400-pmu,r1",
+                                            "arm,cci-400-pmu";
+                               reg = <0x9000 0x4000>;
+                               interrupts = <GIC_SPI 344 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 345 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 346 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 347 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 348 IRQ_TYPE_LEVEL_HIGH>,
+                                            <GIC_SPI 349 IRQ_TYPE_LEVEL_HIGH>;
+                       };
+               };
 +              mdio_mux_iproc: mdio-mux@6602023c {
 +                      compatible = "brcm,mdio-mux-iproc";
 +                      reg = <0x6602023c 0x14>;
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +
 +                      mdio@0 {
 +                              reg = <0x0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +
 +                              pci_phy0: pci-phy@0 {
 +                                      compatible = "brcm,ns2-pcie-phy";
 +                                      reg = <0x0>;
 +                                      #phy-cells = <0>;
 +                                      status = "disabled";
 +                              };
 +                      };
 +
 +                      mdio@7 {
 +                              reg = <0x7>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +
 +                              pci_phy1: pci-phy@0 {
 +                                      compatible = "brcm,ns2-pcie-phy";
 +                                      reg = <0x0>;
 +                                      #phy-cells = <0>;
 +                                      status = "disabled";
 +                              };
 +                      };
 +
 +                      mdio@10 {
 +                              reg = <0x10>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                      };
 +              };
 +
                timer0: timer@66030000 {
                        compatible = "arm,sp804", "arm,primecell";
                        reg = <0x66030000 0x1000>;
                        clock-names = "wdogclk", "apb_pclk";
                };
  
+               gpio_g: gpio@660a0000 {
+                       compatible = "brcm,iproc-gpio";
+                       reg = <0x660a0000 0x50>;
+                       ngpios = <32>;
+                       #gpio-cells = <2>;
+                       gpio-controller;
+                       interrupt-controller;
+                       interrupts = <GIC_SPI 400 IRQ_TYPE_LEVEL_HIGH>;
+               };
                i2c1: i2c@660b0000 {
                        compatible = "brcm,iproc-i2c";
                        reg = <0x660b0000 0x100>;
                        status = "disabled";
                };
  
+               uart0: serial@66100000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x66100000 0x100>;
+                       interrupts = <GIC_SPI 390 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&iprocslow>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+               uart1: serial@66110000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x66110000 0x100>;
+                       interrupts = <GIC_SPI 391 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&iprocslow>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
+               uart2: serial@66120000 {
+                       compatible = "snps,dw-apb-uart";
+                       reg = <0x66120000 0x100>;
+                       interrupts = <GIC_SPI 392 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&iprocslow>;
+                       reg-shift = <2>;
+                       reg-io-width = <4>;
+                       status = "disabled";
+               };
                uart3: serial@66130000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x66130000 0x100>;
                        reg = <0x66220000 0x28>;
                };
  
+               sata_phy: sata_phy@663f0100 {
+                       compatible = "brcm,iproc-ns2-sata-phy";
+                       reg = <0x663f0100 0x1f00>,
+                             <0x663f004c 0x10>;
+                       reg-names = "phy", "phy-ctrl";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       sata_phy0: sata-phy@0 {
+                               reg = <0>;
+                               #phy-cells = <0>;
+                               status = "disabled";
+                       };
+                       sata_phy1: sata-phy@1 {
+                               reg = <1>;
+                               #phy-cells = <0>;
+                               status = "disabled";
+                       };
+               };
+               sata: ahci@663f2000 {
+                       compatible = "brcm,iproc-ahci", "generic-ahci";
+                       reg = <0x663f2000 0x1000>;
+                       reg-names = "ahci";
+                       interrupts = <GIC_SPI 438 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+                       sata0: sata-port@0 {
+                               reg = <0>;
+                               phys = <&sata_phy0>;
+                               phy-names = "sata-phy";
+                       };
+                       sata1: sata-port@1 {
+                               reg = <1>;
+                               phys = <&sata_phy1>;
+                               phy-names = "sata-phy";
+                       };
+               };
                sdio0: sdhci@66420000 {
                        compatible = "brcm,sdhci-iproc-cygnus";
                        reg = <0x66420000 0x100>;
@@@ -51,7 -51,7 +51,7 @@@
        #size-cells = <2>;
  
        cpus {
-               #address-cells = <2>;
+               #address-cells = <1>;
                #size-cells = <0>;
  
                /*
                cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
-                       reg = <0x0 0x0>;
+                       reg = <0x0>;
                        clocks = <&clockgen 1 0>;
+                       next-level-cache = <&l2>;
                };
  
                cpu1: cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
-                       reg = <0x0 0x1>;
+                       reg = <0x1>;
                        clocks = <&clockgen 1 0>;
+                       next-level-cache = <&l2>;
                };
  
                cpu2: cpu@2 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
-                       reg = <0x0 0x2>;
+                       reg = <0x2>;
                        clocks = <&clockgen 1 0>;
+                       next-level-cache = <&l2>;
                };
  
                cpu3: cpu@3 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a53";
-                       reg = <0x0 0x3>;
+                       reg = <0x3>;
                        clocks = <&clockgen 1 0>;
+                       next-level-cache = <&l2>;
+               };
+               l2: l2-cache {
+                       compatible = "cache";
                };
        };
  
                        big-endian;
                };
  
 +              crypto: crypto@1700000 {
 +                      compatible = "fsl,sec-v5.4", "fsl,sec-v5.0",
 +                                   "fsl,sec-v4.0";
 +                      fsl,sec-era = <3>;
 +                      #address-cells = <1>;
 +                      #size-cells = <1>;
 +                      ranges = <0x0 0x00 0x1700000 0x100000>;
 +                      reg = <0x00 0x1700000 0x0 0x100000>;
 +                      interrupts = <0 75 0x4>;
 +
 +                      sec_jr0: jr@10000 {
 +                              compatible = "fsl,sec-v5.4-job-ring",
 +                                           "fsl,sec-v5.0-job-ring",
 +                                           "fsl,sec-v4.0-job-ring";
 +                              reg        = <0x10000 0x10000>;
 +                              interrupts = <0 71 0x4>;
 +                      };
 +
 +                      sec_jr1: jr@20000 {
 +                              compatible = "fsl,sec-v5.4-job-ring",
 +                                           "fsl,sec-v5.0-job-ring",
 +                                           "fsl,sec-v4.0-job-ring";
 +                              reg        = <0x20000 0x10000>;
 +                              interrupts = <0 72 0x4>;
 +                      };
 +
 +                      sec_jr2: jr@30000 {
 +                              compatible = "fsl,sec-v5.4-job-ring",
 +                                           "fsl,sec-v5.0-job-ring",
 +                                           "fsl,sec-v4.0-job-ring";
 +                              reg        = <0x30000 0x10000>;
 +                              interrupts = <0 73 0x4>;
 +                      };
 +
 +                      sec_jr3: jr@40000 {
 +                              compatible = "fsl,sec-v5.4-job-ring",
 +                                           "fsl,sec-v5.0-job-ring",
 +                                           "fsl,sec-v4.0-job-ring";
 +                              reg        = <0x40000 0x10000>;
 +                              interrupts = <0 74 0x4>;
 +                      };
 +              };
 +
                dcfg: dcfg@1ee0000 {
                        compatible = "fsl,ls1043a-dcfg", "syscon";
                        reg = <0x0 0x1ee0000 0x0 0x10000>;
                        interrupts = <0 60 0x4>;
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
+                       snps,dis_rxdet_inp3_quirk;
                };
  
                usb1: usb3@3000000 {
                        interrupts = <0 61 0x4>;
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
+                       snps,dis_rxdet_inp3_quirk;
                };
  
                usb2: usb3@3100000 {
                        interrupts = <0 63 0x4>;
                        dr_mode = "host";
                        snps,quirk-frame-length-adjustment = <0x20>;
+                       snps,dis_rxdet_inp3_quirk;
                };
  
                sata: sata@3200000 {
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
+                       dma-coherent;
                        num-lanes = <4>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000   /* downstream I/O */
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
+                       dma-coherent;
                        num-lanes = <2>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000   /* downstream I/O */
                        #address-cells = <3>;
                        #size-cells = <2>;
                        device_type = "pci";
+                       dma-coherent;
                        num-lanes = <2>;
                        bus-range = <0x0 0xff>;
                        ranges = <0x81000000 0x0 0x00000000 0x50 0x00010000 0x0 0x00010000   /* downstream I/O */
@@@ -5,7 -5,6 +5,7 @@@
   */
  
  #include <dt-bindings/interrupt-controller/arm-gic.h>
 +#include <dt-bindings/reset/hisi,hi6220-resets.h>
  #include <dt-bindings/clock/hi6220-clock.h>
  #include <dt-bindings/pinctrl/hisi.h>
  #include <dt-bindings/thermal/thermal.h>
                        compatible = "hisilicon,hi6220-mediactrl", "syscon";
                        reg = <0x0 0xf4410000 0x0 0x1000>;
                        #clock-cells = <1>;
 +                      #reset-cells = <1>;
                };
  
                pm_ctrl: pm_ctrl@f7032000 {
                        clock-names = "timer1", "timer2", "apb_pclk";
                };
  
+               rtc0: rtc@f8003000 {
+                       compatible = "arm,pl031", "arm,primecell";
+                       reg = <0x0 0xf8003000 0x0 0x1000>;
+                       interrupts = <0 12 4>;
+                       clocks = <&ao_ctrl HI6220_RTC0_PCLK>;
+                       clock-names = "apb_pclk";
+               };
+               rtc1: rtc@f8004000 {
+                       compatible = "arm,pl031", "arm,primecell";
+                       reg = <0x0 0xf8004000 0x0 0x1000>;
+                       interrupts = <0 8 4>;
+                       clocks = <&ao_ctrl HI6220_RTC1_PCLK>;
+                       clock-names = "apb_pclk";
+               };
                pmx0: pinmux@f7010000 {
                        compatible = "pinctrl-single";
                        reg = <0x0 0xf7010000  0x0 0x27c>;
        #address-cells = <2>;
        #size-cells = <2>;
  
+       aliases {
+               ovl0 = &ovl0;
+               ovl1 = &ovl1;
+               rdma0 = &rdma0;
+               rdma1 = &rdma1;
+               rdma2 = &rdma2;
+               wdma0 = &wdma0;
+               wdma1 = &wdma1;
+               color0 = &color0;
+               color1 = &color1;
+               split0 = &split0;
+               split1 = &split1;
+               dpi0 = &dpi0;
+               dsi0 = &dsi0;
+               dsi1 = &dsi1;
+       };
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                };
        };
  
 +      reserved-memory {
 +              #address-cells = <2>;
 +              #size-cells = <2>;
 +              ranges;
 +              vpu_dma_reserved: vpu_dma_mem_region {
 +                      compatible = "shared-dma-pool";
 +                      reg = <0 0xb7000000 0 0x500000>;
 +                      alignment = <0x1000>;
 +                      no-map;
 +              };
 +      };
 +
        timer {
                compatible = "arm,armv8-timer";
                interrupt-parent = <&gic>;
                        clock-names = "spi", "wrap";
                };
  
 +              vpu: vpu@10020000 {
 +                      compatible = "mediatek,mt8173-vpu";
 +                      reg = <0 0x10020000 0 0x30000>,
 +                            <0 0x10050000 0 0x100>;
 +                      reg-names = "tcm", "cfg_reg";
 +                      interrupts = <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>;
 +                      clocks = <&topckgen CLK_TOP_SCP_SEL>;
 +                      clock-names = "main";
 +                      memory-region = <&vpu_dma_reserved>;
 +              };
 +
                sysirq: intpol-controller@10200620 {
                        compatible = "mediatek,mt8173-sysirq",
                                     "mediatek,mt6577-sysirq";
                        #clock-cells = <1>;
                };
  
+               mipi_tx0: mipi-dphy@10215000 {
+                       compatible = "mediatek,mt8173-mipi-tx";
+                       reg = <0 0x10215000 0 0x1000>;
+                       clocks = <&clk26m>;
+                       clock-output-names = "mipi_tx0_pll";
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
+               mipi_tx1: mipi-dphy@10216000 {
+                       compatible = "mediatek,mt8173-mipi-tx";
+                       reg = <0 0x10216000 0 0x1000>;
+                       clocks = <&clk26m>;
+                       clock-output-names = "mipi_tx1_pll";
+                       #clock-cells = <0>;
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
                gic: interrupt-controller@10220000 {
                        compatible = "arm,gic-400";
                        #interrupt-cells = <3>;
                mmsys: clock-controller@14000000 {
                        compatible = "mediatek,mt8173-mmsys", "syscon";
                        reg = <0 0x14000000 0 0x1000>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
                        #clock-cells = <1>;
                };
  
+               ovl0: ovl@1400c000 {
+                       compatible = "mediatek,mt8173-disp-ovl";
+                       reg = <0 0x1400c000 0 0x1000>;
+                       interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_OVL0>;
+                       iommus = <&iommu M4U_PORT_DISP_OVL0>;
+                       mediatek,larb = <&larb0>;
+               };
+               ovl1: ovl@1400d000 {
+                       compatible = "mediatek,mt8173-disp-ovl";
+                       reg = <0 0x1400d000 0 0x1000>;
+                       interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_OVL1>;
+                       iommus = <&iommu M4U_PORT_DISP_OVL1>;
+                       mediatek,larb = <&larb4>;
+               };
+               rdma0: rdma@1400e000 {
+                       compatible = "mediatek,mt8173-disp-rdma";
+                       reg = <0 0x1400e000 0 0x1000>;
+                       interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_RDMA0>;
+                       iommus = <&iommu M4U_PORT_DISP_RDMA0>;
+                       mediatek,larb = <&larb0>;
+               };
+               rdma1: rdma@1400f000 {
+                       compatible = "mediatek,mt8173-disp-rdma";
+                       reg = <0 0x1400f000 0 0x1000>;
+                       interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_RDMA1>;
+                       iommus = <&iommu M4U_PORT_DISP_RDMA1>;
+                       mediatek,larb = <&larb4>;
+               };
+               rdma2: rdma@14010000 {
+                       compatible = "mediatek,mt8173-disp-rdma";
+                       reg = <0 0x14010000 0 0x1000>;
+                       interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_RDMA2>;
+                       iommus = <&iommu M4U_PORT_DISP_RDMA2>;
+                       mediatek,larb = <&larb4>;
+               };
+               wdma0: wdma@14011000 {
+                       compatible = "mediatek,mt8173-disp-wdma";
+                       reg = <0 0x14011000 0 0x1000>;
+                       interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_WDMA0>;
+                       iommus = <&iommu M4U_PORT_DISP_WDMA0>;
+                       mediatek,larb = <&larb0>;
+               };
+               wdma1: wdma@14012000 {
+                       compatible = "mediatek,mt8173-disp-wdma";
+                       reg = <0 0x14012000 0 0x1000>;
+                       interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_WDMA1>;
+                       iommus = <&iommu M4U_PORT_DISP_WDMA1>;
+                       mediatek,larb = <&larb4>;
+               };
+               color0: color@14013000 {
+                       compatible = "mediatek,mt8173-disp-color";
+                       reg = <0 0x14013000 0 0x1000>;
+                       interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_COLOR0>;
+               };
+               color1: color@14014000 {
+                       compatible = "mediatek,mt8173-disp-color";
+                       reg = <0 0x14014000 0 0x1000>;
+                       interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_COLOR1>;
+               };
+               aal@14015000 {
+                       compatible = "mediatek,mt8173-disp-aal";
+                       reg = <0 0x14015000 0 0x1000>;
+                       interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_AAL>;
+               };
+               gamma@14016000 {
+                       compatible = "mediatek,mt8173-disp-gamma";
+                       reg = <0 0x14016000 0 0x1000>;
+                       interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_GAMMA>;
+               };
+               merge@14017000 {
+                       compatible = "mediatek,mt8173-disp-merge";
+                       reg = <0 0x14017000 0 0x1000>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_MERGE>;
+               };
+               split0: split@14018000 {
+                       compatible = "mediatek,mt8173-disp-split";
+                       reg = <0 0x14018000 0 0x1000>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_SPLIT0>;
+               };
+               split1: split@14019000 {
+                       compatible = "mediatek,mt8173-disp-split";
+                       reg = <0 0x14019000 0 0x1000>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_SPLIT1>;
+               };
+               ufoe@1401a000 {
+                       compatible = "mediatek,mt8173-disp-ufoe";
+                       reg = <0 0x1401a000 0 0x1000>;
+                       interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DISP_UFOE>;
+               };
+               dsi0: dsi@1401b000 {
+                       compatible = "mediatek,mt8173-dsi";
+                       reg = <0 0x1401b000 0 0x1000>;
+                       interrupts = <GIC_SPI 192 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DSI0_ENGINE>,
+                                <&mmsys CLK_MM_DSI0_DIGITAL>,
+                                <&mipi_tx0>;
+                       clock-names = "engine", "digital", "hs";
+                       phys = <&mipi_tx0>;
+                       phy-names = "dphy";
+                       status = "disabled";
+               };
+               dsi1: dsi@1401c000 {
+                       compatible = "mediatek,mt8173-dsi";
+                       reg = <0 0x1401c000 0 0x1000>;
+                       interrupts = <GIC_SPI 193 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DSI1_ENGINE>,
+                                <&mmsys CLK_MM_DSI1_DIGITAL>,
+                                <&mipi_tx1>;
+                       clock-names = "engine", "digital", "hs";
+                       phy = <&mipi_tx1>;
+                       phy-names = "dphy";
+                       status = "disabled";
+               };
+               dpi0: dpi@1401d000 {
+                       compatible = "mediatek,mt8173-dpi";
+                       reg = <0 0x1401d000 0 0x1000>;
+                       interrupts = <GIC_SPI 194 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_DPI_PIXEL>,
+                                <&mmsys CLK_MM_DPI_ENGINE>,
+                                <&apmixedsys CLK_APMIXED_TVDPLL>;
+                       clock-names = "pixel", "engine", "pll";
+                       status = "disabled";
+               };
                pwm0: pwm@1401e000 {
                        compatible = "mediatek,mt8173-disp-pwm",
                                     "mediatek,mt6595-disp-pwm";
                        status = "disabled";
                };
  
+               mutex: mutex@14020000 {
+                       compatible = "mediatek,mt8173-disp-mutex";
+                       reg = <0 0x14020000 0 0x1000>;
+                       interrupts = <GIC_SPI 169 IRQ_TYPE_LEVEL_LOW>;
+                       power-domains = <&scpsys MT8173_POWER_DOMAIN_MM>;
+                       clocks = <&mmsys CLK_MM_MUTEX_32K>;
+               };
                larb0: larb@14021000 {
                        compatible = "mediatek,mt8173-smi-larb";
                        reg = <0 0x14021000 0 0x1000>;
                        clock-names = "apb", "smi";
                };
  
+               od@14023000 {
+                       compatible = "mediatek,mt8173-disp-od";
+                       reg = <0 0x14023000 0 0x1000>;
+                       clocks = <&mmsys CLK_MM_DISP_OD>;
+               };
                larb4: larb@14027000 {
                        compatible = "mediatek,mt8173-smi-larb";
                        reg = <0 0x14027000 0 0x1000>;
                        clock-names = "apb", "smi";
                };
  
 +              vcodec_enc: vcodec@18002000 {
 +                      compatible = "mediatek,mt8173-vcodec-enc";
 +                      reg = <0 0x18002000 0 0x1000>,  /* VENC_SYS */
 +                            <0 0x19002000 0 0x1000>;  /* VENC_LT_SYS */
 +                      interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_LOW>,
 +                                   <GIC_SPI 202 IRQ_TYPE_LEVEL_LOW>;
 +                      mediatek,larb = <&larb3>,
 +                                      <&larb5>;
 +                      iommus = <&iommu M4U_PORT_VENC_RCPU>,
 +                               <&iommu M4U_PORT_VENC_REC>,
 +                               <&iommu M4U_PORT_VENC_BSDMA>,
 +                               <&iommu M4U_PORT_VENC_SV_COMV>,
 +                               <&iommu M4U_PORT_VENC_RD_COMV>,
 +                               <&iommu M4U_PORT_VENC_CUR_LUMA>,
 +                               <&iommu M4U_PORT_VENC_CUR_CHROMA>,
 +                               <&iommu M4U_PORT_VENC_REF_LUMA>,
 +                               <&iommu M4U_PORT_VENC_REF_CHROMA>,
 +                               <&iommu M4U_PORT_VENC_NBM_RDMA>,
 +                               <&iommu M4U_PORT_VENC_NBM_WDMA>,
 +                               <&iommu M4U_PORT_VENC_RCPU_SET2>,
 +                               <&iommu M4U_PORT_VENC_REC_FRM_SET2>,
 +                               <&iommu M4U_PORT_VENC_BSDMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_SV_COMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_RD_COMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_CUR_LUMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_CUR_CHROMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_REF_LUMA_SET2>,
 +                               <&iommu M4U_PORT_VENC_REC_CHROMA_SET2>;
 +                      mediatek,vpu = <&vpu>;
 +                      clocks = <&topckgen CLK_TOP_VENCPLL_D2>,
 +                               <&topckgen CLK_TOP_VENC_SEL>,
 +                               <&topckgen CLK_TOP_UNIVPLL1_D2>,
 +                               <&topckgen CLK_TOP_VENC_LT_SEL>;
 +                      clock-names = "venc_sel_src",
 +                                    "venc_sel",
 +                                    "venc_lt_sel_src",
 +                                    "venc_lt_sel";
 +              };
 +
                vencltsys: clock-controller@19000000 {
                        compatible = "mediatek,mt8173-vencltsys", "syscon";
                        reg = <0 0x19000000 0 0x1000>;
@@@ -45,6 -45,7 +45,7 @@@
  #include <dt-bindings/interrupt-controller/arm-gic.h>
  #include <dt-bindings/interrupt-controller/irq.h>
  #include <dt-bindings/pinctrl/rockchip.h>
+ #include <dt-bindings/thermal/thermal.h>
  
  / {
        compatible = "rockchip,rk3399";
        #size-cells = <2>;
  
        aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+               i2c7 = &i2c7;
+               i2c8 = &i2c8;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &uart2;
        };
  
        amba {
 -              compatible = "arm,amba-bus";
 +              compatible = "simple-bus";
                #address-cells = <2>;
                #size-cells = <2>;
                ranges;
                status = "disabled";
        };
  
+       sdhci: sdhci@fe330000 {
+               compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
+               reg = <0x0 0xfe330000 0x0 0x10000>;
+               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+               arasan,soc-ctl-syscon = <&grf>;
+               assigned-clocks = <&cru SCLK_EMMC>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
+               clock-names = "clk_xin", "clk_ahb";
+               clock-output-names = "emmc_cardclock";
+               #clock-cells = <0>;
+               phys = <&emmc_phy>;
+               phy-names = "phy_arasan";
+               status = "disabled";
+       };
        usb_host0_ehci: usb@fe380000 {
                compatible = "generic-ehci";
                reg = <0x0 0xfe380000 0x0 0x20000>;
                };
        };
  
+       i2c1: i2c@ff110000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff110000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C1>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C1>, <&cru PCLK_I2C1>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c1_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c2: i2c@ff120000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff120000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C2>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C2>, <&cru PCLK_I2C2>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c2_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c3: i2c@ff130000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff130000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C3>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C3>, <&cru PCLK_I2C3>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c3_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c5: i2c@ff140000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff140000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C5>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C5>, <&cru PCLK_I2C5>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c5_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c6: i2c@ff150000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff150000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C6>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C6>, <&cru PCLK_I2C6>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c6_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c7: i2c@ff160000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff160000 0x0 0x1000>;
+               assigned-clocks = <&cru SCLK_I2C7>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&cru SCLK_I2C7>, <&cru PCLK_I2C7>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c7_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
        uart0: serial@ff180000 {
                compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
                reg = <0x0 0xff180000 0x0 0x100>;
                status = "disabled";
        };
  
+       thermal-zones {
+               cpu_thermal: cpu {
+                       polling-delay-passive = <100>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsadc 0>;
+                       trips {
+                               cpu_alert0: cpu_alert0 {
+                                       temperature = <70000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_alert1: cpu_alert1 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               cpu_crit: cpu_crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+                       cooling-maps {
+                               map0 {
+                                       trip = <&cpu_alert0>;
+                                       cooling-device =
+                                               <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                               map1 {
+                                       trip = <&cpu_alert1>;
+                                       cooling-device =
+                                               <&cpu_l0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+                                               <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+               gpu_thermal: gpu {
+                       polling-delay-passive = <100>;
+                       polling-delay = <1000>;
+                       thermal-sensors = <&tsadc 1>;
+                       trips {
+                               gpu_alert0: gpu_alert0 {
+                                       temperature = <75000>;
+                                       hysteresis = <2000>;
+                                       type = "passive";
+                               };
+                               gpu_crit: gpu_crit {
+                                       temperature = <95000>;
+                                       hysteresis = <2000>;
+                                       type = "critical";
+                               };
+                       };
+                       cooling-maps {
+                               map0 {
+                                       trip = <&gpu_alert0>;
+                                       cooling-device =
+                                               <&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                               };
+                       };
+               };
+       };
+       tsadc: tsadc@ff260000 {
+               compatible = "rockchip,rk3399-tsadc";
+               reg = <0x0 0xff260000 0x0 0x100>;
+               interrupts = <GIC_SPI 97 IRQ_TYPE_LEVEL_HIGH>;
+               assigned-clocks = <&cru SCLK_TSADC>;
+               assigned-clock-rates = <750000>;
+               clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
+               clock-names = "tsadc", "apb_pclk";
+               resets = <&cru SRST_TSADC>;
+               reset-names = "tsadc-apb";
+               rockchip,grf = <&grf>;
+               rockchip,hw-tshut-temp = <95000>;
+               pinctrl-names = "init", "default", "sleep";
+               pinctrl-0 = <&otp_gpio>;
+               pinctrl-1 = <&otp_out>;
+               pinctrl-2 = <&otp_gpio>;
+               #thermal-sensor-cells = <1>;
+               status = "disabled";
+       };
        pmugrf: syscon@ff320000 {
-               compatible = "rockchip,rk3399-pmugrf", "syscon";
+               compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
                reg = <0x0 0xff320000 0x0 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               pmu_io_domains: io-domains {
+                       compatible = "rockchip,rk3399-pmu-io-voltage-domain";
+                       status = "disabled";
+               };
        };
  
        spi3: spi@ff350000 {
                status = "disabled";
        };
  
+       i2c0: i2c@ff3c0000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff3c0000 0x0 0x1000>;
+               assigned-clocks = <&pmucru SCLK_I2C0_PMU>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&pmucru SCLK_I2C0_PMU>, <&pmucru PCLK_I2C0_PMU>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c0_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c4: i2c@ff3d0000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff3d0000 0x0 0x1000>;
+               assigned-clocks = <&pmucru SCLK_I2C4_PMU>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&pmucru SCLK_I2C4_PMU>, <&pmucru PCLK_I2C4_PMU>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c4_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+       i2c8: i2c@ff3e0000 {
+               compatible = "rockchip,rk3399-i2c";
+               reg = <0x0 0xff3e0000 0x0 0x1000>;
+               assigned-clocks = <&pmucru SCLK_I2C8_PMU>;
+               assigned-clock-rates = <200000000>;
+               clocks = <&pmucru SCLK_I2C8_PMU>, <&pmucru PCLK_I2C8_PMU>;
+               clock-names = "i2c", "pclk";
+               interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c8_xfer>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
        pwm0: pwm@ff420000 {
                compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
                reg = <0x0 0xff420000 0x0 0x10>;
                reg = <0x0 0xff760000 0x0 0x1000>;
                #clock-cells = <1>;
                #reset-cells = <1>;
+               assigned-clocks =
+                       <&cru PLL_GPLL>, <&cru PLL_CPLL>,
+                       <&cru PLL_NPLL>,
+                       <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>,
+                       <&cru PCLK_PERIHP>,
+                       <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>,
+                       <&cru PCLK_PERILP0>,
+                       <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>;
+               assigned-clock-rates =
+                        <594000000>,  <800000000>,
+                       <1000000000>,
+                        <150000000>,   <75000000>,
+                         <37500000>,
+                        <100000000>,  <100000000>,
+                         <50000000>,
+                        <100000000>,   <50000000>;
        };
  
        grf: syscon@ff770000 {
-               compatible = "rockchip,rk3399-grf", "syscon";
+               compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
                reg = <0x0 0xff770000 0x0 0x10000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               io_domains: io-domains {
+                       compatible = "rockchip,rk3399-io-voltage-domain";
+                       status = "disabled";
+               };
+               emmc_phy: phy@f780 {
+                       compatible = "rockchip,rk3399-emmc-phy";
+                       reg = <0xf780 0x24>;
+                       clocks = <&sdhci>;
+                       clock-names = "emmcclk";
+                       #phy-cells = <0>;
+                       status = "disabled";
+               };
        };
  
        watchdog@ff840000 {
                interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
        };
  
 +      rktimer: rktimer@ff850000 {
 +              compatible = "rockchip,rk3399-timer";
 +              reg = <0x0 0xff850000 0x0 0x1000>;
 +              interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
 +              clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER00>;
 +              clock-names = "pclk", "timer";
 +      };
 +
        spdif: spdif@ff870000 {
                compatible = "rockchip,rk3399-spdif";
                reg = <0x0 0xff870000 0x0 0x1000>;
                        };
                };
  
+               sleep {
+                       ap_pwroff: ap-pwroff {
+                               rockchip,pins = <1 5 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+                       ddrio_pwroff: ddrio-pwroff {
+                               rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
                spdif {
                        spdif_bus: spdif-bus {
                                rockchip,pins =
                        };
                };
  
+               tsadc {
+                       otp_gpio: otp-gpio {
+                               rockchip,pins = <1 6 RK_FUNC_GPIO &pcfg_pull_none>;
+                       };
+                       otp_out: otp-out {
+                               rockchip,pins = <1 6 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
                uart0 {
                        uart0_xfer: uart0-xfer {
                                rockchip,pins =