Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Mar 2016 22:15:48 +0000 (15:15 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sun, 20 Mar 2016 22:15:48 +0000 (15:15 -0700)
Pull ARM DT updates from Arnd Bergmann:
 "These are all the updates to device tree files for 32-bit platforms,
  plus a couple of related 64-bit updates:

  New SoC support:
   - Allwinner A83T
   - Axis Artpec-6 SoC
   - Mediatek MT7623 SoC
   - TI Keystone K2G SoC
   - ST Microelectronics stm32f469

  New board or machine support:
   - ARM Juno R2
   - Buffalo Linkstation LS-QVL and LS-GL
   - Cubietruck plus
   - D-Link DIR-885L
   - DT support for ARM RealView PB1176 and PB11MPCore
   - Google Nexus 7
   - Homlet v2
   - Itead Ibox
   - Lamobo R1
   - LG Optimus Black
   - Logicpd dm3730
   - Raspberry Pi Model A

  Other changes include
   - Lots of updates for Qualcomm APQ8064, MSM8974 and others
   - Improved support for Nokia N900 and other OMAP machines
   - Common clk support for lpc32xx
   - HDLCD display on ARM
   - Improved stm32f429 support
   - Improved Renesas device support, r8a779x and others
   - Lots of Rockchip updates
   - Samsung cleanups
   - ADC support for Atmel SAMA5D2
   - BCM2835 (Raspberry Pi) improvements
   - Broadcom Northstar Plus enhancements
   - OMAP GPMC rework
   - Several improvements for Atmel SAMA5D2 / Xplained
   - Global change to remove inofficial "arm,amba-bus" compatible
     string"

* tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (350 commits)
  ARM, ARM64: dts: drop "arm,amba-bus" in favor of "simple-bus"
  ARM: dts: artpec: dual-license on artpec6.dtsi
  ARM: dts: ux500: add synaptics RMI4 for Ux500 TVK DT
  arm64: dts: juno/vexpress: fix node name unit-address presence warnings
  arm64: dts: foundation-v8: add SBSA Generic Watchdog device node
  ARM: dts: at91: sama5d2 Xplained: add leds node
  ARM: dts: at91: sama5d2 Xplained: add user push button
  ARM: dts: at91: sama5d2 Xplained: set pin muxing for usb gadget and usb host
  ARM: dts: stm32f429: Enable Ethernet on Eval board
  ARM: dts: omap3-sniper: TWL4030 keypad support
  Revert "ARM: dts: DRA7: Add dt nodes for PWMSS"
  ARM: dts: dm814x: dra62x: Disable wait pin monitoring for NAND
  ARM: dts: dm814x: dra62x: Fix NAND device nodes
  ARM: dts: stm32f429: Add Ethernet support
  ARM: dts: stm32f429: Add system config bank node
  ARM: dts: at91: sama5d2: add nand0 and nfc0 nodes
  ARM: dts: at91: sama5d2: add dma properties to UART nodes
  ARM: dts: at91: sama5d2 Xplained: Correct the macb irq pinctrl node
  ARM: dts: exynos: Don't overheat the Odroid XU3-Lite on high load
  ARM: dts: exynos: Add cooling levels for Exynos5422/5800 CPUs
  ...

18 files changed:
1  2 
Documentation/devicetree/bindings/arm/arm-boards
Documentation/devicetree/bindings/arm/cpus.txt
Documentation/devicetree/bindings/arm/omap/omap.txt
arch/arm/boot/dts/am335x-chilisom.dtsi
arch/arm/boot/dts/am335x-sl50.dts
arch/arm/boot/dts/am57xx-beagle-x15.dts
arch/arm/boot/dts/am57xx-cl-som-am57x.dts
arch/arm/boot/dts/armada-385-db-ap.dts
arch/arm/boot/dts/armada-388-gp.dts
arch/arm/boot/dts/armada-38x.dtsi
arch/arm/boot/dts/armada-xp-db.dts
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/omap3-n900.dts
arch/arm/boot/dts/pxa3xx.dtsi
arch/arm/boot/dts/rk3036-kylin.dts
arch/arm/boot/dts/rk3036.dtsi
arch/arm/boot/dts/socfpga.dtsi
arch/arm/mach-keystone/keystone.c

@@@ -123,9 -123,7 +123,9 @@@ Required nodes
  
  - syscon: some subnode of the RealView SoC node must be a
    system controller node pointing to the control registers,
 -  with the compatible string set to one of these tuples:
 +  with the compatible string set to one of these:
 +   "arm,realview-eb11mp-revb-syscon", "arm,realview-eb-syscon", "syscon"
 +   "arm,realview-eb11mp-revc-syscon", "arm,realview-eb-syscon", "syscon"
     "arm,realview-eb-syscon", "syscon"
     "arm,realview-pb1176-syscon", "syscon"
     "arm,realview-pb11mp-syscon", "syscon"
@@@ -182,6 -180,7 +182,7 @@@ described under the RS1 memory mapping
  Required properties (in root node):
        compatible = "arm,juno";        /* For Juno r0 board */
        compatible = "arm,juno-r1";     /* For Juno r1 board */
+       compatible = "arm,juno-r2";     /* For Juno r2 board */
  
  Required nodes:
  The description for the board must include:
@@@ -178,6 -178,7 +178,7 @@@ nodes to be present and contain the pro
                            "marvell,sheeva-v5"
                            "nvidia,tegra132-denver"
                            "qcom,krait"
+                           "qcom,kryo"
                            "qcom,scorpion"
        - enable-method
                Value type: <stringlist>
                Usage: optional
                Value type: <prop-encoded-array>
                Definition: A u32 value that represents the running time dynamic
 -                          power coefficient in units of mW/MHz/uVolt^2. The
 +                          power coefficient in units of mW/MHz/uV^2. The
                            coefficient can either be calculated from power
                            measurements or derived by analysis.
  
@@@ -23,7 -23,6 +23,7 @@@ Optional properties
    during suspend.
  - ti,no-reset-on-init: When present, the module should not be reset at init
  - ti,no-idle-on-init: When present, the module should not be idled at init
 +- ti,no-idle: When present, the module is never allowed to idle.
  
  Example:
  
@@@ -155,7 -154,7 +155,7 @@@ Boards
    compatible = "compulab,am437x-sbc-t43", "compulab,am437x-cm-t43", "ti,am4372", "ti,am43"
  
  - AM43x EPOS EVM
-   compatible = "ti,am43x-epos-evm", "ti,am4372", "ti,am43"
+   compatible = "ti,am43x-epos-evm", "ti,am43", "ti,am438x"
  
  - AM437x GP EVM
    compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43"
@@@ -7,6 -7,7 +7,7 @@@
   * published by the Free Software Foundation.
   */
  #include "am33xx.dtsi"
+ #include <dt-bindings/interrupt-controller/irq.h>
  
  / {
        model = "Grinn AM335x ChiliSOM";
  
  };
  
 -&tps {
 -      compatible = "ti,tps65217";
 +/include/ "tps65217.dtsi"
  
 +&tps {
        regulators {
 -              #address-cells = <1>;
 -              #size-cells = <0>;
 -
                dcdc1_reg: regulator@0 {
 -                      reg = <0>;
                        regulator-name = "vdds_dpr";
                        regulator-always-on;
                };
  
                dcdc2_reg: regulator@1 {
 -                      reg = <1>;
                        /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
                        regulator-name = "vdd_mpu";
                        regulator-min-microvolt = <925000>;
                };
  
                dcdc3_reg: regulator@2 {
 -                      reg = <2>;
                        /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
                        regulator-name = "vdd_core";
                        regulator-min-microvolt = <925000>;
                };
  
                ldo1_reg: regulator@3 {
 -                      reg = <3>;
                        regulator-name = "vio,vrtc,vdds";
                        regulator-boot-on;
                        regulator-always-on;
                };
  
                ldo2_reg: regulator@4 {
 -                      reg = <4>;
                        regulator-name = "vdd_3v3aux";
                        regulator-boot-on;
                        regulator-always-on;
                };
  
                ldo3_reg: regulator@5 {
 -                      reg = <5>;
                        regulator-name = "vdd_1v8";
                        regulator-boot-on;
                        regulator-always-on;
                };
  
                ldo4_reg: regulator@6 {
 -                      reg = <6>;
                        regulator-name = "vdd_3v3d";
                        regulator-boot-on;
                        regulator-always-on;
        pinctrl-0 = <&nandflash_pins>;
        ranges = <0 0 0x08000000 0x01000000>; /* CS0 0 @addr 0x08000000, size 0x01000000 */
        nand@0,0 {
+               compatible = "ti,omap2-nand";
                reg = <0 0 4>;  /* CS0, offset 0, IO size 4 */
+               interrupt-parent = <&gpmc>;
+               interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
+                            <1 IRQ_TYPE_NONE>; /* termcount */
                ti,nand-ecc-opt = "bch8";
                ti,elm-id = <&elm>;
                nand-bus-width = <8>;
                gpmc,access-ns = <64>;
                gpmc,rd-cycle-ns = <82>;
                gpmc,wr-cycle-ns = <82>;
-               gpmc,wait-on-read = "true";
-               gpmc,wait-on-write = "true";
                gpmc,bus-turnaround-ns = <0>;
                gpmc,cycle2cycle-delay-ns = <0>;
                gpmc,clk-activation-ns = <0>;
-               gpmc,wait-monitoring-ns = <0>;
                gpmc,wr-access-ns = <40>;
                gpmc,wr-data-mux-bus-ns = <0>;
        };
                };
        };
  
+       chosen {
+               stdout-path = &uart0;
+       };
        leds {
                compatible = "gpio-leds";
                pinctrl-names = "default";
                default-brightness-level = <6>;
        };
  
+       clocks {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               /* audio external oscillator */
+               tlv320aic3x_mclk: oscillator@0 {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency  = <24576000>;  /* 24.576MHz */
+               };
+       };
        sound {
                compatible = "ti,da830-evm-audio";
                ti,model = "AM335x-SL50";
                ti,audio-codec = <&audio_codec>;
                ti,mcasp-controller = <&mcasp0>;
-               ti,codec-clock-rate = <12000000>;
+               clocks = <&tlv320aic3x_mclk>;
+               clock-names = "mclk";
                ti,audio-routing =
                        "Headphone Jack",       "HPLOUT",
                        "Headphone Jack",       "HPROUT",
                        AM33XX_IOPAD(0x994, PIN_INPUT_PULLDOWN | MUX_MODE0)     /* mcasp0_fsx.mcasp0_fsx */
                        AM33XX_IOPAD(0x990, PIN_INPUT_PULLDOWN | MUX_MODE0)     /* mcasp0_aclkx.mcasp0_aclkx */
                        AM33XX_IOPAD(0x998, PIN_INPUT_PULLDOWN | MUX_MODE0)     /* mcasp0_axr0.mcasp0_axr0 */
-                       AM33XX_IOPAD(0x99c, PIN_INPUT_PULLDOWN | MUX_MODE2)     /* mcasp0_ahclkr.mcasp0_axr2*/
+                       AM33XX_IOPAD(0x99c, PIN_OUTPUT_PULLDOWN | MUX_MODE2)    /* mcasp0_ahclkr.mcasp0_axr2 */
                >;
        };
  
        pinctrl-0 = <&uart4_pins>;
  };
  
 +#include "tps65217.dtsi"
 +
  &tps {
 -      compatible = "ti,tps65217";
        ti,pmic-shutdown-controller;
  
        interrupt-parent = <&intc>;
        interrupts = <7>;       /* NNMI */
  
        regulators {
 -              #address-cells = <1>;
 -              #size-cells = <0>;
 -
                dcdc1_reg: regulator@0 {
 -                      reg = <0>;
                        /* VDDS_DDR */
                        regulator-min-microvolt = <1500000>;
                        regulator-max-microvolt = <1500000>;
                };
  
                dcdc2_reg: regulator@1 {
 -                      reg = <1>;
                        /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
                        regulator-name = "vdd_mpu";
                        regulator-min-microvolt = <925000>;
                };
  
                dcdc3_reg: regulator@2 {
 -                      reg = <2>;
                        /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
                        regulator-name = "vdd_core";
                        regulator-min-microvolt = <925000>;
                };
  
                ldo1_reg: regulator@3 {
 -                      reg = <3>;
                        /* VRTC / VIO / VDDS*/
                        regulator-always-on;
                        regulator-min-microvolt = <1800000>;
                };
  
                ldo2_reg: regulator@4 {
 -                      reg = <4>;
                        /* VDD_3V3AUX */
                        regulator-always-on;
                        regulator-min-microvolt = <3300000>;
                };
  
                ldo3_reg: regulator@5 {
 -                      reg = <5>;
                        /* VDD_1V8 */
                        regulator-min-microvolt = <1800000>;
                        regulator-max-microvolt = <1800000>;
                };
  
                ldo4_reg: regulator@6 {
 -                      reg = <6>;
                        /* VDD_3V3A */
                        regulator-min-microvolt = <3300000>;
                        regulator-max-microvolt = <3300000>;
@@@ -24,7 -24,7 +24,7 @@@
  
        memory {
                device_type = "memory";
-               reg = <0x80000000 0x80000000>;
+               reg = <0x0 0x80000000 0x0 0x80000000>;
        };
  
        vdd_3v3: fixedregulator-vdd_3v3 {
  
                sound0_master: simple-audio-card,codec {
                        sound-dai = <&tlv320aic3104>;
 +                      assigned-clocks = <&clkoutmux2_clk_mux>;
 +                      assigned-clock-parents = <&sys_clk2_dclk_div>;
                        clocks = <&clkout2_clk>;
                };
        };
                extcon_usb2: tps659038_usb {
                        compatible = "ti,palmas-usb-vid";
                        ti,enable-vbus-detection;
 -                      ti,enable-id-detection;
 -                      id-gpios = <&gpio7 24 GPIO_ACTIVE_HIGH>;
 +                      vbus-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
                };
  
        };
                DRVDD-supply = <&vdd_3v3>;
                DVDD-supply = <&aic_dvdd>;
        };
+       eeprom: eeprom@50 {
+               compatible = "at,24c32";
+               reg = <0x50>;
+       };
  };
  
  &i2c3 {
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&mcasp3_pins_default>;
        pinctrl-1 = <&mcasp3_pins_sleep>;
 +      assigned-clocks = <&mcasp3_ahclkx_mux>;
 +      assigned-clock-parents = <&sys_clkin2>;
        status = "okay";
  
        op-mode = <0>;  /* MCASP_IIS_MODE */
@@@ -21,7 -21,7 +21,7 @@@
  
        memory {
                device_type = "memory";
-               reg = <0x80000000 0x20000000>; /* 512 MB - minimal configuration */
+               reg = <0x0 0x80000000 0x0 0x20000000>; /* 512 MB - minimal configuration */
        };
  
        leds {
                ti,debounce-tol = /bits/ 16 <10>;
                ti,debounce-rep = /bits/ 16 <1>;
  
 -              linux,wakeup;
 +              wakeup-source;
        };
  };
  
@@@ -61,8 -61,7 +61,8 @@@
                ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
                          MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
                          MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
 -                        MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
 +                        MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
 +                        MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
  
                internal-regs {
                        spi1: spi@10680 {
                                };
                        };
  
+                       /* CON3 */
                        ethernet@30000 {
                                status = "okay";
                                phy = <&phy2>;
                                phy-mode = "sgmii";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <1>;
 +                              bm,pool-short = <3>;
                        };
  
+                       /* CON2 */
                        ethernet@34000 {
                                status = "okay";
                                phy = <&phy1>;
                                phy-mode = "sgmii";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <2>;
 +                              bm,pool-short = <3>;
                        };
  
+                       /* CON4 */
                        ethernet@70000 {
                                pinctrl-names = "default";
  
                                status = "okay";
                                phy = <&phy0>;
                                phy-mode = "rgmii-id";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <0>;
 +                              bm,pool-short = <3>;
 +                      };
 +
 +                      bm@c8000 {
 +                              status = "okay";
                        };
  
                        nfc: flash@d0000 {
                        };
                };
  
 +              bm-bppi {
 +                      status = "okay";
 +              };
 +
                pcie-controller {
                        status = "okay";
  
@@@ -44,8 -44,8 +44,8 @@@
  #include <dt-bindings/gpio/gpio.h>
  
  / {
-       model = "Marvell Armada 38GP";
-       compatible = "marvell,a385-gp", "marvell,armada388", "marvell,armada380";
+       model = "Marvell Armada 388 DB-88F6820-GP";
+       compatible = "marvell,a388-gp", "marvell,armada388", "marvell,armada380";
  
        chosen {
                stdout-path = "serial0:115200n8";
@@@ -60,8 -60,7 +60,8 @@@
                ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
                          MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
                          MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
 -                        MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
 +                        MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
 +                        MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
  
                internal-regs {
                        spi@10600 {
                                status = "okay";
                                phy = <&phy1>;
                                phy-mode = "rgmii-id";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <2>;
 +                              bm,pool-short = <3>;
                        };
  
                        /* CON4 */
                                status = "okay";
                                phy = <&phy0>;
                                phy-mode = "rgmii-id";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <0>;
 +                              bm,pool-short = <1>;
                        };
  
  
                                };
                        };
  
 +                      bm@c8000 {
 +                              status = "okay";
 +                      };
 +
                        sata@e0000 {
                                pinctrl-names = "default";
                                pinctrl-0 = <&sata2_pins>, <&sata3_pins>;
  
                        /* CON5 */
                        usb3@f0000 {
-                               vcc-supply = <&reg_usb2_1_vbus>;
+                               usb-phy = <&usb2_1_phy>;
                                status = "okay";
                        };
  
                        /* CON7 */
                        usb3@f8000 {
-                               vcc-supply = <&reg_usb3_vbus>;
+                               usb-phy = <&usb3_phy>;
                                status = "okay";
                        };
                };
  
 +              bm-bppi {
 +                      status = "okay";
 +              };
 +
                pcie-controller {
                        status = "okay";
                        /*
                };
        };
  
+       usb2_1_phy: usb2_1_phy {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&reg_usb2_1_vbus>;
+       };
+       usb3_phy: usb3_phy {
+               compatible = "usb-nop-xceiv";
+               vcc-supply = <&reg_usb3_vbus>;
+       };
        reg_usb3_vbus: usb3-vbus {
                compatible = "regulator-fixed";
                regulator-name = "usb3-vbus";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                enable-active-high;
-               regulator-always-on;
                gpio = <&expander1 15 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
                enable-active-high;
-               regulator-always-on;
                gpio = <&expander0 4 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
                enable-active-high;
-               regulator-always-on;
+               regulator-boot-on;
                gpio = <&expander0 2 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-name = "v5.0-sata0";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata0>;
        };
  
                regulator-name = "v12.0-sata0";
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata0>;
        };
  
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
                enable-active-high;
-               regulator-always-on;
+               regulator-boot-on;
                gpio = <&expander0 3 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-name = "v5.0-sata1";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata1>;
        };
  
                regulator-name = "v12.0-sata1";
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata1>;
        };
  
                compatible = "regulator-fixed";
                regulator-name = "pwr_en_sata2";
                enable-active-high;
-               regulator-always-on;
+               regulator-boot-on;
                gpio = <&expander0 11 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-name = "v5.0-sata2";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata2>;
        };
  
                regulator-name = "v12.0-sata2";
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata2>;
        };
  
                compatible = "regulator-fixed";
                regulator-name = "pwr_en_sata3";
                enable-active-high;
-               regulator-always-on;
+               regulator-boot-on;
                gpio = <&expander0 12 GPIO_ACTIVE_HIGH>;
        };
  
                regulator-name = "v5.0-sata3";
                regulator-min-microvolt = <5000000>;
                regulator-max-microvolt = <5000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata3>;
        };
  
                regulator-name = "v12.0-sata3";
                regulator-min-microvolt = <12000000>;
                regulator-max-microvolt = <12000000>;
-               regulator-always-on;
                vin-supply = <&reg_sata3>;
        };
  };
                                reg = <0x22000 0x1000>;
                        };
  
+                       /*
+                        * As a special exception to the "order by
+                        * register address" rule, the eth0 node is
+                        * placed here to ensure that it gets
+                        * registered as the first interface, since
+                        * the network subsystem doesn't allow naming
+                        * interfaces using DT aliases. Without this,
+                        * the ordering of interfaces is different
+                        * from the one used in U-Boot and the
+                        * labeling of interfaces on the boards, which
+                        * is very confusing for users.
+                        */
+                       eth0: ethernet@70000 {
+                               compatible = "marvell,armada-370-neta";
+                               reg = <0x70000 0x4000>;
+                               interrupts-extended = <&mpic 8>;
+                               clocks = <&gateclk 4>;
+                               tx-csum-limit = <9800>;
+                               status = "disabled";
+                       };
                        eth1: ethernet@30000 {
                                compatible = "marvell,armada-370-neta";
                                reg = <0x30000 0x4000>;
                                };
                        };
  
-                       eth0: ethernet@70000 {
-                               compatible = "marvell,armada-370-neta";
-                               reg = <0x70000 0x4000>;
-                               interrupts-extended = <&mpic 8>;
-                               clocks = <&gateclk 4>;
-                               tx-csum-limit = <9800>;
-                               status = "disabled";
-                       };
                        mdio: mdio@72004 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                status = "disabled";
                        };
  
 +                      bm: bm@c8000 {
 +                              compatible = "marvell,armada-380-neta-bm";
 +                              reg = <0xc8000 0xac>;
 +                              clocks = <&gateclk 13>;
 +                              internal-mem = <&bm_bppi>;
 +                              status = "disabled";
 +                      };
 +
                        sata@e0000 {
                                compatible = "marvell,armada-380-ahci";
                                reg = <0xe0000 0x2000>;
                        #size-cells = <1>;
                        ranges = <0 MBUS_ID(0x09, 0x15) 0 0x800>;
                };
 +
 +              bm_bppi: bm-bppi {
 +                      compatible = "mmio-sram";
 +                      reg = <MBUS_ID(0x0c, 0x04) 0 0x100000>;
 +                      ranges = <0 MBUS_ID(0x0c, 0x04) 0 0x100000>;
 +                      #address-cells = <1>;
 +                      #size-cells = <1>;
 +                      clocks = <&gateclk 13>;
 +                      no-memory-wc;
 +                      status = "disabled";
 +              };
        };
  
        clocks {
@@@ -76,9 -76,8 +76,9 @@@
                ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
                          MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
                          MBUS_ID(0x01, 0x2f) 0 0 0xf0000000 0x1000000
 -                        MBUS_ID(0x09, 0x09) 0 0 0xf8100000 0x10000
 -                        MBUS_ID(0x09, 0x05) 0 0 0xf8110000 0x10000>;
 +                        MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
 +                        MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000
 +                        MBUS_ID(0x0c, 0x04) 0 0 0xf1200000 0x100000>;
  
                devbus-bootcs {
                        status = "okay";
                                status = "okay";
                                phy = <&phy0>;
                                phy-mode = "rgmii-id";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <0>;
                        };
                        ethernet@74000 {
                                status = "okay";
                                phy = <&phy1>;
                                phy-mode = "rgmii-id";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <1>;
                        };
                        ethernet@30000 {
                                status = "okay";
                                phy = <&phy2>;
                                phy-mode = "sgmii";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <2>;
                        };
                        ethernet@34000 {
                                status = "okay";
                                phy = <&phy3>;
                                phy-mode = "sgmii";
 +                              buffer-manager = <&bm>;
 +                              bm,pool-long = <3>;
 +                      };
 +
 +                      bm@c0000 {
 +                              status = "okay";
                        };
  
                        mvsdio@d4000 {
                                        spi-max-frequency = <20000000>;
                                };
                        };
