Merge tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:37:45 +0000 (18:37 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:37:45 +0000 (18:37 -0400)
Pull ARM DT updates from Olof Johansson:
 "Device tree contents continue to be the largest branches we submit.
  This time around, some of the contents worth pointing out is:

  New SoC platforms:
   - Freescale i.MX 7Solo
   - Broadcom BCM23550
   - Cirrus Logic EP7209 and EP7211 (clps711x platforms)_
   - Hisilicon HI3519
   - Renesas R8A7792

  Some of the other delta that is sticking out, line-count wise:
   - Exynos moves of IP blocks under an SoC bus, which causes a large
     delta due to indentation changes
   - a new Tegra K1 board: Apalis
   - a bunch of small updates to many Allwinner platforms; new hardware
     support, some cleanup, etc"

* tag 'armsoc-dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (426 commits)
  ARM: dts: sun8i: Add dts file for inet86dz board
  ARM: dts: sun8i: Add dts file for Polaroid MID2407PXE03 tablet
  ARM: dts: sun8i: Use sun8i-reference-design-tablet for ga10h dts
  ARM: dts: sun8i: Use sun8i-reference-design-tablet for polaroid mid2809pxe04
  ARM: dts: sun8i: reference-design-tablet: Add drivevbus-supply
  ARM: dts: Copy sun8i-q8-common.dtsi sun8i-reference-design-tablet.dtsi
  ARM: dts: sun5i: Use sun5i-reference-design-tablet.dtsi for utoo p66 dts
  ARM: dts: sun5i: Use sun5i-reference-design-tablet.dtsi for dit4350 dts
  ARM: dts: sun5i: reference-design-tablet: Remove mention of q8
  ARM: dts: sun5i: reference-design-tablet: Set lradc vref to avcc
  ARM: dts: sun5i: Rename sun5i-q8-common.dtsi sun5i-reference-design-tablet.dtsi
  ARM: dts: sun5i: Move q8 display bits to sun5i-a13-q8-tablet.dts
  ARM: dts: sunxi: Rename sunxi-q8-common.dtsi sunxi-reference-design-tablet.dtsi
  ARM: dts: at91: Don't build unnecessary dtbs
  ARM: dts: at91: sama5d3x: separate motherboard gmac and emac definitions
  ARM: dts: at91: at91sam9g25ek: fix isi endpoint node
  ARM: dts: at91: move isi definition to at91sam9g25ek
  ARM: dts: at91: fix i2c-gpio node name
  ARM: dts: at91: vinco: fix regulator name
  ARM: dts: at91: ariag25 : fix onewire node
  ...

22 files changed:
1  2 
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/am4372.dtsi
arch/arm/boot/dts/bcm-nsp.dtsi
arch/arm/boot/dts/dm814x.dtsi
arch/arm/boot/dts/dra7.dtsi
arch/arm/boot/dts/dra74x.dtsi
arch/arm/boot/dts/exynos5250-snow-common.dtsi
arch/arm/boot/dts/exynos5420-peach-pit.dts
arch/arm/boot/dts/imx51-ts4800.dts
arch/arm/boot/dts/omap3-igep0020-common.dtsi
arch/arm/boot/dts/omap3-n900.dts
arch/arm/boot/dts/omap5-board-common.dtsi
arch/arm/boot/dts/qcom-apq8064.dtsi
arch/arm/boot/dts/qcom-ipq4019.dtsi
arch/arm/boot/dts/rk3288.dtsi
arch/arm/boot/dts/sama5d2.dtsi
arch/arm/boot/dts/socfpga_arria10.dtsi
arch/arm/boot/dts/sun8i-h3.dtsi
arch/arm/boot/dts/tegra30-beaver.dts
arch/arm/mach-bcm/platsmp.c
drivers/clk/ti/clk-43xx.c

@@@ -7,9 -7,10 +7,10 @@@ dtb-$(CONFIG_MACH_ARTPEC6) += 
  dtb-$(CONFIG_MACH_ASM9260) += \
        alphascale-asm9260-devkit.dtb
  # Keep at91 dtb files sorted alphabetically for each SoC
- dtb-$(CONFIG_SOC_SAM_V4_V5) += \
+ dtb-$(CONFIG_SOC_AT91RM9200) += \
        at91rm9200ek.dtb \
-       mpa1600.dtb \
+       mpa1600.dtb
+ dtb-$(CONFIG_SOC_AT91SAM9) += \
        animeo_ip.dtb \
        at91-qil_a9260.dtb \
        aks-cdu.dtb \
        evk-pro3.dtb \
        tny_a9260.dtb \
        usb_a9260.dtb \
+       at91sam9260ek.dtb \
        at91sam9261ek.dtb \
        at91sam9263ek.dtb \
+       at91-sam9_l9260.dtb \
        tny_a9263.dtb \
        usb_a9263.dtb \
        at91-foxg20.dtb \
@@@ -85,6 -88,7 +88,7 @@@ dtb-$(CONFIG_ARCH_BCM_5301X) += 
        bcm47094-dlink-dir-885l.dtb \
        bcm94708.dtb \
        bcm94709.dtb \
+       bcm953012er.dtb \
        bcm953012k.dtb
  dtb-$(CONFIG_ARCH_BCM_63XX) += \
        bcm963138dvt.dtb
@@@ -95,8 -99,11 +99,11 @@@ dtb-$(CONFIG_ARCH_BCM_CYGNUS) += 
        bcm958305k.dtb
  dtb-$(CONFIG_ARCH_BCM_MOBILE) += \
        bcm28155-ap.dtb \
-       bcm21664-garnet.dtb
+       bcm21664-garnet.dtb \
+       bcm23550-sparrow.dtb
  dtb-$(CONFIG_ARCH_BCM_NSP) += \
+       bcm958525xmc.dtb \
+       bcm958625hr.dtb \
        bcm958625k.dtb
  dtb-$(CONFIG_ARCH_BERLIN) += \
        berlin2-sony-nsz-gs7.dtb \
        berlin2q-marvell-dmp.dtb
  dtb-$(CONFIG_ARCH_BRCMSTB) += \
        bcm7445-bcm97445svmb.dtb
+ dtb-$(CONFIG_ARCH_CLPS711X) += \
+       ep7211-edb7211.dtb
  dtb-$(CONFIG_ARCH_DAVINCI) += \
        da850-enbw-cmc.dtb \
        da850-evm.dtb
@@@ -134,6 -143,7 +143,7 @@@ dtb-$(CONFIG_ARCH_EXYNOS5) += 
        exynos5250-snow-rev5.dtb \
        exynos5250-spring.dtb \
        exynos5260-xyref5260.dtb \
+       exynos5410-odroidxu.dtb \
        exynos5410-smdk5410.dtb \
        exynos5420-arndale-octa.dtb \
        exynos5420-peach-pit.dtb \
        exynos5800-peach-pi.dtb
  dtb-$(CONFIG_ARCH_HI3xxx) += \
        hi3620-hi4511.dtb
- dtb-$(CONFIG_ARCH_HIX5HD2) += \
-       hisi-x5hd2-dkb.dtb
  dtb-$(CONFIG_ARCH_HIGHBANK) += \
        highbank.dtb \
        ecx-2000.dtb
@@@ -155,6 -163,10 +163,10 @@@ dtb-$(CONFIG_ARCH_HIP01) += 
        hip01-ca9x2.dtb
  dtb-$(CONFIG_ARCH_HIP04) += \
        hip04-d01.dtb
+ dtb-$(CONFIG_ARCH_HISI) += \
+       hi3519-demb.dtb
+ dtb-$(CONFIG_ARCH_HIX5HD2) += \
+       hisi-x5hd2-dkb.dtb
  dtb-$(CONFIG_ARCH_INTEGRATOR) += \
        integratorap.dtb \
        integratorcp.dtb
@@@ -356,6 -368,7 +368,7 @@@ dtb-$(CONFIG_SOC_IMX6Q) += 
        imx6q-gw54xx.dtb \
        imx6q-gw551x.dtb \
        imx6q-gw552x.dtb \
+       imx6q-h100.dtb \
        imx6q-hummingboard.dtb \
        imx6q-icore-rqs.dtb \
        imx6q-marsboard.dtb \
        imx6q-tx6q-1110.dtb \
        imx6q-tx6q-11x0-mb7.dtb \
        imx6q-udoo.dtb \
+       imx6q-utilite-pro.dtb \
        imx6q-wandboard.dtb \
        imx6q-wandboard-revb1.dtb \
        imx6qp-nitrogen6_max.dtb \
@@@ -399,9 -413,11 +413,11 @@@ dtb-$(CONFIG_SOC_IMX6UL) += 
        imx6ul-tx6ul-mainboard.dtb
  dtb-$(CONFIG_SOC_IMX7D) += \
        imx7d-cl-som-imx7.dtb \
+       imx7d-colibri-eval-v3.dtb \
        imx7d-nitrogen7.dtb \
        imx7d-sbc-imx7.dtb \
-       imx7d-sdb.dtb
+       imx7d-sdb.dtb \
+       imx7s-colibri-eval-v3.dtb
  dtb-$(CONFIG_SOC_LS1021A) += \
        ls1021a-qds.dtb \
        ls1021a-twr.dtb
@@@ -416,7 -432,9 +432,9 @@@ dtb-$(CONFIG_SOC_VF610) += 
  dtb-$(CONFIG_ARCH_MXS) += \
        imx23-evk.dtb \
        imx23-olinuxino.dtb \
+       imx23-sansa.dtb \
        imx23-stmp378x_devb.dtb \
+       imx23-xfi3.dtb \
        imx28-apf28.dtb \
        imx28-apf28dev.dtb \
        imx28-apx4devkit.dtb \
@@@ -572,7 -590,8 +590,8 @@@ dtb-$(CONFIG_ARCH_PRIMA2) += 
  dtb-$(CONFIG_ARCH_OXNAS) += \
        wd-mbwe.dtb
  dtb-$(CONFIG_ARCH_QCOM) += \
-       qcom-apq8064-arrow-db600c.dtb \
+       qcom-apq8060-dragonboard.dtb \
+       qcom-apq8064-arrow-sd-600eval.dtb \
        qcom-apq8064-cm-qs600.dtb \
        qcom-apq8064-ifc6410.dtb \
        qcom-apq8064-sony-xperia-yuga.dtb \
@@@ -602,6 -621,7 +621,7 @@@ dtb-$(CONFIG_ARCH_ROCKCHIP) += 
        rk3066a-rayeager.dtb \
        rk3188-radxarock.dtb \
        rk3228-evb.dtb \
+       rk3229-evb.dtb \
        rk3288-evb-act8846.dtb \
        rk3288-evb-rk808.dtb \
        rk3288-firefly-beta.dtb \
@@@ -638,6 -658,7 +658,7 @@@ dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += 
        r8a7790-lager.dtb \
        r8a7791-koelsch.dtb \
        r8a7791-porter.dtb \
+       r8a7792-blanche.dtb \
        r8a7793-gose.dtb \
        r8a7794-alt.dtb \
        r8a7794-silk.dtb \
@@@ -728,6 -749,7 +749,7 @@@ dtb-$(CONFIG_MACH_SUN6I) += 
        sun6i-a31s-yones-toptech-bs1078-v2.dtb
  dtb-$(CONFIG_MACH_SUN7I) += \
        sun7i-a20-bananapi.dtb \
+       sun7i-a20-bananapi-m1-plus.dtb \
        sun7i-a20-bananapro.dtb \
        sun7i-a20-cubieboard2.dtb \
        sun7i-a20-cubietruck.dtb \
        sun7i-a20-olimex-som-evb.dtb \
        sun7i-a20-olinuxino-lime.dtb \
        sun7i-a20-olinuxino-lime2.dtb \
 +      sun7i-a20-olinuxino-lime2-emmc.dtb \
        sun7i-a20-olinuxino-micro.dtb \
        sun7i-a20-orangepi.dtb \
        sun7i-a20-orangepi-mini.dtb \
  dtb-$(CONFIG_MACH_SUN8I) += \
        sun8i-a23-evb.dtb \
        sun8i-a23-gt90h-v4.dtb \
+       sun8i-a23-inet86dz.dtb \
        sun8i-a23-ippo-q8h-v5.dtb \
        sun8i-a23-ippo-q8h-v1.2.dtb \
+       sun8i-a23-polaroid-mid2407pxe03.dtb \
        sun8i-a23-polaroid-mid2809pxe04.dtb \
        sun8i-a23-q8-tablet.dtb \
        sun8i-a33-et-q8-v1.6.dtb \
        sun8i-a33-sinlinx-sina33.dtb \
        sun8i-a83t-allwinner-h8homlet-v2.dtb \
        sun8i-a83t-cubietruck-plus.dtb \
+       sun8i-h3-bananapi-m2-plus.dtb \
        sun8i-h3-orangepi-2.dtb \
        sun8i-h3-orangepi-one.dtb \
        sun8i-h3-orangepi-pc.dtb \
-       sun8i-h3-orangepi-plus.dtb
+       sun8i-h3-orangepi-plus.dtb \
+       sun8i-r16-parrot.dtb
  dtb-$(CONFIG_MACH_SUN9I) += \
        sun9i-a80-optimus.dtb \
        sun9i-a80-cubieboard4.dtb
@@@ -794,6 -819,7 +820,7 @@@ dtb-$(CONFIG_ARCH_TEGRA_114_SOC) += 
        tegra114-roth.dtb \
        tegra114-tn7.dtb
  dtb-$(CONFIG_ARCH_TEGRA_124_SOC) += \
+       tegra124-apalis-eval.dtb \
        tegra124-jetson-tk1.dtb \
        tegra124-nyan-big.dtb \
        tegra124-nyan-blaze.dtb \
                        device_type = "cpu";
                        reg = <0>;
  
-                       /*
-                        * To consider voltage drop between PMIC and SoC,
-                        * tolerance value is reduced to 2% from 4% and
-                        * voltage value is increased as a precaution.
-                        */
-                       operating-points = <
-                               /* kHz    uV */
-                               720000  1285000
-                               600000  1225000
-                               500000  1125000
-                               275000  1125000
-                       >;
-                       voltage-tolerance = <2>; /* 2 percentage */
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       ti,syscon-efuse = <&scm_conf 0x7fc 0x1fff 0>;
+                       ti,syscon-rev = <&scm_conf 0x600>;
  
                        clocks = <&dpll_mpu_ck>;
                        clock-names = "cpu";
                };
        };
  
