Merge tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Dec 2012 18:39:26 +0000 (10:39 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 13 Dec 2012 18:39:26 +0000 (10:39 -0800)
Pull ARM SoC device tree conversions and enablement from Olof Johansson:
 "Continued device tree conversion and enablement across a number of
  platforms; Kirkwood, tegra, i.MX, Exynos, zynq and a couple of other
  smaller series as well.

  ux500 has seen continued conversion for platforms.  Several platforms
  have seen pinctrl-via-devicetree conversions for simpler
  multiplatform.  Tegra is adding data for new devices/drivers, and
  Exynos has a bunch of new bindings and devices added as well.

  So, pretty much the same progression in the right direction as the
  last few releases."

Fix up conflicts as per Olof.

* tag 'dt' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (185 commits)
  ARM: ux500: Rename dbx500 cpufreq code to be more generic
  ARM: dts: add missing ux500 device trees
  ARM: ux500: Stop registering the PCM driver from platform code
  ARM: ux500: Move board specific GPIO info out to subordinate DTS files
  ARM: ux500: Disable the MMCI gpio-regulator by default
  ARM: Kirkwood: remove kirkwood_ehci_init() from new boards
  ARM: Kirkwood: Add support LED of OpenBlocks A6
  ARM: Kirkwood: Convert to EHCI via DT for OpenBlocks A6
  ARM: kirkwood: Add NAND partiton map for OpenBlocks A6
  ARM: kirkwood: Add support second I2C bus and RTC on OpenBlocks A6
  ARM: kirkwood: Add support DT of second I2C bus
  ARM: kirkwood: Convert mplcec4 board to pinctrl
  ARM: Kirkwood: Convert km_kirkwood to pinctrl
  ARM: Kirkwood: support 98DX412x kirkwoods with pinctrl
  ARM: Kirkwood: Convert IX2-200 to pinctrl.
  ARM: Kirkwood: Convert lsxl boards to pinctrl.
  ARM: Kirkwood: Convert ib62x0 to pinctrl.
  ARM: Kirkwood: Convert GoFlex Net to pinctrl.
  ARM: Kirkwood: Convert dreamplug to pinctrl.
  ARM: Kirkwood: Convert dockstar to pinctrl.
  ...

41 files changed:
1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/at91sam9260.dtsi
arch/arm/boot/dts/at91sam9263.dtsi
arch/arm/boot/dts/at91sam9g45.dtsi
arch/arm/boot/dts/dbx5x0.dtsi
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/imx28.dtsi
arch/arm/boot/dts/imx51.dtsi
arch/arm/boot/dts/imx53.dtsi
arch/arm/boot/dts/imx6q.dtsi
arch/arm/boot/dts/snowball.dts
arch/arm/boot/dts/tegra20-seaboard.dts
arch/arm/configs/u8500_defconfig
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/Makefile
arch/arm/mach-exynos/clock-exynos4.c
arch/arm/mach-exynos/clock-exynos5.c
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/include/mach/irqs.h
arch/arm/mach-exynos/include/mach/map.h
arch/arm/mach-exynos/mach-exynos4-dt.c
arch/arm/mach-exynos/mach-exynos5-dt.c
arch/arm/mach-exynos/mach-nuri.c
arch/arm/mach-exynos/mach-origen.c
arch/arm/mach-exynos/mach-smdk4x12.c
arch/arm/mach-exynos/mach-smdkv310.c
arch/arm/mach-exynos/mach-universal_c210.c
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/clk-imx6q.c
arch/arm/mach-imx/mach-imx6q.c
arch/arm/mach-ux500/board-mop500-audio.c
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/plat-samsung/devs.c
arch/arm/plat-samsung/include/plat/devs.h
drivers/clk/Makefile
drivers/gpio/Kconfig
drivers/usb/host/ehci-orion.c

@@@ -5,7 -5,6 +5,7 @@@ using them to avoid name-space collisio
  
  ad    Avionic Design GmbH
  adi   Analog Devices, Inc.
 +ak    Asahi Kasei Corp.
  amcc  Applied Micro Circuits Corporation (APM, formally AMCC)
  apm   Applied Micro Circuits Corporation (APM)
  arm   ARM Ltd.
@@@ -26,7 -25,6 +26,7 @@@ gef   GE Fanuc Intelligent Platforms Embe
  hp    Hewlett Packard
  ibm   International Business Machines (IBM)
  idt   Integrated Device Technologies, Inc.
 +img   Imagination Technologies Ltd.
  intercontrol  Inter Control Group
  linux Linux-specific binding
  marvell       Marvell Technology Group Ltd.
@@@ -36,9 -34,8 +36,9 @@@ national      National Semiconducto
  nintendo      Nintendo
  nvidia        NVIDIA
  nxp   NXP Semiconductors
 +onnn  ON Semiconductor Corp.
  picochip      Picochip Ltd
 -powervr       Imagination Technologies
 +powervr       PowerVR (deprecated, use img)
  qcom  Qualcomm, Inc.
  ramtron       Ramtron International
  realtek Realtek Semiconductor Corp.
@@@ -48,11 -45,11 +48,12 @@@ schindler  Schindle
  sil   Silicon Image
  simtek
  sirf  SiRF Technology, Inc.
 +snps  Synopsys, Inc.
  st    STMicroelectronics
  stericsson    ST-Ericsson
  ti    Texas Instruments
  via   VIA Technologies, Inc.
  wlf   Wolfson Microelectronics
  wm    Wondermedia Technologies, Inc.
+ winbond Winbond Electronics corp.
  xlnx  Xilinx
diff --combined arch/arm/Kconfig
@@@ -5,9 -5,8 +5,9 @@@ config AR
        select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
        select ARCH_HAVE_CUSTOM_GPIO_H
        select ARCH_WANT_IPC_PARSE_VERSION
 +      select BUILDTIME_EXTABLE_SORT if MMU
        select CPU_PM if (SUSPEND || CPU_IDLE)
 -      select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
 +      select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN && MMU
        select GENERIC_ATOMIC64 if (CPU_V6 || !CPU_32v6K || !AEABI)
        select GENERIC_CLOCKEVENTS_BROADCAST if SMP
        select GENERIC_IRQ_PROBE
@@@ -22,7 -21,6 +22,7 @@@
        select HAVE_AOUT
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
        select HAVE_ARCH_KGDB
 +      select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ARCH_TRACEHOOK
        select HAVE_BPF_JIT
        select HAVE_C_RECORDMCOUNT
@@@ -57,7 -55,6 +57,7 @@@
        select SYS_SUPPORTS_APM_EMULATION
        select HAVE_MOD_ARCH_SPECIFIC if ARM_UNWIND
        select MODULES_USE_ELF_REL
 +      select CLONE_BACKWARDS
        help
          The ARM series is a line of low-power-consumption RISC chip designs
          licensed by ARM Ltd and targeted at embedded applications and
@@@ -287,8 -284,8 +287,8 @@@ config ARCH_INTEGRATO
        select MULTI_IRQ_HANDLER
        select NEED_MACH_MEMORY_H
        select PLAT_VERSATILE
 -      select PLAT_VERSATILE_FPGA_IRQ
        select SPARSE_IRQ
 +      select VERSATILE_FPGA_IRQ
        help
          Support for ARM's Integrator platform.
  
@@@ -321,7 -318,7 +321,7 @@@ config ARCH_VERSATIL
        select PLAT_VERSATILE
        select PLAT_VERSATILE_CLCD
        select PLAT_VERSATILE_CLOCK
 -      select PLAT_VERSATILE_FPGA_IRQ
 +      select VERSATILE_FPGA_IRQ
        help
          This enables support for ARM Ltd Versatile board.
  
@@@ -333,15 -330,13 +333,15 @@@ config ARCH_AT9
        select IRQ_DOMAIN
        select NEED_MACH_GPIO_H
        select NEED_MACH_IO_H if PCCARD
 +      select PINCTRL
 +      select PINCTRL_AT91 if USE_OF
        help
          This enables support for systems based on Atmel
          AT91RM9200 and AT91SAM9* processors.
  
  config ARCH_BCM2835
        bool "Broadcom BCM2835 family"
 -      select ARCH_WANT_OPTIONAL_GPIOLIB
 +      select ARCH_REQUIRE_GPIOLIB
        select ARM_AMBA
        select ARM_ERRATA_411920
        select ARM_TIMER_SP804
        select COMMON_CLK
        select CPU_V6
        select GENERIC_CLOCKEVENTS
 +      select GENERIC_GPIO
        select MULTI_IRQ_HANDLER
 +      select PINCTRL
 +      select PINCTRL_BCM2835
        select SPARSE_IRQ
        select USE_OF
        help
@@@ -372,16 -364,11 +372,16 @@@ config ARCH_CNS3XX
  
  config ARCH_CLPS711X
        bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
 +      select ARCH_REQUIRE_GPIOLIB
        select ARCH_USES_GETTIMEOFFSET
 +      select AUTO_ZRELADDR
        select CLKDEV_LOOKUP
        select COMMON_CLK
        select CPU_ARM720T
 +      select GENERIC_CLOCKEVENTS
 +      select MULTI_IRQ_HANDLER
        select NEED_MACH_MEMORY_H
 +      select SPARSE_IRQ
        help
          Support for Cirrus Logic 711x/721x/731x based boards.
  
@@@ -536,6 -523,8 +536,8 @@@ config ARCH_DOV
        select CPU_V7
        select GENERIC_CLOCKEVENTS
        select MIGHT_HAVE_PCI
+       select PINCTRL
+       select PINCTRL_DOVE
        select PLAT_ORION_LEGACY
        select USB_ARCH_HAS_EHCI
        help
@@@ -547,7 -536,8 +549,9 @@@ config ARCH_KIRKWOO
        select CPU_FEROCEON
        select GENERIC_CLOCKEVENTS
        select PCI
 +      select PCI_QUIRKS
+       select PINCTRL
+       select PINCTRL_KIRKWOOD
        select PLAT_ORION_LEGACY
        help
          Support for the following Marvell Kirkwood series SoCs:
@@@ -587,7 -577,6 +591,7 @@@ config ARCH_MM
        select GPIO_PXA
        select IRQ_DOMAIN
        select NEED_MACH_GPIO_H
 +      select PINCTRL
        select PLAT_PXA
        select SPARSE_IRQ
        help
@@@ -906,7 -895,6 +910,7 @@@ config ARCH_NOMADI
  
  config PLAT_SPEAR
        bool "ST SPEAr"
 +      select ARCH_HAS_CPUFREQ
        select ARCH_REQUIRE_GPIOLIB
        select ARM_AMBA
        select CLKDEV_LOOKUP
@@@ -962,6 -950,7 +966,7 @@@ config ARCH_ZYN
        bool "Xilinx Zynq ARM Cortex A9 Platform"
        select ARM_AMBA
        select ARM_GIC
+       select COMMON_CLK
        select CPU_V7
        select GENERIC_CLOCKEVENTS
        select ICST
@@@ -1024,8 -1013,6 +1029,8 @@@ source "arch/arm/mach-mvebu/Kconfig
  
  source "arch/arm/mach-at91/Kconfig"
  
 +source "arch/arm/mach-bcm/Kconfig"
 +
  source "arch/arm/mach-clps711x/Kconfig"
  
  source "arch/arm/mach-cns3xxx/Kconfig"
@@@ -1117,8 -1104,6 +1122,8 @@@ source "arch/arm/mach-exynos/Kconfig
  
  source "arch/arm/mach-shmobile/Kconfig"
  
 +source "arch/arm/mach-sunxi/Kconfig"
 +
  source "arch/arm/mach-prima2/Kconfig"
  
  source "arch/arm/mach-tegra/Kconfig"
@@@ -1174,7 -1159,7 +1179,7 @@@ config ARM_NR_BANK
  config IWMMXT
        bool "Enable iWMMXt support"
        depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4
 -      default y if PXA27x || PXA3xx || PXA95x || ARCH_MMP
 +      default y if PXA27x || PXA3xx || ARCH_MMP
        help
          Enable support for iWMMXt context switching at run time if
          running on a CPU that supports it.
diff --combined arch/arm/Kconfig.debug
@@@ -132,6 -132,23 +132,23 @@@ choic
                  their output to UART1 serial port on DaVinci TNETV107X
                  devices.
  
+       config DEBUG_ZYNQ_UART0
+               bool "Kernel low-level debugging on Xilinx Zynq using UART0"
+               depends on ARCH_ZYNQ
+               help
+                 Say Y here if you want the debug print routines to direct
+                 their output to UART0 on the Zynq platform.
+       config DEBUG_ZYNQ_UART1
+               bool "Kernel low-level debugging on Xilinx Zynq using UART1"
+               depends on ARCH_ZYNQ
+               help
+                 Say Y here if you want the debug print routines to direct
+                 their output to UART1 on the Zynq platform.
+                 If you have a ZC702 board and want early boot messages to
+                 appear on the USB serial adaptor, select this option.
        config DEBUG_DC21285_PORT
                bool "Kernel low-level debugging messages via footbridge serial port"
                depends on FOOTBRIDGE
                  Say Y here if you want kernel low-level debugging support
                  on i.MX50 or i.MX53.
  
-       config DEBUG_IMX6Q_UART2
-               bool "i.MX6Q Debug UART2"
+       config DEBUG_IMX6Q_UART
+               bool "i.MX6Q Debug UART"
                depends on SOC_IMX6Q
                help
                  Say Y here if you want kernel low-level debugging support
-                 on i.MX6Q UART2. This is correct for e.g. the SabreLite
-                   board.
-       config DEBUG_IMX6Q_UART4
-               bool "i.MX6Q Debug UART4"
-               depends on SOC_IMX6Q
-               help
-                 Say Y here if you want kernel low-level debugging support
-                 on i.MX6Q UART4.
+                 on i.MX6Q.
  
        config DEBUG_MMP_UART2
                bool "Kernel low-level debugging message via MMP UART2"
                  The uncompressor code port configuration is now handled
                  by CONFIG_S3C_LOWLEVEL_UART_PORT.
  
 +      config DEBUG_S3C_UART3
 +              depends on PLAT_SAMSUNG && ARCH_EXYNOS
 +              bool "Use S3C UART 3 for low-level debug"
 +              help
 +                Say Y here if you want the debug print routines to direct
 +                their output to UART 3. The port must have been initialised
 +                by the boot-loader before use.
 +
 +                The uncompressor code port configuration is now handled
 +                by CONFIG_S3C_LOWLEVEL_UART_PORT.
 +
        config DEBUG_SOCFPGA_UART
                depends on ARCH_SOCFPGA
                bool "Use SOCFPGA UART for low-level debug"
                  Say Y here if you want kernel low-level debugging support
                  on SOCFPGA based platforms.
  
 +      config DEBUG_SUNXI_UART0
 +              bool "Kernel low-level debugging messages via sunXi UART0"
 +              depends on ARCH_SUNXI
 +              help
 +                Say Y here if you want kernel low-level debugging support
 +                on Allwinner A1X based platforms on the UART0.
 +
 +      config DEBUG_SUNXI_UART1
 +              bool "Kernel low-level debugging messages via sunXi UART1"
 +              depends on ARCH_SUNXI
 +              help
 +                Say Y here if you want kernel low-level debugging support
 +                on Allwinner A1X based platforms on the UART1.
 +
        config DEBUG_VEXPRESS_UART0_DETECT
                bool "Autodetect UART0 on Versatile Express Cortex-A core tiles"
                depends on ARCH_VEXPRESS && CPU_CP15_MMU
  
  endchoice
  
+ config DEBUG_IMX6Q_UART_PORT
+       int "i.MX6Q Debug UART Port (1-5)" if DEBUG_IMX6Q_UART
+       range 1 5
+       default 1
+       depends on SOC_IMX6Q
+       help
+         Choose UART port on which kernel low-level debug messages
+         should be output.
  config DEBUG_LL_INCLUDE
        string
        default "debug/icedcc.S" if DEBUG_ICEDCC
                                 DEBUG_IMX31_IMX35_UART || \
                                 DEBUG_IMX51_UART || \
                                 DEBUG_IMX50_IMX53_UART ||\
-                                DEBUG_IMX6Q_UART2 || \
-                                DEBUG_IMX6Q_UART4
+                                DEBUG_IMX6Q_UART
        default "debug/highbank.S" if DEBUG_HIGHBANK_UART
        default "debug/mvebu.S" if DEBUG_MVEBU_UART
        default "debug/picoxcell.S" if DEBUG_PICOXCELL_UART
        default "debug/socfpga.S" if DEBUG_SOCFPGA_UART
 +      default "debug/sunxi.S" if DEBUG_SUNXI_UART0 || DEBUG_SUNXI_UART1
        default "debug/vexpress.S" if DEBUG_VEXPRESS_UART0_DETECT || \
                DEBUG_VEXPRESS_UART0_CA9 || DEBUG_VEXPRESS_UART0_RS1
        default "mach/debug-macro.S"
@@@ -1,49 -1,34 +1,54 @@@
  ifeq ($(CONFIG_OF),y)
  
 -dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb \
 -      at91sam9263ek.dtb \
 -      at91sam9g20ek_2mmc.dtb \
 -      at91sam9g20ek.dtb \
 -      at91sam9g25ek.dtb \
 -      at91sam9m10g45ek.dtb \
 -      at91sam9n12ek.dtb \
 -      ethernut5.dtb \
 -      evk-pro3.dtb \
 -      kizbox.dtb \
 -      tny_a9260.dtb \
 -      tny_a9263.dtb \
 -      tny_a9g20.dtb \
 -      usb_a9260.dtb \
 -      usb_a9263.dtb \
 -      usb_a9g20.dtb
 +# Keep at91 dtb files sorted alphabetically for each SoC
 +# rm9200
 +dtb-$(CONFIG_ARCH_AT91) += at91rm9200ek.dtb
 +# sam9260
 +dtb-$(CONFIG_ARCH_AT91) += animeo_ip.dtb
 +dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb
 +dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
 +dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
 +dtb-$(CONFIG_ARCH_AT91) += tny_a9260.dtb
 +dtb-$(CONFIG_ARCH_AT91) += usb_a9260.dtb
 +# sam9263
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9263ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += tny_a9263.dtb
 +dtb-$(CONFIG_ARCH_AT91) += usb_a9263.dtb
 +# sam9g20
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9g20ek_2mmc.dtb
 +dtb-$(CONFIG_ARCH_AT91) += kizbox.dtb
 +dtb-$(CONFIG_ARCH_AT91) += tny_a9g20.dtb
 +dtb-$(CONFIG_ARCH_AT91) += usb_a9g20.dtb
 +# sam9g45
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9m10g45ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += pm9g45.dtb
 +# sam9n12
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9n12ek.dtb
 +# sam9x5
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9g15ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9g25ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9g35ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9x25ek.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91sam9x35ek.dtb
 +
  dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
 +dtb-$(CONFIG_ARCH_BCM) += bcm11351-brt.dtb
+ dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
+       da850-evm.dtb
  dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
        dove-cubox.dtb \
        dove-dove-db.dtb
  dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
        exynos4210-smdkv310.dtb \
        exynos4210-trats.dtb \
-       exynos5440-ssdk5440.dtb
 +      exynos5250-smdk5250.dtb \
 -dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb
++      exynos5440-ssdk5440.dtb \
+       exynos4412-smdk4412.dtb \
+       exynos5250-smdk5250.dtb \
+       exynos5250-snow.dtb
 +dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \
 +      ecx-2000.dtb
  dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
        integratorcp.dtb
  dtb-$(CONFIG_ARCH_LPC32XX) += ea3250.dtb phy3250.dtb
@@@ -79,16 -64,20 +84,20 @@@ dtb-$(CONFIG_ARCH_MXC) += imx51-babbage
        imx53-qsb.dtb \
        imx53-smd.dtb \
        imx6q-arm2.dtb \
+       imx6q-sabreauto.dtb \
        imx6q-sabrelite.dtb \
        imx6q-sabresd.dtb
  dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
        imx23-olinuxino.dtb \
        imx23-stmp378x_devb.dtb \
+       imx28-apf28.dtb \
+       imx28-apf28dev.dtb \
        imx28-apx4devkit.dtb \
        imx28-cfa10036.dtb \
        imx28-cfa10049.dtb \
        imx28-evk.dtb \
        imx28-m28evk.dtb \
+       imx28-sps1.dtb \
        imx28-tx28.dtb
  dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
        omap3-beagle.dtb \
        am335x-bone.dtb
  dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb
  dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
- dtb-$(CONFIG_ARCH_U8500) += snowball.dtb
+ dtb-$(CONFIG_ARCH_U8500) += snowball.dtb \
+       hrefprev60.dtb \
+       hrefv60plus.dtb \
+       ccu9540.dtb
  dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
        r8a7740-armadillo800eva.dtb \
 -      sh73a0-kzm9g.dtb
 +      sh73a0-kzm9g.dtb \
 +      sh7372-mackerel.dtb
  dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \
        spear1340-evb.dtb
  dtb-$(CONFIG_ARCH_SPEAR3XX)+= spear300-evb.dtb \
        spear310-evb.dtb \
        spear320-evb.dtb
  dtb-$(CONFIG_ARCH_SPEAR6XX)+= spear600-evb.dtb
 +dtb-$(CONFIG_ARCH_SUNXI) += sun4i-cubieboard.dtb \
 +      sun5i-olinuxino.dtb
  dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
        tegra20-medcom-wide.dtb \
        tegra20-paz00.dtb \
@@@ -137,13 -126,6 +149,14 @@@ dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress
  dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \
        wm8505-ref.dtb \
        wm8650-mid.dtb
+ dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb
  
 +targets += dtbs
  endif
 +
 +# *.dtb used to be generated in the directory above. Clean out the
 +# old build results so people don't accidentally use them.
 +dtbs: $(addprefix $(obj)/, $(dtb-y))
 +      $(Q)rm -f $(obj)/../*.dtb
 +
 +clean-files := *.dtb
@@@ -21,8 -21,8 +21,8 @@@
                serial2 = &usart1;
                serial3 = &usart2;
                serial4 = &usart3;
 -              serial5 = &usart4;
 -              serial6 = &usart5;
 +              serial5 = &uart0;
 +              serial6 = &uart1;
                gpio0 = &pioA;
                gpio1 = &pioB;
                gpio2 = &pioC;
                                interrupts = <26 4 0 27 4 0 28 4 0>;
                        };
  
 -                      pioA: gpio@fffff400 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff400 0x100>;
 -                              interrupts = <2 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                      pinctrl@fffff400 {
 +                              #address-cells = <1>;
 +                              #size-cells = <1>;
 +                              compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
 +                              ranges = <0xfffff400 0xfffff400 0x600>;
 +
 +                              atmel,mux-mask = <
 +                                    /*    A         B     */
 +                                     0xffffffff 0xffc00c3b  /* pioA */
 +                                     0xffffffff 0x7fff3ccf  /* pioB */
 +                                     0xffffffff 0x007fffff  /* pioC */
 +                                    >;
 +
 +                              /* shared pinctrl settings */
 +                              dbgu {
 +                                      pinctrl_dbgu: dbgu-0 {
 +                                              atmel,pins =
 +                                                      <1 14 0x1 0x0   /* PB14 periph A */
 +                                                       1 15 0x1 0x1>; /* PB15 periph with pullup */
 +                                      };
 +                              };
  
 -                      pioB: gpio@fffff600 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff600 0x100>;
 -                              interrupts = <3 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              usart0 {
 +                                      pinctrl_usart0: usart0-0 {
 +                                              atmel,pins =
 +                                                      <1 4 0x1 0x0    /* PB4 periph A */
 +                                                       1 5 0x1 0x0>;  /* PB5 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_rts: usart0_rts-0 {
 +                                              atmel,pins =
 +                                                      <1 26 0x1 0x0>; /* PB26 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_cts: usart0_cts-0 {
 +                                              atmel,pins =
 +                                                      <1 27 0x1 0x0>; /* PB27 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_dtr_dsr: usart0_dtr_dsr-0 {
 +                                              atmel,pins =
 +                                                      <1 24 0x1 0x0   /* PB24 periph A */
 +                                                       1 22 0x1 0x0>; /* PB22 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_dcd: usart0_dcd-0 {
 +                                              atmel,pins =
 +                                                      <1 23 0x1 0x0>; /* PB23 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_ri: usart0_ri-0 {
 +                                              atmel,pins =
 +                                                      <1 25 0x1 0x0>; /* PB25 periph A */
 +                                      };
 +                              };
  
 -                      pioC: gpio@fffff800 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff800 0x100>;
 -                              interrupts = <4 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 +                              usart1 {
 +                                      pinctrl_usart1: usart1-0 {
 +                                              atmel,pins =
 +                                                      <2 6 0x1 0x1    /* PB6 periph A with pullup */
 +                                                       2 7 0x1 0x0>;  /* PB7 periph A */
 +                                      };
 +
 +                                      pinctrl_usart1_rts: usart1_rts-0 {
 +                                              atmel,pins =
 +                                                      <1 28 0x1 0x0>; /* PB28 periph A */
 +                                      };
 +
 +                                      pinctrl_usart1_cts: usart1_cts-0 {
 +                                              atmel,pins =
 +                                                      <1 29 0x1 0x0>; /* PB29 periph A */
 +                                      };
 +                              };
 +
 +                              usart2 {
 +                                      pinctrl_usart2: usart2-0 {
 +                                              atmel,pins =
 +                                                      <1 8 0x1 0x1    /* PB8 periph A with pullup */
 +                                                       1 9 0x1 0x0>;  /* PB9 periph A */
 +                                      };
 +
 +                                      pinctrl_usart2_rts: usart2_rts-0 {
 +                                              atmel,pins =
 +                                                      <0 4 0x1 0x0>;  /* PA4 periph A */
 +                                      };
 +
 +                                      pinctrl_usart2_cts: usart2_cts-0 {
 +                                              atmel,pins =
 +                                                      <0 5 0x1 0x0>;  /* PA5 periph A */
 +                                      };
 +                              };
 +
 +                              usart3 {
 +                                      pinctrl_usart3: usart3-0 {
 +                                              atmel,pins =
 +                                                      <2 10 0x1 0x1   /* PB10 periph A with pullup */
 +                                                       2 11 0x1 0x0>; /* PB11 periph A */
 +                                      };
 +
 +                                      pinctrl_usart3_rts: usart3_rts-0 {
 +                                              atmel,pins =
 +                                                      <3 8 0x2 0x0>;  /* PB8 periph B */
 +                                      };
 +
 +                                      pinctrl_usart3_cts: usart3_cts-0 {
 +                                              atmel,pins =
 +                                                      <3 10 0x2 0x0>; /* PB10 periph B */
 +                                      };
 +                              };
 +
 +                              uart0 {
 +                                      pinctrl_uart0: uart0-0 {
 +                                              atmel,pins =
 +                                                      <0 31 0x2 0x1   /* PA31 periph B with pullup */
 +                                                       0 30 0x2 0x0>; /* PA30 periph B */
 +                                      };
 +                              };
 +
 +                              uart1 {
 +                                      pinctrl_uart1: uart1-0 {
 +                                              atmel,pins =
 +                                                      <2 12 0x1 0x1   /* PB12 periph A with pullup */
 +                                                       2 13 0x1 0x0>; /* PB13 periph A */
 +                                      };
 +                              };
 +
 +                              nand {
 +                                      pinctrl_nand: nand-0 {
 +                                              atmel,pins =
 +                                                      <2 13 0x0 0x1   /* PC13 gpio RDY pin pull_up */
 +                                                       2 14 0x0 0x1>; /* PC14 gpio enable pin pull_up */
 +                                      };
 +                              };
 +
 +                              macb {
 +                                      pinctrl_macb_rmii: macb_rmii-0 {
 +                                              atmel,pins =
 +                                                      <0 12 0x1 0x0   /* PA12 periph A */
 +                                                       0 13 0x1 0x0   /* PA13 periph A */
 +                                                       0 14 0x1 0x0   /* PA14 periph A */
 +                                                       0 15 0x1 0x0   /* PA15 periph A */
 +                                                       0 16 0x1 0x0   /* PA16 periph A */
 +                                                       0 17 0x1 0x0   /* PA17 periph A */
 +                                                       0 18 0x1 0x0   /* PA18 periph A */
 +                                                       0 19 0x1 0x0   /* PA19 periph A */
 +                                                       0 20 0x1 0x0   /* PA20 periph A */
 +                                                       0 21 0x1 0x0>; /* PA21 periph A */
 +                                      };
 +
 +                                      pinctrl_macb_rmii_mii: macb_rmii_mii-0 {
 +                                              atmel,pins =
 +                                                      <0 22 0x2 0x0   /* PA22 periph B */
 +                                                       0 23 0x2 0x0   /* PA23 periph B */
 +                                                       0 24 0x2 0x0   /* PA24 periph B */
 +                                                       0 25 0x2 0x0   /* PA25 periph B */
 +                                                       0 26 0x2 0x0   /* PA26 periph B */
 +                                                       0 27 0x2 0x0   /* PA27 periph B */
 +                                                       0 28 0x2 0x0   /* PA28 periph B */
 +                                                       0 29 0x2 0x0>; /* PA29 periph B */
 +                                      };
 +
 +                                      pinctrl_macb_rmii_mii_alt: macb_rmii_mii-1 {
 +                                              atmel,pins =
 +                                                      <0 10 0x2 0x0   /* PA10 periph B */
 +                                                       0 11 0x2 0x0   /* PA11 periph B */
 +                                                       0 24 0x2 0x0   /* PA24 periph B */
 +                                                       0 25 0x2 0x0   /* PA25 periph B */
 +                                                       0 26 0x2 0x0   /* PA26 periph B */
 +                                                       0 27 0x2 0x0   /* PA27 periph B */
 +                                                       0 28 0x2 0x0   /* PA28 periph B */
 +                                                       0 29 0x2 0x0>; /* PA29 periph B */
 +                                      };
 +                              };
 +
 +                              mmc0 {
 +                                      pinctrl_mmc0_clk: mmc0_clk-0 {
 +                                              atmel,pins =
 +                                                      <0 8 0x1 0x0>;  /* PA8 periph A */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 7 0x1 0x1    /* PA7 periph A with pullup */
 +                                                       0 6 0x1 0x1>;  /* PA6 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 9 0x1 0x1    /* PA9 periph A with pullup */
 +                                                       0 10 0x1 0x1   /* PA10 periph A with pullup */
 +                                                       0 11 0x1 0x1>; /* PA11 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot1_cmd_dat0: mmc0_slot1_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 1 0x2 0x1    /* PA1 periph B with pullup */
 +                                                       0 0 0x2 0x1>;  /* PA0 periph B with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot1_dat1_3: mmc0_slot1_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 5 0x2 0x1    /* PA5 periph B with pullup */
 +                                                       0 4 0x2 0x1    /* PA4 periph B with pullup */
 +                                                       0 3 0x2 0x1>;  /* PA3 periph B with pullup */
 +                                      };
 +                              };
 +
 +                              pioA: gpio@fffff400 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff400 0x200>;
 +                                      interrupts = <2 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioB: gpio@fffff600 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff600 0x200>;
 +                                      interrupts = <3 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioC: gpio@fffff800 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff800 0x200>;
 +                                      interrupts = <4 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
                        };
  
                        dbgu: serial@fffff200 {
                                compatible = "atmel,at91sam9260-usart";
                                reg = <0xfffff200 0x200>;
                                interrupts = <1 4 7>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_dbgu>;
                                status = "disabled";
                        };
  
                                interrupts = <6 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart0>;
                                status = "disabled";
                        };
  
                                interrupts = <7 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart1>;
                                status = "disabled";
                        };
  
                                interrupts = <8 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart2>;
                                status = "disabled";
                        };
  
                                interrupts = <23 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart3>;
                                status = "disabled";
                        };
  
 -                      usart4: serial@fffd4000 {
 +                      uart0: serial@fffd4000 {
                                compatible = "atmel,at91sam9260-usart";
                                reg = <0xfffd4000 0x200>;
                                interrupts = <24 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_uart0>;
                                status = "disabled";
                        };
  
 -                      usart5: serial@fffd8000 {
 +                      uart1: serial@fffd8000 {
                                compatible = "atmel,at91sam9260-usart";
                                reg = <0xfffd8000 0x200>;
                                interrupts = <25 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_uart1>;
                                status = "disabled";
                        };
  
                                compatible = "cdns,at32ap7000-macb", "cdns,macb";
                                reg = <0xfffc4000 0x100>;
                                interrupts = <21 4 3>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_macb_rmii>;
                                status = "disabled";
                        };
  
                                status = "disabled";
                        };
  
 +                      mmc0: mmc@fffa8000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfffa8000 0x600>;
 +                              interrupts = <9 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
 +                      };
 +
                        adc0: adc@fffe0000 {
                                compatible = "atmel,at91sam9260-adc";
                                reg = <0xfffe0000 0x100>;
                                        trigger-external;
                                };
                        };