+                       nand@d0000 {
+                               status = "okay";
+                               num-cs = <1>;
+                               marvell,nand-keep-config;
+                               marvell,nand-enable-arbiter;
+                               nand-on-flash-bbt;
+                               partitions {
+                                       compatible = "fixed-partitions";
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       partition@0 {
+                                               label = "U-Boot";
+                                               reg = <0 0x800000>;
+                                       };
+                                       partition@800000 {
+                                               label = "Linux";
+                                               reg = <0x800000 0x800000>;
+                                       };
+                                       partition@1000000 {
+                                               label = "Filesystem";
+                                               reg = <0x1000000 0x3f000000>;
+                                       };
+                               };
+                       };
                };
 +
 +              bm-bppi {
 +                      status = "okay";
 +              };
        };
  };
@@@ -15,8 -15,8 +15,8 @@@
  #define MAX_SOURCES 400
  
  / {
-       #address-cells = <1>;
-       #size-cells = <1>;
+       #address-cells = <2>;
+       #size-cells = <2>;
  
        compatible = "ti,dra7xx";
        interrupt-parent = <&crossbar_mpu>;
                compatible = "arm,cortex-a15-gic";
                interrupt-controller;
                #interrupt-cells = <3>;
-               reg = <0x48211000 0x1000>,
-                     <0x48212000 0x1000>,
-                     <0x48214000 0x2000>,
-                     <0x48216000 0x2000>;
+               reg = <0x0 0x48211000 0x0 0x1000>,
+                     <0x0 0x48212000 0x0 0x1000>,
+                     <0x0 0x48214000 0x0 0x2000>,
+                     <0x0 0x48216000 0x0 0x2000>;
                interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
                interrupt-parent = <&gic>;
        };