+       cpu0_opp_table: opp_table0 {
+               compatible = "operating-points-v2";
+               /*
+                * The three following nodes are marked with opp-suspend
+                * because the can not be enabled simultaneously on a
+                * single SoC.
+                */
+               opp50@300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <950000 931000 969000>;
+                       opp-supported-hw = <0x06 0x0010>;
+                       opp-suspend;
+               };
+               opp100@275000000 {
+                       opp-hz = /bits/ 64 <275000000>;
+                       opp-microvolt = <1100000 1078000 1122000>;
+                       opp-supported-hw = <0x01 0x00FF>;
+                       opp-suspend;
+               };
+               opp100@300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <1100000 1078000 1122000>;
+                       opp-supported-hw = <0x06 0x0020>;
+                       opp-suspend;
+               };
+               opp100@500000000 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <1100000 1078000 1122000>;
+                       opp-supported-hw = <0x01 0xFFFF>;
+               };
+               opp100@600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <1100000 1078000 1122000>;
+                       opp-supported-hw = <0x06 0x0040>;
+               };
+               opp120@600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <1200000 1176000 1224000>;
+                       opp-supported-hw = <0x01 0xFFFF>;
+               };
+               opp120@720000000 {
+                       opp-hz = /bits/ 64 <720000000>;
+                       opp-microvolt = <1200000 1176000 1224000>;
+                       opp-supported-hw = <0x06 0x0080>;
+               };
+               oppturbo@720000000 {
+                       opp-hz = /bits/ 64 <720000000>;
+                       opp-microvolt = <1260000 1234800 1285200>;
+                       opp-supported-hw = <0x01 0xFFFF>;
+               };
+               oppturbo@800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1260000 1234800 1285200>;
+                       opp-supported-hw = <0x06 0x0100>;
+               };
+               oppnitro@1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1325000 1298500 1351500>;
+                       opp-supported-hw = <0x04 0x0200>;
+               };
+       };
        pmu {
                compatible = "arm,cortex-a8-pmu";
                interrupts = <3>;
                        reg =   <0x49000000 0x10000>;
                        reg-names = "edma3_cc";
                        interrupts = <12 13 14>;
-                       interrupt-names = "edma3_ccint", "emda3_mperr",
+                       interrupt-names = "edma3_ccint", "edma3_mperr",
                                          "edma3_ccerrint";
                        dma-requests = <64>;
                        #dma-cells = <2>;
                                  0x48300200 0x48300200 0x80>; /* EHRPWM */
  
                        ecap0: ecap@48300100 {
-                               compatible = "ti,am33xx-ecap";
+                               compatible = "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48300100 0x80>;
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                interrupts = <31>;
                                interrupt-names = "ecap0";
-                               ti,hwmods = "ecap0";
                                status = "disabled";
                        };
  
                        ehrpwm0: pwm@48300200 {
-                               compatible = "ti,am33xx-ehrpwm";
+                               compatible = "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48300200 0x80>;
-                               ti,hwmods = "ehrpwm0";
+                               clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                                  0x48302200 0x48302200 0x80>; /* EHRPWM */
  
                        ecap1: ecap@48302100 {
-                               compatible = "ti,am33xx-ecap";
+                               compatible = "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48302100 0x80>;
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                interrupts = <47>;
                                interrupt-names = "ecap1";
-                               ti,hwmods = "ecap1";
                                status = "disabled";
                        };
  
                        ehrpwm1: pwm@48302200 {
-                               compatible = "ti,am33xx-ehrpwm";
+                               compatible = "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48302200 0x80>;
-                               ti,hwmods = "ehrpwm1";
+                               clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                                  0x48304200 0x48304200 0x80>; /* EHRPWM */
  
                        ecap2: ecap@48304100 {
-                               compatible = "ti,am33xx-ecap";
+                               compatible = "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48304100 0x80>;
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                interrupts = <61>;
                                interrupt-names = "ecap2";
-                               ti,hwmods = "ecap2";
                                status = "disabled";
                        };
  
                        ehrpwm2: pwm@48304200 {
-                               compatible = "ti,am33xx-ehrpwm";
+                               compatible = "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48304200 0x80>;
-                               ti,hwmods = "ehrpwm2";
+                               clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        ale_entries = <1024>;
                        bd_ram_size = <0x2000>;
                        no_bd_ram = <0>;
 -                      rx_descs = <64>;
                        mac_control = <0x20>;
                        slaves = <2>;
                        active_slave = <0>;
                        status = "disabled";
  
                        davinci_mdio: mdio@4a101000 {
 -                              compatible = "ti,davinci_mdio";
 +                              compatible = "ti,cpsw-mdio","ti,davinci_mdio";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                ti,hwmods = "davinci_mdio";
                        clocks = <&dpll_mpu_ck>;
                        clock-names = "cpu";
  
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       ti,syscon-efuse = <&scm_conf 0x610 0x3f 0>;
+                       ti,syscon-rev = <&scm_conf 0x600>;
                        clock-latency = <300000>; /* From omap-cpufreq driver */
                };
        };
  
+       cpu0_opp_table: opp_table0 {
+               compatible = "operating-points-v2";
+               opp50@300000000 {
+                       opp-hz = /bits/ 64 <300000000>;
+                       opp-microvolt = <950000 931000 969000>;
+                       opp-supported-hw = <0xFF 0x01>;
+                       opp-suspend;
+               };
+               opp100@600000000 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <1100000 1078000 1122000>;
+                       opp-supported-hw = <0xFF 0x04>;
+               };
+               opp120@720000000 {
+                       opp-hz = /bits/ 64 <720000000>;
+                       opp-microvolt = <1200000 1176000 1224000>;
+                       opp-supported-hw = <0xFF 0x08>;
+               };
+               oppturbo@800000000 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1260000 1234800 1285200>;
+                       opp-supported-hw = <0xFF 0x10>;
+               };
+               oppnitro@1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1325000 1298500 1351500>;
+                       opp-supported-hw = <0xFF 0x20>;
+               };
+       };
        gic: interrupt-controller@48241000 {
                compatible = "arm,cortex-a9-gic";
                interrupt-controller;
                        interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "edma3_ccint", "emda3_mperr",
+                       interrupt-names = "edma3_ccint", "edma3_mperr",
                                          "edma3_ccerrint";
                        dma-requests = <64>;
                        #dma-cells = <2>;
                        ale_entries = <1024>;
                        bd_ram_size = <0x2000>;
                        no_bd_ram = <0>;
 -                      rx_descs = <64>;
                        mac_control = <0x20>;
                        slaves = <2>;
                        active_slave = <0>;
                        syscon = <&scm_conf>;
  
                        davinci_mdio: mdio@4a101000 {
 -                              compatible = "ti,am4372-mdio","ti,davinci_mdio";
 +                              compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
                                reg = <0x4a101000 0x100>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                        status = "disabled";
  
                        ecap0: ecap@48300100 {
-                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               compatible = "ti,am4372-ecap",
+                                            "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48300100 0x80>;
-                               ti,hwmods = "ecap0";
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                status = "disabled";
                        };
  
                        ehrpwm0: pwm@48300200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48300200 0x80>;
-                               ti,hwmods = "ehrpwm0";
+                               clocks = <&ehrpwm0_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        status = "disabled";
  
                        ecap1: ecap@48302100 {
-                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               compatible = "ti,am4372-ecap",
+                                            "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48302100 0x80>;
-                               ti,hwmods = "ecap1";
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                status = "disabled";
                        };
  
                        ehrpwm1: pwm@48302200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48302200 0x80>;
-                               ti,hwmods = "ehrpwm1";
+                               clocks = <&ehrpwm1_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        status = "disabled";
  
                        ecap2: ecap@48304100 {
-                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               compatible = "ti,am4372-ecap",
+                                            "ti,am3352-ecap",
+                                            "ti,am33xx-ecap";
                                #pwm-cells = <3>;
                                reg = <0x48304100 0x80>;
-                               ti,hwmods = "ecap2";
+                               clocks = <&l4ls_gclk>;
+                               clock-names = "fck";
                                status = "disabled";
                        };
  
                        ehrpwm2: pwm@48304200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48304200 0x80>;
-                               ti,hwmods = "ehrpwm2";
+                               clocks = <&ehrpwm2_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        status = "disabled";
  
                        ehrpwm3: pwm@48306200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48306200 0x80>;
-                               ti,hwmods = "ehrpwm3";
+                               clocks = <&ehrpwm3_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        status = "disabled";
  
                        ehrpwm4: pwm@48308200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x48308200 0x80>;
-                               ti,hwmods = "ehrpwm4";
+                               clocks = <&ehrpwm4_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        status = "disabled";
  
                        ehrpwm5: pwm@4830a200 {
-                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               compatible = "ti,am4372-ehrpwm",
+                                            "ti,am3352-ehrpwm",
+                                            "ti,am33xx-ehrpwm";
                                #pwm-cells = <3>;
                                reg = <0x4830a200 0x80>;
-                               ti,hwmods = "ehrpwm5";
+                               clocks = <&ehrpwm5_tbclk>, <&l4ls_gclk>;
+                               clock-names = "tbclk", "fck";
                                status = "disabled";
                        };
                };
                        dma-names = "tx", "rx";
                };
  