+                       watchdog@fffffd40 {
+                               compatible = "atmel,at91sam9260-wdt";
+                               reg = <0xfffffd40 0x10>;
+                               status = "disabled";
+                       };
                };
  
                nand0: nand@40000000 {
                              >;
                        atmel,nand-addr-offset = <21>;
                        atmel,nand-cmd-offset = <22>;
 +                      pinctrl-names = "default";
 +                      pinctrl-0 = <&pinctrl_nand>;
                        gpios = <&pioC 13 0
                                 &pioC 14 0
                                 0
                                reg = <0xfffffd10 0x10>;
                        };
  
 -                      pioA: gpio@fffff200 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff200 0x100>;
 -                              interrupts = <2 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                      pinctrl@fffff200 {
 +                              #address-cells = <1>;
 +                              #size-cells = <1>;
 +                              compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
 +                              ranges = <0xfffff200 0xfffff200 0xa00>;
  
 -                      pioB: gpio@fffff400 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff400 0x100>;
 -                              interrupts = <3 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              atmel,mux-mask = <
 +                                    /*    A         B     */
 +                                     0xfffffffb 0xffffe07f  /* pioA */
 +                                     0x0007ffff 0x39072fff  /* pioB */
 +                                     0xffffffff 0x3ffffff8  /* pioC */
 +                                     0xfffffbff 0xffffffff  /* pioD */
 +                                     0xffe00fff 0xfbfcff00  /* pioE */
 +                                    >;
  
 -                      pioC: gpio@fffff600 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff600 0x100>;
 -                              interrupts = <4 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              /* shared pinctrl settings */
 +                              dbgu {
 +                                      pinctrl_dbgu: dbgu-0 {
 +                                              atmel,pins =
 +                                                      <2 30 0x1 0x0   /* PC30 periph A */
 +                                                       2 31 0x1 0x1>; /* PC31 periph with pullup */
 +                                      };
 +                              };
  
 -                      pioD: gpio@fffff800 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff800 0x100>;
 -                              interrupts = <4 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              usart0 {
 +                                      pinctrl_usart0: usart0-0 {
 +                                              atmel,pins =
 +                                                      <0 26 0x1 0x1   /* PA26 periph A with pullup */
 +                                                       0 27 0x1 0x0>; /* PA27 periph A */
 +                                      };
  
 -                      pioE: gpio@fffffa00 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffffa00 0x100>;
 -                              interrupts = <4 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 +                                      pinctrl_usart0_rts: usart0_rts-0 {
 +                                              atmel,pins =
 +                                                      <0 28 0x1 0x0>; /* PA28 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_cts: usart0_cts-0 {
 +                                              atmel,pins =
 +                                                      <0 29 0x1 0x0>; /* PA29 periph A */
 +                                      };
 +                              };
 +
 +                              usart1 {
 +                                      pinctrl_usart1: usart1-0 {
 +                                              atmel,pins =
 +                                                      <3 0 0x1 0x1    /* PD0 periph A with pullup */
 +                                                       3 1 0x1 0x0>;  /* PD1 periph A */
 +                                      };
 +
 +                                      pinctrl_usart1_rts: usart1_rts-0 {
 +                                              atmel,pins =
 +                                                      <3 7 0x2 0x0>;  /* PD7 periph B */
 +                                      };
 +
 +                                      pinctrl_usart1_cts: usart1_cts-0 {
 +                                              atmel,pins =
 +                                                      <3 8 0x2 0x0>;  /* PD8 periph B */
 +                                      };
 +                              };
 +
 +                              usart2 {
 +                                      pinctrl_usart2: usart2-0 {
 +                                              atmel,pins =
 +                                                      <3 2 0x1 0x1    /* PD2 periph A with pullup */
 +                                                       3 3 0x1 0x0>;  /* PD3 periph A */
 +                                      };
 +
 +                                      pinctrl_usart2_rts: usart2_rts-0 {
 +                                              atmel,pins =
 +                                                      <3 5 0x2 0x0>;  /* PD5 periph B */
 +                                      };
 +
 +                                      pinctrl_usart2_cts: usart2_cts-0 {
 +                                              atmel,pins =
 +                                                      <4 6 0x2 0x0>;  /* PD6 periph B */
 +                                      };
 +                              };
 +
 +                              nand {
 +                                      pinctrl_nand: nand-0 {
 +                                              atmel,pins =
 +                                                      <0 22 0x0 0x1   /* PA22 gpio RDY pin pull_up*/
 +                                                       3 15 0x0 0x1>; /* PD15 gpio enable pin pull_up */
 +                                      };
 +                              };
 +
 +                              macb {
 +                                      pinctrl_macb_rmii: macb_rmii-0 {
 +                                              atmel,pins =
 +                                                      <2 25 0x2 0x0   /* PC25 periph B */
 +                                                       4 21 0x1 0x0   /* PE21 periph A */
 +                                                       4 23 0x1 0x0   /* PE23 periph A */
 +                                                       4 24 0x1 0x0   /* PE24 periph A */
 +                                                       4 25 0x1 0x0   /* PE25 periph A */
 +                                                       4 26 0x1 0x0   /* PE26 periph A */
 +                                                       4 27 0x1 0x0   /* PE27 periph A */
 +                                                       4 28 0x1 0x0   /* PE28 periph A */
 +                                                       4 29 0x1 0x0   /* PE29 periph A */
 +                                                       4 30 0x1 0x0>; /* PE30 periph A */
 +                                      };
 +
 +                                      pinctrl_macb_rmii_mii: macb_rmii_mii-0 {
 +                                              atmel,pins =
 +                                                      <2 20 0x2 0x0   /* PC20 periph B */
 +                                                       2 21 0x2 0x0   /* PC21 periph B */
 +                                                       2 22 0x2 0x0   /* PC22 periph B */
 +                                                       2 23 0x2 0x0   /* PC23 periph B */
 +                                                       2 24 0x2 0x0   /* PC24 periph B */
 +                                                       2 25 0x2 0x0   /* PC25 periph B */
 +                                                       2 27 0x2 0x0   /* PC27 periph B */
 +                                                       4 22 0x2 0x0>; /* PE22 periph B */
 +                                      };
 +                              };
 +
 +                              mmc0 {
 +                                      pinctrl_mmc0_clk: mmc0_clk-0 {
 +                                              atmel,pins =
 +                                                      <0 12 0x1 0x0>; /* PA12 periph A */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_cmd_dat0: mmc0_slot0_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 1 0x1 0x1    /* PA1 periph A with pullup */
 +                                                       0 0 0x1 0x1>;  /* PA0 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 3 0x1 0x1    /* PA3 periph A with pullup */
 +                                                       0 4 0x1 0x1    /* PA4 periph A with pullup */
 +                                                       0 5 0x1 0x1>;  /* PA5 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot1_cmd_dat0: mmc0_slot1_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 16 0x1 0x1   /* PA16 periph A with pullup */
 +                                                       0 17 0x1 0x1>; /* PA17 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot1_dat1_3: mmc0_slot1_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 18 0x1 0x1   /* PA18 periph A with pullup */
 +                                                       0 19 0x1 0x1   /* PA19 periph A with pullup */
 +                                                       0 20 0x1 0x1>; /* PA20 periph A with pullup */
 +                                      };
 +                              };
 +
 +                              mmc1 {
 +                                      pinctrl_mmc1_clk: mmc1_clk-0 {
 +                                              atmel,pins =
 +                                                      <0 6 0x1 0x0>;  /* PA6 periph A */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot0_cmd_dat0: mmc1_slot0_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 7 0x1 0x1    /* PA7 periph A with pullup */
 +                                                       0 8 0x1 0x1>;  /* PA8 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot0_dat1_3: mmc1_slot0_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 9 0x1 0x1    /* PA9 periph A with pullup */
 +                                                       0 10 0x1 0x1   /* PA10 periph A with pullup */
 +                                                       0 11 0x1 0x1>; /* PA11 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot1_cmd_dat0: mmc1_slot1_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 21 0x1 0x1   /* PA21 periph A with pullup */
 +                                                       0 22 0x1 0x1>; /* PA22 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot1_dat1_3: mmc1_slot1_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 23 0x1 0x1   /* PA23 periph A with pullup */
 +                                                       0 24 0x1 0x1   /* PA24 periph A with pullup */
 +                                                       0 25 0x1 0x1>; /* PA25 periph A with pullup */
 +                                      };
 +                              };
 +
 +                              pioA: gpio@fffff200 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff200 0x200>;
 +                                      interrupts = <2 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioB: gpio@fffff400 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff400 0x200>;
 +                                      interrupts = <3 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioC: gpio@fffff600 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff600 0x200>;
 +                                      interrupts = <4 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioD: gpio@fffff800 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff800 0x200>;
 +                                      interrupts = <4 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioE: gpio@fffffa00 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffffa00 0x200>;
 +                                      interrupts = <4 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
                        };
  
                        dbgu: serial@ffffee00 {
                                compatible = "atmel,at91sam9260-usart";
                                reg = <0xffffee00 0x200>;
                                interrupts = <1 4 7>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_dbgu>;
                                status = "disabled";
                        };
  
                                interrupts = <7 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart0>;
                                status = "disabled";
                        };
  
                                interrupts = <8 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart1>;
                                status = "disabled";
                        };
  
                                interrupts = <9 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart2>;
                                status = "disabled";
                        };
  
                                compatible = "cdns,at32ap7000-macb", "cdns,macb";
                                reg = <0xfffbc000 0x100>;
                                interrupts = <21 4 3>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_macb_rmii>;
                                status = "disabled";
                        };
  
                                status = "disabled";
                        };
  
 +                      mmc0: mmc@fff80000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfff80000 0x600>;
 +                              interrupts = <10 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
 +                      };
 +
 +                      mmc1: mmc@fff84000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfff84000 0x600>;
 +                              interrupts = <11 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
 +                      };