@@@ -69,7 -69,7 +69,7 @@@
                compatible = "ti,omap5-wugen-mpu", "ti,omap4-wugen-mpu";
                interrupt-controller;
                #interrupt-cells = <3>;
-               reg = <0x48281000 0x1000>;
+               reg = <0x0 0x48281000 0x0 0x1000>;
                interrupt-parent = <&gic>;
        };
  
                compatible = "ti,dra7-l3-noc", "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
-               ranges;
+               ranges = <0x0 0x0 0x0 0xc0000000>;
                ti,hwmods = "l3_main_1", "l3_main_2";
-               reg = <0x44000000 0x1000000>,
-                     <0x45000000 0x1000>;
+               reg = <0x0 0x44000000 0x0 0x1000000>,
+                     <0x0 0x45000000 0x0 0x1000>;
                interrupts-extended = <&crossbar_mpu GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
                                      <&wakeupgen GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
  
                                        compatible = "syscon";
                                        reg = <0x1c04 0x0020>;
                                };
+                               scm_conf_pcie: scm_conf@1c24 {
+                                       compatible = "syscon";
+                                       reg = <0x1c24 0x0024>;
+                               };
                        };
  
                        cm_core_aon: cm_core_aon@5000 {
                        status = "disabled";
                };
  
-               omap_control_sata: control-phy@4a002374 {
-                       compatible = "ti,control-phy-pipe3";
-                       reg = <0x4a002374 0x4>;
-                       reg-names = "power";
-                       clocks = <&sys_clkin1>;
-                       clock-names = "sysclk";
-               };
                /* OCP2SCP3 */
                ocp2scp@4a090000 {
                        compatible = "ti,omap-ocp2scp";
                                      <0x4A096400 0x64>, /* phy_tx */
                                      <0x4A096800 0x40>; /* pll_ctrl */
                                reg-names = "phy_rx", "phy_tx", "pll_ctrl";
-                               ctrl-module = <&omap_control_sata>;
+                               syscon-phy-power = <&scm_conf 0x374>;
                                clocks = <&sys_clkin1>, <&sata_ref_clk>;
                                clock-names = "sysclk", "refclk";
                                syscon-pllreset = <&scm_conf 0x3fc>;
                                reg = <0x4a094000 0x80>, /* phy_rx */
                                      <0x4a094400 0x64>; /* phy_tx */
                                reg-names = "phy_rx", "phy_tx";
-                               ctrl-module = <&omap_control_pcie1phy>;
+                               syscon-phy-power = <&scm_conf_pcie 0x1c>;
+                               syscon-pcs = <&scm_conf_pcie 0x10>;
                                clocks = <&dpll_pcie_ref_ck>,
                                         <&dpll_pcie_ref_m2ldo_ck>,
                                         <&optfclk_pciephy1_32khz>,
                                         <&optfclk_pciephy1_clk>,
                                         <&optfclk_pciephy1_div_clk>,
-                                        <&optfclk_pciephy_div>;
+                                        <&optfclk_pciephy_div>,
+                                        <&sys_clkin1>;
                                clock-names = "dpll_ref", "dpll_ref_m2",
                                              "wkupclk", "refclk",
-                                             "div-clk", "phy-div";
+                                             "div-clk", "phy-div", "sysclk";
                                #phy-cells = <0>;
                        };
  
                                reg = <0x4a095000 0x80>, /* phy_rx */
                                      <0x4a095400 0x64>; /* phy_tx */
                                reg-names = "phy_rx", "phy_tx";