+               rng: rng@48310000 {
+                       compatible = "ti,omap4-rng";
+                       ti,hwmods = "rng";
+                       reg = <0x48310000 0x2000>;
+                       interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+               };
                mcasp0: mcasp@48038000 {
                        compatible = "ti,am33xx-mcasp-audio";
                        ti,hwmods = "mcasp0";
@@@ -57,7 -57,7 +57,7 @@@
                        compatible = "arm,cortex-a9";
                        next-level-cache = <&L2>;
                        enable-method = "brcm,bcm-nsp-smp";
-                       secondary-boot-reg = <0xffff042c>;
+                       secondary-boot-reg = <0xffff0fec>;
                        reg = <0x1>;
                };
        };
                        status = "disabled";
                };
  
+               dma@20000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       reg = <0x20000 0x1000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&iprocslow>;
+                       clock-names = "apb_pclk";
+                       #dma-cells = <1>;
+               };
                nand: nand@26000 {
                        compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
                        reg = <0x026000 0x600>,
                        brcm,nand-has-wp;
                };
  
 +              rng: rng@33000 {
 +                      compatible = "brcm,bcm-nsp-rng";
 +                      reg = <0x33000 0x14>;
 +              };
 +
                ccbtimer0: timer@34000 {
                        compatible = "arm,sp804";
                        reg = <0x34000 0x1000>;
                              <0x30028 0x04>,
                              <0x3f408 0x04>;
                };
 +
 +              sata_phy: sata_phy@40100 {
 +                      compatible = "brcm,iproc-nsp-sata-phy";
 +                      reg = <0x40100 0x340>;
 +                      reg-names = "phy";
 +                      #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@41000 {
 +                      compatible = "brcm,bcm-nsp-ahci";
 +                      reg-names = "ahci", "top-ctrl";
 +                      reg = <0x41000 0x1000>, <0x40020 0x1c>;
 +                      interrupts = <GIC_SPI 159 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";
 +                      };
 +              };
        };
  
        pcie0: pcie@18012000 {
                ranges = <0x82000000 0 0x08000000 0x08000000 0 0x8000000>;
  
                status = "disabled";
+               msi-parent = <&msi0>;
+               msi0: msi@18012000 {
+                       compatible = "brcm,iproc-msi";
+                       msi-controller;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SPI 127 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 128 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 129 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 130 IRQ_TYPE_NONE>;
+                       brcm,pcie-msi-inten;
+               };
        };
  
        pcie1: pcie@18013000 {
                ranges = <0x82000000 0 0x40000000 0x40000000 0 0x8000000>;
  
                status = "disabled";
+               msi-parent = <&msi1>;
+               msi1: msi@18013000 {
+                       compatible = "brcm,iproc-msi";
+                       msi-controller;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SPI 133 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 134 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 135 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 136 IRQ_TYPE_NONE>;
+                       brcm,pcie-msi-inten;
+               };
        };
  
        pcie2: pcie@18014000 {
                ranges = <0x82000000 0 0x48000000 0x48000000 0 0x8000000>;
  
                status = "disabled";
+               msi-parent = <&msi2>;
+               msi2: msi@18014000 {
+                       compatible = "brcm,iproc-msi";
+                       msi-controller;
+                       interrupt-parent = <&gic>;
+                       interrupts = <GIC_SPI 139 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 140 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 141 IRQ_TYPE_NONE>,
+                                    <GIC_SPI 142 IRQ_TYPE_NONE>;
+                       brcm,pcie-msi-inten;
+               };
        };
  };
                        reg =   <0x49000000 0x10000>;
                        reg-names = "edma3_cc";
                        interrupts = <12 13 14>;
-                       interrupt-names = "edma3_ccint", "emda3_mperr",
+                       interrupt-names = "edma3_ccint", "edma3_mperr",
                                          "edma3_ccerrint";
                        dma-requests = <64>;
                        #dma-cells = <2>;
                        ale_entries = <1024>;
                        bd_ram_size = <0x2000>;
                        no_bd_ram = <0>;
 -                      rx_descs = <64>;
                        mac_control = <0x20>;
                        slaves = <2>;
                        active_slave = <0>;
                interrupt-parent = <&gic>;
        };
  
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <0>;
+                       operating-points-v2 = <&cpu0_opp_table>;
+                       ti,syscon-efuse = <&scm_wkup 0x20c 0xf80000 19>;
+                       ti,syscon-rev = <&scm_wkup 0x204>;
+                       clocks = <&dpll_mpu_ck>;
+                       clock-names = "cpu";
+                       clock-latency = <300000>; /* From omap-cpufreq driver */
+                       /* cooling options */
+                       cooling-min-level = <0>;
+                       cooling-max-level = <2>;
+                       #cooling-cells = <2>; /* min followed by max */
+               };
+       };
+       cpu0_opp_table: opp_table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+               opp_nom@1000000000 {
+                       opp-hz = /bits/ 64 <1000000000>;
+                       opp-microvolt = <1060000 850000 1150000>;
+                       opp-supported-hw = <0xFF 0x01>;
+                       opp-suspend;
+               };
+               opp_od@1176000000 {
+                       opp-hz = /bits/ 64 <1176000000>;
+                       opp-microvolt = <1160000 885000 1160000>;
+                       opp-supported-hw = <0xFF 0x02>;
+               };
+       };
        /*
         * The soc node represents the soc top level view. It is used for IPs
         * that are not memory mapped in the MPU view or for the MPU itself.
                                prm_clockdomains: clockdomains {
                                };
                        };
+                       scm_wkup: scm_conf@c000 {
+                               compatible = "syscon";
+                               reg = <0xc000 0x1000>;
+                       };
                };
  
                axi@0 {
                        ranges = <0x51800000 0x51800000 0x3000
                                  0x0        0x30000000 0x10000000>;
                        status = "disabled";
-                       pcie@51000000 {
+                       pcie@51800000 {
                                compatible = "ti,dra7-pcie";
                                reg = <0x51800000 0x2000>, <0x51802000 0x14c>, <0x1000 0x2000>;
                                reg-names = "rc_dbics", "ti_conf", "config";
                        };
                };
  
+               ocmcram1: ocmcram@40300000 {
+                       compatible = "mmio-sram";
+                       reg = <0x40300000 0x80000>;
+                       ranges = <0x0 0x40300000 0x80000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       /*
+                        * This is a placeholder for an optional reserved
+                        * region for use by secure software. The size
+                        * of this region is not known until runtime so it
+                        * is set as zero to either be updated to reserve
+                        * space or left unchanged to leave all SRAM for use.
+                        * On HS parts that that require the reserved region
+                        * either the bootloader can update the size to
+                        * the required amount or the node can be overridden
+                        * from the board dts file for the secure platform.
+                        */
+                       sram-hs@0 {
+                               compatible = "ti,secure-ram";
+                               reg = <0x0 0x0>;
+                       };
+               };
+               /*
+                * NOTE: ocmcram2 and ocmcram3 are not available on all
+                * DRA7xx and AM57xx variants. Confirm availability in
+                * the data manual for the exact part number in use
+                * before enabling these nodes in the board dts file.
+                */
+               ocmcram2: ocmcram@40400000 {
+                       status = "disabled";
+                       compatible = "mmio-sram";
+                       reg = <0x40400000 0x100000>;
+                       ranges = <0x0 0x40400000 0x100000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
+               ocmcram3: ocmcram@40500000 {
+                       status = "disabled";
+                       compatible = "mmio-sram";
+                       reg = <0x40500000 0x100000>;
+                       ranges = <0x0 0x40500000 0x100000>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+               };
                bandgap: bandgap@4a0021e0 {
                        reg = <0x4a0021e0 0xc
                                0x4a00232c 0xc
                        interrupts = <GIC_SPI 361 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 360 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 359 IRQ_TYPE_LEVEL_HIGH>;
-                       interrupt-names = "edma3_ccint", "emda3_mperr",
+                       interrupt-names = "edma3_ccint", "edma3_mperr",
                                          "edma3_ccerrint";
                        dma-requests = <64>;
                        #dma-cells = <2>;
                        ti,hwmods = "gpmc";
                        reg = <0x50000000 0x37c>;      /* device IO registers */
                        interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
 +                      dmas = <&edma_xbar 4 0>;
 +                      dma-names = "rxtx";
                        gpmc,num-cs = <8>;
                        gpmc,num-waitpins = <2>;
                        #address-cells = <2>;
                        ale_entries = <1024>;
                        bd_ram_size = <0x2000>;
                        no_bd_ram = <0>;
 -                      rx_descs = <64>;
                        mac_control = <0x20>;
                        slaves = <2>;
                        active_slave = <0>;
                        status = "disabled";
  
                        davinci_mdio: mdio@48485000 {
 -                              compatible = "ti,davinci_mdio";
 +                              compatible = "ti,cpsw-mdio","ti,davinci_mdio";
                                #address-cells = <1>;
                                #size-cells = <0>;
                                ti,hwmods = "davinci_mdio";
                                clock-names = "fck", "sys_clk";
                        };
                };
+               epwmss0: epwmss@4843e000 {
+                       compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
+                       reg = <0x4843e000 0x30>;
+                       ti,hwmods = "epwmss0";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+                       ranges;
+                       ehrpwm0: pwm@4843e200 {
+                               compatible = "ti,dra746-ehrpwm",
+                                            "ti,am3352-ehrpwm";
+                               #pwm-cells = <3>;
+                               reg = <0x4843e200 0x80>;
+                               clocks = <&ehrpwm0_tbclk>, <&l4_root_clk_div>;
+                               clock-names = "tbclk", "fck";
+                               status = "disabled";
+                       };
+                       ecap0: ecap@4843e100 {
+                               compatible = "ti,dra746-ecap",
+                                            "ti,am3352-ecap";
+                               #pwm-cells = <3>;
+                               reg = <0x4843e100 0x80>;
+                               clocks = <&l4_root_clk_div>;
+                               clock-names = "fck";
+                               status = "disabled";
+                       };
+               };
+               epwmss1: epwmss@48440000 {
+                       compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
+                       reg = <0x48440000 0x30>;
+                       ti,hwmods = "epwmss1";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+                       ranges;
+                       ehrpwm1: pwm@48440200 {
+                               compatible = "ti,dra746-ehrpwm",
+                                            "ti,am3352-ehrpwm";
+                               #pwm-cells = <3>;
+                               reg = <0x48440200 0x80>;
+                               clocks = <&ehrpwm1_tbclk>, <&l4_root_clk_div>;
+                               clock-names = "tbclk", "fck";
+                               status = "disabled";
+                       };
+                       ecap1: ecap@48440100 {
+                               compatible = "ti,dra746-ecap",
+                                            "ti,am3352-ecap";
+                               #pwm-cells = <3>;
+                               reg = <0x48440100 0x80>;
+                               clocks = <&l4_root_clk_div>;
+                               clock-names = "fck";
+                               status = "disabled";
+                       };
+               };
+               epwmss2: epwmss@48442000 {
+                       compatible = "ti,dra746-pwmss", "ti,am33xx-pwmss";
+                       reg = <0x48442000 0x30>;
+                       ti,hwmods = "epwmss2";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       status = "disabled";
+                       ranges;
+                       ehrpwm2: pwm@48442200 {
+                               compatible = "ti,dra746-ehrpwm",
+                                            "ti,am3352-ehrpwm";
+                               #pwm-cells = <3>;
+                               reg = <0x48442200 0x80>;
+                               clocks = <&ehrpwm2_tbclk>, <&l4_root_clk_div>;
+                               clock-names = "tbclk", "fck";
+                               status = "disabled";
+                       };
+                       ecap2: ecap@48442100 {
+                               compatible = "ti,dra746-ecap",
+                                            "ti,am3352-ecap";
+                               #pwm-cells = <3>;
+                               reg = <0x48442100 0x80>;
+                               clocks = <&l4_root_clk_div>;
+                               clock-names = "fck";
+                               status = "disabled";
+                       };
+               };
+               aes1: aes@4b500000 {
+                       compatible = "ti,omap4-aes";
+                       ti,hwmods = "aes1";
+                       reg = <0x4b500000 0xa0>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&edma_xbar 111 0>, <&edma_xbar 110 0>;
+                       dma-names = "tx", "rx";
+                       clocks = <&l3_iclk_div>;
+                       clock-names = "fck";
+               };
+               aes2: aes@4b700000 {
+                       compatible = "ti,omap4-aes";
+                       ti,hwmods = "aes2";
+                       reg = <0x4b700000 0xa0>;
+                       interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&edma_xbar 114 0>, <&edma_xbar 113 0>;
+                       dma-names = "tx", "rx";
+                       clocks = <&l3_iclk_div>;
+                       clock-names = "fck";
+               };
+               des: des@480a5000 {
+                       compatible = "ti,omap4-des";
+                       ti,hwmods = "des";
+                       reg = <0x480a5000 0xa0>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&sdma_xbar 117>, <&sdma_xbar 116>;
+                       dma-names = "tx", "rx";
+                       clocks = <&l3_iclk_div>;
+                       clock-names = "fck";
+               };
+               sham: sham@53100000 {
+                       compatible = "ti,omap5-sham";
+                       ti,hwmods = "sham";
+                       reg = <0x4b101000 0x300>;
+                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&edma_xbar 119 0>;
+                       dma-names = "rx";
+                       clocks = <&l3_iclk_div>;
+                       clock-names = "fck";
+               };
+               rng: rng@48090000 {
+                       compatible = "ti,omap4-rng";
+                       ti,hwmods = "rng";
+                       reg = <0x48090000 0x2000>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&l3_iclk_div>;
+                       clock-names = "fck";
+               };
        };
  
        thermal_zones: thermal-zones {
        compatible = "ti,dra742", "ti,dra74", "ti,dra7";
  
        cpus {
-               #address-cells = <1>;
-               #size-cells = <0>;
-               cpu0: cpu@0 {
-                       device_type = "cpu";
-                       compatible = "arm,cortex-a15";
-                       reg = <0>;
-                       operating-points = <
-                               /* kHz    uV */
-                               1000000 1060000
-                               1176000 1160000
-                               >;
-                       clocks = <&dpll_mpu_ck>;
-                       clock-names = "cpu";
-                       clock-latency = <300000>; /* From omap-cpufreq driver */
-                       /* cooling options */
-                       cooling-min-level = <0>;
-                       cooling-max-level = <2>;
-                       #cooling-cells = <2>; /* min followed by max */
-               };
                cpu@1 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <1>;
+                       operating-points-v2 = <&cpu0_opp_table>;
                };
        };
  
        reg = <0x58000000 0x80>,
              <0x58004054 0x4>,
              <0x58004300 0x20>,
 -            <0x58005054 0x4>,
 -            <0x58005300 0x20>;
 +            <0x58009054 0x4>,
 +            <0x58009300 0x20>;
        reg-names = "dss", "pll1_clkctrl", "pll1",
                    "pll2_clkctrl", "pll2";
  