++
+                       watchdog@fffffd40 {
+                               compatible = "atmel,at91sam9260-wdt";
+                               reg = <0xfffffd40 0x10>;
+                               status = "disabled";
+                       };
                };
  
                nand0: nand@40000000 {
                              >;
                        atmel,nand-addr-offset = <21>;
                        atmel,nand-cmd-offset = <22>;
 +                      pinctrl-names = "default";
 +                      pinctrl-0 = <&pinctrl_nand>;
                        gpios = <&pioA 22 0
                                 &pioD 15 0
                                 0
                                interrupts = <21 4 0>;
                        };
  
 -                      pioA: gpio@fffff200 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff200 0x100>;
 -                              interrupts = <2 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                      pinctrl@fffff200 {
 +                              #address-cells = <1>;
 +                              #size-cells = <1>;
 +                              compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
 +                              ranges = <0xfffff200 0xfffff200 0xa00>;
 +
 +                              atmel,mux-mask = <
 +                                    /*    A         B     */
 +                                     0xffffffff 0xffc003ff  /* pioA */
 +                                     0xffffffff 0x800f8f00  /* pioB */
 +                                     0xffffffff 0x00000e00  /* pioC */
 +                                     0xffffffff 0xff0c1381  /* pioD */
 +                                     0xffffffff 0x81ffff81  /* pioE */
 +                                    >;
 +
 +                              /* shared pinctrl settings */
 +                              dbgu {
 +                                      pinctrl_dbgu: dbgu-0 {
 +                                              atmel,pins =
 +                                                      <1 12 0x1 0x0   /* PB12 periph A */
 +                                                       1 13 0x1 0x0>; /* PB13 periph A */
 +                                      };
 +                              };
  
 -                      pioB: gpio@fffff400 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff400 0x100>;
 -                              interrupts = <3 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              usart0 {
 +                                      pinctrl_usart0: usart0-0 {
 +                                              atmel,pins =
 +                                                      <1 19 0x1 0x1   /* PB19 periph A with pullup */
 +                                                       1 18 0x1 0x0>; /* PB18 periph A */
 +                                      };
 +
 +                                      pinctrl_usart0_rts: usart0_rts-0 {
 +                                              atmel,pins =
 +                                                      <1 17 0x2 0x0>; /* PB17 periph B */
 +                                      };
 +
 +                                      pinctrl_usart0_cts: usart0_cts-0 {
 +                                              atmel,pins =
 +                                                      <1 15 0x2 0x0>; /* PB15 periph B */
 +                                      };
 +                              };
  
 -                      pioC: gpio@fffff600 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff600 0x100>;
 -                              interrupts = <4 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              uart1 {
 +                                      pinctrl_usart1: usart1-0 {
 +                                              atmel,pins =
 +                                                      <1 4 0x1 0x1    /* PB4 periph A with pullup */
 +                                                       1 5 0x1 0x0>;  /* PB5 periph A */
 +                                      };
 +
 +                                      pinctrl_usart1_rts: usart1_rts-0 {
 +                                              atmel,pins =
 +                                                      <3 16 0x1 0x0>; /* PD16 periph A */
 +                                      };
 +
 +                                      pinctrl_usart1_cts: usart1_cts-0 {
 +                                              atmel,pins =
 +                                                      <3 17 0x1 0x0>; /* PD17 periph A */
 +                                      };
 +                              };
  
 -                      pioD: gpio@fffff800 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffff800 0x100>;
 -                              interrupts = <5 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 -                      };
 +                              usart2 {
 +                                      pinctrl_usart2: usart2-0 {
 +                                              atmel,pins =
 +                                                      <1 6 0x1 0x1    /* PB6 periph A with pullup */
 +                                                       1 7 0x1 0x0>;  /* PB7 periph A */
 +                                      };
 +
 +                                      pinctrl_usart2_rts: usart2_rts-0 {
 +                                              atmel,pins =
 +                                                      <2 9 0x2 0x0>;  /* PC9 periph B */
 +                                      };
 +
 +                                      pinctrl_usart2_cts: usart2_cts-0 {
 +                                              atmel,pins =
 +                                                      <2 11 0x2 0x0>; /* PC11 periph B */
 +                                      };
 +                              };
  
 -                      pioE: gpio@fffffa00 {
 -                              compatible = "atmel,at91rm9200-gpio";
 -                              reg = <0xfffffa00 0x100>;
 -                              interrupts = <5 4 1>;
 -                              #gpio-cells = <2>;
 -                              gpio-controller;
 -                              interrupt-controller;
 -                              #interrupt-cells = <2>;
 +                              usart3 {
 +                                      pinctrl_usart3: usart3-0 {
 +                                              atmel,pins =
 +                                                      <1 8 0x1 0x1    /* PB9 periph A with pullup */
 +                                                       1 9 0x1 0x0>;  /* PB8 periph A */
 +                                      };
 +
 +                                      pinctrl_usart3_rts: usart3_rts-0 {
 +                                              atmel,pins =
 +                                                      <0 23 0x2 0x0>; /* PA23 periph B */
 +                                      };
 +
 +                                      pinctrl_usart3_cts: usart3_cts-0 {
 +                                              atmel,pins =
 +                                                      <0 24 0x2 0x0>; /* PA24 periph B */
 +                                      };
 +                              };
 +
 +                              nand {
 +                                      pinctrl_nand: nand-0 {
 +                                              atmel,pins =
 +                                                      <2 8 0x0 0x1    /* PC8 gpio RDY pin pull_up*/
 +                                                       2 14 0x0 0x1>; /* PC14 gpio enable pin pull_up */
 +                                      };
 +                              };
 +
 +                              macb {
 +                                      pinctrl_macb_rmii: macb_rmii-0 {
 +                                              atmel,pins =
 +                                                      <0 10 0x1 0x0   /* PA10 periph A */
 +                                                       0 11 0x1 0x0   /* PA11 periph A */
 +                                                       0 12 0x1 0x0   /* PA12 periph A */
 +                                                       0 13 0x1 0x0   /* PA13 periph A */
 +                                                       0 14 0x1 0x0   /* PA14 periph A */
 +                                                       0 15 0x1 0x0   /* PA15 periph A */
 +                                                       0 16 0x1 0x0   /* PA16 periph A */
 +                                                       0 17 0x1 0x0   /* PA17 periph A */
 +                                                       0 18 0x1 0x0   /* PA18 periph A */
 +                                                       0 19 0x1 0x0>; /* PA19 periph A */
 +                                      };
 +
 +                                      pinctrl_macb_rmii_mii: macb_rmii_mii-0 {
 +                                              atmel,pins =
 +                                                      <0 6 0x2 0x0    /* PA6 periph B */
 +                                                       0 7 0x2 0x0    /* PA7 periph B */
 +                                                       0 8 0x2 0x0    /* PA8 periph B */
 +                                                       0 9 0x2 0x0    /* PA9 periph B */
 +                                                       0 27 0x2 0x0   /* PA27 periph B */
 +                                                       0 28 0x2 0x0   /* PA28 periph B */
 +                                                       0 29 0x2 0x0   /* PA29 periph B */
 +                                                       0 30 0x2 0x0>; /* PA30 periph B */
 +                                      };
 +                              };
 +
 +                              mmc0 {
 +                                      pinctrl_mmc0_slot0_clk_cmd_dat0: mmc0_slot0_clk_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 0 0x1 0x0    /* PA0 periph A */
 +                                                       0 1 0x1 0x1    /* PA1 periph A with pullup */
 +                                                       0 2 0x1 0x1>;  /* PA2 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_dat1_3: mmc0_slot0_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 3 0x1 0x1    /* PA3 periph A with pullup */
 +                                                       0 4 0x1 0x1    /* PA4 periph A with pullup */
 +                                                       0 5 0x1 0x1>;  /* PA5 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc0_slot0_dat4_7: mmc0_slot0_dat4_7-0 {
 +                                              atmel,pins =
 +                                                      <0 6 0x1 0x1    /* PA6 periph A with pullup */
 +                                                       0 7 0x1 0x1    /* PA7 periph A with pullup */
 +                                                       0 8 0x1 0x1    /* PA8 periph A with pullup */
 +                                                       0 9 0x1 0x1>;  /* PA9 periph A with pullup */
 +                                      };
 +                              };
 +
 +                              mmc1 {
 +                                      pinctrl_mmc1_slot0_clk_cmd_dat0: mmc1_slot0_clk_cmd_dat0-0 {
 +                                              atmel,pins =
 +                                                      <0 31 0x1 0x0   /* PA31 periph A */
 +                                                       0 22 0x1 0x1   /* PA22 periph A with pullup */
 +                                                       0 23 0x1 0x1>; /* PA23 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot0_dat1_3: mmc1_slot0_dat1_3-0 {
 +                                              atmel,pins =
 +                                                      <0 24 0x1 0x1   /* PA24 periph A with pullup */
 +                                                       0 25 0x1 0x1   /* PA25 periph A with pullup */
 +                                                       0 26 0x1 0x1>; /* PA26 periph A with pullup */
 +                                      };
 +
 +                                      pinctrl_mmc1_slot0_dat4_7: mmc1_slot0_dat4_7-0 {
 +                                              atmel,pins =
 +                                                      <0 27 0x1 0x1   /* PA27 periph A with pullup */
 +                                                       0 28 0x1 0x1   /* PA28 periph A with pullup */
 +                                                       0 29 0x1 0x1   /* PA29 periph A with pullup */
 +                                                       0 20 0x1 0x1>; /* PA30 periph A with pullup */
 +                                      };
 +                              };
 +
 +                              pioA: gpio@fffff200 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff200 0x200>;
 +                                      interrupts = <2 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioB: gpio@fffff400 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff400 0x200>;
 +                                      interrupts = <3 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioC: gpio@fffff600 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff600 0x200>;
 +                                      interrupts = <4 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioD: gpio@fffff800 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffff800 0x200>;
 +                                      interrupts = <5 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
 +
 +                              pioE: gpio@fffffa00 {
 +                                      compatible = "atmel,at91rm9200-gpio";
 +                                      reg = <0xfffffa00 0x200>;
 +                                      interrupts = <5 4 1>;
 +                                      #gpio-cells = <2>;
 +                                      gpio-controller;
 +                                      interrupt-controller;
 +                                      #interrupt-cells = <2>;
 +                              };
                        };
  
                        dbgu: serial@ffffee00 {
                                compatible = "atmel,at91sam9260-usart";
                                reg = <0xffffee00 0x200>;
                                interrupts = <1 4 7>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_dbgu>;
                                status = "disabled";
                        };
  
                                interrupts = <7 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart0>;
                                status = "disabled";
                        };
  
                                interrupts = <8 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart1>;
                                status = "disabled";
                        };
  
                                interrupts = <9 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart2>;
                                status = "disabled";
                        };
  
                                interrupts = <10 4 5>;
                                atmel,use-dma-rx;
                                atmel,use-dma-tx;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_usart3>;
                                status = "disabled";
                        };
  
                                compatible = "cdns,at32ap7000-macb", "cdns,macb";
                                reg = <0xfffbc000 0x100>;
                                interrupts = <25 4 3>;
 +                              pinctrl-names = "default";
 +                              pinctrl-0 = <&pinctrl_macb_rmii>;
                                status = "disabled";
                        };
  
                                };
                        };
  
 +                      mmc0: mmc@fff80000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfff80000 0x600>;
 +                              interrupts = <11 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
 +                      };
 +
 +                      mmc1: mmc@fffd0000 {
 +                              compatible = "atmel,hsmci";
 +                              reg = <0xfffd0000 0x600>;
 +                              interrupts = <29 4 0>;
 +                              #address-cells = <1>;
 +                              #size-cells = <0>;
 +                              status = "disabled";
++                      };
++
+                       watchdog@fffffd40 {
+                               compatible = "atmel,at91sam9260-wdt";
+                               reg = <0xfffffd40 0x10>;
+                               status = "disabled";
                        };
                };
  
                              >;
                        atmel,nand-addr-offset = <21>;
                        atmel,nand-cmd-offset = <22>;
 +                      pinctrl-names = "default";
 +                      pinctrl-0 = <&pinctrl_nand>;
                        gpios = <&pioC 8 0
                                 &pioC 14 0
                                 0
                                reg = <0x80157450 0xC>;
                        };
  
 +                      thermal@801573c0 {
 +                              compatible = "stericsson,db8500-thermal";
 +                              reg = <0x801573c0 0x40>;
 +                              interrupts = <21 0x4>, <22 0x4>;
 +                              interrupt-names = "IRQ_HOTMON_LOW", "IRQ_HOTMON_HIGH";
 +                              status = "disabled";
 +                       };
 +
                        db8500-prcmu-regulators {
                                compatible = "stericsson,db8500-prcmu-regulator";
  
                                // DB8500_REGULATOR_VAPE
                                db8500_vape_reg: db8500_vape {
                                        regulator-compatible = "db8500_vape";
-                                       regulator-name = "db8500-vape";
                                        regulator-always-on;
                                };
  
                                // DB8500_REGULATOR_VARM
                                db8500_varm_reg: db8500_varm {
                                        regulator-compatible = "db8500_varm";
-                                       regulator-name = "db8500-varm";
                                };
  
                                // DB8500_REGULATOR_VMODEM
                                db8500_vmodem_reg: db8500_vmodem {
                                        regulator-compatible = "db8500_vmodem";
-                                       regulator-name = "db8500-vmodem";
                                };
  
                                // DB8500_REGULATOR_VPLL
                                db8500_vpll_reg: db8500_vpll {
                                        regulator-compatible = "db8500_vpll";
-                                       regulator-name = "db8500-vpll";
                                };
  
                                // DB8500_REGULATOR_VSMPS1
                                db8500_vsmps1_reg: db8500_vsmps1 {
                                        regulator-compatible = "db8500_vsmps1";
-                                       regulator-name = "db8500-vsmps1";
                                };
  
                                // DB8500_REGULATOR_VSMPS2
                                db8500_vsmps2_reg: db8500_vsmps2 {
                                        regulator-compatible = "db8500_vsmps2";
-                                       regulator-name = "db8500-vsmps2";
                                };
  
                                // DB8500_REGULATOR_VSMPS3
                                db8500_vsmps3_reg: db8500_vsmps3 {
                                        regulator-compatible = "db8500_vsmps3";
-                                       regulator-name = "db8500-vsmps3";
                                };
  
                                // DB8500_REGULATOR_VRF1
                                db8500_vrf1_reg: db8500_vrf1 {
                                        regulator-compatible = "db8500_vrf1";
-                                       regulator-name = "db8500-vrf1";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SVAMMDSP
                                db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
                                        regulator-compatible = "db8500_sva_mmdsp";
-                                       regulator-name = "db8500-sva-mmdsp";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SVAMMDSPRET
                                db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
                                        regulator-compatible = "db8500_sva_mmdsp_ret";
-                                       regulator-name = "db8500-sva-mmdsp-ret";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SVAPIPE
                                db8500_sva_pipe_reg: db8500_sva_pipe {
                                        regulator-compatible = "db8500_sva_pipe";
-                                       regulator-name = "db8500_sva_pipe";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SIAMMDSP
                                db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
                                        regulator-compatible = "db8500_sia_mmdsp";
-                                       regulator-name = "db8500_sia_mmdsp";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SIAMMDSPRET
                                db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
-                                       regulator-name = "db8500-sia-mmdsp-ret";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SIAPIPE
                                db8500_sia_pipe_reg: db8500_sia_pipe {
                                        regulator-compatible = "db8500_sia_pipe";
-                                       regulator-name = "db8500-sia-pipe";
                                };
  
                                // DB8500_REGULATOR_SWITCH_SGA
                                db8500_sga_reg: db8500_sga {
                                        regulator-compatible = "db8500_sga";
-                                       regulator-name = "db8500-sga";
                                        vin-supply = <&db8500_vape_reg>;
                                };
  
                                // DB8500_REGULATOR_SWITCH_B2R2_MCDE
                                db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
                                        regulator-compatible = "db8500_b2r2_mcde";
-                                       regulator-name = "db8500-b2r2-mcde";
                                        vin-supply = <&db8500_vape_reg>;
                                };
  
                                // DB8500_REGULATOR_SWITCH_ESRAM12
                                db8500_esram12_reg: db8500_esram12 {
                                        regulator-compatible = "db8500_esram12";
-                                       regulator-name = "db8500-esram12";
                                };
  
                                // DB8500_REGULATOR_SWITCH_ESRAM12RET
                                db8500_esram12_ret_reg: db8500_esram12_ret {
                                        regulator-compatible = "db8500_esram12_ret";
-                                       regulator-name = "db8500-esram12-ret";
                                };
  
                                // DB8500_REGULATOR_SWITCH_ESRAM34
                                db8500_esram34_reg: db8500_esram34 {
                                        regulator-compatible = "db8500_esram34";
-                                       regulator-name = "db8500-esram34";
                                };
  
                                // DB8500_REGULATOR_SWITCH_ESRAM34RET
                                db8500_esram34_ret_reg: db8500_esram34_ret {
                                        regulator-compatible = "db8500_esram34_ret";
-                                       regulator-name = "db8500-esram34-ret";
                                };
                        };
  
                                        // supplies to the display/camera
                                        ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
                                                regulator-compatible = "ab8500_ldo_aux1";
-                                               regulator-name = "V-DISPLAY";
                                                regulator-min-microvolt = <2500000>;
                                                regulator-max-microvolt = <2900000>;
                                                regulator-boot-on;
                                        // supplies to the on-board eMMC
                                        ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
                                                regulator-compatible = "ab8500_ldo_aux2";
-                                               regulator-name = "V-eMMC1";
                                                regulator-min-microvolt = <1100000>;
                                                regulator-max-microvolt = <3300000>;
                                        };
                                        // supply for VAUX3; SDcard slots
                                        ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
                                                regulator-compatible = "ab8500_ldo_aux3";
-                                               regulator-name = "V-MMC-SD";
                                                regulator-min-microvolt = <1100000>;
                                                regulator-max-microvolt = <3300000>;
                                        };
                                        // supply for v-intcore12; VINTCORE12 LDO
                                        ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
                                                regulator-compatible = "ab8500_ldo_initcore";
-                                               regulator-name = "V-INTCORE";
                                        };
  
                                        // supply for tvout; gpadc; TVOUT LDO
                                        ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
                                                regulator-compatible = "ab8500_ldo_tvout";
-                                               regulator-name = "V-TVOUT";
                                        };
  
                                        // supply for ab8500-usb; USB LDO
                                        ab8500_ldo_usb_reg: ab8500_ldo_usb {
                                                regulator-compatible = "ab8500_ldo_usb";
-                                               regulator-name = "dummy";
                                        };
  
                                        // supply for ab8500-vaudio; VAUDIO LDO
                                        ab8500_ldo_audio_reg: ab8500_ldo_audio {
                                                regulator-compatible = "ab8500_ldo_audio";
-                                               regulator-name = "V-AUD";
                                        };
  
                                        // supply for v-anamic1 VAMic1-LDO
                                        ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
                                                regulator-compatible = "ab8500_ldo_anamic1";
-                                               regulator-name = "V-AMIC1";
                                        };
  
                                        // supply for v-amic2; VAMIC2 LDO; reuse constants for AMIC1
                                        ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
                                                regulator-compatible = "ab8500_ldo_amamic2";
-                                               regulator-name = "V-AMIC2";
                                        };
  
                                        // supply for v-dmic; VDMIC LDO
                                        ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
                                                regulator-compatible = "ab8500_ldo_dmic";
-                                               regulator-name = "V-DMIC";
                                        };
  
                                        // supply for U8500 CSI/DSI; VANA LDO
                                        ab8500_ldo_ana_reg: ab8500_ldo_ana {
                                                regulator-compatible = "ab8500_ldo_ana";
-                                               regulator-name = "V-CSI/DSI";
                                        };
                                };
                        };
                        status = "disabled";
                };
  
-               sdi@80126000 {
+               sdi0_per1@80126000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80126000 0x1000>;
                        interrupts = <0 60 0x4>;
                        status = "disabled";
                };
  
-               sdi@80118000 {
+               sdi1_per2@80118000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80118000 0x1000>;
                        interrupts = <0 50 0x4>;
                        status = "disabled";
                };
  
-               sdi@80005000 {
+               sdi2_per3@80005000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80005000 0x1000>;
                        interrupts = <0 41 0x4>;
                        status = "disabled";
                };
  
-               sdi@80119000 {
+               sdi3_per2@80119000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80119000 0x1000>;
                        interrupts = <0 59 0x4>;
                        status = "disabled";
                };
  
-               sdi@80114000 {
+               sdi4_per2@80114000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80114000 0x1000>;
                        interrupts = <0 99 0x4>;
                        status = "disabled";
                };
  
-               sdi@80008000 {
+               sdi5_per3@80008000 {
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80008000 0x1000>;
                        interrupts = <0 100 0x4>;
                        status = "disabled";
                };
  
 +              cpufreq-cooling {
 +                      compatible = "stericsson,db8500-cpufreq-cooling";
 +                      status = "disabled";
 +               };
 +
+               vmmci: regulator-gpio {
+                       compatible = "regulator-gpio";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <2600000>;
+                       regulator-name = "mmci-reg";
+                       regulator-type = "voltage";
+                       states = <1800000 0x1
+                                 2900000 0x0>;
+                       status = "disabled";
+               };
        };
  };
                spi0 = &spi_0;
                spi1 = &spi_1;
                spi2 = &spi_2;
+               i2c0 = &i2c_0;
+               i2c1 = &i2c_1;
+               i2c2 = &i2c_2;
+               i2c3 = &i2c_3;
+               i2c4 = &i2c_4;
+               i2c5 = &i2c_5;
+               i2c6 = &i2c_6;
+               i2c7 = &i2c_7;
+       };
+       pd_mfc: mfc-power-domain@10023C40 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023C40 0x20>;
+       };
+       pd_g3d: g3d-power-domain@10023C60 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023C60 0x20>;
+       };
+       pd_lcd0: lcd0-power-domain@10023C80 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023C80 0x20>;
+       };
+       pd_tv: tv-power-domain@10023C20 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023C20 0x20>;
+       };
+       pd_cam: cam-power-domain@10023C00 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023C00 0x20>;
+       };
+       pd_gps: gps-power-domain@10023CE0 {
+               compatible = "samsung,exynos4210-pd";
+               reg = <0x10023CE0 0x20>;
        };
  
        gic:interrupt-controller@10490000 {
                status = "disabled";
        };
  