-                               ctrl-module = <&omap_control_pcie2phy>;
+                               syscon-phy-power = <&scm_conf_pcie 0x20>;
+                               syscon-pcs = <&scm_conf_pcie 0x10>;
                                clocks = <&dpll_pcie_ref_ck>,
                                         <&dpll_pcie_ref_m2ldo_ck>,
                                         <&optfclk_pciephy2_32khz>,
                                         <&optfclk_pciephy2_clk>,
                                         <&optfclk_pciephy2_div_clk>,
-                                        <&optfclk_pciephy_div>;
+                                        <&optfclk_pciephy_div>,
+                                        <&sys_clkin1>;
                                clock-names = "dpll_ref", "dpll_ref_m2",
                                              "wkupclk", "refclk",
-                                             "div-clk", "phy-div";
+                                             "div-clk", "phy-div", "sysclk";
                                #phy-cells = <0>;
                                status = "disabled";
                        };
                        ti,hwmods = "sata";
                };
  
-               omap_control_pcie1phy: control-phy@0x4a003c40 {
-                       compatible = "ti,control-phy-pcie";
-                       reg = <0x4a003c40 0x4>, <0x4a003c14 0x4>, <0x4a003c34 0x4>;
-                       reg-names = "power", "control_sma", "pcie_pcs";
-                       clocks = <&sys_clkin1>;
-                       clock-names = "sysclk";
-               };
-               omap_control_pcie2phy: control-pcie@0x4a003c44 {
-                       compatible = "ti,control-phy-pcie";
-                       reg = <0x4a003c44 0x4>, <0x4a003c14 0x4>, <0x4a003c34 0x4>;
-                       reg-names = "power", "control_sma", "pcie_pcs";
-                       clocks = <&sys_clkin1>;
-                       clock-names = "sysclk";
-                       status = "disabled";
-               };
                rtc: rtc@48838000 {
                        compatible = "ti,am3352-rtc";
                        reg = <0x48838000 0x100>;
                        clocks = <&sys_32k_ck>;
                };
  