@@@ -61,7 -61,7 +61,7 @@@
                #address-cells = <1>;
                #size-cells = <0>;
  
-               i2c-parent = <&{/i2c@12CA0000}>;
+               i2c-parent = <&i2c_4>;
  
                our-claim-gpio = <&gpf0 3 GPIO_ACTIVE_LOW>;
                their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
        hpd-gpios = <&gpx0 7 GPIO_ACTIVE_HIGH>;
  
        ports {
 -              port0 {
 +              port {
                        dp_out: endpoint {
                                remote-endpoint = <&bridge_in>;
                        };
                edid-emulation = <5>;
  
                ports {
 -                      port0 {
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +
 +                      port@0 {
 +                              reg = <0>;
 +
                                bridge_out: endpoint {
                                        remote-endpoint = <&panel_in>;
                                };
                        };
  
 -                      port1 {
 +                      port@1 {
 +                              reg = <1>;
 +
                                bridge_in: endpoint {
                                        remote-endpoint = <&dp_out>;
                                };
        hpd-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
  
        ports {
 -              port0 {
 +              port {
                        dp_out: endpoint {
                                remote-endpoint = <&bridge_in>;
                        };
                                regulator-name = "vdd_1v2";
                                regulator-min-microvolt = <1200000>;
                                regulator-max-microvolt = <1200000>;
-                               regulator-always-on;
                                regulator-boot-on;
                                regulator-state-mem {
                                        regulator-off-in-suspend;
                                regulator-name = "vdd_1v35";
                                regulator-min-microvolt = <1350000>;
                                regulator-max-microvolt = <1350000>;
-                               regulator-always-on;
                                regulator-boot-on;
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                regulator-name = "vdd_2v";
                                regulator-min-microvolt = <2000000>;
                                regulator-max-microvolt = <2000000>;
-                               regulator-always-on;
                                regulator-boot-on;
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                regulator-name = "vdd_1v8";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
-                               regulator-always-on;
                                regulator-boot-on;
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                regulator-name = "vdd_ldo9";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
-                               regulator-always-on;
                                regulator-state-mem {
                                        regulator-on-in-suspend;
                                        regulator-mode = <MAX77802_OPMODE_LP>;
                                regulator-name = "vdd_ldo10";
                                regulator-min-microvolt = <1800000>;
                                regulator-max-microvolt = <1800000>;
-                               regulator-always-on;
                                regulator-state-mem {
                                        regulator-off-in-suspend;
                                };
                use-external-pwm;
  
                ports {
 -                      port0 {
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +
 +                      port@0 {
 +                              reg = <0>;
 +
                                bridge_out: endpoint {
                                        remote-endpoint = <&panel_in>;
                                };
                        };
  
 -                      port1 {
 +                      port@1 {
 +                              reg = <1>;
 +
                                bridge_in: endpoint {
                                        remote-endpoint = <&dp_out>;
                                };
        status = "okay";
  };
  
- &mfc {
-       memory-region = <&mfc_left>, <&mfc_right>;
- };
  &mmc_0 {
        status = "okay";
        num-slots = <1>;
        status = "okay";
  };
  
+ &tmu_cpu0 {
+       vtmu-supply = <&ldo10_reg>;
+ };
+ &tmu_cpu1 {
+       vtmu-supply = <&ldo10_reg>;
+ };
+ &tmu_cpu2 {
+       vtmu-supply = <&ldo10_reg>;
+ };
+ &tmu_cpu3 {
+       vtmu-supply = <&ldo10_reg>;
+ };
+ &tmu_gpu {
+       vtmu-supply = <&ldo10_reg>;
+ };
  &usbdrd_dwc3_0 {
        dr_mode = "host";
  };
        status = "okay";
  
        rtc: m41t00@68 {
 -              compatible = "stm,m41t00";
 +              compatible = "st,m41t00";
                reg = <0x68>;
        };
  };
                        reg = <0x12000 0x1000>;
                        syscon = <&syscon 0x10 6>;
                };
+               fpga_irqc: fpga-irqc@15000 {
+                       compatible = "technologic,ts4800-irqc";
+                       reg = <0x15000 0x1000>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pinctrl_interrupt_fpga>;
+                       interrupt-parent = <&gpio2>;
+                       interrupts= <9 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+               can@1a000 {
+                       compatible = "technologic,sja1000";
+                       reg = <0x1a000 0x100>;
+                       interrupt-parent = <&fpga_irqc>;
+                       interrupts = <1>;
+                       reg-io-width = <2>;
+                       nxp,tx-output-config = <0x06>;
+                       nxp,external-clock-frequency = <24000000>;
+               };
        };
  };
  
                >;
        };
  
+       pinctrl_interrupt_fpga: fpgaicgrp {
+               fsl,pins = <
+                       MX51_PAD_EIM_D27__GPIO2_9               0xe5
+               >;
+       };
        pinctrl_lcd: lcdgrp {
                fsl,pins = <
                        MX51_PAD_DISP1_DAT0__DISP1_DAT0         0x5
@@@ -60,7 -60,7 +60,7 @@@
                vcc-supply = <&hsusb1_power>;
        };
  
-       tfp410: encoder@0 {
+       tfp410: encoder {
                compatible = "ti,tfp410";
                powerdown-gpios = <&gpio6 10 GPIO_ACTIVE_LOW>; /* gpio_170 */
  
@@@ -71,7 -71,7 +71,7 @@@
                        port@0 {
                                reg = <0>;
  
-                               tfp410_in: endpoint@0 {
+                               tfp410_in: endpoint {
                                        remote-endpoint = <&dpi_out>;
                                };
                        };
                        port@1 {
                                reg = <1>;
  
-                               tfp410_out: endpoint@0 {
+                               tfp410_out: endpoint {
                                        remote-endpoint = <&dvi_connector_in>;
                                };
                        };
                };
        };
  
-       dvi0: connector@0 {
+       dvi0: connector {
                compatible = "dvi-connector";
                label = "dvi";
  
                        OMAP3630_CORE2_IOPAD(0x25f8, PIN_OUTPUT | MUX_MODE4) /* etk_d14.gpio_28 */
                >;
        };
 +
 +      mmc1_wp_pins: pinmux_mmc1_cd_pins {
 +              pinctrl-single,pins = <
 +                      OMAP3630_CORE2_IOPAD(0x25fa, PIN_INPUT | MUX_MODE4)   /* etk_d15.gpio_29 */
 +              >;
 +      };
  };
  
  &i2c3 {
                };
        };
  };
 +
 +&mmc1 {
 +      pinctrl-0 = <&mmc1_pins &mmc1_wp_pins>;
 +      wp-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; /* gpio_29 */
 +};
                io-channels = <&twl_madc 0>, <&twl_madc 4>, <&twl_madc 12>;
                io-channel-names = "temp", "bsi", "vbat";
        };
+       pwm9: dmtimer-pwm {
+               compatible = "ti,omap-dmtimer-pwm";
+               #pwm-cells = <3>;
+               ti,timers = <&timer9>;
+               ti,clock-source = <0x00>; /* timer_sys_ck */
+       };
+       ir: n900-ir {
+               compatible = "nokia,n900-ir";
+               pwms = <&pwm9 0 26316 0>; /* 38000 Hz */
+       };
  };
  
  &omap3_pmx_core {
                pinctrl-single,pins = <
                        OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE1) /* ssi1_rdy_tx */
                        OMAP3_CORE1_IOPAD(0x217e, PIN_OUTPUT | MUX_MODE1)               /* ssi1_flag_tx */
 -                      OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* ssi1_wake_tx (cawake) */
 +                      OMAP3_CORE1_IOPAD(0x2182, PIN_INPUT | MUX_MODE4)                /* ssi1_wake_tx (cawake) */
                        OMAP3_CORE1_IOPAD(0x217c, PIN_OUTPUT | MUX_MODE1)               /* ssi1_dat_tx */
                        OMAP3_CORE1_IOPAD(0x2184, PIN_INPUT | MUX_MODE1)                /* ssi1_dat_rx */
                        OMAP3_CORE1_IOPAD(0x2186, PIN_INPUT | MUX_MODE1)                /* ssi1_flag_rx */
        modem_pins: pinmux_modem {
                pinctrl-single,pins = <
                        OMAP3_CORE1_IOPAD(0x20dc, PIN_OUTPUT | MUX_MODE4)               /* gpio 70 => cmt_apeslpx */
 -                      OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | WAKEUP_EN | MUX_MODE4) /* gpio 72 => ape_rst_rq */
 +                      OMAP3_CORE1_IOPAD(0x20e0, PIN_INPUT | MUX_MODE4)                /* gpio 72 => ape_rst_rq */
                        OMAP3_CORE1_IOPAD(0x20e2, PIN_OUTPUT | MUX_MODE4)               /* gpio 73 => cmt_rst_rq */
                        OMAP3_CORE1_IOPAD(0x20e4, PIN_OUTPUT | MUX_MODE4)               /* gpio 74 => cmt_en */
                        OMAP3_CORE1_IOPAD(0x20e6, PIN_OUTPUT | MUX_MODE4)               /* gpio 75 => cmt_rst */
                display0 = &hdmi0;
        };
  
 +      vmain: fixedregulator-vmain {
 +              compatible = "regulator-fixed";
 +              regulator-name = "vmain";
 +              regulator-min-microvolt = <5000000>;
 +              regulator-max-microvolt = <5000000>;
 +      };
 +
 +      vsys_cobra: fixedregulator-vsys_cobra {
 +              compatible = "regulator-fixed";
 +              regulator-name = "vsys_cobra";
 +              vin-supply = <&vmain>;
 +              regulator-min-microvolt = <5000000>;
 +              regulator-max-microvolt = <5000000>;
 +      };
 +
 +      vdds_1v8_main: fixedregulator-vdds_1v8_main {
 +              compatible = "regulator-fixed";
 +              regulator-name = "vdds_1v8_main";
 +              vin-supply = <&smps7_reg>;
 +              regulator-min-microvolt = <1800000>;
 +              regulator-max-microvolt = <1800000>;
 +      };
 +
        vmmcsd_fixed: fixedregulator-mmcsd {
                compatible = "regulator-fixed";
                regulator-name = "vmmcsd_fixed";
@@@ -87,7 -64,7 +87,7 @@@
                };
        };
  
-       tpd12s015: encoder@0 {
+       tpd12s015: encoder {
                compatible = "ti,tpd12s015";
  
                pinctrl-names = "default";
                        port@0 {
                                reg = <0>;
  
-                               tpd12s015_in: endpoint@0 {
+                               tpd12s015_in: endpoint {
                                        remote-endpoint = <&hdmi_out>;
                                };
                        };
                        port@1 {
                                reg = <1>;
  
-                               tpd12s015_out: endpoint@0 {
+                               tpd12s015_out: endpoint {
                                        remote-endpoint = <&hdmi_connector_in>;
                                };
                        };
                };
        };
  
-       hdmi0: connector@0 {
+       hdmi0: connector {
                compatible = "hdmi-connector";
                label = "hdmi";
  
  
        wlcore_irq_pin: pinmux_wlcore_irq_pin {
                pinctrl-single,pins = <
 -                      OMAP5_IOPAD(0x40, WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE6)     /* llia_wakereqin.gpio1_wk14 */
 +                      OMAP5_IOPAD(0x40, PIN_INPUT_PULLUP | MUX_MODE6) /* llia_wakereqin.gpio1_wk14 */
                >;
        };
  };
  
                        ti,ldo6-vibrator;
  
 +                      smps123-in-supply = <&vsys_cobra>;
 +                      smps45-in-supply = <&vsys_cobra>;
 +                      smps6-in-supply = <&vsys_cobra>;
 +                      smps7-in-supply = <&vsys_cobra>;
 +                      smps8-in-supply = <&vsys_cobra>;
 +                      smps9-in-supply = <&vsys_cobra>;
 +                      smps10_out2-in-supply = <&vsys_cobra>;
 +                      smps10_out1-in-supply = <&vsys_cobra>;
 +                      ldo1-in-supply = <&vsys_cobra>;
 +                      ldo2-in-supply = <&vsys_cobra>;
 +                      ldo3-in-supply = <&vdds_1v8_main>;
 +                      ldo4-in-supply = <&vdds_1v8_main>;
 +                      ldo5-in-supply = <&vsys_cobra>;
 +                      ldo6-in-supply = <&vdds_1v8_main>;
 +                      ldo7-in-supply = <&vsys_cobra>;
 +                      ldo8-in-supply = <&vsys_cobra>;
 +                      ldo9-in-supply = <&vmmcsd_fixed>;
 +                      ldoln-in-supply = <&vsys_cobra>;
 +                      ldousb-in-supply = <&vsys_cobra>;
 +
                        regulators {
                                smps123_reg: smps123 {
                                        /* VDD_OPP_MPU */
  
        twl6040: twl@4b {
                compatible = "ti,twl6040";
+               #clock-cells = <0>;
                reg = <0x4b>;
  
                pinctrl-names = "default";
                pinctrl-0 = <&twl6040_pins>;
  
                interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */
 -              ti,audpwron-gpio = <&gpio5 13 GPIO_ACTIVE_HIGH>;  /* gpio line 141 */
 +
 +              /* audpwron gpio defined in the board specific dts */
  
                vio-supply = <&smps7_reg>;
                v2v1-supply = <&smps9_reg>;
  &mcpdm {
        pinctrl-names = "default";
        pinctrl-0 = <&mcpdm_pins>;
+       clocks = <&twl6040>;
+       clock-names = "pdmclk";
        status = "okay";
  };
  
  
                apps_smsm: apps@0 {
                        reg = <0>;
-                       #qcom,state-cells = <1>;
+                       #qcom,smem-state-cells = <1>;
                };
  
                modem_smsm: modem@1 {
                };
        };
  
+       firmware {
+               scm {
+                       compatible = "qcom,scm-apq8064";
+               };
+       };
        soc: soc {
                #address-cells = <1>;
                #size-cells = <1>;
                };
  
                timer@200a000 {
 -                      compatible = "qcom,kpss-timer", "qcom,msm-timer";
 +                      compatible = "qcom,kpss-timer",
 +                                   "qcom,kpss-wdt-apq8064", "qcom,msm-timer";
                        interrupts = <1 1 0x301>,
                                     <1 2 0x301>,
                                     <1 3 0x301>;
                        sdcc1: sdcc@12400000 {
                                status          = "disabled";
                                compatible      = "arm,pl18x", "arm,primecell";
+                               pinctrl-names   = "default";
+                               pinctrl-0       = <&sdcc1_pins>;
                                arm,primecell-periphid = <0x00051180>;
                                reg             = <0x12400000 0x2000>;
                                interrupts      = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
                };
        };
  
+       pmu {
+               compatible = "arm,cortex-a7-pmu";
+               interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
+                                        IRQ_TYPE_LEVEL_HIGH)>;
+       };
        clocks {
                sleep_clk: sleep_clk {
                        compatible = "fixed-clock";
                };
  
                watchdog@b017000 {
 -                      compatible = "qcom,kpss-standalone";
 +                      compatible = "qcom,kpss-wdt", "qcom,kpss-wdt-ipq4019";
                        reg = <0xb017000 0x40>;
                        clocks = <&sleep_clk>;
                        timeout-sec = <10>;
        gmac: ethernet@ff290000 {
                compatible = "rockchip,rk3288-gmac";
                reg = <0xff290000 0x10000>;
 -              interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
 -              interrupt-names = "macirq";
 +              interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
 +                              <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
 +              interrupt-names = "macirq", "eth_wake_irq";
                rockchip,grf = <&grf>;
                clocks = <&cru SCLK_MAC>,
                        <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
                        #phy-cells = <0>;
                        status = "disabled";
                };
+               io_domains: io-domains {
+                       compatible = "rockchip,rk3288-io-voltage-domain";
+                       status = "disabled";
+               };
        };
  
        wdt: watchdog@ff800000 {
                };
        };
  
+       pmu {
+               compatible = "arm,cortex-a5-pmu";
+               interrupts = <2 IRQ_TYPE_LEVEL_HIGH 0>;
+       };
        memory {
                reg = <0x20000000 0x20000000>;
        };
                        clock-names = "pclk", "hclk";
                        status = "disabled";
  
-                       ep0 {
+                       ep@0 {
                                reg = <0>;
                                atmel,fifo-size = <64>;
                                atmel,nb-banks = <1>;
                        };
  
-                       ep1 {
+                       ep@1 {
                                reg = <1>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <3>;
                                atmel,can-isoc;
                        };
  
-                       ep2 {
+                       ep@2 {
                                reg = <2>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <3>;
                                atmel,can-isoc;
                        };
  
-                       ep3 {
+                       ep@3 {
                                reg = <3>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep4 {
+                       ep@4 {
                                reg = <4>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep5 {
+                       ep@5 {
                                reg = <5>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep6 {
+                       ep@6 {
                                reg = <6>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep7 {
+                       ep@7 {
                                reg = <7>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep8 {
+                       ep@8 {
                                reg = <8>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep9 {
+                       ep@9 {
                                reg = <9>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep10 {
+                       ep@10 {
                                reg = <10>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep11 {
+                       ep@11 {
                                reg = <11>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep12 {
+                       ep@12 {
                                reg = <12>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep13 {
+                       ep@13 {
                                reg = <13>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep14 {
+                       ep@14 {
                                reg = <14>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                                atmel,can-isoc;
                        };
  
-                       ep15 {
+                       ep@15 {
                                reg = <15>;
                                atmel,fifo-size = <1024>;
                                atmel,nb-banks = <2>;
                };
  
                usb1: ohci@00400000 {
 -                      compatible = "atmel,at91rm9200-ohci", "usb-ohci";
 +                      compatible = "atmel,sama5d2-ohci", "usb-ohci";
                        reg = <0x00400000 0x100000>;
                        interrupts = <41 IRQ_TYPE_LEVEL_HIGH 2>;
                        clocks = <&uhphs_clk>, <&uhphs_clk>, <&uhpck>;
        #address-cells = <1>;
        #size-cells = <1>;
  
-       aliases {
-               serial0 = &uart0;
-               serial1 = &uart1;
-       };
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                        reg = <0xffcfb100 0x80>;
                };
  
-               sdramedac {
-                       compatible = "altr,sdram-edac-a10";
-                       altr,sdr-syscon = <&sdr>;
-                       interrupts = <0 2 4>, <0 0 4>;
-               };
                L2: l2-cache@fffff000 {
                        compatible = "arm,pl310-cache";
                        reg = <0xfffff000 0x1000>;
                        #size-cells = <1>;
                        interrupts = <0 2 IRQ_TYPE_LEVEL_HIGH>,
                                     <0 0 IRQ_TYPE_LEVEL_HIGH>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
                        ranges;
  
+                       sdramedac {
+                               compatible = "altr,sdram-edac-a10";
+                               altr,sdr-syscon = <&sdr>;
+                               interrupts = <17 IRQ_TYPE_LEVEL_HIGH>,
+                                            <49 IRQ_TYPE_LEVEL_HIGH>;
+                       };
                        l2-ecc@ffd06010 {
                                compatible = "altr,socfpga-a10-l2-ecc";
                                reg = <0xffd06010 0x4>;
+                               interrupts = <0 IRQ_TYPE_LEVEL_HIGH>,
+                                            <32 IRQ_TYPE_LEVEL_HIGH>;
                        };
  
                        ocram-ecc@ff8c3000 {
                                compatible = "altr,socfpga-a10-ocram-ecc";
                                reg = <0xff8c3000 0x400>;
+                               interrupts = <1 IRQ_TYPE_LEVEL_HIGH>,
+                                            <33 IRQ_TYPE_LEVEL_HIGH>;
                        };
 +
 +                      emac0-rx-ecc@ff8c0800 {
 +                              compatible = "altr,socfpga-eth-mac-ecc";
 +                              reg = <0xff8c0800 0x400>;
 +                              altr,ecc-parent = <&gmac0>;
 +                              interrupts = <4 IRQ_TYPE_LEVEL_HIGH>,
 +                                           <36 IRQ_TYPE_LEVEL_HIGH>;
 +                      };
 +
 +                      emac0-tx-ecc@ff8c0c00 {
 +                              compatible = "altr,socfpga-eth-mac-ecc";
 +                              reg = <0xff8c0c00 0x400>;
 +                              altr,ecc-parent = <&gmac0>;
 +                              interrupts = <5 IRQ_TYPE_LEVEL_HIGH>,
 +                                           <37 IRQ_TYPE_LEVEL_HIGH>;
 +                      };
                };
  
                rst: rstmgr@ffd05000 {
  
  #include "skeleton.dtsi"
  
 +#include <dt-bindings/clock/sun8i-h3-ccu.h>
  #include <dt-bindings/interrupt-controller/arm-gic.h>
  #include <dt-bindings/pinctrl/sun4i-a10.h>
 +#include <dt-bindings/reset/sun8i-h3-ccu.h>
  
  / {
        interrupt-parent = <&gic>;
                        clock-output-names = "osc32k";
                };
  
 -              pll1: clk@01c20000 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun8i-a23-pll1-clk";
 -                      reg = <0x01c20000 0x4>;
 -                      clocks = <&osc24M>;
 -                      clock-output-names = "pll1";
 -              };
 -
 -              /* dummy clock until actually implemented */
 -              pll5: pll5_clk {
 -                      #clock-cells = <0>;
 -                      compatible = "fixed-clock";
 -                      clock-frequency = <0>;
 -                      clock-output-names = "pll5";
 -              };
 -
 -              pll6: clk@01c20028 {
 -                      #clock-cells = <1>;
 -                      compatible = "allwinner,sun6i-a31-pll6-clk";
 -                      reg = <0x01c20028 0x4>;
 -                      clocks = <&osc24M>;
 -                      clock-output-names = "pll6", "pll6x2";
 -              };
 -
 -              pll6d2: pll6d2_clk {
 -                      #clock-cells = <0>;
 -                      compatible = "fixed-factor-clock";
 -                      clock-div = <2>;
 -                      clock-mult = <1>;
 -                      clocks = <&pll6 0>;
 -                      clock-output-names = "pll6d2";
 -              };
 -
 -              /* dummy clock until pll6 can be reused */
 -              pll8: pll8_clk {
 -                      #clock-cells = <0>;
 -                      compatible = "fixed-clock";
 -                      clock-frequency = <1>;
 -                      clock-output-names = "pll8";
 -              };
 -
 -              cpu: cpu_clk@01c20050 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun4i-a10-cpu-clk";
 -                      reg = <0x01c20050 0x4>;
 -                      clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll1>;
 -                      clock-output-names = "cpu";
 -              };
 -
 -              axi: axi_clk@01c20050 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun4i-a10-axi-clk";
 -                      reg = <0x01c20050 0x4>;
 -                      clocks = <&cpu>;
 -                      clock-output-names = "axi";
 -              };
 -
 -              ahb1: ahb1_clk@01c20054 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun6i-a31-ahb1-clk";
 -                      reg = <0x01c20054 0x4>;
 -                      clocks = <&osc32k>, <&osc24M>, <&axi>, <&pll6 0>;
 -                      clock-output-names = "ahb1";
 -              };
 -
 -              ahb2: ahb2_clk@01c2005c {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun8i-h3-ahb2-clk";
 -                      reg = <0x01c2005c 0x4>;
 -                      clocks = <&ahb1>, <&pll6d2>;
 -                      clock-output-names = "ahb2";
 -              };
 -
 -              apb1: apb1_clk@01c20054 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun4i-a10-apb0-clk";
 -                      reg = <0x01c20054 0x4>;
 -                      clocks = <&ahb1>;
 -                      clock-output-names = "apb1";
 -              };
 -
 -              apb2: apb2_clk@01c20058 {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun4i-a10-apb1-clk";
 -                      reg = <0x01c20058 0x4>;
 -                      clocks = <&osc32k>, <&osc24M>, <&pll6 0>, <&pll6 0>;
 -                      clock-output-names = "apb2";
 -              };
 -
 -              bus_gates: clk@01c20060 {
 -                      #clock-cells = <1>;
 -                      compatible = "allwinner,sun8i-h3-bus-gates-clk";
 -                      reg = <0x01c20060 0x14>;
 -                      clocks = <&ahb1>, <&ahb2>, <&apb1>, <&apb2>;
 -                      clock-names = "ahb1", "ahb2", "apb1", "apb2";
 -                      clock-indices = <5>, <6>, <8>,
 -                                      <9>, <10>, <13>,
 -                                      <14>, <17>, <18>,
 -                                      <19>, <20>,
 -                                      <21>, <23>,
 -                                      <24>, <25>,
 -                                      <26>, <27>,
 -                                      <28>, <29>,
 -                                      <30>, <31>, <32>,
 -                                      <35>, <36>, <37>,
 -                                      <40>, <41>, <43>,
 -                                      <44>, <52>, <53>,
 -                                      <54>, <64>,
 -                                      <65>, <69>, <72>,
 -                                      <76>, <77>, <78>,
 -                                      <96>, <97>, <98>,
 -                                      <112>, <113>,
 -                                      <114>, <115>,
 -                                      <116>, <128>, <135>;
 -                      clock-output-names = "bus_ce", "bus_dma", "bus_mmc0",
 -                                           "bus_mmc1", "bus_mmc2", "bus_nand",
 -                                           "bus_sdram", "bus_gmac", "bus_ts",
 -                                           "bus_hstimer", "bus_spi0",
 -                                           "bus_spi1", "bus_otg",
 -                                           "bus_otg_ehci0", "bus_ehci1",
 -                                           "bus_ehci2", "bus_ehci3",
 -                                           "bus_otg_ohci0", "bus_ohci1",
 -                                           "bus_ohci2", "bus_ohci3", "bus_ve",
 -                                           "bus_lcd0", "bus_lcd1", "bus_deint",
 -                                           "bus_csi", "bus_tve", "bus_hdmi",
 -                                           "bus_de", "bus_gpu", "bus_msgbox",
 -                                           "bus_spinlock", "bus_codec",
 -                                           "bus_spdif", "bus_pio", "bus_ths",
 -                                           "bus_i2s0", "bus_i2s1", "bus_i2s2",
 -                                           "bus_i2c0", "bus_i2c1", "bus_i2c2",
 -                                           "bus_uart0", "bus_uart1",
 -                                           "bus_uart2", "bus_uart3",
 -                                           "bus_scr", "bus_ephy", "bus_dbg";
 -              };
 -
 -              mmc0_clk: clk@01c20088 {
 -                      #clock-cells = <1>;
 -                      compatible = "allwinner,sun4i-a10-mmc-clk";
 -                      reg = <0x01c20088 0x4>;
 -                      clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 -                      clock-output-names = "mmc0",
 -                                           "mmc0_output",
 -                                           "mmc0_sample";
 -              };
 -
 -              mmc1_clk: clk@01c2008c {
 -                      #clock-cells = <1>;
 -                      compatible = "allwinner,sun4i-a10-mmc-clk";
 -                      reg = <0x01c2008c 0x4>;
 -                      clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 -                      clock-output-names = "mmc1",
 -                                           "mmc1_output",
 -                                           "mmc1_sample";
 -              };
 -
 -              mmc2_clk: clk@01c20090 {
 -                      #clock-cells = <1>;
 -                      compatible = "allwinner,sun4i-a10-mmc-clk";
 -                      reg = <0x01c20090 0x4>;
 -                      clocks = <&osc24M>, <&pll6 0>, <&pll8>;
 -                      clock-output-names = "mmc2",
 -                                           "mmc2_output",
 -                                           "mmc2_sample";
 -              };
 -
 -              usb_clk: clk@01c200cc {
 -                      #clock-cells = <1>;
 -                      #reset-cells = <1>;
 -                      compatible = "allwinner,sun8i-h3-usb-clk";
 -                      reg = <0x01c200cc 0x4>;
 -                      clocks = <&osc24M>;
 -                      clock-output-names = "usb_phy0", "usb_phy1",
 -                                           "usb_phy2", "usb_phy3",
 -                                           "usb_ohci0", "usb_ohci1",
 -                                           "usb_ohci2", "usb_ohci3";
 -              };
 -
 -              mbus_clk: clk@01c2015c {
 -                      #clock-cells = <0>;
 -                      compatible = "allwinner,sun8i-a23-mbus-clk";
 -                      reg = <0x01c2015c 0x4>;
 -                      clocks = <&osc24M>, <&pll6 1>, <&pll5>;
 -                      clock-output-names = "mbus";
 -              };
 -
                apb0: apb0_clk {
                        compatible = "fixed-factor-clock";
                        #clock-cells = <0>;
                        compatible = "allwinner,sun8i-h3-dma";
                        reg = <0x01c02000 0x1000>;
                        interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 6>;
 -                      resets = <&ahb_rst 6>;
 +                      clocks = <&ccu CLK_BUS_DMA>;
 +                      resets = <&ccu RST_BUS_DMA>;
                        #dma-cells = <1>;
                };
  
                mmc0: mmc@01c0f000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c0f000 0x1000>;
 -                      clocks = <&bus_gates 8>,
 -                               <&mmc0_clk 0>,
 -                               <&mmc0_clk 1>,
 -                               <&mmc0_clk 2>;
 +                      clocks = <&ccu CLK_BUS_MMC0>,
 +                               <&ccu CLK_MMC0>,
 +                               <&ccu CLK_MMC0_OUTPUT>,
 +                               <&ccu CLK_MMC0_SAMPLE>;
                        clock-names = "ahb",
                                      "mmc",
                                      "output",
                                      "sample";
 -                      resets = <&ahb_rst 8>;
 +                      resets = <&ccu RST_BUS_MMC0>;
                        reset-names = "ahb";
                        interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                mmc1: mmc@01c10000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c10000 0x1000>;
 -                      clocks = <&bus_gates 9>,
 -                               <&mmc1_clk 0>,
 -                               <&mmc1_clk 1>,
 -                               <&mmc1_clk 2>;
 +                      clocks = <&ccu CLK_BUS_MMC1>,
 +                               <&ccu CLK_MMC1>,
 +                               <&ccu CLK_MMC1_OUTPUT>,
 +                               <&ccu CLK_MMC1_SAMPLE>;
                        clock-names = "ahb",
                                      "mmc",
                                      "output",
                                      "sample";
 -                      resets = <&ahb_rst 9>;
 +                      resets = <&ccu RST_BUS_MMC1>;
                        reset-names = "ahb";
                        interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                mmc2: mmc@01c11000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c11000 0x1000>;
 -                      clocks = <&bus_gates 10>,
 -                               <&mmc2_clk 0>,
 -                               <&mmc2_clk 1>,
 -                               <&mmc2_clk 2>;
 +                      clocks = <&ccu CLK_BUS_MMC2>,
 +                               <&ccu CLK_MMC2>,
 +                               <&ccu CLK_MMC2_OUTPUT>,
 +                               <&ccu CLK_MMC2_SAMPLE>;
                        clock-names = "ahb",
                                      "mmc",
                                      "output",
                                      "sample";
 -                      resets = <&ahb_rst 10>;
 +                      resets = <&ccu RST_BUS_MMC2>;
                        reset-names = "ahb";
                        interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                                    "pmu1",
                                    "pmu2",
                                    "pmu3";
 -                      clocks = <&usb_clk 8>,
 -                               <&usb_clk 9>,
 -                               <&usb_clk 10>,
 -                               <&usb_clk 11>;
 +                      clocks = <&ccu CLK_USB_PHY0>,
 +                               <&ccu CLK_USB_PHY1>,
 +                               <&ccu CLK_USB_PHY2>,
 +                               <&ccu CLK_USB_PHY3>;
                        clock-names = "usb0_phy",
                                      "usb1_phy",
                                      "usb2_phy",
                                      "usb3_phy";
 -                      resets = <&usb_clk 0>,
 -                               <&usb_clk 1>,
 -                               <&usb_clk 2>,
 -                               <&usb_clk 3>;
 +                      resets = <&ccu RST_USB_PHY0>,
 +                               <&ccu RST_USB_PHY1>,
 +                               <&ccu RST_USB_PHY2>,
 +                               <&ccu RST_USB_PHY3>;
                        reset-names = "usb0_reset",
                                      "usb1_reset",
                                      "usb2_reset",
                        compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
                        reg = <0x01c1b000 0x100>;
                        interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 25>, <&bus_gates 29>;
 -                      resets = <&ahb_rst 25>, <&ahb_rst 29>;
 +                      clocks = <&ccu CLK_BUS_EHCI1>, <&ccu CLK_BUS_OHCI1>;
 +                      resets = <&ccu RST_BUS_EHCI1>, <&ccu RST_BUS_OHCI1>;
                        phys = <&usbphy 1>;
                        phy-names = "usb";
                        status = "disabled";
                        compatible = "allwinner,sun8i-h3-ohci", "generic-ohci";
                        reg = <0x01c1b400 0x100>;
                        interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 29>, <&bus_gates 25>,
 -                               <&usb_clk 17>;
 -                      resets = <&ahb_rst 29>, <&ahb_rst 25>;
 +                      clocks = <&ccu CLK_BUS_EHCI1>, <&ccu CLK_BUS_OHCI1>,
 +                               <&ccu CLK_USB_OHCI1>;
 +                      resets = <&ccu RST_BUS_EHCI1>, <&ccu RST_BUS_OHCI1>;
                        phys = <&usbphy 1>;
                        phy-names = "usb";
                        status = "disabled";
                        compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
                        reg = <0x01c1c000 0x100>;
                        interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 26>, <&bus_gates 30>;
 -                      resets = <&ahb_rst 26>, <&ahb_rst 30>;
 +                      clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>;
 +                      resets = <&ccu RST_BUS_EHCI2>, <&ccu RST_BUS_OHCI2>;
                        phys = <&usbphy 2>;
                        phy-names = "usb";
                        status = "disabled";
                        compatible = "allwinner,sun8i-h3-ohci", "generic-ohci";
                        reg = <0x01c1c400 0x100>;
                        interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 30>, <&bus_gates 26>,
 -                               <&usb_clk 18>;
 -                      resets = <&ahb_rst 30>, <&ahb_rst 26>;
 +                      clocks = <&ccu CLK_BUS_EHCI2>, <&ccu CLK_BUS_OHCI2>,
 +                               <&ccu CLK_USB_OHCI2>;
 +                      resets = <&ccu RST_BUS_EHCI2>, <&ccu RST_BUS_OHCI2>;
                        phys = <&usbphy 2>;
                        phy-names = "usb";
                        status = "disabled";
                        compatible = "allwinner,sun8i-h3-ehci", "generic-ehci";
                        reg = <0x01c1d000 0x100>;
                        interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 27>, <&bus_gates 31>;
 -                      resets = <&ahb_rst 27>, <&ahb_rst 31>;
 +                      clocks = <&ccu CLK_BUS_EHCI3>, <&ccu CLK_BUS_OHCI3>;
 +                      resets = <&ccu RST_BUS_EHCI3>, <&ccu RST_BUS_OHCI3>;
                        phys = <&usbphy 3>;
                        phy-names = "usb";
                        status = "disabled";
                        compatible = "allwinner,sun8i-h3-ohci", "generic-ohci";
                        reg = <0x01c1d400 0x100>;
                        interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 31>, <&bus_gates 27>,
 -                               <&usb_clk 19>;
 -                      resets = <&ahb_rst 31>, <&ahb_rst 27>;
 +                      clocks = <&ccu CLK_BUS_EHCI3>, <&ccu CLK_BUS_OHCI3>,
 +                               <&ccu CLK_USB_OHCI3>;
 +                      resets = <&ccu RST_BUS_EHCI3>, <&ccu RST_BUS_OHCI3>;
                        phys = <&usbphy 3>;
                        phy-names = "usb";
                        status = "disabled";
                };
  
 +              ccu: clock@01c20000 {
 +                      compatible = "allwinner,sun8i-h3-ccu";
 +                      reg = <0x01c20000 0x400>;
 +                      clocks = <&osc24M>, <&osc32k>;
 +                      clock-names = "hosc", "losc";
 +                      #clock-cells = <1>;
 +                      #reset-cells = <1>;
 +              };
 +
                pio: pinctrl@01c20800 {
                        compatible = "allwinner,sun8i-h3-pinctrl";
                        reg = <0x01c20800 0x400>;
                        interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
                                     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
 -                      clocks = <&bus_gates 69>;
 +                      clocks = <&ccu CLK_BUS_PIO>;
                        gpio-controller;
                        #gpio-cells = <3>;
                        interrupt-controller;
                        #interrupt-cells = <3>;
  
-                       uart0_pins_a: uart0@0 {
-                               allwinner,pins = "PA4", "PA5";
-                               allwinner,function = "uart0";
-                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
-                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
-                       };
                        mmc0_pins_a: mmc0@0 {
                                allwinner,pins = "PF0", "PF1", "PF2", "PF3",
                                                 "PF4", "PF5";
                                allwinner,drive = <SUN4I_PINCTRL_30_MA>;
                                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
                        };
+                       uart0_pins_a: uart0@0 {
+                               allwinner,pins = "PA4", "PA5";
+                               allwinner,function = "uart0";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
+                       uart1_pins_a: uart1@0 {
+                               allwinner,pins = "PG6", "PG7", "PG8", "PG9";
+                               allwinner,function = "uart1";
+                               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+                               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+                       };
                };
  
 -              ahb_rst: reset@01c202c0 {
 -                      #reset-cells = <1>;
 -                      compatible = "allwinner,sun6i-a31-ahb1-reset";
 -                      reg = <0x01c202c0 0xc>;
 -              };
 -
 -              apb1_rst: reset@01c202d0 {
 -                      #reset-cells = <1>;
 -                      compatible = "allwinner,sun6i-a31-clock-reset";
 -                      reg = <0x01c202d0 0x4>;
 -              };
 -
 -              apb2_rst: reset@01c202d8 {
 -                      #reset-cells = <1>;
 -                      compatible = "allwinner,sun6i-a31-clock-reset";
 -                      reg = <0x01c202d8 0x4>;
 -              };
 -
                timer@01c20c00 {
                        compatible = "allwinner,sun4i-a10-timer";
                        reg = <0x01c20c00 0xa0>;
                        interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
 -                      clocks = <&bus_gates 112>;
 -                      resets = <&apb2_rst 16>;
 +                      clocks = <&ccu CLK_BUS_UART0>;
 +                      resets = <&ccu RST_BUS_UART0>;
                        dmas = <&dma 6>, <&dma 6>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
 -                      clocks = <&bus_gates 113>;
 -                      resets = <&apb2_rst 17>;
 +                      clocks = <&ccu CLK_BUS_UART1>;
 +                      resets = <&ccu RST_BUS_UART1>;
                        dmas = <&dma 7>, <&dma 7>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
 -                      clocks = <&bus_gates 114>;
 -                      resets = <&apb2_rst 18>;
 +                      clocks = <&ccu CLK_BUS_UART2>;
 +                      resets = <&ccu RST_BUS_UART2>;
                        dmas = <&dma 8>, <&dma 8>;
                        dma-names = "rx", "tx";
                        status = "disabled";
                        interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
                        reg-shift = <2>;
                        reg-io-width = <4>;
 -                      clocks = <&bus_gates 115>;
 -                      resets = <&apb2_rst 19>;
 +                      clocks = <&ccu CLK_BUS_UART3>;
 +                      resets = <&ccu RST_BUS_UART3>;
                        dmas = <&dma 9>, <&dma 9>;
                        dma-names = "rx", "tx";
                        status = "disabled";
  
                                ldo5_reg: ldo5 {
                                        regulator-name = "vddio_sdmmc,avdd_vdac";
 -                                      regulator-min-microvolt = <3300000>;
 +                                      regulator-min-microvolt = <1800000>;
                                        regulator-max-microvolt = <3300000>;
                                        regulator-always-on;
                                };
  
        sdhci@78000000 {
                status = "okay";
 +              vqmmc-supply = <&ldo5_reg>;
                cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
                wp-gpios = <&gpio TEGRA_GPIO(T, 3) GPIO_ACTIVE_HIGH>;
                power-gpios = <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
  
                clk32k_in: clock@0 {
                        compatible = "fixed-clock";
-                       reg=<0>;
+                       reg = <0>;
                        #clock-cells = <0>;
                        clock-frequency = <32768>;
                };
@@@ -19,7 -19,6 +19,7 @@@
  #include <linux/io.h>
  #include <linux/jiffies.h>
  #include <linux/of.h>
 +#include <linux/of_address.h>
  #include <linux/sched.h>
  #include <linux/smp.h>
  
@@@ -38,9 -37,6 +38,6 @@@
  #define OF_SECONDARY_BOOT     "secondary-boot-reg"
  #define MPIDR_CPUID_BITMASK   0x3
  
- /* I/O address of register used to coordinate secondary core startup */
- static u32    secondary_boot_addr;
  /*
   * Enable the Cortex A9 Snoop Control Unit
   *
@@@ -82,20 -78,40 +79,40 @@@ static int __init scu_a9_enable(void
        return 0;
  }
  
- static int nsp_write_lut(void)
+ static u32 secondary_boot_addr_for(unsigned int cpu)
+ {
+       u32 secondary_boot_addr = 0;
+       struct device_node *cpu_node = of_get_cpu_node(cpu, NULL);
+         if (!cpu_node) {
+               pr_err("Failed to find device tree node for CPU%u\n", cpu);
+               return 0;
+       }
+       if (of_property_read_u32(cpu_node,
+                                OF_SECONDARY_BOOT,
+                                &secondary_boot_addr))
+               pr_err("required secondary boot register not specified for CPU%u\n",
+                       cpu);
+       of_node_put(cpu_node);
+       return secondary_boot_addr;
+ }
+ static int nsp_write_lut(unsigned int cpu)
  {
        void __iomem *sku_rom_lut;
        phys_addr_t secondary_startup_phy;
+       const u32 secondary_boot_addr = secondary_boot_addr_for(cpu);
  
-       if (!secondary_boot_addr) {
-               pr_warn("required secondary boot register not specified\n");
+       if (!secondary_boot_addr)
                return -EINVAL;
-       }
  
        sku_rom_lut = ioremap_nocache((phys_addr_t)secondary_boot_addr,
-                                               sizeof(secondary_boot_addr));
+                                     sizeof(phys_addr_t));
        if (!sku_rom_lut) {
-               pr_warn("unable to ioremap SKU-ROM LUT register\n");
+               pr_warn("unable to ioremap SKU-ROM LUT register for cpu %u\n", cpu);
                return -ENOMEM;
        }
  
  
  static void __init bcm_smp_prepare_cpus(unsigned int max_cpus)
  {
-       static cpumask_t only_cpu_0 = { CPU_BITS_CPU0 };
-       struct device_node *cpus_node = NULL;
-       struct device_node *cpu_node = NULL;
-       int ret;
-       /*
-        * This function is only called via smp_ops->smp_prepare_cpu().
-        * That only happens if a "/cpus" device tree node exists
-        * and has an "enable-method" property that selects the SMP
-        * operations defined herein.
-        */
-       cpus_node = of_find_node_by_path("/cpus");
-       if (!cpus_node)
-               return;
-       for_each_child_of_node(cpus_node, cpu_node) {
-               u32 cpuid;
-               if (of_node_cmp(cpu_node->type, "cpu"))
-                       continue;
-               if (of_property_read_u32(cpu_node, "reg", &cpuid)) {
-                       pr_debug("%s: missing reg property\n",
-                                    cpu_node->full_name);
-                       ret = -ENOENT;
-                       goto out;
-               }
-               /*
-                * "secondary-boot-reg" property should be defined only
-                * for secondary cpu
-                */
-               if ((cpuid & MPIDR_CPUID_BITMASK) == 1) {
-                       /*
-                        * Our secondary enable method requires a
-                        * "secondary-boot-reg" property to specify a register
-                        * address used to request the ROM code boot a secondary
-                        * core. If we have any trouble getting this we fall
-                        * back to uniprocessor mode.
-                        */
-                       if (of_property_read_u32(cpu_node,
-                                               OF_SECONDARY_BOOT,
-                                               &secondary_boot_addr)) {
-                               pr_warn("%s: no" OF_SECONDARY_BOOT "property\n",
-                                       cpu_node->name);
-                               ret = -ENOENT;
-                               goto out;
-                       }
-               }
-       }
-       /*
-        * Enable the SCU on Cortex A9 based SoCs. If -ENOENT is
-        * returned, the SoC reported a uniprocessor configuration.
-        * We bail on any other error.
-        */
-       ret = scu_a9_enable();
- out:
-       of_node_put(cpu_node);
-       of_node_put(cpus_node);
+       const cpumask_t only_cpu_0 = { CPU_BITS_CPU0 };
  
-       if (ret) {
+       /* Enable the SCU on Cortex A9 based SoCs */
+       if (scu_a9_enable()) {
                /* Update the CPU present map to reflect uniprocessor mode */
-               pr_warn("disabling SMP\n");
+               pr_warn("failed to enable A9 SCU - disabling SMP\n");
                init_cpu_present(&only_cpu_0);
        }
  }
@@@ -208,6 -166,7 +167,7 @@@ static int kona_boot_secondary(unsigne
        u32 cpu_id;
        u32 boot_val;
        bool timeout = false;
+       const u32 secondary_boot_addr = secondary_boot_addr_for(cpu);
  
        cpu_id = cpu_logical_map(cpu);
        if (cpu_id & ~BOOT_ADDR_CPUID_MASK) {
                return -EINVAL;
        }
  
-       if (!secondary_boot_addr) {
-               pr_err("required secondary boot register not specified\n");
+       if (!secondary_boot_addr)
                return -EINVAL;
-       }
  
-       boot_reg = ioremap_nocache(
-                       (phys_addr_t)secondary_boot_addr, sizeof(u32));
+       boot_reg = ioremap_nocache((phys_addr_t)secondary_boot_addr,
+                                  sizeof(phys_addr_t));
        if (!boot_reg) {
                pr_err("unable to map boot register for cpu %u\n", cpu_id);
                return -ENOMEM;
        return -ENXIO;
  }
  
 +/* Cluster Dormant Control command to bring CPU into a running state */
 +#define CDC_CMD                       6
 +#define CDC_CMD_OFFSET                0
 +#define CDC_CMD_REG(cpu)      (CDC_CMD_OFFSET + 4*(cpu))
 +
 +/*
 + * BCM23550 has a Cluster Dormant Control block that keeps the core in
 + * idle state. A command needs to be sent to the block to bring the CPU
 + * into running state.
 + */
 +static int bcm23550_boot_secondary(unsigned int cpu, struct task_struct *idle)
 +{
 +      void __iomem *cdc_base;
 +      struct device_node *dn;
 +      char *name;
 +      int ret;
 +
 +      /* Make sure a CDC node exists before booting the
 +       * secondary core.
 +       */
 +      name = "brcm,bcm23550-cdc";
 +      dn = of_find_compatible_node(NULL, NULL, name);
 +      if (!dn) {
 +              pr_err("unable to find cdc node\n");
 +              return -ENODEV;
 +      }
 +
 +      cdc_base = of_iomap(dn, 0);
 +      of_node_put(dn);
 +
 +      if (!cdc_base) {
 +              pr_err("unable to remap cdc base register\n");
 +              return -ENOMEM;
 +      }
 +
 +      /* Boot the secondary core */
 +      ret = kona_boot_secondary(cpu, idle);
 +      if (ret)
 +              goto out;
 +
 +      /* Bring this CPU to RUN state so that nIRQ nFIQ
 +       * signals are unblocked.
 +       */
 +      writel_relaxed(CDC_CMD, cdc_base + CDC_CMD_REG(cpu));
 +
 +out:
 +      iounmap(cdc_base);
 +
 +      return ret;
 +}
 +
  static int nsp_boot_secondary(unsigned int cpu, struct task_struct *idle)
  {
        int ret;
         * After wake up, secondary core branches to the startup
         * address programmed at SKU ROM LUT location.
         */
-       ret = nsp_write_lut();
+       ret = nsp_write_lut(cpu);
        if (ret) {
                pr_err("unable to write startup addr to SKU ROM LUT\n");
                goto out;
@@@ -328,19 -234,13 +286,19 @@@ out
        return ret;
  }
  
- static const struct smp_operations bcm_smp_ops __initconst = {
+ static const struct smp_operations kona_smp_ops __initconst = {
        .smp_prepare_cpus       = bcm_smp_prepare_cpus,
        .smp_boot_secondary     = kona_boot_secondary,
  };
  CPU_METHOD_OF_DECLARE(bcm_smp_bcm281xx, "brcm,bcm11351-cpu-method",
-                       &bcm_smp_ops);
+                       &kona_smp_ops);
  
 +static const struct smp_operations bcm23550_smp_ops __initconst = {
 +      .smp_boot_secondary     = bcm23550_boot_secondary,
 +};
 +CPU_METHOD_OF_DECLARE(bcm_smp_bcm23550, "brcm,bcm23550",
 +                      &bcm23550_smp_ops);
 +
  static const struct smp_operations nsp_smp_ops __initconst = {
        .smp_prepare_cpus       = bcm_smp_prepare_cpus,
        .smp_boot_secondary     = nsp_boot_secondary,
@@@ -58,6 -58,7 +58,7 @@@ static struct ti_dt_clk am43xx_clks[] 
        DT_CLK(NULL, "smartreflex1_fck", "smartreflex1_fck"),
        DT_CLK(NULL, "sha0_fck", "sha0_fck"),
        DT_CLK(NULL, "aes0_fck", "aes0_fck"),
+       DT_CLK(NULL, "rng_fck", "rng_fck"),
        DT_CLK(NULL, "timer1_fck", "timer1_fck"),
        DT_CLK(NULL, "timer2_fck", "timer2_fck"),
        DT_CLK(NULL, "timer3_fck", "timer3_fck"),
        DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
        DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
        DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
 +      DT_CLK("48300200.pwm", "tbclk", "ehrpwm0_tbclk"),
 +      DT_CLK("48302200.pwm", "tbclk", "ehrpwm1_tbclk"),
 +      DT_CLK("48304200.pwm", "tbclk", "ehrpwm2_tbclk"),
 +      DT_CLK("48306200.pwm", "tbclk", "ehrpwm3_tbclk"),
 +      DT_CLK("48308200.pwm", "tbclk", "ehrpwm4_tbclk"),
 +      DT_CLK("4830a200.pwm", "tbclk", "ehrpwm5_tbclk"),
        { .node_name = NULL },
  };