-       i2c@13860000 {
+       i2c_0: i2c@13860000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@13870000 {
+       i2c_1: i2c@13870000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@13880000 {
+       i2c_2: i2c@13880000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@13890000 {
+       i2c_3: i2c@13890000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@138A0000 {
+       i2c_4: i2c@138A0000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@138B0000 {
+       i2c_5: i2c@138B0000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@138C0000 {
+       i2c_6: i2c@138C0000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                status = "disabled";
        };
  
-       i2c@138D0000 {
+       i2c_7: i2c@138D0000 {
                #address-cells = <1>;
                #size-cells = <0>;
                compatible = "samsung,s3c2440-i2c";
                        reg = <0x12690000 0x1000>;
                        interrupts = <0 36 0>;
                };
 +
 +              mdma1: mdma@12850000 {
 +                      compatible = "arm,pl330", "arm,primecell";
 +                      reg = <0x12850000 0x1000>;
 +                      interrupts = <0 34 0>;
 +              };
        };
  };
                                        fsl,pull-up = <0>;
                                };
  
+                               pwm3_pins_a: pwm3@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               0x31c0 /* MX28_PAD_PWM3__PWM_3 */
+                                       >;
+                                       fsl,drive-strength = <0>;
+                                       fsl,voltage = <1>;
+                                       fsl,pull-up = <0>;
+                               };
                                pwm4_pins_a: pwm4@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
                                        fsl,pull-up = <0>;
                                };
  
+                               lcdif_16bit_pins_a: lcdif-16bit@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
+                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
+                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
+                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
+                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
+                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
+                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
+                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
+                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
+                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
+                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
+                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
+                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
+                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
+                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
+                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
+                                       >;
+                                       fsl,drive-strength = <0>;
+                                       fsl,voltage = <1>;
+                                       fsl,pull-up = <0>;
+                               };
                                can0_pins_a: can0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
                                compatible = "fsl,imx28-auart", "fsl,imx23-auart";
                                reg = <0x8006a000 0x2000>;
                                interrupts = <112 70 71>;
 +                              fsl,auart-dma-channel = <8 9>;
                                clocks = <&clks 45>;
                                status = "disabled";
                        };
                interrupt-parent = <&tzic>;
                ranges;
  
 +              ipu: ipu@40000000 {
 +                      #crtc-cells = <1>;
 +                      compatible = "fsl,imx51-ipu";
 +                      reg = <0x40000000 0x20000000>;
 +                      interrupts = <11 10>;
 +              };
 +
                aips@70000000 { /* AIPS1 */
                        compatible = "fsl,aips-bus", "simple-bus";
                        #address-cells = <1>;
                                reg = <0x70000000 0x40000>;
                                ranges;
  
-                               esdhc@70004000 { /* ESDHC1 */
+                               esdhc1: esdhc@70004000 {
                                        compatible = "fsl,imx51-esdhc";
                                        reg = <0x70004000 0x4000>;
                                        interrupts = <1>;
 +                                      clocks = <&clks 44>, <&clks 0>, <&clks 71>;
 +                                      clock-names = "ipg", "ahb", "per";
                                        status = "disabled";
                                };
  
-                               esdhc@70008000 { /* ESDHC2 */
+                               esdhc2: esdhc@70008000 {
                                        compatible = "fsl,imx51-esdhc";
                                        reg = <0x70008000 0x4000>;
                                        interrupts = <2>;
 +                                      clocks = <&clks 45>, <&clks 0>, <&clks 72>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
  
                                        compatible = "fsl,imx51-uart", "fsl,imx21-uart";
                                        reg = <0x7000c000 0x4000>;
                                        interrupts = <33>;
 +                                      clocks = <&clks 32>, <&clks 33>;
 +                                      clock-names = "ipg", "per";
                                        status = "disabled";
                                };
  
-                               ecspi@70010000 { /* ECSPI1 */
+                               ecspi1: ecspi@70010000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx51-ecspi";
                                        reg = <0x70010000 0x4000>;
                                        interrupts = <36>;
 +                                      clocks = <&clks 51>, <&clks 52>;
 +                                      clock-names = "ipg", "per";
                                        status = "disabled";
                                };
  
                                        compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
                                        reg = <0x70014000 0x4000>;
                                        interrupts = <30>;
 +                                      clocks = <&clks 49>;
                                        fsl,fifo-depth = <15>;
                                        fsl,ssi-dma-events = <25 24 23 22>; /* TX0 RX0 TX1 RX1 */
                                        status = "disabled";
                                };
  
-                               esdhc@70020000 { /* ESDHC3 */
+                               esdhc3: esdhc@70020000 {
                                        compatible = "fsl,imx51-esdhc";
                                        reg = <0x70020000 0x4000>;
                                        interrupts = <3>;
 +                                      clocks = <&clks 46>, <&clks 0>, <&clks 73>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
  
-                               esdhc@70024000 { /* ESDHC4 */
+                               esdhc4: esdhc@70024000 {
                                        compatible = "fsl,imx51-esdhc";
                                        reg = <0x70024000 0x4000>;
                                        interrupts = <4>;
 +                                      clocks = <&clks 47>, <&clks 0>, <&clks 74>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
                        };
  
-                       usb@73f80000 {
+                       usbotg: usb@73f80000 {
                                compatible = "fsl,imx51-usb", "fsl,imx27-usb";
                                reg = <0x73f80000 0x0200>;
                                interrupts = <18>;
                                status = "disabled";
                        };
  
-                       usb@73f80200 {
+                       usbh1: usb@73f80200 {
                                compatible = "fsl,imx51-usb", "fsl,imx27-usb";
                                reg = <0x73f80200 0x0200>;
                                interrupts = <14>;
                                status = "disabled";
                        };
  
-                       usb@73f80400 {
+                       usbh2: usb@73f80400 {
                                compatible = "fsl,imx51-usb", "fsl,imx27-usb";
                                reg = <0x73f80400 0x0200>;
                                interrupts = <16>;
                                status = "disabled";
                        };
  
-                       usb@73f80600 {
+                       usbh3: usb@73f80600 {
                                compatible = "fsl,imx51-usb", "fsl,imx27-usb";
                                reg = <0x73f80600 0x0200>;
                                interrupts = <17>;
                                #interrupt-cells = <2>;
                        };
  
-                       wdog@73f98000 { /* WDOG1 */
+                       wdog1: wdog@73f98000 {
                                compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
                                reg = <0x73f98000 0x4000>;
                                interrupts = <58>;
 +                              clocks = <&clks 0>;
                        };
  
-                       wdog@73f9c000 { /* WDOG2 */
+                       wdog2: wdog@73f9c000 {
                                compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
                                reg = <0x73f9c000 0x4000>;
                                interrupts = <59>;
 +                              clocks = <&clks 0>;
                                status = "disabled";
                        };
  
-                       iomuxc@73fa8000 {
+                       iomuxc: iomuxc@73fa8000 {
                                compatible = "fsl,imx51-iomuxc";
                                reg = <0x73fa8000 0x4000>;
  
                                        };
                                };
  
 +                              ipu_disp1 {
 +                                      pinctrl_ipu_disp1_1: ipudisp1grp-1 {
 +                                              fsl,pins = <
 +                                                      528 0x5 /* MX51_PAD_DISP1_DAT0__DISP1_DAT0 */
 +                                                      529 0x5 /* MX51_PAD_DISP1_DAT1__DISP1_DAT1 */
 +                                                      530 0x5 /* MX51_PAD_DISP1_DAT2__DISP1_DAT2 */
 +                                                      531 0x5 /* MX51_PAD_DISP1_DAT3__DISP1_DAT3 */
 +                                                      532 0x5 /* MX51_PAD_DISP1_DAT4__DISP1_DAT4 */
 +                                                      533 0x5 /* MX51_PAD_DISP1_DAT5__DISP1_DAT5 */
 +                                                      535 0x5 /* MX51_PAD_DISP1_DAT6__DISP1_DAT6 */
 +                                                      537 0x5 /* MX51_PAD_DISP1_DAT7__DISP1_DAT7 */
 +                                                      539 0x5 /* MX51_PAD_DISP1_DAT8__DISP1_DAT8 */
 +                                                      541 0x5 /* MX51_PAD_DISP1_DAT9__DISP1_DAT9 */
 +                                                      543 0x5 /* MX51_PAD_DISP1_DAT10__DISP1_DAT10 */
 +                                                      545 0x5 /* MX51_PAD_DISP1_DAT11__DISP1_DAT11 */
 +                                                      547 0x5 /* MX51_PAD_DISP1_DAT12__DISP1_DAT12 */
 +                                                      549 0x5 /* MX51_PAD_DISP1_DAT13__DISP1_DAT13 */
 +                                                      551 0x5 /* MX51_PAD_DISP1_DAT14__DISP1_DAT14 */
 +                                                      553 0x5 /* MX51_PAD_DISP1_DAT15__DISP1_DAT15 */
 +                                                      555 0x5 /* MX51_PAD_DISP1_DAT16__DISP1_DAT16 */
 +                                                      557 0x5 /* MX51_PAD_DISP1_DAT17__DISP1_DAT17 */
 +                                                      559 0x5 /* MX51_PAD_DISP1_DAT18__DISP1_DAT18 */
 +                                                      563 0x5 /* MX51_PAD_DISP1_DAT19__DISP1_DAT19 */
 +                                                      567 0x5 /* MX51_PAD_DISP1_DAT20__DISP1_DAT20 */
 +                                                      571 0x5 /* MX51_PAD_DISP1_DAT21__DISP1_DAT21 */
 +                                                      575 0x5 /* MX51_PAD_DISP1_DAT22__DISP1_DAT22 */
 +                                                      579 0x5 /* MX51_PAD_DISP1_DAT23__DISP1_DAT23 */
 +                                                      584 0x5 /* MX51_PAD_DI1_PIN2__DI1_PIN2 (hsync) */
 +                                                      583 0x5 /* MX51_PAD_DI1_PIN3__DI1_PIN3 (vsync) */
 +                                              >;
 +                                      };
 +                              };
 +
 +                              ipu_disp2 {
 +                                      pinctrl_ipu_disp2_1: ipudisp2grp-1 {
 +                                              fsl,pins = <
 +                                                      603 0x5 /* MX51_PAD_DISP2_DAT0__DISP2_DAT0 */
 +                                                      608 0x5 /* MX51_PAD_DISP2_DAT1__DISP2_DAT1 */
 +                                                      613 0x5 /* MX51_PAD_DISP2_DAT2__DISP2_DAT2 */
 +                                                      614 0x5 /* MX51_PAD_DISP2_DAT3__DISP2_DAT3 */
 +                                                      615 0x5 /* MX51_PAD_DISP2_DAT4__DISP2_DAT4 */
 +                                                      616 0x5 /* MX51_PAD_DISP2_DAT5__DISP2_DAT5 */
 +                                                      617 0x5 /* MX51_PAD_DISP2_DAT6__DISP2_DAT6 */
 +                                                      622 0x5 /* MX51_PAD_DISP2_DAT7__DISP2_DAT7 */
 +                                                      627 0x5 /* MX51_PAD_DISP2_DAT8__DISP2_DAT8 */
 +                                                      633 0x5 /* MX51_PAD_DISP2_DAT9__DISP2_DAT9 */
 +                                                      637 0x5 /* MX51_PAD_DISP2_DAT10__DISP2_DAT10 */
 +                                                      643 0x5 /* MX51_PAD_DISP2_DAT11__DISP2_DAT11 */
 +                                                      648 0x5 /* MX51_PAD_DISP2_DAT12__DISP2_DAT12 */
 +                                                      652 0x5 /* MX51_PAD_DISP2_DAT13__DISP2_DAT13 */
 +                                                      656 0x5 /* MX51_PAD_DISP2_DAT14__DISP2_DAT14 */
 +                                                      661 0x5 /* MX51_PAD_DISP2_DAT15__DISP2_DAT15 */
 +                                                      593 0x5 /* MX51_PAD_DI2_PIN2__DI2_PIN2 (hsync) */
 +                                                      595 0x5 /* MX51_PAD_DI2_PIN3__DI2_PIN3 (vsync) */
 +                                                      597 0x5 /* MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK */
 +                                                      599 0x5 /* MX51_PAD_DI_GP4__DI2_PIN15 */
 +                                              >;
 +                                      };
 +                              };
 +
                                uart1 {
                                        pinctrl_uart1_1: uart1grp-1 {
                                                fsl,pins = <
                                };
                        };
  
 +                      pwm1: pwm@73fb4000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx51-pwm", "fsl,imx27-pwm";
 +                              reg = <0x73fb4000 0x4000>;
 +                              clocks = <&clks 37>, <&clks 38>;
 +                              clock-names = "ipg", "per";
 +                              interrupts = <61>;
 +                      };
 +
 +                      pwm2: pwm@73fb8000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx51-pwm", "fsl,imx27-pwm";
 +                              reg = <0x73fb8000 0x4000>;
 +                              clocks = <&clks 39>, <&clks 40>;
 +                              clock-names = "ipg", "per";
 +                              interrupts = <94>;
 +                      };
 +
                        uart1: serial@73fbc000 {
                                compatible = "fsl,imx51-uart", "fsl,imx21-uart";
                                reg = <0x73fbc000 0x4000>;
                                interrupts = <31>;
 +                              clocks = <&clks 28>, <&clks 29>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx51-uart", "fsl,imx21-uart";
                                reg = <0x73fc0000 0x4000>;
                                interrupts = <32>;
 +                              clocks = <&clks 30>, <&clks 31>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
 +
 +                      clks: ccm@73fd4000{
 +                              compatible = "fsl,imx51-ccm";
 +                              reg = <0x73fd4000 0x4000>;
 +                              interrupts = <0 71 0x04 0 72 0x04>;
 +                              #clock-cells = <1>;
 +                      };
                };
  
                aips@80000000 { /* AIPS2 */
                        reg = <0x80000000 0x10000000>;
                        ranges;
  
-                       ecspi@83fac000 { /* ECSPI2 */
+                       ecspi2: ecspi@83fac000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx51-ecspi";
                                reg = <0x83fac000 0x4000>;
                                interrupts = <37>;
 +                              clocks = <&clks 53>, <&clks 54>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
-                       sdma@83fb0000 {
+                       sdma: sdma@83fb0000 {
                                compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
                                reg = <0x83fb0000 0x4000>;
                                interrupts = <6>;
 +                              clocks = <&clks 56>, <&clks 56>;
 +                              clock-names = "ipg", "ahb";
                                fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
                        };
  
-                       cspi@83fc0000 {
+                       cspi: cspi@83fc0000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
                                reg = <0x83fc0000 0x4000>;
                                interrupts = <38>;
 +                              clocks = <&clks 55>, <&clks 0>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
-                       i2c@83fc4000 { /* I2C2 */
+                       i2c2: i2c@83fc4000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
                                reg = <0x83fc4000 0x4000>;
                                interrupts = <63>;
 +                              clocks = <&clks 35>;
                                status = "disabled";
                        };
  
-                       i2c@83fc8000 { /* I2C1 */
+                       i2c1: i2c@83fc8000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
                                reg = <0x83fc8000 0x4000>;
                                interrupts = <62>;
 +                              clocks = <&clks 34>;
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
                                reg = <0x83fcc000 0x4000>;
                                interrupts = <29>;
 +                              clocks = <&clks 48>;
                                fsl,fifo-depth = <15>;
                                fsl,ssi-dma-events = <29 28 27 26>; /* TX0 RX0 TX1 RX1 */
                                status = "disabled";
                        };
  
-                       audmux@83fd0000 {
+                       audmux: audmux@83fd0000 {
                                compatible = "fsl,imx51-audmux", "fsl,imx31-audmux";
                                reg = <0x83fd0000 0x4000>;
                                status = "disabled";
                        };
  
-                       nand@83fdb000 {
+                       nfc: nand@83fdb000 {
                                compatible = "fsl,imx51-nand";
                                reg = <0x83fdb000 0x1000 0xcfff0000 0x10000>;
                                interrupts = <8>;
 +                              clocks = <&clks 60>;
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
                                reg = <0x83fe8000 0x4000>;
                                interrupts = <96>;
 +                              clocks = <&clks 50>;
                                fsl,fifo-depth = <15>;
                                fsl,ssi-dma-events = <47 46 37 35>; /* TX0 RX0 TX1 RX1 */
                                status = "disabled";
                        };
  
-                       ethernet@83fec000 {
+                       fec: ethernet@83fec000 {
                                compatible = "fsl,imx51-fec", "fsl,imx27-fec";
                                reg = <0x83fec000 0x4000>;
                                interrupts = <87>;
 +                              clocks = <&clks 42>, <&clks 42>, <&clks 42>;
 +                              clock-names = "ipg", "ahb", "ptp";
                                status = "disabled";
                        };
                };
                interrupt-parent = <&tzic>;
                ranges;
  
 +              ipu: ipu@18000000 {
 +                      #crtc-cells = <1>;
 +                      compatible = "fsl,imx53-ipu";
 +                      reg = <0x18000000 0x080000000>;
 +                      interrupts = <11 10>;
 +              };
 +
                aips@50000000 { /* AIPS1 */
                        compatible = "fsl,aips-bus", "simple-bus";
                        #address-cells = <1>;
                                reg = <0x50000000 0x40000>;
                                ranges;
  
-                               esdhc@50004000 { /* ESDHC1 */
+                               esdhc1: esdhc@50004000 {
                                        compatible = "fsl,imx53-esdhc";
                                        reg = <0x50004000 0x4000>;
                                        interrupts = <1>;
 +                                      clocks = <&clks 44>, <&clks 0>, <&clks 71>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
  
-                               esdhc@50008000 { /* ESDHC2 */
+                               esdhc2: esdhc@50008000 {
                                        compatible = "fsl,imx53-esdhc";
                                        reg = <0x50008000 0x4000>;
                                        interrupts = <2>;
 +                                      clocks = <&clks 45>, <&clks 0>, <&clks 72>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
  
                                        compatible = "fsl,imx53-uart", "fsl,imx21-uart";
                                        reg = <0x5000c000 0x4000>;
                                        interrupts = <33>;
 +                                      clocks = <&clks 32>, <&clks 33>;
 +                                      clock-names = "ipg", "per";
                                        status = "disabled";
                                };
  
-                               ecspi@50010000 { /* ECSPI1 */
+                               ecspi1: ecspi@50010000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
                                        reg = <0x50010000 0x4000>;
                                        interrupts = <36>;
 +                                      clocks = <&clks 51>, <&clks 52>;
 +                                      clock-names = "ipg", "per";
                                        status = "disabled";
                                };
  
                                        compatible = "fsl,imx53-ssi", "fsl,imx21-ssi";
                                        reg = <0x50014000 0x4000>;
                                        interrupts = <30>;
 +                                      clocks = <&clks 49>;
                                        fsl,fifo-depth = <15>;
                                        fsl,ssi-dma-events = <25 24 23 22>; /* TX0 RX0 TX1 RX1 */
                                        status = "disabled";
                                };
  
-                               esdhc@50020000 { /* ESDHC3 */
+                               esdhc3: esdhc@50020000 {
                                        compatible = "fsl,imx53-esdhc";
                                        reg = <0x50020000 0x4000>;
                                        interrupts = <3>;
 +                                      clocks = <&clks 46>, <&clks 0>, <&clks 73>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
  
-                               esdhc@50024000 { /* ESDHC4 */
+                               esdhc4: esdhc@50024000 {
                                        compatible = "fsl,imx53-esdhc";
                                        reg = <0x50024000 0x4000>;
                                        interrupts = <4>;
 +                                      clocks = <&clks 47>, <&clks 0>, <&clks 74>;
 +                                      clock-names = "ipg", "ahb", "per";
+                                       bus-width = <4>;
                                        status = "disabled";
                                };
                        };
  
-                       usb@53f80000 {
+                       usbotg: usb@53f80000 {
                                compatible = "fsl,imx53-usb", "fsl,imx27-usb";
                                reg = <0x53f80000 0x0200>;
                                interrupts = <18>;
                                status = "disabled";
                        };
  
-                       usb@53f80200 {
+                       usbh1: usb@53f80200 {
                                compatible = "fsl,imx53-usb", "fsl,imx27-usb";
                                reg = <0x53f80200 0x0200>;
                                interrupts = <14>;
                                status = "disabled";
                        };
  
-                       usb@53f80400 {
+                       usbh2: usb@53f80400 {
                                compatible = "fsl,imx53-usb", "fsl,imx27-usb";
                                reg = <0x53f80400 0x0200>;
                                interrupts = <16>;
                                status = "disabled";
                        };
  
-                       usb@53f80600 {
+                       usbh3: usb@53f80600 {
                                compatible = "fsl,imx53-usb", "fsl,imx27-usb";
                                reg = <0x53f80600 0x0200>;
                                interrupts = <17>;
                                #interrupt-cells = <2>;
                        };
  
-                       wdog@53f98000 { /* WDOG1 */
+                       wdog1: wdog@53f98000 {
                                compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
                                reg = <0x53f98000 0x4000>;
                                interrupts = <58>;
 +                              clocks = <&clks 0>;
                        };
  
-                       wdog@53f9c000 { /* WDOG2 */
+                       wdog2: wdog@53f9c000 {
                                compatible = "fsl,imx53-wdt", "fsl,imx21-wdt";
                                reg = <0x53f9c000 0x4000>;
                                interrupts = <59>;
 +                              clocks = <&clks 0>;
                                status = "disabled";
                        };
  
-                       iomuxc@53fa8000 {
+                       iomuxc: iomuxc@53fa8000 {
                                compatible = "fsl,imx53-iomuxc";
                                reg = <0x53fa8000 0x4000>;
  
                                        };
                                };
  
+                               can1 {
+                                       pinctrl_can1_1: can1grp-1 {
+                                               fsl,pins = <
+                                                       847 0x80000000  /* MX53_PAD_PATA_INTRQ__CAN1_TXCAN */
+                                                       853 0x80000000  /* MX53_PAD_PATA_DIOR__CAN1_RXCAN */
+                                               >;
+                                       };
+                               };
+                               can2 {
+                                       pinctrl_can2_1: can2grp-1 {
+                                               fsl,pins = <
+                                                       67  0x80000000  /* MX53_PAD_KEY_COL4__CAN2_TXCAN */
+                                                       74  0x80000000  /* MX53_PAD_KEY_ROW4__CAN2_RXCAN */
+                                               >;
+                                       };
+                               };
                                i2c1 {
                                        pinctrl_i2c1_1: i2c1grp-1 {
                                                fsl,pins = <
                                        };
                                };
  
+                               i2c3 {
+                                       pinctrl_i2c3_1: i2c3grp-1 {
+                                               fsl,pins = <
+                                                       1102 0xc0000000 /* MX53_PAD_GPIO_6__I2C3_SDA */
+                                                       1130 0xc0000000 /* MX53_PAD_GPIO_5__I2C3_SCL */
+                                               >;
+                                       };
+                               };
                                uart1 {
                                        pinctrl_uart1_1: uart1grp-1 {
                                                fsl,pins = <
                                                >;
                                        };
                                };
+                               uart4 {
+                                       pinctrl_uart4_1: uart4grp-1 {
+                                               fsl,pins = <
+                                                       11 0x1c5        /* MX53_PAD_KEY_COL0__UART4_TXD_MUX */
+                                                       18 0x1c5        /* MX53_PAD_KEY_ROW0__UART4_RXD_MUX */
+                                               >;
+                                       };
+                               };
+                               uart5 {
+                                       pinctrl_uart5_1: uart5grp-1 {
+                                               fsl,pins = <
+                                                       24 0x1c5        /* MX53_PAD_KEY_COL1__UART5_TXD_MUX */
+                                                       31 0x1c5        /* MX53_PAD_KEY_ROW1__UART5_RXD_MUX */
+                                               >;
+                                       };
+                               };
                        };
  
 +                      pwm1: pwm@53fb4000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx53-pwm", "fsl,imx27-pwm";
 +                              reg = <0x53fb4000 0x4000>;
 +                              clocks = <&clks 37>, <&clks 38>;
 +                              clock-names = "ipg", "per";
 +                              interrupts = <61>;
 +                      };
 +
 +                      pwm2: pwm@53fb8000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx53-pwm", "fsl,imx27-pwm";
 +                              reg = <0x53fb8000 0x4000>;
 +                              clocks = <&clks 39>, <&clks 40>;
 +                              clock-names = "ipg", "per";
 +                              interrupts = <94>;
 +                      };
 +
                        uart1: serial@53fbc000 {
                                compatible = "fsl,imx53-uart", "fsl,imx21-uart";
                                reg = <0x53fbc000 0x4000>;
                                interrupts = <31>;
 +                              clocks = <&clks 28>, <&clks 29>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-uart", "fsl,imx21-uart";
                                reg = <0x53fc0000 0x4000>;
                                interrupts = <32>;
 +                              clocks = <&clks 30>, <&clks 31>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
                                reg = <0x53fc8000 0x4000>;
                                interrupts = <82>;
 +                              clocks = <&clks 158>, <&clks 157>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-flexcan", "fsl,p1010-flexcan";
                                reg = <0x53fcc000 0x4000>;
                                interrupts = <83>;
 +                              clocks = <&clks 158>, <&clks 157>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
 +                      clks: ccm@53fd4000{
 +                              compatible = "fsl,imx53-ccm";
 +                              reg = <0x53fd4000 0x4000>;
 +                              interrupts = <0 71 0x04 0 72 0x04>;
 +                              #clock-cells = <1>;
 +                      };
 +
                        gpio5: gpio@53fdc000 {
                                compatible = "fsl,imx53-gpio", "fsl,imx35-gpio";
                                reg = <0x53fdc000 0x4000>;
                                #interrupt-cells = <2>;
                        };
  
-                       i2c@53fec000 { /* I2C3 */
+                       i2c3: i2c@53fec000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
                                reg = <0x53fec000 0x4000>;
                                interrupts = <64>;
 +                              clocks = <&clks 88>;
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-uart", "fsl,imx21-uart";
                                reg = <0x53ff0000 0x4000>;
                                interrupts = <13>;
 +                              clocks = <&clks 65>, <&clks 66>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
                };
                                compatible = "fsl,imx53-uart", "fsl,imx21-uart";
                                reg = <0x63f90000 0x4000>;
                                interrupts = <86>;
 +                              clocks = <&clks 67>, <&clks 68>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
-                       ecspi@63fac000 { /* ECSPI2 */
+                       ecspi2: ecspi@63fac000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx53-ecspi", "fsl,imx51-ecspi";
                                reg = <0x63fac000 0x4000>;
                                interrupts = <37>;
 +                              clocks = <&clks 53>, <&clks 54>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
-                       sdma@63fb0000 {
+                       sdma: sdma@63fb0000 {
                                compatible = "fsl,imx53-sdma", "fsl,imx35-sdma";
                                reg = <0x63fb0000 0x4000>;
                                interrupts = <6>;
 +                              clocks = <&clks 56>, <&clks 56>;
 +                              clock-names = "ipg", "ahb";
                                fsl,sdma-ram-script-name = "imx/sdma/sdma-imx53.bin";
                        };
  
-                       cspi@63fc0000 {
+                       cspi: cspi@63fc0000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx53-cspi", "fsl,imx35-cspi";
                                reg = <0x63fc0000 0x4000>;
                                interrupts = <38>;
 +                              clocks = <&clks 55>, <&clks 0>;
 +                              clock-names = "ipg", "per";
                                status = "disabled";
                        };
  
-                       i2c@63fc4000 { /* I2C2 */
+                       i2c2: i2c@63fc4000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
                                reg = <0x63fc4000 0x4000>;
                                interrupts = <63>;
 +                              clocks = <&clks 35>;
                                status = "disabled";
                        };
  
-                       i2c@63fc8000 { /* I2C1 */
+                       i2c1: i2c@63fc8000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx53-i2c", "fsl,imx21-i2c";
                                reg = <0x63fc8000 0x4000>;
                                interrupts = <62>;
 +                              clocks = <&clks 34>;
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-ssi", "fsl,imx21-ssi";
                                reg = <0x63fcc000 0x4000>;
                                interrupts = <29>;
 +                              clocks = <&clks 48>;
                                fsl,fifo-depth = <15>;
                                fsl,ssi-dma-events = <29 28 27 26>; /* TX0 RX0 TX1 RX1 */
                                status = "disabled";
                        };
  
-                       audmux@63fd0000 {
+                       audmux: audmux@63fd0000 {
                                compatible = "fsl,imx53-audmux", "fsl,imx31-audmux";
                                reg = <0x63fd0000 0x4000>;
                                status = "disabled";
                        };
  
-                       nand@63fdb000 {
+                       nfc: nand@63fdb000 {
                                compatible = "fsl,imx53-nand";
                                reg = <0x63fdb000 0x1000 0xf7ff0000 0x10000>;
                                interrupts = <8>;
 +                              clocks = <&clks 60>;
                                status = "disabled";
                        };
  
                                compatible = "fsl,imx53-ssi", "fsl,imx21-ssi";
                                reg = <0x63fe8000 0x4000>;
                                interrupts = <96>;
 +                              clocks = <&clks 50>;
                                fsl,fifo-depth = <15>;
                                fsl,ssi-dma-events = <47 46 45 44>; /* TX0 RX0 TX1 RX1 */
                                status = "disabled";
                        };
  
-                       ethernet@63fec000 {
+                       fec: ethernet@63fec000 {
                                compatible = "fsl,imx53-fec", "fsl,imx25-fec";
                                reg = <0x63fec000 0x4000>;
                                interrupts = <87>;
 +                              clocks = <&clks 42>, <&clks 42>, <&clks 42>;
 +                              clock-names = "ipg", "ahb", "ptp";
                                status = "disabled";
                        };
                };
                        compatible = "arm,cortex-a9";
                        reg = <0>;
                        next-level-cache = <&L2>;
+                       operating-points = <
+                               /* kHz    uV */
+                               792000  1100000
+                               396000  950000
+                               198000  850000
+                       >;
+                       clock-latency = <61036>; /* two CLK32 periods */
+                       cpu0-supply = <&reg_cpu>;
                };
  
                cpu@1 {
                        clocks = <&clks 106>;
                };
  
-               gpmi-nand@00112000 {
+               nfc: gpmi-nand@00112000 {
                        compatible = "fsl,imx6q-gpmi-nand";
                        #address-cells = <1>;
                        #size-cells = <1>;
                                reg = <0x02000000 0x40000>;
                                ranges;
  
-                               spdif@02004000 {
+                               spdif: spdif@02004000 {
                                        reg = <0x02004000 0x4000>;
                                        interrupts = <0 52 0x04>;
                                };
  
-                               ecspi@02008000 { /* eCSPI1 */
+                               ecspi1: ecspi@02008000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
                                        status = "disabled";
                                };
  
-                               ecspi@0200c000 { /* eCSPI2 */
+                               ecspi2: ecspi@0200c000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
                                        status = "disabled";
                                };
  
-                               ecspi@02010000 { /* eCSPI3 */
+                               ecspi3: ecspi@02010000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
                                        status = "disabled";
                                };
  
-                               ecspi@02014000 { /* eCSPI4 */
+                               ecspi4: ecspi@02014000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
                                        status = "disabled";
                                };
  
-                               ecspi@02018000 { /* eCSPI5 */
+                               ecspi5: ecspi@02018000 {
                                        #address-cells = <1>;
                                        #size-cells = <0>;
                                        compatible = "fsl,imx6q-ecspi", "fsl,imx51-ecspi";
                                        status = "disabled";
                                };
  
-                               esai@02024000 {
+                               esai: esai@02024000 {
                                        reg = <0x02024000 0x4000>;
                                        interrupts = <0 51 0x04>;
                                };
                                        status = "disabled";
                                };
  
-                               asrc@02034000 {
+                               asrc: asrc@02034000 {
                                        reg = <0x02034000 0x4000>;
                                        interrupts = <0 50 0x04>;
                                };
                                };
                        };
  
-                       vpu@02040000 {
+                       vpu: vpu@02040000 {
                                reg = <0x02040000 0x3c000>;
                                interrupts = <0 3 0x04 0 12 0x04>;
                        };
                                reg = <0x0207c000 0x4000>;
                        };
  
-                       pwm@02080000 { /* PWM1 */
+                       pwm1: pwm@02080000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
                                reg = <0x02080000 0x4000>;
                                interrupts = <0 83 0x04>;
 +                              clocks = <&clks 62>, <&clks 145>;
 +                              clock-names = "ipg", "per";
                        };
  
-                       pwm@02084000 { /* PWM2 */
+                       pwm2: pwm@02084000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
                                reg = <0x02084000 0x4000>;
                                interrupts = <0 84 0x04>;
 +                              clocks = <&clks 62>, <&clks 146>;
 +                              clock-names = "ipg", "per";
                        };
  
-                       pwm@02088000 { /* PWM3 */
+                       pwm3: pwm@02088000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
                                reg = <0x02088000 0x4000>;
                                interrupts = <0 85 0x04>;
 +                              clocks = <&clks 62>, <&clks 147>;
 +                              clock-names = "ipg", "per";
                        };
  
-                       pwm@0208c000 { /* PWM4 */
+                       pwm4: pwm@0208c000 {
 +                              #pwm-cells = <2>;
 +                              compatible = "fsl,imx6q-pwm", "fsl,imx27-pwm";
                                reg = <0x0208c000 0x4000>;
                                interrupts = <0 86 0x04>;
 +                              clocks = <&clks 62>, <&clks 148>;
 +                              clock-names = "ipg", "per";
                        };
  
-                       flexcan@02090000 { /* CAN1 */
+                       can1: flexcan@02090000 {
                                reg = <0x02090000 0x4000>;
                                interrupts = <0 110 0x04>;
                        };
  
-                       flexcan@02094000 { /* CAN2 */
+                       can2: flexcan@02094000 {
                                reg = <0x02094000 0x4000>;
                                interrupts = <0 111 0x04>;
                        };
  
-                       gpt@02098000 {
+                       gpt: gpt@02098000 {
                                compatible = "fsl,imx6q-gpt";
                                reg = <0x02098000 0x4000>;
                                interrupts = <0 55 0x04>;
                                #interrupt-cells = <2>;
                        };
  
-                       kpp@020b8000 {
+                       kpp: kpp@020b8000 {
                                reg = <0x020b8000 0x4000>;
                                interrupts = <0 82 0x04>;
                        };
  
-                       wdog@020bc000 { /* WDOG1 */
+                       wdog1: wdog@020bc000 {
                                compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
                                reg = <0x020bc000 0x4000>;
                                interrupts = <0 80 0x04>;
                                clocks = <&clks 0>;
                        };
  
-                       wdog@020c0000 { /* WDOG2 */
+                       wdog2: wdog@020c0000 {
                                compatible = "fsl,imx6q-wdt", "fsl,imx21-wdt";
                                reg = <0x020c0000 0x4000>;
                                interrupts = <0 81 0x04>;
                                        anatop-max-voltage = <2750000>;
                                };
  
-                               regulator-vddcore@140 {
+                               reg_cpu: regulator-vddcore@140 {
                                        compatible = "fsl,anatop-regulator";
                                        regulator-name = "cpu";
                                        regulator-min-microvolt = <725000>;
                        };
  
                        snvs@020cc000 {
-                               reg = <0x020cc000 0x4000>;
-                               interrupts = <0 19 0x04 0 20 0x04>;
+                               compatible = "fsl,sec-v4.0-mon", "simple-bus";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0 0x020cc000 0x4000>;
+                               snvs-rtc-lp@34 {
+                                       compatible = "fsl,sec-v4.0-mon-rtc-lp";
+                                       reg = <0x34 0x58>;
+                                       interrupts = <0 19 0x04 0 20 0x04>;
+                               };
                        };
  
-                       epit@020d0000 { /* EPIT1 */
+                       epit1: epit@020d0000 { /* EPIT1 */
                                reg = <0x020d0000 0x4000>;
                                interrupts = <0 56 0x04>;
                        };
  
-                       epit@020d4000 { /* EPIT2 */
+                       epit2: epit@020d4000 { /* EPIT2 */
                                reg = <0x020d4000 0x4000>;
                                interrupts = <0 57 0x04>;
                        };
  
-                       src@020d8000 {
+                       src: src@020d8000 {
                                compatible = "fsl,imx6q-src";
                                reg = <0x020d8000 0x4000>;
                                interrupts = <0 91 0x04 0 96 0x04>;
                        };
  
-                       gpc@020dc000 {
+                       gpc: gpc@020dc000 {
                                compatible = "fsl,imx6q-gpc";
                                reg = <0x020dc000 0x4000>;
                                interrupts = <0 89 0x04 0 90 0x04>;
                                reg = <0x020e0000 0x38>;
                        };
  
-                       iomuxc@020e0000 {
+                       iomuxc: iomuxc@020e0000 {
                                compatible = "fsl,imx6q-iomuxc";
                                reg = <0x020e0000 0x4000>;
  
                                                        66  0x1b0b0     /* MX6Q_PAD_RGMII_RD2__ENET_RGMII_RD2 */
                                                        70  0x1b0b0     /* MX6Q_PAD_RGMII_RD3__ENET_RGMII_RD3 */
                                                        48  0x1b0b0     /* MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL */
 +                                                      1033 0x4001b0a8 /* MX6Q_PAD_GPIO_16__ENET_ANATOP_ETHERNET_REF_OUT*/
                                                >;
                                        };
  
                                };
                        };
  
-                       dcic@020e4000 { /* DCIC1 */
+                       dcic1: dcic@020e4000 {
                                reg = <0x020e4000 0x4000>;
                                interrupts = <0 124 0x04>;
                        };
  
-                       dcic@020e8000 { /* DCIC2 */
+                       dcic2: dcic@020e8000 {
                                reg = <0x020e8000 0x4000>;
                                interrupts = <0 125 0x04>;
                        };
  
-                       sdma@020ec000 {
+                       sdma: sdma@020ec000 {
                                compatible = "fsl,imx6q-sdma", "fsl,imx35-sdma";
                                reg = <0x020ec000 0x4000>;
                                interrupts = <0 2 0x04>;
                                reg = <0x0217c000 0x4000>;
                        };
  
-                       usb@02184000 { /* USB OTG */
+                       usbotg: usb@02184000 {
                                compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
                                reg = <0x02184000 0x200>;
                                interrupts = <0 43 0x04>;
                                status = "disabled";
                        };
  
-                       usb@02184200 { /* USB1 */
+                       usbh1: usb@02184200 {
                                compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
                                reg = <0x02184200 0x200>;
                                interrupts = <0 40 0x04>;
                                status = "disabled";
                        };
  
-                       usb@02184400 { /* USB2 */
+                       usbh2: usb@02184400 {
                                compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
                                reg = <0x02184400 0x200>;
                                interrupts = <0 41 0x04>;
                                status = "disabled";
                        };
  
-                       usb@02184600 { /* USB3 */
+                       usbh3: usb@02184600 {
                                compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
                                reg = <0x02184600 0x200>;
                                interrupts = <0 42 0x04>;
                                status = "disabled";
                        };
  
-                       usbmisc: usbmisc@02184800 {
+                       usbmisc: usbmisc: usbmisc@02184800 {
                                #index-cells = <1>;
                                compatible = "fsl,imx6q-usbmisc";
                                reg = <0x02184800 0x200>;
                                clocks = <&clks 162>;
                        };
  
-                       ethernet@02188000 {
+                       fec: ethernet@02188000 {
                                compatible = "fsl,imx6q-fec";
                                reg = <0x02188000 0x4000>;
                                interrupts = <0 118 0x04 0 119 0x04>;
 -                              clocks = <&clks 117>, <&clks 117>;
 -                              clock-names = "ipg", "ahb";
 +                              clocks = <&clks 117>, <&clks 117>, <&clks 177>;
 +                              clock-names = "ipg", "ahb", "ptp";
                                status = "disabled";
                        };
  
                                interrupts = <0 53 0x04 0 117 0x04 0 126 0x04>;
                        };
  
-                       usdhc@02190000 { /* uSDHC1 */
+                       usdhc1: usdhc@02190000 {
                                compatible = "fsl,imx6q-usdhc";
                                reg = <0x02190000 0x4000>;
                                interrupts = <0 22 0x04>;
                                clocks = <&clks 163>, <&clks 163>, <&clks 163>;
                                clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
                                status = "disabled";
                        };
  
-                       usdhc@02194000 { /* uSDHC2 */
+                       usdhc2: usdhc@02194000 {
                                compatible = "fsl,imx6q-usdhc";
                                reg = <0x02194000 0x4000>;
                                interrupts = <0 23 0x04>;
                                clocks = <&clks 164>, <&clks 164>, <&clks 164>;
                                clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
                                status = "disabled";
                        };
  
-                       usdhc@02198000 { /* uSDHC3 */
+                       usdhc3: usdhc@02198000 {
                                compatible = "fsl,imx6q-usdhc";
                                reg = <0x02198000 0x4000>;
                                interrupts = <0 24 0x04>;
                                clocks = <&clks 165>, <&clks 165>, <&clks 165>;
                                clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
                                status = "disabled";
                        };
  
-                       usdhc@0219c000 { /* uSDHC4 */
+                       usdhc4: usdhc@0219c000 {
                                compatible = "fsl,imx6q-usdhc";
                                reg = <0x0219c000 0x4000>;
                                interrupts = <0 25 0x04>;
                                clocks = <&clks 166>, <&clks 166>, <&clks 166>;
                                clock-names = "ipg", "ahb", "per";
+                               bus-width = <4>;
                                status = "disabled";
                        };
  
-                       i2c@021a0000 { /* I2C1 */
+                       i2c1: i2c@021a0000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
                                status = "disabled";
                        };
  
-                       i2c@021a4000 { /* I2C2 */
+                       i2c2: i2c@021a4000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
                                status = "disabled";
                        };
  
-                       i2c@021a8000 { /* I2C3 */
+                       i2c3: i2c@021a8000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                                compatible = "fsl,imx6q-i2c", "fsl,imx21-i2c";
                                reg = <0x021ac000 0x4000>;
                        };
  
-                       mmdc@021b0000 { /* MMDC0 */
+                       mmdc0: mmdc@021b0000 { /* MMDC0 */
                                compatible = "fsl,imx6q-mmdc";
                                reg = <0x021b0000 0x4000>;
                        };
  
-                       mmdc@021b4000 { /* MMDC1 */
+                       mmdc1: mmdc@021b4000 { /* MMDC1 */
                                reg = <0x021b4000 0x4000>;
                        };
  
                                interrupts = <0 109 0x04>;
                        };
  
-                       audmux@021d8000 {
+                       audmux: audmux@021d8000 {
                                compatible = "fsl,imx6q-audmux", "fsl,imx31-audmux";
                                reg = <0x021d8000 0x4000>;
                                status = "disabled";
                                status = "disabled";
                        };
                };
 +
 +              ipu1: ipu@02400000 {
 +                      #crtc-cells = <1>;
 +                      compatible = "fsl,imx6q-ipu";
 +                      reg = <0x02400000 0x400000>;
 +                      interrupts = <0 6 0x4 0 5 0x4>;
 +                      clocks = <&clks 130>, <&clks 131>, <&clks 132>;
 +                      clock-names = "bus", "di0", "di1";
 +              };
 +
 +              ipu2: ipu@02800000 {
 +                      #crtc-cells = <1>;
 +                      compatible = "fsl,imx6q-ipu";
 +                      reg = <0x02800000 0x400000>;
 +                      interrupts = <0 8 0x4 0 7 0x4>;
 +                      clocks = <&clks 133>, <&clks 134>, <&clks 137>;
 +                      clock-names = "bus", "di0", "di1";
 +              };
        };
  };
@@@ -14,7 -14,7 +14,7 @@@
  
  / {
        model = "Calao Systems Snowball platform with device tree";
-       compatible = "calaosystems,snowball-a9500";
+       compatible = "calaosystems,snowball-a9500", "st-ericsson,u9500";
  
        memory {
                reg = <0x00000000 0x20000000>;
                        status = "okay";
                };
  
 +              prcmu@80157000 {
 +                      thermal@801573c0 {
 +                              num-trips = <4>;
 +
 +                              trip0-temp = <70000>;
 +                              trip0-type = "active";
 +                              trip0-cdev-num = <1>;
 +                              trip0-cdev-name0 = "thermal-cpufreq-0";
 +
 +                              trip1-temp = <75000>;
 +                              trip1-type = "active";
 +                              trip1-cdev-num = <1>;
 +                              trip1-cdev-name0 = "thermal-cpufreq-0";
 +
 +                              trip2-temp = <80000>;
 +                              trip2-type = "active";
 +                              trip2-cdev-num = <1>;
 +                              trip2-cdev-name0 = "thermal-cpufreq-0";
 +
 +                              trip3-temp = <85000>;
 +                              trip3-type = "critical";
 +                              trip3-cdev-num = <0>;
 +
 +                              status = "okay";
 +                       };
 +              };
 +
                external-bus@50000000 {
                        status = "okay";
  
                };
  
                // External Micro SD slot
-               sdi@80126000 {
+               sdi0_per1@80126000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <50000000>;
-                       bus-width = <8>;
+                       bus-width = <4>;
                        mmc-cap-mmc-highspeed;
                        vmmc-supply = <&ab8500_ldo_aux3_reg>;
  
                };
  
                // On-board eMMC
-               sdi@80114000 {
+               sdi4_per2@80114000 {
                        arm,primecell-periphid = <0x10480180>;
                        max-frequency = <50000000>;
                        bus-width = <8>;
                        };
                };
  
 +              cpufreq-cooling {
 +                      status = "okay";
 +              };
++
+               prcmu@80157000 {
+                       db8500-prcmu-regulators {
+                               db8500_vape_reg: db8500_vape {
+                                       regulator-name = "db8500-vape";
+                               };
+                               db8500_varm_reg: db8500_varm {
+                                       regulator-name = "db8500-varm";
+                               };
+                               db8500_vmodem_reg: db8500_vmodem {
+                                       regulator-name = "db8500-vmodem";
+                               };
+                               db8500_vpll_reg: db8500_vpll {
+                                       regulator-name = "db8500-vpll";
+                               };
+                               db8500_vsmps1_reg: db8500_vsmps1 {
+                                       regulator-name = "db8500-vsmps1";
+                               };
+                               db8500_vsmps2_reg: db8500_vsmps2 {
+                                       regulator-name = "db8500-vsmps2";
+                               };
+                               db8500_vsmps3_reg: db8500_vsmps3 {
+                                       regulator-name = "db8500-vsmps3";
+                               };
+                               db8500_vrf1_reg: db8500_vrf1 {
+                                       regulator-name = "db8500-vrf1";
+                               };
+                               db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
+                                       regulator-name = "db8500-sva-mmdsp";
+                               };
+                               db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
+                                       regulator-name = "db8500-sva-mmdsp-ret";
+                               };
+                               db8500_sva_pipe_reg: db8500_sva_pipe {
+                                       regulator-name = "db8500_sva_pipe";
+                               };
+                               db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
+                                       regulator-name = "db8500_sia_mmdsp";
+                               };
+                               db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
+                                       regulator-name = "db8500-sia-mmdsp-ret";
+                               };
+                               db8500_sia_pipe_reg: db8500_sia_pipe {
+                                       regulator-name = "db8500-sia-pipe";
+                               };
+                               db8500_sga_reg: db8500_sga {
+                                       regulator-name = "db8500-sga";
+                               };
+                               db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
+                                       regulator-name = "db8500-b2r2-mcde";
+                               };
+                               db8500_esram12_reg: db8500_esram12 {
+                                       regulator-name = "db8500-esram12";
+                               };
+                               db8500_esram12_ret_reg: db8500_esram12_ret {
+                                       regulator-name = "db8500-esram12-ret";
+                               };
+                               db8500_esram34_reg: db8500_esram34 {
+                                       regulator-name = "db8500-esram34";
+                               };
+                               db8500_esram34_ret_reg: db8500_esram34_ret {
+                                       regulator-name = "db8500-esram34-ret";
+                               };
+                       };
+                       ab8500@5 {
+                               ab8500-regulators {
+                                       ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
+                                               regulator-name = "V-DISPLAY";
+                                       };
+                                       ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
+                                               regulator-name = "V-eMMC1";
+                                       };
+                                       ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
+                                               regulator-name = "V-MMC-SD";
+                                       };
+                                       ab8500_ldo_initcore_reg: ab8500_ldo_initcore {
+                                               regulator-name = "V-INTCORE";
+                                       };
+                                       ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
+                                               regulator-name = "V-TVOUT";
+                                       };
+                                       ab8500_ldo_usb_reg: ab8500_ldo_usb {
+                                               regulator-name = "dummy";
+                                       };
+                                       ab8500_ldo_audio_reg: ab8500_ldo_audio {
+                                               regulator-name = "V-AUD";
+                                       };
+                                       ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
+                                               regulator-name = "V-AMIC1";
+                                       };
+                                       ab8500_ldo_amamic2_reg: ab8500_ldo_amamic2 {
+                                               regulator-name = "V-AMIC2";
+                                       };
+                                       ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
+                                               regulator-name = "V-DMIC";
+                                       };
+                                       ab8500_ldo_ana_reg: ab8500_ldo_ana {
+                                               regulator-name = "V-CSI/DSI";
+                                       };
+                               };
+                       };
+               };
        };
  };
                };
  
                temperature-sensor@4c {
 -                      compatible = "nct1008";
 +                      compatible = "onnn,nct1008";
                        reg = <0x4c>;
                };
  
                magnetometer@c {
 -                      compatible = "ak8975";
 +                      compatible = "ak,ak8975";
                        reg = <0xc>;
                        interrupt-parent = <&gpio>;
                        interrupts = <109 0x04>; /* gpio PN5 */
                status = "okay";
        };
  
+       sdhci@c8000000 {
+               status = "okay";
+               power-gpios = <&gpio 86 0>; /* gpio PK6 */
+               bus-width = <4>;
+       };
        sdhci@c8000400 {
                status = "okay";
                cd-gpios = <&gpio 69 0>; /* gpio PI5 */
@@@ -69,8 -69,6 +69,8 @@@ CONFIG_GPIO_TC3589X=
  CONFIG_POWER_SUPPLY=y
  CONFIG_AB8500_BM=y
  CONFIG_AB8500_BATTERY_THERM_ON_BATCTRL=y
 +CONFIG_THERMAL=y
 +CONFIG_CPU_THERMAL=y
  CONFIG_MFD_STMPE=y
  CONFIG_MFD_TC3589X=y
  CONFIG_AB5500_CORE=y
@@@ -78,6 -76,7 +78,7 @@@ CONFIG_AB8500_CORE=
  CONFIG_REGULATOR=y
  CONFIG_REGULATOR_AB8500=y
  CONFIG_REGULATOR_FIXED_VOLTAGE=y
+ CONFIG_REGULATOR_GPIO=y
  # CONFIG_HID_SUPPORT is not set
  CONFIG_USB_GADGET=y
  CONFIG_AB8500_USB=y
@@@ -63,19 -63,11 +63,20 @@@ config SOC_EXYNOS525
        depends on ARCH_EXYNOS5
        select S5P_PM if PM
        select S5P_SLEEP if PM
+       select S5P_DEV_MFC
        select SAMSUNG_DMADEV
        help
          Enable EXYNOS5250 SoC support
  
 +config SOC_EXYNOS5440
 +      bool "SAMSUNG EXYNOS5440"
 +      default y
 +      depends on ARCH_EXYNOS5
 +      select ARM_ARCH_TIMER
 +      select AUTO_ZRELADDR
 +      help
 +        Enable EXYNOS5440 SoC support
 +
  config EXYNOS4_MCT
        bool
        default y
@@@ -107,6 -99,11 +108,6 @@@ config EXYNOS_DEV_SYSMM
        help
          Common setup code for SYSTEM MMU in EXYNOS platforms
  
 -config EXYNOS4_DEV_DWMCI
 -      bool
 -      help
 -        Compile in platform device definitions for DWMCI
 -
  config EXYNOS4_DEV_USB_OHCI
        bool
        help
@@@ -421,9 -418,9 +422,9 @@@ config MACH_EXYNOS4_D
  
  config MACH_EXYNOS5_DT
        bool "SAMSUNG EXYNOS5 Machine using device tree"
 +      default y
        depends on ARCH_EXYNOS5
        select ARM_AMBA
 -      select SOC_EXYNOS5250
        select USE_OF
        help
          Machine support for Samsung EXYNOS5 machine with device tree enabled.
@@@ -14,9 -14,9 +14,9 @@@ obj-                          :
  
  obj-$(CONFIG_ARCH_EXYNOS)     += common.o
  obj-$(CONFIG_ARCH_EXYNOS4)    += clock-exynos4.o
 -obj-$(CONFIG_ARCH_EXYNOS5)    += clock-exynos5.o
  obj-$(CONFIG_CPU_EXYNOS4210)  += clock-exynos4210.o
  obj-$(CONFIG_SOC_EXYNOS4212)  += clock-exynos4212.o
 +obj-$(CONFIG_SOC_EXYNOS5250)  += clock-exynos5.o
  
  obj-$(CONFIG_PM)              += pm.o
  obj-$(CONFIG_PM_GENERIC_DOMAINS) += pm_domains.o
@@@ -50,9 -50,9 +50,8 @@@ obj-$(CONFIG_MACH_EXYNOS5_DT)         += mach-
  obj-y                                 += dev-uart.o
  obj-$(CONFIG_ARCH_EXYNOS4)            += dev-audio.o
  obj-$(CONFIG_EXYNOS4_DEV_AHCI)                += dev-ahci.o
 -obj-$(CONFIG_EXYNOS4_DEV_DWMCI)               += dev-dwmci.o
  obj-$(CONFIG_EXYNOS_DEV_DMA)          += dma.o
  obj-$(CONFIG_EXYNOS4_DEV_USB_OHCI)    += dev-ohci.o
- obj-$(CONFIG_EXYNOS_DEV_DRM)          += dev-drm.o
  obj-$(CONFIG_EXYNOS_DEV_SYSMMU)               += dev-sysmmu.o
  
  obj-$(CONFIG_ARCH_EXYNOS)             += setup-i2c0.o
@@@ -576,6 -576,10 +576,10 @@@ static struct clk exynos4_init_clocks_o
                .enable         = exynos4_clk_ip_peril_ctrl,
                .ctrlbit        = (1 << 15),
        }, {
+               .name           = "tmu_apbif",
+               .enable         = exynos4_clk_ip_perir_ctrl,
+               .ctrlbit        = (1 << 17),
+       }, {
                .name           = "keypad",
                .enable         = exynos4_clk_ip_perir_ctrl,
                .ctrlbit        = (1 << 16),
                .ctrlbit        = (1 << 18),
        }, {
                .name           = "iis",
 -              .devname        = "samsung-i2s.0",
 -              .enable         = exynos4_clk_ip_peril_ctrl,
 -              .ctrlbit        = (1 << 19),
 -      }, {
 -              .name           = "iis",
                .devname        = "samsung-i2s.1",
                .enable         = exynos4_clk_ip_peril_ctrl,
                .ctrlbit        = (1 << 20),
@@@ -196,6 -196,11 +196,11 @@@ static int exynos5_clk_ip_isp1_ctrl(str
        return s5p_gatectrl(EXYNOS5_CLKGATE_IP_ISP1, clk, enable);
  }
  
+ static int exynos5_clk_hdmiphy_ctrl(struct clk *clk, int enable)
+ {
+       return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable);
+ }
  /* Core list of CMU_CPU side */
  
  static struct clksrc_clk exynos5_clk_mout_apll = {
@@@ -292,7 -297,7 +297,7 @@@ static struct clksrc_sources exynos5_cl
        .nr_sources     = ARRAY_SIZE(exynos5_clk_src_mpll_list),
  };
  
 -struct clksrc_clk exynos5_clk_mout_mpll = {
 +static struct clksrc_clk exynos5_clk_mout_mpll = {
        .clk = {
                .name           = "mout_mpll",
        },
@@@ -467,12 -472,12 +472,12 @@@ static struct clksrc_clk exynos5_clk_pc
  
  /* Core list of CMU_TOP side */
  
 -struct clk *exynos5_clkset_aclk_top_list[] = {
 +static struct clk *exynos5_clkset_aclk_top_list[] = {
        [0] = &exynos5_clk_mout_mpll_user.clk,
        [1] = &exynos5_clk_mout_bpll_user.clk,
  };
  
 -struct clksrc_sources exynos5_clkset_aclk = {
 +static struct clksrc_sources exynos5_clkset_aclk = {
        .sources        = exynos5_clkset_aclk_top_list,
        .nr_sources     = ARRAY_SIZE(exynos5_clkset_aclk_top_list),
  };
@@@ -486,12 -491,12 +491,12 @@@ static struct clksrc_clk exynos5_clk_ac
        .reg_div = { .reg = EXYNOS5_CLKDIV_TOP0, .shift = 24, .size = 3 },
  };
  
 -struct clk *exynos5_clkset_aclk_333_166_list[] = {
 +static struct clk *exynos5_clkset_aclk_333_166_list[] = {
        [0] = &exynos5_clk_mout_cpll.clk,
        [1] = &exynos5_clk_mout_mpll_user.clk,
  };
  
 -struct clksrc_sources exynos5_clkset_aclk_333_166 = {
 +static struct clksrc_sources exynos5_clkset_aclk_333_166 = {
        .sources        = exynos5_clkset_aclk_333_166_list,
        .nr_sources     = ARRAY_SIZE(exynos5_clkset_aclk_333_166_list),
  };
@@@ -616,6 -621,11 +621,11 @@@ static struct clk exynos5_init_clocks_o
                .enable         = exynos5_clk_ip_peric_ctrl,
                .ctrlbit        = (1 << 24),
        }, {
+               .name           = "tmu_apbif",
+               .parent         = &exynos5_clk_aclk_66.clk,
+               .enable         = exynos5_clk_ip_peris_ctrl,
+               .ctrlbit        = (1 << 21),
+       }, {
                .name           = "rtc",
                .parent         = &exynos5_clk_aclk_66.clk,
                .enable         = exynos5_clk_ip_peris_ctrl,
                .ctrlbit        = (1 << 25),
        }, {
                .name           = "mfc",
-               .devname        = "s5p-mfc",
+               .devname        = "s5p-mfc-v6",
                .enable         = exynos5_clk_ip_mfc_ctrl,
                .ctrlbit        = (1 << 0),
        }, {
                .name           = "hdmi",
-               .devname        = "exynos4-hdmi",
+               .devname        = "exynos5-hdmi",
                .enable         = exynos5_clk_ip_disp1_ctrl,
                .ctrlbit        = (1 << 6),
        }, {
+               .name           = "hdmiphy",
+               .devname        = "exynos5-hdmi",
+               .enable         = exynos5_clk_hdmiphy_ctrl,
+               .ctrlbit        = (1 << 0),
+       }, {
                .name           = "mixer",
-               .devname        = "s5p-mixer",
+               .devname        = "exynos5-mixer",
                .enable         = exynos5_clk_ip_disp1_ctrl,
                .ctrlbit        = (1 << 5),
        }, {
@@@ -966,7 -981,7 +981,7 @@@ static struct clk exynos5_clk_fimd1 = 
        .ctrlbit        = (1 << 0),
  };
  
 -struct clk *exynos5_clkset_group_list[] = {
 +static struct clk *exynos5_clkset_group_list[] = {
        [0] = &clk_ext_xtal_mux,
        [1] = NULL,
        [2] = &exynos5_clk_sclk_hdmi24m,
        [9] = &exynos5_clk_mout_cpll.clk,
  };
  
 -struct clksrc_sources exynos5_clkset_group = {
 +static struct clksrc_sources exynos5_clkset_group = {
        .sources        = exynos5_clkset_group_list,
        .nr_sources     = ARRAY_SIZE(exynos5_clkset_group_list),
  };
@@@ -1195,7 -1210,7 +1210,7 @@@ static struct clksrc_clk exynos5_clk_sc
        .reg_div = { .reg = EXYNOS5_CLKDIV_PERIC2, .shift = 8, .size = 8 },
  };
  
 -struct clksrc_clk exynos5_clk_sclk_fimd1 = {
 +static struct clksrc_clk exynos5_clk_sclk_fimd1 = {
        .clk    = {
                .name           = "sclk_fimd",
                .devname        = "exynos5-fb.1",
@@@ -1476,7 -1491,7 +1491,7 @@@ static void exynos5_clock_resume(void
  #define exynos5_clock_resume NULL
  #endif
  
 -struct syscore_ops exynos5_clock_syscore_ops = {
 +static struct syscore_ops exynos5_clock_syscore_ops = {
        .suspend        = exynos5_clock_suspend,
        .resume         = exynos5_clock_resume,
  };
@@@ -18,7 -18,6 +18,7 @@@
  #include <linux/sched.h>
  #include <linux/serial_core.h>
  #include <linux/of.h>
 +#include <linux/of_fdt.h>
  #include <linux/of_irq.h>
  #include <linux/export.h>
  #include <linux/irqdomain.h>
@@@ -59,14 -58,12 +59,14 @@@ static const char name_exynos4210[] = "
  static const char name_exynos4212[] = "EXYNOS4212";
  static const char name_exynos4412[] = "EXYNOS4412";
  static const char name_exynos5250[] = "EXYNOS5250";
 +static const char name_exynos5440[] = "EXYNOS5440";
  
  static void exynos4_map_io(void);
  static void exynos5_map_io(void);
 +static void exynos5440_map_io(void);
  static void exynos4_init_clocks(int xtal);
  static void exynos5_init_clocks(int xtal);
 -static void exynos_init_uarts(struct s3c2410_uartcfg *cfg, int no);
 +static void exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no);
  static int exynos_init(void);
  
  static struct cpu_table cpu_ids[] __initdata = {
@@@ -75,7 -72,7 +75,7 @@@
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
                .init_clocks    = exynos4_init_clocks,
 -              .init_uarts     = exynos_init_uarts,
 +              .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4210,
        }, {
@@@ -83,7 -80,7 +83,7 @@@
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
                .init_clocks    = exynos4_init_clocks,
 -              .init_uarts     = exynos_init_uarts,
 +              .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4212,
        }, {
@@@ -91,7 -88,7 +91,7 @@@
                .idmask         = EXYNOS4_CPU_MASK,
                .map_io         = exynos4_map_io,
                .init_clocks    = exynos4_init_clocks,
 -              .init_uarts     = exynos_init_uarts,
 +              .init_uarts     = exynos4_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos4412,
        }, {
                .idmask         = EXYNOS5_SOC_MASK,
                .map_io         = exynos5_map_io,
                .init_clocks    = exynos5_init_clocks,
 -              .init_uarts     = exynos_init_uarts,
                .init           = exynos_init,
                .name           = name_exynos5250,
 +      }, {
 +              .idcode         = EXYNOS5440_SOC_ID,
 +              .idmask         = EXYNOS5_SOC_MASK,
 +              .map_io         = exynos5440_map_io,
 +              .init           = exynos_init,
 +              .name           = name_exynos5440,
        },
  };
  
@@@ -121,17 -113,6 +121,17 @@@ static struct map_desc exynos_iodesc[] 
        },
  };
  
 +#ifdef CONFIG_ARCH_EXYNOS5
 +static struct map_desc exynos5440_iodesc[] __initdata = {
 +      {
 +              .virtual        = (unsigned long)S5P_VA_CHIPID,
 +              .pfn            = __phys_to_pfn(EXYNOS5440_PA_CHIPID),
 +              .length         = SZ_4K,
 +              .type           = MT_DEVICE,
 +      },
 +};
 +#endif
 +
  static struct map_desc exynos4_iodesc[] __initdata = {
        {
                .virtual        = (unsigned long)S3C_VA_SYS,
@@@ -276,18 -257,24 +276,18 @@@ static struct map_desc exynos5_iodesc[
                .length         = SZ_64K,
                .type           = MT_DEVICE,
        }, {
 -              .virtual        = (unsigned long)S5P_VA_COMBINER_BASE,
 -              .pfn            = __phys_to_pfn(EXYNOS5_PA_COMBINER),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
 -      }, {
                .virtual        = (unsigned long)S3C_VA_UART,
                .pfn            = __phys_to_pfn(EXYNOS5_PA_UART),
                .length         = SZ_512K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_GIC_CPU,
 -              .pfn            = __phys_to_pfn(EXYNOS5_PA_GIC_CPU),
 -              .length         = SZ_8K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_GIC_DIST,
 -              .pfn            = __phys_to_pfn(EXYNOS5_PA_GIC_DIST),
 -              .length         = SZ_4K,
 +      },
 +};
 +
 +static struct map_desc exynos5440_iodesc0[] __initdata = {
 +      {
 +              .virtual        = (unsigned long)S3C_VA_UART,
 +              .pfn            = __phys_to_pfn(EXYNOS5440_PA_UART0),
 +              .length         = SZ_512K,
                .type           = MT_DEVICE,
        },
  };
@@@ -299,29 -286,11 +299,29 @@@ void exynos4_restart(char mode, const c
  
  void exynos5_restart(char mode, const char *cmd)
  {
 -      __raw_writel(0x1, EXYNOS_SWRESET);
 +      u32 val;
 +      void __iomem *addr;
 +
 +      if (of_machine_is_compatible("samsung,exynos5250")) {
 +              val = 0x1;
 +              addr = EXYNOS_SWRESET;
 +      } else if (of_machine_is_compatible("samsung,exynos5440")) {
 +              val = (0x10 << 20) | (0x1 << 16);
 +              addr = EXYNOS5440_SWRESET;
 +      } else {
 +              pr_err("%s: cannot support non-DT\n", __func__);
 +              return;
 +      }
 +
 +      __raw_writel(val, addr);
  }
  
  void __init exynos_init_late(void)
  {
 +      if (of_machine_is_compatible("samsung,exynos5440"))
 +              /* to be supported later */
 +              return;
 +
        exynos_pm_late_initcall();
  }
  
  
  void __init exynos_init_io(struct map_desc *mach_desc, int size)
  {
 +      struct map_desc *iodesc = exynos_iodesc;
 +      int iodesc_sz = ARRAY_SIZE(exynos_iodesc);
 +#if defined(CONFIG_OF) && defined(CONFIG_ARCH_EXYNOS5)
 +      unsigned long root = of_get_flat_dt_root();
 +
        /* initialize the io descriptors we need for initialization */
 -      iotable_init(exynos_iodesc, ARRAY_SIZE(exynos_iodesc));
 +      if (of_flat_dt_is_compatible(root, "samsung,exynos5440")) {
 +              iodesc = exynos5440_iodesc;
 +              iodesc_sz = ARRAY_SIZE(exynos5440_iodesc);
 +      }
 +#endif
 +
 +      iotable_init(iodesc, iodesc_sz);
 +
        if (mach_desc)
                iotable_init(mach_desc, size);
  
@@@ -397,6 -354,23 +397,6 @@@ static void __init exynos4_map_io(void
  static void __init exynos5_map_io(void)
  {
        iotable_init(exynos5_iodesc, ARRAY_SIZE(exynos5_iodesc));
 -
 -      s3c_device_i2c0.resource[0].start = EXYNOS5_PA_IIC(0);
 -      s3c_device_i2c0.resource[0].end   = EXYNOS5_PA_IIC(0) + SZ_4K - 1;
 -      s3c_device_i2c0.resource[1].start = EXYNOS5_IRQ_IIC;
 -      s3c_device_i2c0.resource[1].end   = EXYNOS5_IRQ_IIC;
 -
 -      s3c_sdhci_setname(0, "exynos4-sdhci");
 -      s3c_sdhci_setname(1, "exynos4-sdhci");
 -      s3c_sdhci_setname(2, "exynos4-sdhci");
 -      s3c_sdhci_setname(3, "exynos4-sdhci");
 -
 -      /* The I2C bus controllers are directly compatible with s3c2440 */
 -      s3c_i2c0_setname("s3c2440-i2c");
 -      s3c_i2c1_setname("s3c2440-i2c");
 -      s3c_i2c2_setname("s3c2440-i2c");
 -
 -      s3c64xx_spi_setname("exynos4210-spi");
  }
  
  static void __init exynos4_init_clocks(int xtal)
        exynos4_setup_clocks();
  }
  
 +static void __init exynos5440_map_io(void)
 +{
 +      iotable_init(exynos5440_iodesc0, ARRAY_SIZE(exynos5440_iodesc0));
 +}
 +
  static void __init exynos5_init_clocks(int xtal)
  {
        printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
@@@ -620,8 -589,7 +620,8 @@@ static void __init combiner_init(void _
  }
  
  #ifdef CONFIG_OF
 -int __init combiner_of_init(struct device_node *np, struct device_node *parent)
 +static int __init combiner_of_init(struct device_node *np,
 +                                 struct device_node *parent)
  {
        void __iomem *combiner_base;
  
        return 0;
  }
  
 -static const struct of_device_id exynos4_dt_irq_match[] = {
 +static const struct of_device_id exynos_dt_irq_match[] = {
        { .compatible = "arm,cortex-a9-gic", .data = gic_of_init, },
 +      { .compatible = "arm,cortex-a15-gic", .data = gic_of_init, },
        { .compatible = "samsung,exynos4210-combiner",
                        .data = combiner_of_init, },
        {},
@@@ -655,7 -622,7 +655,7 @@@ void __init exynos4_init_irq(void
                gic_init_bases(0, IRQ_PPI(0), S5P_VA_GIC_DIST, S5P_VA_GIC_CPU, gic_bank_offset, NULL);
  #ifdef CONFIG_OF
        else
 -              of_irq_init(exynos4_dt_irq_match);
 +              of_irq_init(exynos_dt_irq_match);
  #endif
  
        if (!of_have_populated_dt())
  void __init exynos5_init_irq(void)
  {
  #ifdef CONFIG_OF
 -      of_irq_init(exynos4_dt_irq_match);
 +      of_irq_init(exynos_dt_irq_match);
  #endif
        /*
         * The parameters of s5p_init_irq() are for VIC init.
@@@ -702,7 -669,7 +702,7 @@@ static int __init exynos4_l2x0_cache_in
  {
        int ret;
  
 -      if (soc_is_exynos5250())
 +      if (soc_is_exynos5250() || soc_is_exynos5440())
                return 0;
  
        ret = l2x0_of_init(L2_AUX_VAL, L2_AUX_MASK);
@@@ -760,7 -727,7 +760,7 @@@ static int __init exynos_init(void
  
  /* uart registration process */
  
 -static void __init exynos_init_uarts(struct s3c2410_uartcfg *cfg, int no)
 +static void __init exynos4_init_uarts(struct s3c2410_uartcfg *cfg, int no)
  {
        struct s3c2410_uartcfg *tcfg = cfg;
        u32 ucnt;
        for (ucnt = 0; ucnt < no; ucnt++, tcfg++)
                tcfg->has_fracval = 1;
  
 -      if (soc_is_exynos5250())
 -              s3c24xx_init_uartdevs("exynos4210-uart", exynos5_uart_resources, cfg, no);
 -      else
 -              s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
 +      s3c24xx_init_uartdevs("exynos4210-uart", exynos4_uart_resources, cfg, no);
  }
  
  static void __iomem *exynos_eint_base;
@@@ -1000,7 -970,14 +1000,7 @@@ static void exynos_irq_eint0_15(unsigne
        struct irq_chip *chip = irq_get_chip(irq);
  
        chained_irq_enter(chip, desc);
 -      chip->irq_mask(&desc->irq_data);
 -
 -      if (chip->irq_ack)
 -              chip->irq_ack(&desc->irq_data);
 -
        generic_handle_irq(*irq_data);
 -
 -      chip->irq_unmask(&desc->irq_data);
        chained_irq_exit(chip, desc);
  }
  
@@@ -1020,11 -997,14 +1020,14 @@@ static int __init exynos_init_irq_eint(
         * platforms switch over to using the pinctrl driver, the wakeup
         * interrupt support code here can be completely removed.
         */
+       static const struct of_device_id exynos_pinctrl_ids[] = {
+               { .compatible = "samsung,pinctrl-exynos4210", },
+               { .compatible = "samsung,pinctrl-exynos4x12", },
+       };
        struct device_node *pctrl_np, *wkup_np;
-       const char *pctrl_compat = "samsung,pinctrl-exynos4210";
        const char *wkup_compat = "samsung,exynos4210-wakeup-eint";
  
-       for_each_compatible_node(pctrl_np, NULL, pctrl_compat) {
+       for_each_matching_node(pctrl_np, exynos_pinctrl_ids) {
                if (of_device_is_available(pctrl_np)) {
                        wkup_np = of_find_compatible_node(pctrl_np, NULL,
                                                        wkup_compat);
                }
        }
  #endif
 +      if (soc_is_exynos5440())
 +              return 0;
  
        if (soc_is_exynos5250())
                exynos_eint_base = ioremap(EXYNOS5_PA_GPIO1, SZ_4K);
  #define EXYNOS4_IRQ_TSI                       IRQ_SPI(115)
  #define EXYNOS4_IRQ_SATA              IRQ_SPI(116)
  
+ #define EXYNOS4_IRQ_TMU_TRIG0         COMBINER_IRQ(2, 4)
+ #define EXYNOS4_IRQ_TMU_TRIG1         COMBINER_IRQ(3, 4)
  #define EXYNOS4_IRQ_SYSMMU_MDMA0_0    COMBINER_IRQ(4, 0)
  #define EXYNOS4_IRQ_SYSMMU_SSS_0      COMBINER_IRQ(4, 1)
  #define EXYNOS4_IRQ_SYSMMU_FIMC0_0    COMBINER_IRQ(4, 2)
  #define EXYNOS5_IRQ_IEM_IEC           IRQ_SPI(48)
  #define EXYNOS5_IRQ_IEM_APC           IRQ_SPI(49)
  #define EXYNOS5_IRQ_GPIO_C2C          IRQ_SPI(50)
 -#define EXYNOS5_IRQ_UART0             IRQ_SPI(51)
 -#define EXYNOS5_IRQ_UART1             IRQ_SPI(52)
 -#define EXYNOS5_IRQ_UART2             IRQ_SPI(53)
 -#define EXYNOS5_IRQ_UART3             IRQ_SPI(54)
 -#define EXYNOS5_IRQ_UART4             IRQ_SPI(55)
  #define EXYNOS5_IRQ_IIC                       IRQ_SPI(56)
  #define EXYNOS5_IRQ_IIC1              IRQ_SPI(57)
  #define EXYNOS5_IRQ_IIC2              IRQ_SPI(58)
  #define EXYNOS5_IRQ_FIMC_LITE1                IRQ_SPI(126)
  #define EXYNOS5_IRQ_RP_TIMER          IRQ_SPI(127)
  
 +/* EXYNOS5440 */
 +
 +#define EXYNOS5440_IRQ_UART0          IRQ_SPI(2)
 +#define EXYNOS5440_IRQ_UART1          IRQ_SPI(3)
 +
  #define EXYNOS5_IRQ_PMU                       COMBINER_IRQ(1, 2)
  
  #define EXYNOS5_IRQ_SYSMMU_GSC0_0     COMBINER_IRQ(2, 0)
@@@ -53,7 -53,6 +53,7 @@@
  #define EXYNOS4_PA_ONENAND_DMA                0x0C600000
  
  #define EXYNOS_PA_CHIPID              0x10000000
 +#define EXYNOS5440_PA_CHIPID          0x00160000
  
  #define EXYNOS4_PA_SYSCON             0x10010000
  #define EXYNOS5_PA_SYSCON             0x10050100
  #define EXYNOS4_PA_TWD                        0x10500600
  #define EXYNOS4_PA_L2CC                       0x10502000
  
+ #define EXYNOS4_PA_TMU                        0x100C0000
  #define EXYNOS4_PA_MDMA0              0x10810000
  #define EXYNOS4_PA_MDMA1              0x12850000
 +#define EXYNOS4_PA_S_MDMA1            0x12840000
  #define EXYNOS4_PA_PDMA0              0x12680000
  #define EXYNOS4_PA_PDMA1              0x12690000
  #define EXYNOS5_PA_MDMA0              0x10800000
  #define EXYNOS5_PA_UART1              0x12C10000
  #define EXYNOS5_PA_UART2              0x12C20000
  #define EXYNOS5_PA_UART3              0x12C30000
 -#define EXYNOS5_SZ_UART                       SZ_256
 +
 +#define EXYNOS5440_PA_UART0           0x000B0000
 +#define EXYNOS5440_PA_UART1           0x000C0000
 +#define EXYNOS5440_SZ_UART            SZ_256
  
  #define S3C_VA_UARTx(x)                       (S3C_VA_UART + ((x) * S3C_UART_OFFSET))
  
@@@ -77,7 -77,8 +77,9 @@@ static const struct of_dev_auxdata exyn
                                "exynos4210-spi.2", NULL),
        OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA0, "dma-pl330.0", NULL),
        OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_PDMA1, "dma-pl330.1", NULL),
 +      OF_DEV_AUXDATA("arm,pl330", EXYNOS4_PA_MDMA1, "dma-pl330.2", NULL),
+       OF_DEV_AUXDATA("samsung,exynos4210-tmu", EXYNOS4_PA_TMU,
+                               "exynos-tmu", NULL),
        {},
  };
  
@@@ -95,6 -96,8 +97,8 @@@ static void __init exynos4_dt_machine_i
  
  static char const *exynos4_dt_compat[] __initdata = {
        "samsung,exynos4210",
+       "samsung,exynos4212",
+       "samsung,exynos4412",
        NULL
  };
  
  */
  
  #include <linux/of_platform.h>
 +#include <linux/of_fdt.h>
  #include <linux/serial_core.h>
+ #include <linux/memblock.h>
+ #include <linux/of_fdt.h>
  
  #include <asm/mach/arch.h>
  #include <asm/hardware/gic.h>
@@@ -19,6 -20,7 +21,7 @@@
  
  #include <plat/cpu.h>
  #include <plat/regs-serial.h>
+ #include <plat/mfc.h>
  
  #include "common.h"
  
@@@ -48,6 -50,20 +51,20 @@@ static const struct of_dev_auxdata exyn
                                "s3c2440-i2c.0", NULL),
        OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(1),
                                "s3c2440-i2c.1", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(2),
+                               "s3c2440-i2c.2", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(3),
+                               "s3c2440-i2c.3", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(4),
+                               "s3c2440-i2c.4", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(5),
+                               "s3c2440-i2c.5", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(6),
+                               "s3c2440-i2c.6", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-i2c", EXYNOS5_PA_IIC(7),
+                               "s3c2440-i2c.7", NULL),
+       OF_DEV_AUXDATA("samsung,s3c2440-hdmiphy-i2c", EXYNOS5_PA_IIC(8),
+                               "s3c2440-hdmiphy-i2c", NULL),
        OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI0,
                                "dw_mmc.0", NULL),
        OF_DEV_AUXDATA("samsung,exynos5250-dw-mshc", EXYNOS5_PA_DWMCI1,
                                "exynos4210-spi.1", NULL),
        OF_DEV_AUXDATA("samsung,exynos4210-spi", EXYNOS5_PA_SPI2,
                                "exynos4210-spi.2", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5-sata-ahci", 0x122F0000,
+                               "exynos5-sata", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5-sata-phy", 0x12170000,
+                               "exynos5-sata-phy", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5-sata-phy-i2c", 0x121D0000,
+                               "exynos5-sata-phy-i2c", NULL),
        OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA0, "dma-pl330.0", NULL),
        OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_PDMA1, "dma-pl330.1", NULL),
        OF_DEV_AUXDATA("arm,pl330", EXYNOS5_PA_MDMA1, "dma-pl330.2", NULL),
                                "exynos-gsc.2", NULL),
        OF_DEV_AUXDATA("samsung,exynos5-gsc", EXYNOS5_PA_GSC3,
                                "exynos-gsc.3", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5-hdmi", 0x14530000,
+                               "exynos5-hdmi", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5-mixer", 0x14450000,
+                               "exynos5-mixer", NULL),
+       OF_DEV_AUXDATA("samsung,mfc-v6", 0x11000000, "s5p-mfc-v6", NULL),
+       OF_DEV_AUXDATA("samsung,exynos5250-tmu", 0x10060000,
+                               "exynos-tmu", NULL),
        {},
  };
  
 -static void __init exynos5250_dt_map_io(void)
 +static const struct of_dev_auxdata exynos5440_auxdata_lookup[] __initconst = {
 +      OF_DEV_AUXDATA("samsung,exynos4210-uart", EXYNOS5440_PA_UART0,
 +                              "exynos4210-uart.0", NULL),
 +      {},
 +};
 +
 +static void __init exynos5_dt_map_io(void)
  {
 +      unsigned long root = of_get_flat_dt_root();
 +
        exynos_init_io(NULL, 0);
 -      s3c24xx_init_clocks(24000000);
 +
 +      if (of_flat_dt_is_compatible(root, "samsung,exynos5250"))
 +              s3c24xx_init_clocks(24000000);
  }
  
 -static void __init exynos5250_dt_machine_init(void)
 +static void __init exynos5_dt_machine_init(void)
  {
 -      of_platform_populate(NULL, of_default_bus_match_table,
 -                              exynos5250_auxdata_lookup, NULL);
 +      if (of_machine_is_compatible("samsung,exynos5250"))
 +              of_platform_populate(NULL, of_default_bus_match_table,
 +                                   exynos5250_auxdata_lookup, NULL);
 +      else if (of_machine_is_compatible("samsung,exynos5440"))
 +              of_platform_populate(NULL, of_default_bus_match_table,
 +                                   exynos5440_auxdata_lookup, NULL);
  }
  
 -static char const *exynos5250_dt_compat[] __initdata = {
 +static char const *exynos5_dt_compat[] __initdata = {
        "samsung,exynos5250",
 +      "samsung,exynos5440",
        NULL
  };
  
+ static void __init exynos5_reserve(void)
+ {
+       struct s5p_mfc_dt_meminfo mfc_mem;
+       /* Reserve memory for MFC only if it's available */
+       mfc_mem.compatible = "samsung,mfc-v6";
+       if (of_scan_flat_dt(s5p_fdt_find_mfc_mem, &mfc_mem))
+               s5p_mfc_reserve_mem(mfc_mem.roff, mfc_mem.rsize, mfc_mem.loff,
+                               mfc_mem.lsize);
+ }
  DT_MACHINE_START(EXYNOS5_DT, "SAMSUNG EXYNOS5 (Flattened Device Tree)")
        /* Maintainer: Kukjin Kim <kgene.kim@samsung.com> */
        .init_irq       = exynos5_init_irq,
        .smp            = smp_ops(exynos_smp_ops),
 -      .map_io         = exynos5250_dt_map_io,
 +      .map_io         = exynos5_dt_map_io,
        .handle_irq     = gic_handle_irq,
 -      .init_machine   = exynos5250_dt_machine_init,
 +      .init_machine   = exynos5_dt_machine_init,
        .init_late      = exynos_init_late,
        .timer          = &exynos4_timer,
 -      .dt_compat      = exynos5250_dt_compat,
 +      .dt_compat      = exynos5_dt_compat,
        .restart        = exynos5_restart,
+       .reserve        = exynos5_reserve,
  MACHINE_END
  #include <linux/mmc/host.h>
  #include <linux/fb.h>
  #include <linux/pwm_backlight.h>
 +#include <linux/platform_data/i2c-s3c2410.h>
 +#include <linux/platform_data/mipi-csis.h>
  #include <linux/platform_data/s3c-hsotg.h>
 +#include <linux/platform_data/usb-ehci-s5p.h>
  #include <drm/exynos_drm.h>
  
  #include <video/platform_lcd.h>
  #include <plat/devs.h>
  #include <plat/fb.h>
  #include <plat/sdhci.h>
 -#include <linux/platform_data/usb-ehci-s5p.h>
  #include <plat/clock.h>
  #include <plat/gpio-cfg.h>
 -#include <linux/platform_data/i2c-s3c2410.h>
  #include <plat/mfc.h>
  #include <plat/fimc-core.h>
  #include <plat/camport.h>
 -#include <linux/platform_data/mipi-csis.h>
  
  #include <mach/map.h>
  
@@@ -113,6 -113,7 +113,6 @@@ static struct s3c_sdhci_platdata nuri_h
        .host_caps              = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA |
                                MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
                                MMC_CAP_ERASE),
 -      .host_caps2             = MMC_CAP2_BROKEN_VOLTAGE,
        .cd_type                = S3C_SDHCI_CD_PERMANENT,
  };
  
@@@ -1326,9 -1327,6 +1326,6 @@@ static struct platform_device *nuri_dev
        &cam_vdda_fixed_rdev,
        &cam_8m_12v_fixed_rdev,
        &exynos4_bus_devfreq,
- #ifdef CONFIG_DRM_EXYNOS
-       &exynos_device_drm,
- #endif
  };
  
  static void __init nuri_map_io(void)
  #include <linux/mfd/max8997.h>
  #include <linux/lcd.h>
  #include <linux/rfkill-gpio.h>
 +#include <linux/platform_data/i2c-s3c2410.h>
  #include <linux/platform_data/s3c-hsotg.h>
 +#include <linux/platform_data/usb-ehci-s5p.h>
 +#include <linux/platform_data/usb-exynos.h>
  
  #include <asm/mach/arch.h>
  #include <asm/hardware/gic.h>
@@@ -39,6 -36,8 +39,6 @@@
  #include <plat/cpu.h>
  #include <plat/devs.h>
  #include <plat/sdhci.h>
 -#include <linux/platform_data/i2c-s3c2410.h>
 -#include <linux/platform_data/usb-ehci-s5p.h>
  #include <plat/clock.h>
  #include <plat/gpio-cfg.h>
  #include <plat/backlight.h>
@@@ -46,6 -45,7 +46,6 @@@
  #include <plat/mfc.h>
  #include <plat/hdmi.h>
  
 -#include <linux/platform_data/usb-exynos.h>
  #include <mach/map.h>
  
  #include <drm/exynos_drm.h>
@@@ -100,7 -100,6 +100,7 @@@ static struct regulator_consumer_suppl
        REGULATOR_SUPPLY("vddcore", "s5p-mipi-csis.0"), /* MIPI */
        REGULATOR_SUPPLY("vdd", "exynos4-hdmi"), /* HDMI */
        REGULATOR_SUPPLY("vdd_pll", "exynos4-hdmi"), /* HDMI */
 +      REGULATOR_SUPPLY("vusb_a", "s3c-hsotg"), /* OTG */
  };
  static struct regulator_consumer_supply __initdata ldo6_consumer[] = {
        REGULATOR_SUPPLY("vddio", "s5p-mipi-csis.0"), /* MIPI */
@@@ -111,7 -110,6 +111,7 @@@ static struct regulator_consumer_suppl
  static struct regulator_consumer_supply __initdata ldo8_consumer[] = {
        REGULATOR_SUPPLY("vdd", "s5p-adc"), /* ADC */
        REGULATOR_SUPPLY("vdd_osc", "exynos4-hdmi"), /* HDMI */
 +      REGULATOR_SUPPLY("vusb_d", "s3c-hsotg"), /* OTG */
  };
  static struct regulator_consumer_supply __initdata ldo9_consumer[] = {
        REGULATOR_SUPPLY("dvdd", "swb-a31"), /* AR6003 WLAN & CSR 8810 BT */
@@@ -711,9 -709,6 +711,6 @@@ static struct platform_device *origen_d
        &s5p_device_mfc_l,
        &s5p_device_mfc_r,
        &s5p_device_mixer,
- #ifdef CONFIG_DRM_EXYNOS
-       &exynos_device_drm,
- #endif
        &exynos4_device_ohci,
        &origen_device_gpiokeys,
        &origen_lcd_hv070wsa,
@@@ -21,7 -21,6 +21,7 @@@
  #include <linux/pwm_backlight.h>
  #include <linux/regulator/machine.h>
  #include <linux/serial_core.h>
 +#include <linux/platform_data/i2c-s3c2410.h>
  #include <linux/platform_data/s3c-hsotg.h>
  
  #include <asm/mach/arch.h>
@@@ -35,6 -34,7 +35,6 @@@
  #include <plat/devs.h>
  #include <plat/fb.h>
  #include <plat/gpio-cfg.h>
 -#include <linux/platform_data/i2c-s3c2410.h>
  #include <plat/keypad.h>
  #include <plat/mfc.h>
  #include <plat/regs-serial.h>
@@@ -317,9 -317,6 +317,6 @@@ static struct platform_device *smdk4x12
        &s5p_device_mfc,
        &s5p_device_mfc_l,
        &s5p_device_mfc_r,
- #ifdef CONFIG_DRM_EXYNOS
-       &exynos_device_drm,
- #endif
        &samsung_device_keypad,
  };
  
  #include <linux/input.h>
  #include <linux/pwm.h>
  #include <linux/pwm_backlight.h>
 +#include <linux/platform_data/i2c-s3c2410.h>
  #include <linux/platform_data/s3c-hsotg.h>
 +#include <linux/platform_data/usb-ehci-s5p.h>
 +#include <linux/platform_data/usb-exynos.h>
  
  #include <asm/mach/arch.h>
  #include <asm/hardware/gic.h>
  #include <plat/fb.h>
  #include <plat/keypad.h>
  #include <plat/sdhci.h>
 -#include <linux/platform_data/i2c-s3c2410.h>
  #include <plat/gpio-cfg.h>
  #include <plat/backlight.h>
  #include <plat/mfc.h>
 -#include <linux/platform_data/usb-ehci-s5p.h>
  #include <plat/clock.h>
  #include <plat/hdmi.h>
  
  #include <mach/map.h>
 -#include <linux/platform_data/usb-exynos.h>
  
  #include <drm/exynos_drm.h>
  #include "common.h"
@@@ -300,9 -300,6 +300,6 @@@ static struct platform_device *smdkv310
        &s5p_device_fimc_md,
        &s5p_device_g2d,
        &s5p_device_jpeg,
- #ifdef CONFIG_DRM_EXYNOS
-       &exynos_device_drm,
- #endif
        &exynos4_device_ac97,
        &exynos4_device_i2s0,
        &exynos4_device_ohci,
@@@ -23,8 -23,6 +23,8 @@@
  #include <linux/i2c-gpio.h>
  #include <linux/i2c/mcs.h>
  #include <linux/i2c/atmel_mxt_ts.h>
 +#include <linux/platform_data/i2c-s3c2410.h>
 +#include <linux/platform_data/mipi-csis.h>
  #include <linux/platform_data/s3c-hsotg.h>
  #include <drm/exynos_drm.h>
  
@@@ -37,6 -35,7 +37,6 @@@
  #include <plat/clock.h>
  #include <plat/cpu.h>
  #include <plat/devs.h>
 -#include <linux/platform_data/i2c-s3c2410.h>
  #include <plat/gpio-cfg.h>
  #include <plat/fb.h>
  #include <plat/mfc.h>
@@@ -44,6 -43,7 +44,6 @@@
  #include <plat/fimc-core.h>
  #include <plat/s5p-time.h>
  #include <plat/camport.h>
 -#include <linux/platform_data/mipi-csis.h>
  
  #include <mach/map.h>
  
@@@ -754,6 -754,7 +754,6 @@@ static struct s3c_sdhci_platdata univer
        .max_width              = 8,
        .host_caps              = (MMC_CAP_8_BIT_DATA | MMC_CAP_4_BIT_DATA |
                                MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED),
 -      .host_caps2             = MMC_CAP2_BROKEN_VOLTAGE,
        .cd_type                = S3C_SDHCI_CD_PERMANENT,
  };
  
@@@ -1080,9 -1081,6 +1080,6 @@@ static struct platform_device *universa
        &s5p_device_onenand,
        &s5p_device_fimd0,
        &s5p_device_jpeg,
- #ifdef CONFIG_DRM_EXYNOS
-       &exynos_device_drm,
- #endif
        &s3c_device_usb_hsotg,
        &s5p_device_mfc,
        &s5p_device_mfc_l,
@@@ -272,6 -272,13 +272,13 @@@ config MACH_EUKREA_MBIMXSD25_BASEBOAR
  
  endchoice
  
+ config MACH_IMX25_DT
+       bool "Support i.MX25 platforms from device tree"
+       select SOC_IMX25
+       help
+         Include support for Freescale i.MX25 based platforms
+         using the device tree for discovery
  comment "MX27 platforms:"
  
  config MACH_MX27ADS
@@@ -394,7 -401,6 +401,7 @@@ config MACH_IMX27_VISSTRIM_M1
        select IMX_HAVE_PLATFORM_IMX_SSI
        select IMX_HAVE_PLATFORM_IMX_UART
        select IMX_HAVE_PLATFORM_MX2_CAMERA
 +      select IMX_HAVE_PLATFORM_MX2_EMMA
        select IMX_HAVE_PLATFORM_MXC_EHCI
        select IMX_HAVE_PLATFORM_MXC_MMC
        select LEDS_GPIO_REGISTER
@@@ -821,7 -827,6 +828,7 @@@ config     SOC_IMX5
        select ARCH_MX5
        select ARCH_MX53
        select HAVE_CAN_FLEXCAN if CAN
 +      select IMX_HAVE_PLATFORM_IMX2_WDT
        select PINCTRL
        select PINCTRL_IMX53
        select SOC_IMX5
  
  config SOC_IMX6Q
        bool "i.MX6 Quad support"
+       select ARCH_HAS_CPUFREQ
+       select ARCH_HAS_OPP
        select ARM_CPU_SUSPEND if PM
+       select ARM_ERRATA_743622
+       select ARM_ERRATA_751472
+       select ARM_ERRATA_754322
+       select ARM_ERRATA_764369 if SMP
+       select ARM_ERRATA_775420
        select ARM_GIC
        select COMMON_CLK
        select CPU_V7
        select MFD_SYSCON
        select PINCTRL
        select PINCTRL_IMX6Q
+       select PL310_ERRATA_588369 if CACHE_PL310
+       select PL310_ERRATA_727915 if CACHE_PL310
+       select PL310_ERRATA_769419 if CACHE_PL310
+       select PM_OPP if PM
  
        help
          This enables support for Freescale i.MX6 Quad processor.
@@@ -105,7 -105,7 +105,7 @@@ static const char *gpu2d_core_sels[]       = 
  static const char *gpu3d_core_sels[]  = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd2_396m", };
  static const char *gpu3d_shader_sels[] = { "mmdc_ch0_axi", "pll3_usb_otg", "pll2_pfd1_594m", "pll2_pfd9_720m", };
  static const char *ipu_sels[]         = { "mmdc_ch0_axi", "pll2_pfd2_396m", "pll3_120m", "pll3_pfd1_540m", };
 -static const char *ldb_di_sels[]      = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", };
 +static const char *ldb_di_sels[]      = { "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "mmdc_ch1_axi", "pll3_pfd1_540m", };
  static const char *ipu_di_pre_sels[]  = { "mmdc_ch0_axi", "pll3_usb_otg", "pll5_video", "pll2_pfd0_352m", "pll2_pfd2_396m", "pll3_pfd1_540m", };
  static const char *ipu1_di0_sels[]    = { "ipu1_di0_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
  static const char *ipu1_di1_sels[]    = { "ipu1_di1_pre", "dummy", "dummy", "ldb_di0", "ldb_di1", };
@@@ -152,9 -152,8 +152,9 @@@ enum mx6q_clks 
        gpmi_bch_apb, gpmi_bch, gpmi_io, gpmi_apb, sata, sdma, spba, ssi1,
        ssi2, ssi3, uart_ipg, uart_serial, usboh3, usdhc1, usdhc2, usdhc3,
        usdhc4, vdo_axi, vpu_axi, cko1, pll1_sys, pll2_bus, pll3_usb_otg,
 -      pll4_audio, pll5_video, pll6_mlb, pll7_usb_host, pll8_enet, ssi1_ipg,
 +      pll4_audio, pll5_video, pll8_mlb, pll7_usb_host, pll6_enet, ssi1_ipg,
        ssi2_ipg, ssi3_ipg, rom, usbphy1, usbphy2, ldb_di0_div_3_5, ldb_di1_div_3_5,
 +      sata_ref, sata_ref_100m, pcie_ref, pcie_ref_125m, enet_ref,
        clk_max
  };
  
@@@ -165,13 -164,6 +165,13 @@@ static enum mx6q_clks const clks_init_o
        mmdc_ch0_axi, rom,
  };
  
 +static struct clk_div_table clk_enet_ref_table[] = {
 +      { .val = 0, .div = 20, },
 +      { .val = 1, .div = 10, },
 +      { .val = 2, .div = 5, },
 +      { .val = 3, .div = 4, },
 +};
 +
  int __init mx6q_clocks_init(void)
  {
        struct device_node *np;
        base = of_iomap(np, 0);
        WARN_ON(!base);
  
 -      /*                   type                               name         parent_name  base     gate_mask div_mask */
 -      clk[pll1_sys]      = imx_clk_pllv3(IMX_PLLV3_SYS,       "pll1_sys",     "osc", base,        0x2000,   0x7f);
 -      clk[pll2_bus]      = imx_clk_pllv3(IMX_PLLV3_GENERIC,   "pll2_bus",     "osc", base + 0x30, 0x2000,   0x1);
 -      clk[pll3_usb_otg]  = imx_clk_pllv3(IMX_PLLV3_USB,       "pll3_usb_otg", "osc", base + 0x10, 0x2000,   0x3);
 -      clk[pll4_audio]    = imx_clk_pllv3(IMX_PLLV3_AV,        "pll4_audio",   "osc", base + 0x70, 0x2000,   0x7f);
 -      clk[pll5_video]    = imx_clk_pllv3(IMX_PLLV3_AV,        "pll5_video",   "osc", base + 0xa0, 0x2000,   0x7f);
 -      clk[pll6_mlb]      = imx_clk_pllv3(IMX_PLLV3_MLB,       "pll6_mlb",     "osc", base + 0xd0, 0x2000,   0x0);
 -      clk[pll7_usb_host] = imx_clk_pllv3(IMX_PLLV3_USB,       "pll7_usb_host","osc", base + 0x20, 0x2000,   0x3);
 -      clk[pll8_enet]     = imx_clk_pllv3(IMX_PLLV3_ENET,      "pll8_enet",    "osc", base + 0xe0, 0x182000, 0x3);
 +      /*                   type                               name         parent_name  base     div_mask */
 +      clk[pll1_sys]      = imx_clk_pllv3(IMX_PLLV3_SYS,       "pll1_sys",     "osc", base,        0x7f);
 +      clk[pll2_bus]      = imx_clk_pllv3(IMX_PLLV3_GENERIC,   "pll2_bus",     "osc", base + 0x30, 0x1);
 +      clk[pll3_usb_otg]  = imx_clk_pllv3(IMX_PLLV3_USB,       "pll3_usb_otg", "osc", base + 0x10, 0x3);
 +      clk[pll4_audio]    = imx_clk_pllv3(IMX_PLLV3_AV,        "pll4_audio",   "osc", base + 0x70, 0x7f);
 +      clk[pll5_video]    = imx_clk_pllv3(IMX_PLLV3_AV,        "pll5_video",   "osc", base + 0xa0, 0x7f);
 +      clk[pll6_enet]     = imx_clk_pllv3(IMX_PLLV3_ENET,      "pll6_enet",    "osc", base + 0xe0, 0x3);
 +      clk[pll7_usb_host] = imx_clk_pllv3(IMX_PLLV3_USB,       "pll7_usb_host","osc", base + 0x20, 0x3);
 +      clk[pll8_mlb]      = imx_clk_pllv3(IMX_PLLV3_MLB,       "pll8_mlb",     "osc", base + 0xd0, 0x0);
  
        clk[usbphy1] = imx_clk_gate("usbphy1", "pll3_usb_otg", base + 0x10, 6);
        clk[usbphy2] = imx_clk_gate("usbphy2", "pll7_usb_host", base + 0x20, 6);
  
 +      clk[sata_ref] = imx_clk_fixed_factor("sata_ref", "pll6_enet", 1, 5);
 +      clk[pcie_ref] = imx_clk_fixed_factor("pcie_ref", "pll6_enet", 1, 4);
 +
 +      clk[sata_ref_100m] = imx_clk_gate("sata_ref_100m", "sata_ref", base + 0xe0, 20);
 +      clk[pcie_ref_125m] = imx_clk_gate("pcie_ref_125m", "pcie_ref", base + 0xe0, 19);
 +
 +      clk[enet_ref] = clk_register_divider_table(NULL, "enet_ref", "pll6_enet", 0,
 +                      base + 0xe0, 0, 2, 0, clk_enet_ref_table,
 +                      &imx_ccm_lock);
 +
        /*                                name              parent_name        reg       idx */
        clk[pll2_pfd0_352m] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus",     base + 0x100, 0);
        clk[pll2_pfd1_594m] = imx_clk_pfd("pll2_pfd1_594m", "pll2_bus",     base + 0x100, 1);
        clk[ldb_di1]      = imx_clk_gate2("ldb_di1",       "ldb_di1_podf",      base + 0x74, 14);
        clk[ipu2_di1]     = imx_clk_gate2("ipu2_di1",      "ipu2_di1_sel",      base + 0x74, 10);
        clk[hsi_tx]       = imx_clk_gate2("hsi_tx",        "hsi_tx_podf",       base + 0x74, 16);
 -      clk[mlb]          = imx_clk_gate2("mlb",           "pll6_mlb",          base + 0x74, 18);
 +      clk[mlb]          = imx_clk_gate2("mlb",           "pll8_mlb",          base + 0x74, 18);
        clk[mmdc_ch0_axi] = imx_clk_gate2("mmdc_ch0_axi",  "mmdc_ch0_axi_podf", base + 0x74, 20);
        clk[mmdc_ch1_axi] = imx_clk_gate2("mmdc_ch1_axi",  "mmdc_ch1_axi_podf", base + 0x74, 22);
        clk[ocram]        = imx_clk_gate2("ocram",         "ahb",               base + 0x74, 28);
        clk_register_clkdev(clk[cko1_sel], "cko1_sel", NULL);
        clk_register_clkdev(clk[ahb], "ahb", NULL);
        clk_register_clkdev(clk[cko1], "cko1", NULL);
+       clk_register_clkdev(clk[arm], NULL, "cpu0");
  
        /*
         * The gpmi needs 100MHz frequency in the EDO/Sync mode,
  #include "cpuidle.h"
  #include "hardware.h"
  
+ #define IMX6Q_ANALOG_DIGPROG  0x260
+ static int imx6q_revision(void)
+ {
+       struct device_node *np;
+       void __iomem *base;
+       static u32 rev;
+       if (!rev) {
+               np = of_find_compatible_node(NULL, NULL, "fsl,imx6q-anatop");
+               if (!np)
+                       return IMX_CHIP_REVISION_UNKNOWN;
+               base = of_iomap(np, 0);
+               if (!base) {
+                       of_node_put(np);
+                       return IMX_CHIP_REVISION_UNKNOWN;
+               }
+               rev =  readl_relaxed(base + IMX6Q_ANALOG_DIGPROG);
+               iounmap(base);
+               of_node_put(np);
+       }
+       switch (rev & 0xff) {
+       case 0:
+               return IMX_CHIP_REVISION_1_0;
+       case 1:
+               return IMX_CHIP_REVISION_1_1;
+       case 2:
+               return IMX_CHIP_REVISION_1_2;
+       default:
+               return IMX_CHIP_REVISION_UNKNOWN;
+       }
+ }
  void imx6q_restart(char mode, const char *cmd)
  {
        struct device_node *np;
@@@ -117,17 -151,6 +151,17 @@@ static void __init imx6q_sabrelite_init
        imx6q_sabrelite_cko1_setup();
  }
  
 +static void __init imx6q_1588_init(void)
 +{
 +      struct regmap *gpr;
 +
 +      gpr = syscon_regmap_lookup_by_compatible("fsl,imx6q-iomuxc-gpr");
 +      if (!IS_ERR(gpr))
 +              regmap_update_bits(gpr, 0x4, 1 << 21, 1 << 21);
 +      else
 +              pr_err("failed to find fsl,imx6q-iomux-gpr regmap\n");
 +
 +}
  static void __init imx6q_usb_init(void)
  {
        struct regmap *anatop;
@@@ -164,7 -187,6 +198,7 @@@ static void __init imx6q_init_machine(v
  
        imx6q_pm_init();
        imx6q_usb_init();
 +      imx6q_1588_init();
  }
  
  static struct cpuidle_driver imx6q_cpuidle_driver = {
@@@ -204,6 -226,7 +238,7 @@@ static void __init imx6q_timer_init(voi
  {
        mx6q_clocks_init();
        twd_local_timer_of_register();
+       imx_print_silicon_rev("i.MX6Q", imx6q_revision());
  }
  
  static struct sys_timer imx6q_timer = {
@@@ -7,8 -7,9 +7,8 @@@
  #include <linux/platform_device.h>
  #include <linux/init.h>
  #include <linux/gpio.h>
 +#include <linux/platform_data/pinctrl-nomadik.h>
  
 -#include <plat/gpio-nomadik.h>
 -#include <plat/pincfg.h>
  #include <plat/ste_dma40.h>
  
  #include <mach/devices.h>
@@@ -149,15 -150,6 +149,6 @@@ static struct platform_device snd_soc_m
        },
  };
  
- /* Platform device for Ux500-PCM */
- static struct platform_device ux500_pcm = {
-               .name = "ux500-pcm",
-               .id = 0,
-               .dev = {
-                       .platform_data = NULL,
-               },
- };
  struct msp_i2s_platform_data msp2_platform_data = {
        .id = MSP_I2S_2,
        .msp_i2s_dma_rx = &msp2_dma_rx,
@@@ -185,10 -177,3 +176,3 @@@ void mop500_audio_init(struct device *p
        db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
                           &msp3_platform_data);
  }
- /* Due for removal once the MSP driver has been fully DT:ed. */
- void mop500_of_audio_init(struct device *parent)
- {
-       pr_info("%s: Register platform-device 'ux500-pcm'\n", __func__);
-       platform_device_register(&ux500_pcm);
- }
@@@ -1,5 -1,6 +1,5 @@@
 -
  /*
 - * Copyright (C) 2008-2009 ST-Ericsson
 + * Copyright (C) 2008-2012 ST-Ericsson
   *
   * Author: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
   *
@@@ -15,7 -16,6 +15,7 @@@
  #include <linux/io.h>
  #include <linux/i2c.h>
  #include <linux/platform_data/i2c-nomadik.h>
 +#include <linux/platform_data/db8500_thermal.h>
  #include <linux/gpio.h>
  #include <linux/amba/bus.h>
  #include <linux/amba/pl022.h>
  #include <linux/smsc911x.h>
  #include <linux/gpio_keys.h>
  #include <linux/delay.h>
- #include <linux/of.h>
- #include <linux/of_platform.h>
  #include <linux/leds.h>
  #include <linux/pinctrl/consumer.h>
 +#include <linux/platform_data/pinctrl-nomadik.h>
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/hardware/gic.h>
  
  #include <plat/ste_dma40.h>
 -#include <plat/gpio-nomadik.h>
  
  #include <mach/hardware.h>
  #include <mach/setup.h>
@@@ -229,67 -227,6 +227,67 @@@ static struct ab8500_platform_data ab85
  };
  
  /*
 + * Thermal Sensor
 + */
 +
 +static struct resource db8500_thsens_resources[] = {
 +      {
 +              .name = "IRQ_HOTMON_LOW",
 +              .start  = IRQ_PRCMU_HOTMON_LOW,
 +              .end    = IRQ_PRCMU_HOTMON_LOW,
 +              .flags  = IORESOURCE_IRQ,
 +      },
 +      {
 +              .name = "IRQ_HOTMON_HIGH",
 +              .start  = IRQ_PRCMU_HOTMON_HIGH,
 +              .end    = IRQ_PRCMU_HOTMON_HIGH,
 +              .flags  = IORESOURCE_IRQ,
 +      },
 +};
 +
 +static struct db8500_thsens_platform_data db8500_thsens_data = {
 +      .trip_points[0] = {
 +              .temp = 70000,
 +              .type = THERMAL_TRIP_ACTIVE,
 +              .cdev_name = {
 +                      [0] = "thermal-cpufreq-0",
 +              },
 +      },
 +      .trip_points[1] = {
 +              .temp = 75000,
 +              .type = THERMAL_TRIP_ACTIVE,
 +              .cdev_name = {
 +                      [0] = "thermal-cpufreq-0",
 +              },
 +      },
 +      .trip_points[2] = {
 +              .temp = 80000,
 +              .type = THERMAL_TRIP_ACTIVE,
 +              .cdev_name = {
 +                      [0] = "thermal-cpufreq-0",
 +              },
 +      },
 +      .trip_points[3] = {
 +              .temp = 85000,
 +              .type = THERMAL_TRIP_CRITICAL,
 +      },
 +      .num_trips = 4,
 +};
 +
 +static struct platform_device u8500_thsens_device = {
 +      .name           = "db8500-thermal",
 +      .resource       = db8500_thsens_resources,
 +      .num_resources  = ARRAY_SIZE(db8500_thsens_resources),
 +      .dev    = {
 +              .platform_data  = &db8500_thsens_data,
 +      },
 +};
 +
 +static struct platform_device u8500_cpufreq_cooling_device = {
 +      .name           = "db8500-cpufreq-cooling",
 +};
 +
 +/*
   * TPS61052
   */
  
@@@ -525,7 -462,7 +523,7 @@@ static struct stedma40_chan_cfg ssp0_dm
  };
  #endif
  
- static struct pl022_ssp_controller ssp0_plat = {
+ struct pl022_ssp_controller ssp0_plat = {
        .bus_id = 0,
  #ifdef CONFIG_STE_DMA40
        .enable_dma = 1,
@@@ -602,7 -539,7 +600,7 @@@ static struct stedma40_chan_cfg uart2_d
  };
  #endif
  
- static struct amba_pl011_data uart0_plat = {
+ struct amba_pl011_data uart0_plat = {
  #ifdef CONFIG_STE_DMA40
        .dma_filter = stedma40_filter,
        .dma_rx_param = &uart0_dma_cfg_rx,
  #endif
  };
  
- static struct amba_pl011_data uart1_plat = {
+ struct amba_pl011_data uart1_plat = {
  #ifdef CONFIG_STE_DMA40
        .dma_filter = stedma40_filter,
        .dma_rx_param = &uart1_dma_cfg_rx,
  #endif
  };
  
- static struct amba_pl011_data uart2_plat = {
+ struct amba_pl011_data uart2_plat = {
  #ifdef CONFIG_STE_DMA40
        .dma_filter = stedma40_filter,
        .dma_rx_param = &uart2_dma_cfg_rx,
@@@ -644,8 -581,6 +642,8 @@@ static struct platform_device *snowball
        &snowball_key_dev,
        &snowball_sbnet_dev,
        &snowball_gpio_en_3v3_regulator_dev,
 +      &u8500_thsens_device,
 +      &u8500_cpufreq_cooling_device,
  };
  
  static void __init mop500_init_machine(void)
  
        /* This board has full regulator constraints */
        regulator_has_full_constraints();
-       mop500_uib_init();
  }
  
  static void __init snowball_init_machine(void)
@@@ -747,8 -680,6 +743,6 @@@ static void __init hrefv60_init_machine
  
        /* This board has full regulator constraints */
        regulator_has_full_constraints();
-       mop500_uib_init();
  }
  
  MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
        .init_late      = ux500_init_late,
  MACHINE_END
  
 +MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520")
 +      .atag_offset    = 0x100,
 +      .map_io         = u8500_map_io,
 +      .init_irq       = ux500_init_irq,
 +      .timer          = &ux500_timer,
 +      .handle_irq     = gic_handle_irq,
 +      .init_machine   = mop500_init_machine,
 +      .init_late      = ux500_init_late,
 +MACHINE_END
 +
  MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
        .atag_offset    = 0x100,
        .smp            = smp_ops(ux500_smp_ops),
@@@ -794,135 -715,5 +788,5 @@@ MACHINE_START(SNOWBALL, "Calao Systems 
        .timer          = &ux500_timer,
        .handle_irq     = gic_handle_irq,
        .init_machine   = snowball_init_machine,
-       .init_late      = ux500_init_late,
- MACHINE_END
- #ifdef CONFIG_MACH_UX500_DT
- struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
-       /* Requires call-back bindings. */
-       OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
-       /* Requires DMA and call-back bindings. */
-       OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat),
-       OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat),
-       OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat),
-       /* Requires DMA bindings. */
-       OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0",  &ssp0_plat),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0",  &mop500_sdi0_data),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1",  &mop500_sdi1_data),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2",  &mop500_sdi2_data),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4",  &mop500_sdi4_data),
-       /* Requires clock name bindings. */
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
-       /* Requires device name bindings. */
-       OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
-       /* Requires clock name and DMA bindings. */
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
-               "ux500-msp-i2s.0", &msp0_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
-               "ux500-msp-i2s.1", &msp1_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
-               "ux500-msp-i2s.2", &msp2_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
-               "ux500-msp-i2s.3", &msp3_platform_data),
-       {},
- };
- static const struct of_device_id u8500_local_bus_nodes[] = {
-       /* only create devices below soc node */
-       { .compatible = "stericsson,db8500", },
-       { .compatible = "stericsson,db8500-prcmu", },
-       { .compatible = "simple-bus"},
-       { },
- };
- static void __init u8500_init_machine(void)
- {
-       struct device *parent = NULL;
-       int i2c0_devs;
-       int i;
-       /* Pinmaps must be in place before devices register */
-       if (of_machine_is_compatible("st-ericsson,mop500"))
-               mop500_pinmaps_init();
-       else if (of_machine_is_compatible("calaosystems,snowball-a9500"))
-               snowball_pinmaps_init();
-       else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
-               hrefv60_pinmaps_init();
-       parent = u8500_of_init_devices();
-       for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
-               mop500_platform_devs[i]->dev.parent = parent;
-       /* automatically probe child nodes of db8500 device */
-       of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
-       if (of_machine_is_compatible("st-ericsson,mop500")) {
-               mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
-               platform_add_devices(mop500_platform_devs,
-                               ARRAY_SIZE(mop500_platform_devs));
-               mop500_sdi_init(parent);
-               mop500_audio_init(parent);
-               i2c0_devs = ARRAY_SIZE(mop500_i2c0_devices);
-               i2c_register_board_info(0, mop500_i2c0_devices, i2c0_devs);
-               i2c_register_board_info(2, mop500_i2c2_devices,
-                                       ARRAY_SIZE(mop500_i2c2_devices));
-               mop500_uib_init();
-       } else if (of_machine_is_compatible("calaosystems,snowball-a9500")) {
-               mop500_of_audio_init(parent);
-       } else if (of_machine_is_compatible("st-ericsson,hrefv60+")) {
-               /*
-                * The HREFv60 board removed a GPIO expander and routed
-                * all these GPIO pins to the internal GPIO controller
-                * instead.
-                */
-               mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
-               platform_add_devices(mop500_platform_devs,
-                               ARRAY_SIZE(mop500_platform_devs));
-               mop500_uib_init();
-       }
-       /* This board has full regulator constraints */
-       regulator_has_full_constraints();
- }
- static const char * u8500_dt_board_compat[] = {
-       "calaosystems,snowball-a9500",
-       "st-ericsson,hrefv60+",
-       "st-ericsson,u8500",
-       "st-ericsson,mop500",
-       NULL,
- };
- DT_MACHINE_START(U8500_DT, "ST-Ericsson U8500 platform (Device Tree Support)")
-       .smp            = smp_ops(ux500_smp_ops),
-       .map_io         = u8500_map_io,
-       .init_irq       = ux500_init_irq,
-       /* we re-use nomadik timer here */
-       .timer          = &ux500_timer,
-       .handle_irq     = gic_handle_irq,
-       .init_machine   = u8500_init_machine,
-       .init_late      = ux500_init_late,
-       .dt_compat      = u8500_dt_board_compat,
+       .init_late      = NULL,
  MACHINE_END
- #endif
  #include <linux/platform_device.h>
  #include <linux/io.h>
  #include <linux/mfd/abx500/ab8500.h>
- #include <linux/platform_data/usb-musb-ux500.h>
- #include <linux/platform_data/pinctrl-nomadik.h>
+ #include <linux/mfd/dbx500-prcmu.h>
+ #include <linux/of.h>
+ #include <linux/of_platform.h>
+ #include <linux/regulator/machine.h>
 +#include <linux/random.h>
  
  #include <asm/pmu.h>
  #include <asm/mach/map.h>
 -#include <plat/gpio-nomadik.h>
+ #include <asm/mach/arch.h>
+ #include <asm/hardware/gic.h>
  #include <mach/hardware.h>
  #include <mach/setup.h>
  #include <mach/devices.h>
 -#include <linux/platform_data/usb-musb-ux500.h>
  #include <mach/db8500-regs.h>
  
  #include "devices-db8500.h"
  #include "ste-dma40-db8500.h"
+ #include "board-mop500.h"
  
  /* minimum static i/o mapping required to boot U8500 platforms */
  static struct map_desc u8500_uart_io_desc[] __initdata = {
@@@ -159,7 -165,7 +164,7 @@@ static void __init db8500_add_gpios(str
  
        dbx500_add_gpios(parent, ARRAY_AND_SIZE(db8500_gpio_base),
                         IRQ_DB8500_GPIO0, &pdata);
 -      dbx500_add_pinctrl(parent, "pinctrl-db8500");
 +      dbx500_add_pinctrl(parent, "pinctrl-db8500", U8500_PRCMU_BASE);
  }
  
  static int usb_db8500_rx_dma_cfg[] = {
@@@ -188,8 -194,6 +193,8 @@@ static const char *db8500_read_soc_id(v
  {
        void __iomem *uid = __io_address(U8500_BB_UID_BASE);
  
 +      /* Throw these device-specific numbers into the entropy pool */
 +      add_device_randomness(uid, 0x14);
        return kasprintf(GFP_KERNEL, "%08x%08x%08x%08x%08x",
                         readl((u32 *)uid+1),
                         readl((u32 *)uid+1), readl((u32 *)uid+2),
@@@ -217,6 -221,9 +222,6 @@@ struct device * __init u8500_init_devic
        db8500_add_gpios(parent);
        db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
  
 -      platform_device_register_data(parent,
 -              "cpufreq-ux500", -1, NULL, 0);
 -
        for (i = 0; i < ARRAY_SIZE(platform_devs); i++)
                platform_devs[i]->dev.parent = parent;
  
        return parent;
  }
  
+ #ifdef CONFIG_MACH_UX500_DT
  /* TODO: Once all pieces are DT:ed, remove completely. */
- struct device * __init u8500_of_init_devices(void)
+ static struct device * __init u8500_of_init_devices(void)
  {
-       struct device *parent;
-       parent = db8500_soc_device_init();
+       struct device *parent = db8500_soc_device_init();
  
        db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg);
  
 -      platform_device_register_data(parent,
 -              "cpufreq-ux500", -1, NULL, 0);
 -
        u8500_dma40_device.dev.parent = parent;
  
        /*
  
        return parent;
  }
+ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
+       /* Requires call-back bindings. */
+       OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
+       /* Requires DMA bindings. */
+       OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat),
+       OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat),
+       OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat),
+       OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0",  &ssp0_plat),
+       OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0",  &mop500_sdi0_data),
+       OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1",  &mop500_sdi1_data),
+       OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2",  &mop500_sdi2_data),
+       OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4",  &mop500_sdi4_data),
+       /* Requires clock name bindings. */
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
+       OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
+       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
+       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
+       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
+       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
+       OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
+       /* Requires device name bindings. */
+       OF_DEV_AUXDATA("stericsson,nmk_pinctrl", 0, "pinctrl-db8500", NULL),
+       /* Requires clock name and DMA bindings. */
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
+               "ux500-msp-i2s.0", &msp0_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
+               "ux500-msp-i2s.1", &msp1_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
+               "ux500-msp-i2s.2", &msp2_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
+               "ux500-msp-i2s.3", &msp3_platform_data),
+       {},
+ };
+ static const struct of_device_id u8500_local_bus_nodes[] = {
+       /* only create devices below soc node */
+       { .compatible = "stericsson,db8500", },
+       { .compatible = "stericsson,db8500-prcmu", },
+       { .compatible = "simple-bus"},
+       { },
+ };
+ static void __init u8500_init_machine(void)
+ {
+       struct device *parent = NULL;
+       /* Pinmaps must be in place before devices register */
+       if (of_machine_is_compatible("st-ericsson,mop500"))
+               mop500_pinmaps_init();
+       else if (of_machine_is_compatible("calaosystems,snowball-a9500"))
+               snowball_pinmaps_init();
+       else if (of_machine_is_compatible("st-ericsson,hrefv60+"))
+               hrefv60_pinmaps_init();
+       else if (of_machine_is_compatible("st-ericsson,ccu9540")) {}
+               /* TODO: Add pinmaps for ccu9540 board. */
+       /* TODO: Export SoC, USB, cpu-freq and DMA40 */
+       parent = u8500_of_init_devices();
+       /* automatically probe child nodes of db8500 device */
+       of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
+ }
+ static const char * stericsson_dt_platform_compat[] = {
+       "st-ericsson,u8500",
+       "st-ericsson,u8540",
+       "st-ericsson,u9500",
+       "st-ericsson,u9540",
+       NULL,
+ };
+ DT_MACHINE_START(U8500_DT, "ST-Ericsson Ux5x0 platform (Device Tree Support)")
+       .smp            = smp_ops(ux500_smp_ops),
+       .map_io         = u8500_map_io,
+       .init_irq       = ux500_init_irq,
+       /* we re-use nomadik timer here */
+       .timer          = &ux500_timer,
+       .handle_irq     = gic_handle_irq,
+       .init_machine   = u8500_init_machine,
+       .init_late      = NULL,
+       .dt_compat      = stericsson_dt_platform_compat,
+ MACHINE_END
+ #endif
@@@ -486,7 -486,11 +486,7 @@@ static struct resource s3c_i2c0_resourc
  
  struct platform_device s3c_device_i2c0 = {
        .name           = "s3c2410-i2c",
 -#ifdef CONFIG_S3C_DEV_I2C1
        .id             = 0,
 -#else
 -      .id             = -1,
 -#endif
        .num_resources  = ARRAY_SIZE(s3c_i2c0_resource),
        .resource       = s3c_i2c0_resource,
  };
@@@ -929,6 -933,7 +929,7 @@@ struct platform_device s5p_device_mfc_
                .coherent_dma_mask      = DMA_BIT_MASK(32),
        },
  };
  #endif /* CONFIG_S5P_DEV_MFC */
  
  /* MIPI CSIS */
@@@ -123,6 -123,7 +123,6 @@@ extern struct platform_device s5pv210_d
  
  extern struct platform_device exynos4_device_ac97;
  extern struct platform_device exynos4_device_ahci;
 -extern struct platform_device exynos4_device_dwmci;
  extern struct platform_device exynos4_device_i2s0;
  extern struct platform_device exynos4_device_i2s1;
  extern struct platform_device exynos4_device_i2s2;
@@@ -132,8 -133,6 +132,6 @@@ extern struct platform_device exynos4_d
  extern struct platform_device exynos4_device_pcm2;
  extern struct platform_device exynos4_device_spdif;
  
- extern struct platform_device exynos_device_drm;
  extern struct platform_device samsung_asoc_dma;
  extern struct platform_device samsung_asoc_idma;
  extern struct platform_device samsung_device_keypad;
diff --combined drivers/clk/Makefile
@@@ -19,9 -19,8 +19,10 @@@ endi
  obj-$(CONFIG_MACH_LOONGSON1)  += clk-ls1x.o
  obj-$(CONFIG_ARCH_U8500)      += ux500/
  obj-$(CONFIG_ARCH_VT8500)     += clk-vt8500.o
 +obj-$(CONFIG_ARCH_SUNXI)      += clk-sunxi.o
+ obj-$(CONFIG_ARCH_ZYNQ)               += clk-zynq.o
  
  # Chip specific
  obj-$(CONFIG_COMMON_CLK_WM831X) += clk-wm831x.o
  obj-$(CONFIG_COMMON_CLK_MAX77686) += clk-max77686.o
 +obj-$(CONFIG_CLK_TWL6040)     += clk-twl6040.o
diff --combined drivers/gpio/Kconfig
@@@ -49,10 -49,6 +49,10 @@@ config OF_GPI
        def_bool y
        depends on OF
  
 +config GPIO_ACPI
 +      def_bool y
 +      depends on ACPI
 +
  config DEBUG_GPIO
        bool "Debug GPIO calls"
        depends on DEBUG_KERNEL
@@@ -90,26 -86,11 +90,26 @@@ config GPIO_DA905
        help
          Say yes here to enable the GPIO driver for the DA9052 chip.
  
 +config GPIO_DA9055
 +      tristate "Dialog Semiconductor DA9055 GPIO"
 +      depends on MFD_DA9055
 +      help
 +        Say yes here to enable the GPIO driver for the DA9055 chip.
 +
 +        The Dialog DA9055 PMIC chip has 3 GPIO pins that can be
 +        be controller by this driver.
 +
 +        If driver is built as a module it will be called gpio-da9055.
 +
  config GPIO_MAX730X
        tristate
  
  comment "Memory mapped GPIO drivers:"
  
 +config GPIO_CLPS711X
 +      def_bool y
 +      depends on ARCH_CLPS711X
 +
  config GPIO_GENERIC_PLATFORM
        tristate "Generic memory-mapped GPIO controller support (MMIO platform device)"
        select GPIO_GENERIC
@@@ -171,7 -152,7 +171,7 @@@ config GPIO_MSM_V
  
  config GPIO_MVEBU
        def_bool y
-       depends on ARCH_MVEBU
+       depends on PLAT_ORION
        select GPIO_GENERIC
        select GENERIC_IRQ_CHIP
  
@@@ -189,7 -170,7 +189,7 @@@ config GPIO_MX
  
  config GPIO_PL061
        bool "PrimeCell PL061 GPIO support"
 -      depends on ARM_AMBA
 +      depends on ARM && ARM_AMBA
        select GENERIC_IRQ_CHIP
        help
          Say yes here to support the PrimeCell PL061 GPIO device
@@@ -200,13 -181,6 +200,13 @@@ config GPIO_PX
        help
          Say yes here to support the PXA GPIO device
  
 +config GPIO_SPEAR_SPICS
 +      bool "ST SPEAr13xx SPI Chip Select as GPIO support"
 +      depends on PLAT_SPEAR
 +      select GENERIC_IRQ_CHIP
 +      help
 +        Say yes here to support ST SPEAr SPI Chip Select as GPIO device
 +
  config GPIO_STA2X11
        bool "STA2x11/ConneXt GPIO support"
        depends on MFD_STA2X11
          Say yes here to support the STA2x11/ConneXt GPIO device.
          The GPIO module has 128 GPIO pins with alternate functions.
  
 +config GPIO_TS5500
 +      tristate "TS-5500 DIO blocks and compatibles"
 +      help
 +        This driver supports Digital I/O exposed by pin blocks found on some
 +        Technologic Systems platforms. It includes, but is not limited to, 3
 +        blocks of the TS-5500: DIO1, DIO2 and the LCD port, and the TS-5600
 +        LCD port.
 +
  config GPIO_VT8500
        bool "VIA/Wondermedia SoC GPIO Support"
        depends on ARCH_VT8500
@@@ -500,7 -466,7 +500,7 @@@ config GPIO_ADP5588_IR
  
  config GPIO_ADNP
        tristate "Avionic Design N-bit GPIO expander"
 -      depends on I2C && OF
 +      depends on I2C && OF_GPIO
        help
          This option enables support for N GPIOs found on Avionic Design
          I2C GPIO expanders. The register space will be extended by powers
@@@ -14,6 -14,9 +14,9 @@@
  #include <linux/mbus.h>
  #include <linux/clk.h>
  #include <linux/platform_data/usb-ehci-orion.h>
+ #include <linux/of.h>
+ #include <linux/of_device.h>
+ #include <linux/of_irq.h>
  
  #define rdl(off)      __raw_readl(hcd->regs + (off))
  #define wrl(off, val) __raw_writel((val), hcd->regs + (off))
@@@ -101,6 -104,20 +104,6 @@@ static void orion_usb_phy_v1_setup(stru
        wrl(USB_MODE, 0x13);
  }
  
 -static int ehci_orion_setup(struct usb_hcd *hcd)
 -{
 -      struct ehci_hcd *ehci = hcd_to_ehci(hcd);
 -      int retval;
 -
 -      retval = ehci_setup(hcd);
 -      if (retval)
 -              return retval;
 -
 -      ehci_port_power(ehci, 0);
 -
 -      return retval;
 -}
 -
  static const struct hc_driver ehci_orion_hc_driver = {
        .description = hcd_name,
        .product_desc = "Marvell Orion EHCI",
        /*
         * basic lifecycle operations
         */
 -      .reset = ehci_orion_setup,
 +      .reset = ehci_setup,
        .start = ehci_run,
        .stop = ehci_stop,
        .shutdown = ehci_shutdown,
        .clear_tt_buffer_complete = ehci_clear_tt_buffer_complete,
  };
  
 -static void __devinit
 +static void
  ehci_orion_conf_mbus_windows(struct usb_hcd *hcd,
                             const struct mbus_dram_target_info *dram)
  {
        }
  }
  
 -static int __devinit ehci_orion_drv_probe(struct platform_device *pdev)
+ static u64 ehci_orion_dma_mask = DMA_BIT_MASK(32);
 +static int ehci_orion_drv_probe(struct platform_device *pdev)
  {
        struct orion_ehci_data *pd = pdev->dev.platform_data;
        const struct mbus_dram_target_info *dram;
        struct clk *clk;
        void __iomem *regs;
        int irq, err;
+       enum orion_ehci_phy_ver phy_version;
  
        if (usb_disabled())
                return -ENODEV;
  
        pr_debug("Initializing Orion-SoC USB Host Controller\n");
  
-       irq = platform_get_irq(pdev, 0);
+       if (pdev->dev.of_node)
+               irq = irq_of_parse_and_map(pdev->dev.of_node, 0);
+       else
+               irq = platform_get_irq(pdev, 0);
        if (irq <= 0) {
                dev_err(&pdev->dev,
                        "Found HC with no IRQ. Check %s setup!\n",
                goto err1;
        }
  
+       /*
+        * Right now device-tree probed devices don't get dma_mask
+        * set. Since shared usb code relies on it, set it here for
+        * now. Once we have dma capability bindings this can go away.
+        */
+       if (!pdev->dev.dma_mask)
+               pdev->dev.dma_mask = &ehci_orion_dma_mask;
        if (!request_mem_region(res->start, resource_size(res),
                                ehci_orion_hc_driver.description)) {
                dev_dbg(&pdev->dev, "controller already in use\n");
        /*
         * setup Orion USB controller.
         */
-       switch (pd->phy_version) {
+       if (pdev->dev.of_node)
+               phy_version = EHCI_PHY_NA;
+       else
+               phy_version = pd->phy_version;
+       switch (phy_version) {
        case EHCI_PHY_NA:       /* dont change USB phy settings */
                break;
        case EHCI_PHY_ORION:
@@@ -303,9 -339,19 +325,19 @@@ static int __exit ehci_orion_drv_remove
  
  MODULE_ALIAS("platform:orion-ehci");
  
+ static const struct of_device_id ehci_orion_dt_ids[] __devinitdata = {
+       { .compatible = "marvell,orion-ehci", },
+       {},
+ };
+ MODULE_DEVICE_TABLE(of, ehci_orion_dt_ids);
  static struct platform_driver ehci_orion_driver = {
        .probe          = ehci_orion_drv_probe,
        .remove         = __exit_p(ehci_orion_drv_remove),
        .shutdown       = usb_hcd_platform_shutdown,
-       .driver.name    = "orion-ehci",
+       .driver = {
+               .name   = "orion-ehci",
+               .owner  = THIS_MODULE,
+               .of_match_table = of_match_ptr(ehci_orion_dt_ids),
+       },
  };