-               omap_control_usb2phy1: control-phy@4a002300 {
-                       compatible = "ti,control-phy-usb2";
-                       reg = <0x4a002300 0x4>;
-                       reg-names = "power";
-               };
-               omap_control_usb3phy1: control-phy@4a002370 {
-                       compatible = "ti,control-phy-pipe3";
-                       reg = <0x4a002370 0x4>;
-                       reg-names = "power";
-               };
-               omap_control_usb2phy2: control-phy@0x4a002e74 {
-                       compatible = "ti,control-phy-usb2-dra7";
-                       reg = <0x4a002e74 0x4>;
-                       reg-names = "power";
-               };
                /* OCP2SCP1 */
                ocp2scp@4a080000 {
                        compatible = "ti,omap-ocp2scp";
                        usb2_phy1: phy@4a084000 {
                                compatible = "ti,omap-usb2";
                                reg = <0x4a084000 0x400>;
-                               ctrl-module = <&omap_control_usb2phy1>;
+                               syscon-phy-power = <&scm_conf 0x300>;
                                clocks = <&usb_phy1_always_on_clk32k>,
                                         <&usb_otg_ss1_refclk960m>;
                                clock-names =   "wkupclk",
                        };
  
                        usb2_phy2: phy@4a085000 {
-                               compatible = "ti,omap-usb2";
+                               compatible = "ti,dra7x-usb2-phy2",
+                                            "ti,omap-usb2";
                                reg = <0x4a085000 0x400>;
-                               ctrl-module = <&omap_control_usb2phy2>;
+                               syscon-phy-power = <&scm_conf 0xe74>;
                                clocks = <&usb_phy2_always_on_clk32k>,
                                         <&usb_otg_ss2_refclk960m>;
                                clock-names =   "wkupclk",
                                      <0x4a084800 0x64>,
                                      <0x4a084c00 0x40>;
                                reg-names = "phy_rx", "phy_tx", "pll_ctrl";
-                               ctrl-module = <&omap_control_usb3phy1>;
+                               syscon-phy-power = <&scm_conf 0x370>;
                                clocks = <&usb_phy3_always_on_clk32k>,
                                         <&sys_clkin1>,
                                         <&usb_otg_ss1_refclk960m>;
                                                  "otg";
                                phys = <&usb2_phy1>, <&usb3_phy1>;
                                phy-names = "usb2-phy", "usb3-phy";
-                               tx-fifo-resize;
                                maximum-speed = "super-speed";
                                dr_mode = "otg";
                                snps,dis_u3_susphy_quirk;
                                                  "otg";
                                phys = <&usb2_phy2>;
                                phy-names = "usb2-phy";
-                               tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
                                snps,dis_u3_susphy_quirk;
                                interrupt-names = "peripheral",
                                                  "host",
                                                  "otg";
-                               tx-fifo-resize;
                                maximum-speed = "high-speed";
                                dr_mode = "otg";
                                snps,dis_u3_susphy_quirk;
                        gpmc,num-waitpins = <2>;
                        #address-cells = <2>;
                        #size-cells = <1>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                        status = "disabled";
                };
  
                               0x48485200 0x2E00>;
                        #address-cells = <1>;
                        #size-cells = <1>;
 +
 +                      /*
 +                       * Do not allow gating of cpsw clock as workaround
 +                       * for errata i877. Keeping internal clock disabled
 +                       * causes the device switching characteristics
 +                       * to degrade over time and eventually fail to meet
 +                       * the data manual delay time/skew specs.
 +                       */
 +                      ti,no-idle;
 +
                        /*
                         * rx_thresh_pend
                         * rx_pend
                #include "omap4-cpu-thermal.dtsi"
                #include "omap5-gpu-thermal.dtsi"
                #include "omap5-core-thermal.dtsi"
+               #include "dra7-dspeve-thermal.dtsi"
+               #include "dra7-iva-thermal.dtsi"
        };
  
  };
                camera_lens_cover {
                        label = "Camera Lens Cover";
                        gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */
-                       linux,input-type = <5>; /* EV_SW */
-                       linux,code = <0x09>; /* SW_CAMERA_LENS_COVER */
-                       wakeup-source;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_CAMERA_LENS_COVER>;
+                       linux,can-disable;
                };
  
                camera_focus {
                        label = "Camera Focus";
                        gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */
-                       linux,code = <0x210>; /* KEY_CAMERA_FOCUS */
-                       wakeup-source;
+                       linux,code = <KEY_CAMERA_FOCUS>;
+                       linux,can-disable;
                };
  
                camera_capture {
                        label = "Camera Capture";
                        gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */
-                       linux,code = <0xd4>; /* KEY_CAMERA */
-                       wakeup-source;
+                       linux,code = <KEY_CAMERA>;
+                       linux,can-disable;
                };
  
                lock_button {
                        label = "Lock Button";
                        gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */
-                       linux,code = <0x98>; /* KEY_SCREENLOCK */
-                       wakeup-source;
+                       linux,code = <KEY_SCREENLOCK>;
+                       linux,can-disable;
                };
  
                keypad_slide {
                        label = "Keypad Slide";
                        gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */
-                       linux,input-type = <5>; /* EV_SW */
-                       linux,code = <0x0a>; /* SW_KEYPAD_SLIDE */
-                       wakeup-source;
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_KEYPAD_SLIDE>;
+                       linux,can-disable;
                };
  
                proximity_sensor {
                        label = "Proximity Sensor";
                        gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */
-                       linux,input-type = <5>; /* EV_SW */
-                       linux,code = <0x0b>; /* SW_FRONT_PROXIMITY */
+                       linux,input-type = <EV_SW>;
+                       linux,code = <SW_FRONT_PROXIMITY>;
+                       linux,can-disable;
                };
        };
  
 -      isp1704: isp1704 {
 -              compatible = "nxp,isp1704";
 +      isp1707: isp1707 {
 +              compatible = "nxp,isp1707";
                nxp,enable-gpio = <&gpio3 3 GPIO_ACTIVE_HIGH>;
                usb-phy = <&usb2_phy>;
        };
                amstaos,cover-comp-gain = <16>;
        };
  
+       adp1653: led-controller@30 {
+               compatible = "adi,adp1653";
+               reg = <0x30>;
+               enable-gpios = <&gpio3 24 GPIO_ACTIVE_HIGH>; /* 88 */
+               flash {
+                       flash-timeout-us = <500000>;
+                       flash-max-microamp = <320000>;
+                       led-max-microamp = <50000>;
+               };
+               indicator {
+                       led-max-microamp = <17500>;
+               };
+       };
        lp5523: lp5523@32 {
                compatible = "national,lp5523";
                reg = <0x32>;
                ti,termination-current = <100>;
                ti,resistor-sense = <68>;
  
 -              ti,usb-charger-detection = <&isp1704>;
 +              ti,usb-charger-detection = <&isp1707>;
        };
  };
  
@@@ -12,7 -12,6 +12,7 @@@
                        interrupts = <25>;
                        #dma-channels = <32>;
                        #dma-cells = <2>;
 +                      #dma-requests = <100>;
                        status = "okay";
                };
  
@@@ -31,7 -30,7 +31,7 @@@
                        reg = <0x43100000 90>;
                        interrupts = <45>;
                        clocks = <&clks CLK_NAND>;
-                       dmas = <&pdma 97>;
+                       dmas = <&pdma 97 3>;
                        dma-names = "data";
                        #address-cells = <1>;
                        #size-cells = <1>;      
        model = "Rockchip RK3036 KylinBoard";
        compatible = "rockchip,rk3036-kylin", "rockchip,rk3036";
  
+       leds: gpio-leds {
+               compatible = "gpio-leds";
+               work {
+                       gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
+                       label = "kylin:red:led";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&led_ctl>;
+               };
+       };
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_wake_h>;
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - SDIO_RESET_L_WL_RST
+                * - SDIO_RESET_L_BT_EN
+                */
+               reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>, /* WL_REG_ON */
+                             <&gpio0 27 GPIO_ACTIVE_LOW>, /* WL_RST */
+                             <&gpio2 9  GPIO_ACTIVE_LOW>; /* BT_EN */
+       };
+       sound {
+               compatible = "simple-audio-card";
+               simple-audio-card,format = "i2s";
+               simple-audio-card,name = "rockchip,rt5616-codec";
+               simple-audio-card,mclk-fs = <512>;
+               simple-audio-card,widgets =
+                       "Microphone", "Microphone Jack",
+                       "Headphone", "Headphone Jack";
+               simple-audio-card,routing =
+                       "MIC1", "Microphone Jack",
+                       "MIC2", "Microphone Jack",
+                       "Microphone Jack", "micbias1",
+                       "Headphone Jack", "HPOL",
+                       "Headphone Jack", "HPOR";
+               simple-audio-card,cpu {
+                       sound-dai = <&i2s>;
+               };
+               simple-audio-card,codec {
+                       sound-dai = <&rt5616>;
+               };
+       };
        vcc_sys: vsys-regulator {
                compatible = "regulator-fixed";
                regulator-name = "vcc_sys";
        status = "okay";
  };
  
 +&emac {
 +      pinctrl-names = "default";
 +      pinctrl-0 = <&emac_xfer>, <&emac_mdio>;
 +      phy = <&phy0>;
 +      phy-reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>; /* PHY_RST */
 +      phy-reset-duration = <10>; /* millisecond */
 +
 +      status = "okay";
 +
 +      phy0: ethernet-phy@0 {
 +              reg = <0>;
 +      };
 +};
 +
  &emmc {
        status = "okay";
  };
  
  &i2c2 {
        status = "okay";
+       rt5616: rt5616@1b {
+               compatible = "rt5616";
+               reg = <0x1b>;
+               clocks = <&cru SCLK_I2S_OUT>;
+               clock-names = "mclk";
+               #sound-dai-cells = <0>;
+       };
+ };
+ &i2s {
+       #sound-dai-cells = <0>;
+       status = "okay";
  };
  
  &sdio {
  
        broken-cd;
        bus-width = <4>;
+       cap-sd-highspeed;
        cap-sdio-irq;
        default-sample-phase = <90>;
        keep-power-in-suspend;
+       mmc-pwrseq = <&sdio_pwrseq>;
        non-removable;
        num-slots = <1>;
        pinctrl-names = "default";
        pinctrl-0 = <&sdio_clk &sdio_cmd &sdio_bus4>;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+ };
+ &sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       card-detect-delay = <200>;
+       disable-wp;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
+ };
+ &uart0 {
+       status = "okay";
  };
  
  &uart2 {
  };
  
  &pinctrl {
+       leds {
+               led_ctl: led-ctl {
+                       rockchip,pins = <2 30 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
        pmic {
                pmic_int: pmic-int {
                        rockchip,pins = <2 2 RK_FUNC_GPIO &pcfg_pull_default>;
                };
        };
  
+       sdio {
+               bt_wake_h: bt-wake-h {
+                       rockchip,pins = <2 8 RK_FUNC_GPIO &pcfg_pull_default>;
+               };
+       };
+       sdmmc {
+               sdmmc_pwr: sdmmc-pwr {
+                       rockchip,pins = <2 28 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
        sleep {
                global_pwroff: global-pwroff {
                        rockchip,pins = <2 7 RK_FUNC_1 &pcfg_pull_none>;
@@@ -60,6 -60,7 +60,7 @@@
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &uart2;
+               spi = &spi;
        };
  
        memory {
@@@ -94,7 -95,7 +95,7 @@@
        };
  
        amba {
-               compatible = "arm,amba-bus";
+               compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
                        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        #dma-cells = <1>;
+                       arm,pl330-broken-no-flushp;
                        clocks = <&cru ACLK_DMAC2>;
                        clock-names = "apb_pclk";
                };
        };
  
        usb_otg: usb@10180000 {
-               compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
+               compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
                                "snps,dwc2";
                reg = <0x10180000 0x40000>;
                interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
        };
  
        usb_host: usb@101c0000 {
-               compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
+               compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
                                "snps,dwc2";
                reg = <0x101c0000 0x40000>;
                interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
                status = "disabled";
        };
  
 +      emac: ethernet@10200000 {
 +              compatible = "rockchip,rk3036-emac", "snps,arc-emac";
 +              reg = <0x10200000 0x4000>;
 +              interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
 +              #address-cells = <1>;
 +              #size-cells = <0>;
 +              rockchip,grf = <&grf>;
 +              clocks = <&cru HCLK_MAC>, <&cru SCLK_MACREF>, <&cru SCLK_MAC>;
 +              clock-names = "hclk", "macref", "macclk";
 +              /*
 +               * Fix the emac parent clock is DPLL instead of APLL.
 +               * since that will cause some unstable things if the cpufreq
 +               * is working. (e.g: the accurate 50MHz what mac_ref need)
 +               */
 +              assigned-clocks = <&cru SCLK_MACPLL>;
 +              assigned-clock-parents = <&cru PLL_DPLL>;
 +              max-speed = <100>;
 +              phy-mode = "rmii";
 +              status = "disabled";
 +      };
 +
        sdmmc: dwmmc@10214000 {
                compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
                reg = <0x10214000 0x4000>;
        };
  
        emmc: dwmmc@1021c000 {
-               compatible = "rockchip,rk3288-dw-mshc";
+               compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
                reg = <0x1021c000 0x4000>;
                interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
                broken-cd;
                interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
                #address-cells = <1>;
                #size-cells = <0>;
-               clock-names = "i2s_hclk", "i2s_clk";
-               clocks = <&cru HCLK_I2S>, <&cru SCLK_I2S>;
+               clock-names = "i2s_clk", "i2s_hclk";
+               clocks = <&cru SCLK_I2S>, <&cru HCLK_I2S>;
                dmas = <&pdma 0>, <&pdma 1>;
                dma-names = "tx", "rx";
                pinctrl-names = "default";
        };
  
        i2c1: i2c@20056000 {
-               compatible = "rockchip,rk3288-i2c";
+               compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
                reg = <0x20056000 0x1000>;
                interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
                #address-cells = <1>;
        };
  
        i2c2: i2c@2005a000 {
-               compatible = "rockchip,rk3288-i2c";
+               compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
                reg = <0x2005a000 0x1000>;
                interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
                #address-cells = <1>;
        };
  
        i2c0: i2c@20072000 {
-               compatible = "rockchip,rk3288-i2c";
+               compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
                reg = <0x20072000 0x1000>;
                interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
                #address-cells = <1>;
                status = "disabled";
        };
  
+       spi: spi@20074000 {
+               compatible = "rockchip,rockchip-spi";
+               reg = <0x20074000 0x1000>;
+               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+               clocks =<&cru PCLK_SPI>, <&cru SCLK_SPI>;
+               clock-names = "apb-pclk","spi_pclk";
+               dmas = <&pdma 8>, <&pdma 9>;
+               dma-names = "tx", "rx";
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi_txd &spi_rxd &spi_clk &spi_cs0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
        pinctrl: pinctrl {
                compatible = "rockchip,rk3036-pinctrl";
                rockchip,grf = <&grf>;
                        };
                };
  
 +              emac {
 +                      emac_xfer: emac-xfer {
 +                              rockchip,pins = <2 10 RK_FUNC_1 &pcfg_pull_default>, /* crs_dvalid */
 +                                              <2 13 RK_FUNC_1 &pcfg_pull_default>, /* tx_en */
 +                                              <2 14 RK_FUNC_1 &pcfg_pull_default>, /* mac_clk */
 +                                              <2 15 RK_FUNC_1 &pcfg_pull_default>, /* rx_err */
 +                                              <2 16 RK_FUNC_1 &pcfg_pull_default>, /* rxd1 */
 +                                              <2 17 RK_FUNC_1 &pcfg_pull_default>, /* rxd0 */
 +                                              <2 18 RK_FUNC_1 &pcfg_pull_default>, /* txd1 */
 +                                              <2 19 RK_FUNC_1 &pcfg_pull_default>; /* txd0 */
 +                      };
 +
 +                      emac_mdio: emac-mdio {
 +                              rockchip,pins = <2 12 RK_FUNC_1 &pcfg_pull_default>, /* mac_md */
 +                                              <2 25 RK_FUNC_1 &pcfg_pull_default>; /* mac_mdclk */
 +                      };
 +              };
 +
                i2c0 {
                        i2c0_xfer: i2c0-xfer {
                                rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>,
  
                i2s {
                        i2s_bus: i2s-bus {
-                               rockchip,pins = <1 0 RK_FUNC_1 &pcfg_pull_none>,
-                                               <1 1 RK_FUNC_1 &pcfg_pull_none>,
-                                               <1 2 RK_FUNC_1 &pcfg_pull_none>,
-                                               <1 3 RK_FUNC_1 &pcfg_pull_none>,
-                                               <1 4 RK_FUNC_1 &pcfg_pull_none>,
-                                               <1 5 RK_FUNC_1 &pcfg_pull_none>;
+                               rockchip,pins = <1 0 RK_FUNC_1 &pcfg_pull_default>,
+                                               <1 1 RK_FUNC_1 &pcfg_pull_default>,
+                                               <1 2 RK_FUNC_1 &pcfg_pull_default>,
+                                               <1 3 RK_FUNC_1 &pcfg_pull_default>,
+                                               <1 4 RK_FUNC_1 &pcfg_pull_default>,
+                                               <1 5 RK_FUNC_1 &pcfg_pull_default>;
                        };
                };
  
                        };
                        /* no rts / cts for uart2 */
                };
+               spi {
+                       spi_txd:spi-txd {
+                               rockchip,pins = <1 29 RK_FUNC_3 &pcfg_pull_default>;
+                       };
+                       spi_rxd:spi-rxd {
+                               rockchip,pins = <1 28 RK_FUNC_3 &pcfg_pull_default>;
+                       };
+                       spi_clk:spi-clk {
+                               rockchip,pins = <2 0 RK_FUNC_2 &pcfg_pull_default>;
+                       };
+                       spi_cs0:spi-cs0 {
+                               rockchip,pins = <1 30 RK_FUNC_3 &pcfg_pull_default>;
+                       };
+                       spi_cs1:spi-cs1 {
+                               rockchip,pins = <1 31 RK_FUNC_3 &pcfg_pull_default>;
+                       };
+               };
        };
  };
@@@ -69,7 -69,7 +69,7 @@@
                ranges;
  
                amba {
-                       compatible = "arm,amba-bus";
+                       compatible = "simple-bus";
                        #address-cells = <1>;
                        #size-cells = <1>;
                        ranges;
                        status = "disabled";
                };
  
 +              eccmgr: eccmgr@ffd08140 {
 +                      compatible = "altr,socfpga-ecc-manager";
 +                      #address-cells = <1>;
 +                      #size-cells = <1>;
 +                      ranges;
 +
 +                      l2-ecc@ffd08140 {
 +                              compatible = "altr,socfpga-l2-ecc";
 +                              reg = <0xffd08140 0x4>;
 +                              interrupts = <0 36 1>, <0 37 1>;
 +                      };
 +
 +                      ocram-ecc@ffd08144 {
 +                              compatible = "altr,socfpga-ocram-ecc";
 +                              reg = <0xffd08144 0x4>;
 +                              iram = <&ocram>;
 +                              interrupts = <0 178 1>, <0 179 1>;
 +                      };
 +              };
 +
                L2: l2-cache@fffef000 {
                        compatible = "arm,pl310-cache";
                        reg = <0xfffef000 0x1000>;
@@@ -63,7 -63,7 +63,7 @@@ static void __init keystone_init(void
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  }
  
 -static phys_addr_t keystone_virt_to_idmap(unsigned long x)
 +static unsigned long keystone_virt_to_idmap(unsigned long x)
  {
        return (phys_addr_t)(x) - CONFIG_PAGE_OFFSET + KEYSTONE_LOW_PHYS_START;
  }
@@@ -100,6 -100,7 +100,7 @@@ static const char *const keystone_match
        "ti,k2hk",
        "ti,k2e",
        "ti,k2l",
+       "ti,k2g",
        "ti,keystone",
        NULL,
  };