]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 24 Jan 2014 02:40:49 +0000 (18:40 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 24 Jan 2014 02:40:49 +0000 (18:40 -0800)
Pull ARM SoC platform changes from Olof Johansson:
 "New core SoC-specific changes.

  New platforms:
   * Introduction of a vendor, Hisilicon, and one of their SoCs with
     some random numerical product name.
   * Introduction of EFM32, embedded platform from Silicon Labs (ARMv7m,
     i.e. !MMU).
   * Marvell Berlin series of SoCs, which include the one in Chromecast.
   * MOXA platform support, ARM9-based platform used mostly in
     industrial products
   * Support for Freescale's i.MX50 SoC.

  Other work:
   * Renesas work for new platforms and drivers, and conversion over to
     more multiplatform-friendly device registration schemes.
   * SMP support for Allwinner sunxi platforms.
   * ... plus a bunch of other stuff across various platforms"

* tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (201 commits)
  ARM: tegra: fix tegra_powergate_sequence_power_up() inline
  ARM: msm_defconfig: Update for multi-platform
  ARM: msm: Move MSM's DT based hardware to multi-platform support
  ARM: msm: Only build timer.c if required
  ARM: msm: Only build clock.c on proc_comm based platforms
  ARM: ux500: Enable system suspend with WFI support
  ARM: ux500: turn on PRINTK_TIME in u8500_defconfig
  ARM: shmobile: r8a7790: Fix I2C controller names
  ARM: msm: Simplify ARCH_MSM_DT config
  ARM: msm: Add support for MSM8974 SoC
  ARM: sunxi: select ARM_PSCI
  MAINTAINERS: Update Allwinner sunXi maintainer files
  ARM: sunxi: Select RESET_CONTROLLER
  ARM: imx: improve the comment of CCM lpm SW workaround
  ARM: imx: improve status check of clock gate
  ARM: imx: add necessary interface for pfd
  ARM: imx_v6_v7_defconfig: Select CONFIG_REGULATOR_PFUZE100
  ARM: imx_v6_v7_defconfig: Select MX35 and MX50 device tree support
  ARM: imx: Add cpu frequency scaling support
  ARM i.MX35: Add devicetree support.
  ...

23 files changed:
1  2 
MAINTAINERS
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/Makefile
arch/arm/boot/compressed/Makefile
arch/arm/boot/dts/Makefile
arch/arm/configs/bcm_defconfig
arch/arm/mach-at91/Kconfig
arch/arm/mach-at91/setup.c
arch/arm/mach-imx/Kconfig
arch/arm/mach-ixp4xx/common.c
arch/arm/mach-pxa/time.c
arch/arm/mach-shmobile/board-bockw.c
arch/arm/mach-shmobile/clock-r7s72100.c
arch/arm/mach-shmobile/clock-r8a7790.c
arch/arm/mach-shmobile/clock-sh73a0.c
arch/arm/mach-shmobile/setup-r8a7779.c
arch/arm/mach-shmobile/setup-r8a7790.c
arch/arm/mach-shmobile/setup-sh73a0.c
arch/arm/mach-sunxi/Kconfig
arch/arm/mach-u300/timer.c
arch/arm/plat-orion/time.c
drivers/clocksource/Makefile

diff --combined MAINTAINERS
index 0e13d692b176dbe768faf17ba9bd3bc92fc2e756,b6d1afbf99201909a8dc58215fdad80823e62165..64a783fb793193a319d10dddb0ebb1a151e8afa1
@@@ -484,6 -484,7 +484,6 @@@ M: Hannes Reinecke <hare@suse.de
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
  F:    drivers/scsi/aic7xxx/
 -F:    drivers/scsi/aic7xxx_old/
  
  AIMSLAB FM RADIO RECEIVER DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
@@@ -538,13 -539,6 +538,13 @@@ F:       drivers/tty/serial/altera_jtaguart.
  F:    include/linux/altera_uart.h
  F:    include/linux/altera_jtaguart.h
  
 +AMD CRYPTOGRAPHIC COPROCESSOR (CCP) DRIVER
 +M:    Tom Lendacky <thomas.lendacky@amd.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Supported
 +F:    drivers/crypto/ccp/
 +F:    include/linux/ccp.h
 +
  AMD FAM15H PROCESSOR POWER MONITORING DRIVER
  M:    Andreas Herrmann <herrmann.der.user@googlemail.com>
  L:    lm-sensors@lm-sensors.org
@@@ -772,7 -766,12 +772,12 @@@ ARM/Allwinner A1X SoC suppor
  M:    Maxime Ripard <maxime.ripard@free-electrons.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
- F:    arch/arm/mach-sunxi/
+ N:    sun[x4567]i
+ ARM/Allwinner SoC Clock Support
+ M:    Emilio López <emilio@elopez.com.ar>
+ S:    Maintained
+ F:    drivers/clk/sunxi/
  
  ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES
  M:    Andrew Victor <linux@maxim.org.za>
@@@ -789,7 -788,7 +794,7 @@@ F: arch/arm/boot/dts/sama*.dt
  F:    arch/arm/boot/dts/sama*.dtsi
  
  ARM/CALXEDA HIGHBANK ARCHITECTURE
 -M:    Rob Herring <rob.herring@calxeda.com>
 +M:    Rob Herring <robh@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-highbank/
@@@ -873,6 -872,12 +878,12 @@@ S:       Maintaine
  F:    arch/arm/mach-ebsa110/
  F:    drivers/net/ethernet/amd/am79c961a.*
  
+ ARM/ENERGY MICRO (SILICON LABS) EFM32 SUPPORT
+ M:    Uwe Kleine-König <kernel@pengutronix.de>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ N:    efm32
  ARM/EZX SMARTPHONES (A780, A910, A1200, E680, ROKR E2 and ROKR E6)
  M:    Daniel Ribeiro <drwyrm@gmail.com>
  M:    Stefan Schmidt <stefan@openezx.org>
@@@ -1014,8 -1019,6 +1025,8 @@@ M:      Santosh Shilimkar <santosh.shilimkar
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-keystone/
 +F:    drivers/clk/keystone/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
  
  ARM/LOGICPD PXA270 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -1035,6 -1038,12 +1046,12 @@@ L:    linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-mvebu/
  
+ ARM/Marvell Berlin SoC support
+ M:    Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    arch/arm/mach-berlin/
  ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
@@@ -1374,9 -1383,6 +1391,9 @@@ T:      git git://git.xilinx.com/linux-xlnx.
  S:    Supported
  F:    arch/arm/mach-zynq/
  F:    drivers/cpuidle/cpuidle-zynq.c
 +N:    zynq
 +N:    xilinx
 +F:    drivers/clocksource/cadence_ttc_timer.c
  
  ARM SMMU DRIVER
  M:    Will Deacon <will.deacon@arm.com>
@@@ -1604,10 -1610,11 +1621,10 @@@ S:      Supporte
  F:      drivers/scsi/esas2r
  
  AUDIT SUBSYSTEM
 -M:    Al Viro <viro@zeniv.linux.org.uk>
  M:    Eric Paris <eparis@redhat.com>
  L:    linux-audit@redhat.com (subscribers-only)
  W:    http://people.redhat.com/sgrubb/audit/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current.git
 +T:    git git://git.infradead.org/users/eparis/audit.git
  S:    Maintained
  F:    include/linux/audit.h
  F:    include/uapi/linux/audit.h
@@@ -2624,7 -2631,7 +2641,7 @@@ S:      Maintaine
  F:    drivers/platform/x86/dell-laptop.c
  
  DELL LAPTOP SMM DRIVER
 -S:    Orphan
 +M:    Guenter Roeck <linux@roeck-us.net>
  F:    drivers/char/i8k.c
  F:    include/uapi/linux/i8k.h
  
@@@ -2643,7 -2650,7 +2660,7 @@@ DESIGNWARE USB2 DRD IP DRIVE
  M:    Paul Zimmerman <paulz@synopsys.com>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
 -F:    drivers/staging/dwc2/
 +F:    drivers/usb/dwc2/
  
  DESIGNWARE USB3 DRD IP DRIVER
  M:    Felipe Balbi <balbi@ti.com>
@@@ -2833,10 -2840,8 +2850,10 @@@ F:    include/uapi/drm
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
  M:    Daniel Vetter <daniel.vetter@ffwll.ch>
 +M:    Jani Nikula <jani.nikula@linux.intel.com>
  L:    intel-gfx@lists.freedesktop.org
  L:    dri-devel@lists.freedesktop.org
 +Q:    http://patchwork.freedesktop.org/project/intel-gfx/
  T:    git git://people.freedesktop.org/~danvet/drm-intel
  S:    Supported
  F:    drivers/gpu/drm/i915/
@@@ -3340,7 -3345,6 +3357,7 @@@ EXTERNAL CONNECTOR SUBSYSTEM (EXTCON
  M:    MyungJoo Ham <myungjoo.ham@samsung.com>
  M:    Chanwoo Choi <cw00.choi@samsung.com>
  L:    linux-kernel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/extcon.git
  S:    Maintained
  F:    drivers/extcon/
  F:    Documentation/extcon/
@@@ -3640,7 -3644,6 +3657,7 @@@ W:      http://en.wikipedia.org/wiki/F2F
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
  S:    Maintained
  F:    Documentation/filesystems/f2fs.txt
 +F:    Documentation/ABI/testing/sysfs-fs-f2fs
  F:    fs/f2fs/
  F:    include/linux/f2fs_fs.h
  
@@@ -3775,11 -3778,9 +3792,11 @@@ F:    include/uapi/linux/gigaset_dev.
  
  GPIO SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
 -S:    Maintained
 +M:    Alexandre Courbot <gnurou@gmail.com>
  L:    linux-gpio@vger.kernel.org
 -F:    Documentation/gpio.txt
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git
 +S:    Maintained
 +F:    Documentation/gpio/
  F:    drivers/gpio/
  F:    include/linux/gpio*
  F:    include/asm-generic/gpio.h
@@@ -3847,12 -3848,6 +3864,12 @@@ T:    git git://linuxtv.org/media_tree.gi
  S:    Maintained
  F:    drivers/media/usb/gspca/
  
 +GUID PARTITION TABLE (GPT)
 +M:    Davidlohr Bueso <davidlohr@hp.com>
 +L:    linux-efi@vger.kernel.org
 +S:    Maintained
 +F:    block/partitions/efi.*
 +
  STK1160 USB VIDEO CAPTURE DRIVER
  M:    Ezequiel Garcia <elezegarcia@gmail.com>
  L:    linux-media@vger.kernel.org
@@@ -4922,7 -4917,7 +4939,7 @@@ F:      include/linux/sunrpc
  F:    include/uapi/linux/sunrpc/
  
  KERNEL VIRTUAL MACHINE (KVM)
 -M:    Gleb Natapov <gleb@redhat.com>
 +M:    Gleb Natapov <gleb@kernel.org>
  M:    Paolo Bonzini <pbonzini@redhat.com>
  L:    kvm@vger.kernel.org
  W:    http://www.linux-kvm.org
@@@ -5148,11 -5143,6 +5165,11 @@@ F:    drivers/lguest
  F:    include/linux/lguest*.h
  F:    tools/lguest/
  
 +LIBLOCKDEP
 +M:    Sasha Levin <sasha.levin@oracle.com>
 +S:    Maintained
 +F:    tools/lib/lockdep/
 +
  LINUX FOR IBM pSERIES (RS/6000)
  M:    Paul Mackerras <paulus@au.ibm.com>
  W:    http://www.ibm.com/linux/ltc/projects/ppc
@@@ -5938,21 -5928,12 +5955,21 @@@ M:   Steffen Klassert <steffen.klassert@s
  M:    Herbert Xu <herbert@gondor.apana.org.au>
  M:    "David S. Miller" <davem@davemloft.net>
  L:    netdev@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next.git
  S:    Maintained
  F:    net/xfrm/
  F:    net/key/
  F:    net/ipv4/xfrm*
 +F:    net/ipv4/esp4.c
 +F:    net/ipv4/ah4.c
 +F:    net/ipv4/ipcomp.c
 +F:    net/ipv4/ip_vti.c
  F:    net/ipv6/xfrm*
 +F:    net/ipv6/esp6.c
 +F:    net/ipv6/ah6.c
 +F:    net/ipv6/ipcomp6.c
 +F:    net/ipv6/ip6_vti.c
  F:    include/uapi/linux/xfrm.h
  F:    include/net/xfrm.h
  
@@@ -6273,7 -6254,7 +6290,7 @@@ F:      drivers/i2c/busses/i2c-ocores.
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE
  M:    Grant Likely <grant.likely@linaro.org>
 -M:    Rob Herring <rob.herring@calxeda.com>
 +M:    Rob Herring <robh+dt@kernel.org>
  L:    devicetree@vger.kernel.org
  W:    http://fdt.secretlab.ca
  T:    git git://git.secretlab.ca/git/linux-2.6.git
@@@ -6285,7 -6266,7 +6302,7 @@@ K:      of_get_propert
  K:    of_match_table
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
 -M:    Rob Herring <rob.herring@calxeda.com>
 +M:    Rob Herring <robh+dt@kernel.org>
  M:    Pawel Moll <pawel.moll@arm.com>
  M:    Mark Rutland <mark.rutland@arm.com>
  M:    Ian Campbell <ijc+devicetree@hellion.org.uk>
@@@ -6718,7 -6699,7 +6735,7 @@@ F:      include/linux/timer
  F:    kernel/*timer*
  
  POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
 -M:    Anton Vorontsov <anton@enomsg.org>
 +M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
  M:    David Woodhouse <dwmw2@infradead.org>
  T:    git git://git.infradead.org/battery-2.6.git
  S:    Maintained
@@@ -6937,7 -6918,8 +6954,7 @@@ S:      Maintaine
  F:    drivers/scsi/qla1280.[ch]
  
  QLOGIC QLA2XXX FC-SCSI DRIVER
 -M:    Andrew Vasquez <andrew.vasquez@qlogic.com>
 -M:    linux-driver@qlogic.com
 +M:    qla2xxx-upstream@qlogic.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    Documentation/scsi/LICENSE.qla2xxx
@@@ -7110,12 -7092,6 +7127,12 @@@ T:    git git://git.kernel.org/pub/scm/lin
  F:    Documentation/RCU/torture.txt
  F:    kernel/rcu/torture.c
  
 +RCUTORTURE TEST FRAMEWORK
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    tools/testing/selftests/rcutorture
 +
  RDC R-321X SoC
  M:    Florian Fainelli <florian@openwrt.org>
  S:    Maintained
@@@ -7497,9 -7473,8 +7514,9 @@@ F:      include/scsi/srp.
  SCSI SG DRIVER
  M:    Doug Gilbert <dgilbert@interlog.com>
  L:    linux-scsi@vger.kernel.org
 -W:    http://www.torque.net/sg
 +W:    http://sg.danny.cz/sg
  S:    Maintained
 +F:    Documentation/scsi/scsi-generic.txt
  F:    drivers/scsi/sg.c
  F:    include/scsi/sg.h
  
@@@ -8752,10 -8727,14 +8769,10 @@@ S:   Odd fixe
  F:    drivers/media/usb/tm6000/
  
  TPM DEVICE DRIVER
 -M:    Leonidas Da Silva Barbosa <leosilva@linux.vnet.ibm.com>
 -M:    Ashley Lai <ashley@ashleylai.com>
  M:    Peter Huewe <peterhuewe@gmx.de>
 -M:    Rajiv Andrade <mail@srajiv.net>
 -W:    http://tpmdd.sourceforge.net
 +M:    Ashley Lai <ashley@ashleylai.com>
  M:    Marcel Selhorst <tpmdd@selhorst.net>
 -M:    Sirrix AG <tpmdd@sirrix.com>
 -W:    http://www.sirrix.com
 +W:    http://tpmdd.sourceforge.net
  L:    tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/char/tpm/
@@@ -9245,7 -9224,6 +9262,7 @@@ F:      include/media/videobuf2-
  
  VIRTIO CONSOLE DRIVER
  M:    Amit Shah <amit.shah@redhat.com>
 +L:    virtio-dev@lists.oasis-open.org
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
  F:    drivers/char/virtio_console.c
@@@ -9255,7 -9233,6 +9272,7 @@@ F:      include/uapi/linux/virtio_console.
  VIRTIO CORE, NET AND BLOCK DRIVERS
  M:    Rusty Russell <rusty@rustcorp.com.au>
  M:    "Michael S. Tsirkin" <mst@redhat.com>
 +L:    virtio-dev@lists.oasis-open.org
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
  F:    drivers/virtio/
@@@ -9268,7 -9245,6 +9285,7 @@@ F:      include/uapi/linux/virtio_*.
  VIRTIO HOST (VHOST)
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    kvm@vger.kernel.org
 +L:    virtio-dev@lists.oasis-open.org
  L:    virtualization@lists.linux-foundation.org
  L:    netdev@vger.kernel.org
  S:    Maintained
@@@ -9566,7 -9542,6 +9583,7 @@@ M:      Konrad Rzeszutek Wilk <konrad.wilk@o
  M:    Boris Ostrovsky <boris.ostrovsky@oracle.com>
  M:    David Vrabel <david.vrabel@citrix.com>
  L:    xen-devel@lists.xenproject.org (moderated for non-subscribers)
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
  S:    Supported
  F:    arch/x86/xen/
  F:    drivers/*/xen-*front.c
@@@ -9613,7 -9588,7 +9630,7 @@@ F:      drivers/xen/*swiotlb
  
  XFS FILESYSTEM
  P:    Silicon Graphics Inc
 -M:    Dave Chinner <dchinner@fromorbit.com>
 +M:    Dave Chinner <david@fromorbit.com>
  M:    Ben Myers <bpm@sgi.com>
  M:    xfs@oss.sgi.com
  L:    xfs@oss.sgi.com
diff --combined arch/arm/Kconfig
index dbe173dfa4aef795ca2b55fea1373f7a5bf81f3e,676bcf6ef3d60d45d1d7f2672f59cfb5c7b4a5ad..ca64b42402717a70be6a5825208a0c38eeeadc0e
@@@ -6,13 -6,12 +6,13 @@@ config AR
        select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_HAVE_CUSTOM_GPIO_H
        select ARCH_MIGHT_HAVE_PC_PARPORT
 +      select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_CMPXCHG_LOCKREF
        select ARCH_WANT_IPC_PARSE_VERSION
        select BUILDTIME_EXTABLE_SORT if MMU
        select CLONE_BACKWARDS
        select CPU_PM if (SUSPEND || CPU_IDLE)
 -      select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN && MMU
 +      select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
        select GENERIC_ATOMIC64 if (CPU_V7M || CPU_V6 || !CPU_32v6K || !AEABI)
        select GENERIC_CLOCKEVENTS_BROADCAST if SMP
        select GENERIC_IDLE_POLL_SETUP
        select HAVE_BPF_JIT
        select HAVE_CONTEXT_TRACKING
        select HAVE_C_RECORDMCOUNT
 +      select HAVE_CC_STACKPROTECTOR
        select HAVE_DEBUG_KMEMLEAK
        select HAVE_DMA_API_DEBUG
        select HAVE_DMA_ATTRS
        select HAVE_DMA_CONTIGUOUS if MMU
        select HAVE_DYNAMIC_FTRACE if (!XIP_KERNEL)
 +      select HAVE_EFFICIENT_UNALIGNED_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && MMU
        select HAVE_FTRACE_MCOUNT_RECORD if (!XIP_KERNEL)
        select HAVE_FUNCTION_GRAPH_TRACER if (!THUMB2_KERNEL)
        select HAVE_FUNCTION_TRACER if (!XIP_KERNEL)
@@@ -65,7 -62,6 +65,7 @@@
        select IRQ_FORCED_THREADING
        select KTIME_SCALAR
        select MODULES_USE_ELF_REL
 +      select NO_BOOTMEM
        select OLD_SIGACTION
        select OLD_SIGSUSPEND3
        select PERF_USE_VMALLOC
@@@ -414,6 -410,26 +414,26 @@@ config ARCH_EBSA11
          Ethernet interface, two PCMCIA sockets, two serial ports and a
          parallel port.
  
+ config ARCH_EFM32
+       bool "Energy Micro efm32"
+       depends on !MMU
+       select ARCH_REQUIRE_GPIOLIB
+       select ARM_NVIC
+       # CLKSRC_MMIO is wrong here, but needed until a proper fix is merged,
+       # i.e. CLKSRC_EFM32 selecting CLKSRC_MMIO
+       select CLKSRC_MMIO
+       select CLKSRC_OF
+       select COMMON_CLK
+       select CPU_V7M
+       select GENERIC_CLOCKEVENTS
+       select NO_DMA
+       select NO_IOPORT
+       select SPARSE_IRQ
+       select USE_OF
+       help
+         Support for Energy Micro's (now Silicon Labs) efm32 Giant Gecko
+         processors.
  config ARCH_EP93XX
        bool "EP93xx-based"
        select ARCH_HAS_HOLES_MEMORYMODEL
@@@ -635,10 -651,10 +655,10 @@@ config ARCH_PX
        help
          Support for Intel/Marvell's PXA2xx/PXA3xx processor line.
  
- config ARCH_MSM
+ config ARCH_MSM_NODT
        bool "Qualcomm MSM"
+       select ARCH_MSM
        select ARCH_REQUIRE_GPIOLIB
-       select CLKSRC_OF if OF
        select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        help
          stack and controls some vital subsystems
          (clock and power control, etc).
  
- config ARCH_SHMOBILE
-       bool "Renesas SH-Mobile / R-Mobile"
+ config ARCH_SHMOBILE_LEGACY
+       bool "Renesas SH-Mobile / R-Mobile (non-multiplatform)"
+       select ARCH_SHMOBILE
        select ARM_PATCH_PHYS_VIRT
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
        select PM_GENERIC_DOMAINS if PM
        select SPARSE_IRQ
        help
-         Support for Renesas's SH-Mobile and R-Mobile ARM platforms.
+         Support for Renesas's SH-Mobile and R-Mobile ARM platforms using
+         a non-multiplatform kernel.
  
  config ARCH_RPC
        bool "RiscPC"
@@@ -714,6 -732,7 +736,6 @@@ config ARCH_S3C24X
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        select HAVE_S3C_RTC if RTC_CLASS
        select MULTI_IRQ_HANDLER
 -      select NEED_MACH_GPIO_H
        select NEED_MACH_IO_H
        select SAMSUNG_ATAGS
        help
@@@ -726,23 -745,24 +748,23 @@@ config ARCH_S3C64X
        bool "Samsung S3C64XX"
        select ARCH_HAS_CPUFREQ
        select ARCH_REQUIRE_GPIOLIB
 +      select ARM_AMBA
        select ARM_VIC
        select CLKDEV_LOOKUP
        select CLKSRC_SAMSUNG_PWM
        select COMMON_CLK
-       select CPU_V6
+       select CPU_V6K
        select GENERIC_CLOCKEVENTS
        select GPIO_SAMSUNG
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
        select HAVE_TCM
 -      select NEED_MACH_GPIO_H
        select NO_IOPORT
        select PLAT_SAMSUNG
        select PM_GENERIC_DOMAINS
        select S3C_DEV_NAND
        select S3C_GPIO_TRACK
        select SAMSUNG_ATAGS
 -      select SAMSUNG_GPIOLIB_4BIT
        select SAMSUNG_WAKEMASK
        select SAMSUNG_WDT_RESET
        select USB_ARCH_HAS_OHCI
@@@ -913,6 -933,8 +935,8 @@@ source "arch/arm/mach-bcm/Kconfig
  
  source "arch/arm/mach-bcm2835/Kconfig"
  
+ source "arch/arm/mach-berlin/Kconfig"
  source "arch/arm/mach-clps711x/Kconfig"
  
  source "arch/arm/mach-cns3xxx/Kconfig"
@@@ -929,6 -951,8 +953,8 @@@ source "arch/arm/mach-gemini/Kconfig
  
  source "arch/arm/mach-highbank/Kconfig"
  
+ source "arch/arm/mach-hisi/Kconfig"
  source "arch/arm/mach-integrator/Kconfig"
  
  source "arch/arm/mach-iop32x/Kconfig"
@@@ -947,6 -971,8 +973,8 @@@ source "arch/arm/mach-ks8695/Kconfig
  
  source "arch/arm/mach-msm/Kconfig"
  
+ source "arch/arm/mach-moxart/Kconfig"
  source "arch/arm/mach-mv78xx0/Kconfig"
  
  source "arch/arm/mach-imx/Kconfig"
@@@ -1595,7 -1621,7 +1623,7 @@@ config ARM_PSC
  config ARCH_NR_GPIO
        int
        default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
 -      default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || SOC_DRA7XX
 +      default 512 if ARCH_EXYNOS || ARCH_KEYSTONE || SOC_OMAP5 || SOC_DRA7XX || ARCH_S3C24XX || ARCH_S3C64XX
        default 392 if ARCH_U8500
        default 352 if ARCH_VT8500
        default 288 if ARCH_SUNXI
@@@ -1613,7 -1639,7 +1641,7 @@@ config HZ_FIXE
        default 200 if ARCH_EBSA110 || ARCH_S3C24XX || ARCH_S5P64X0 || \
                ARCH_S5PV210 || ARCH_EXYNOS4
        default AT91_TIMER_HZ if ARCH_AT91
-       default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE
+       default SHMOBILE_TIMER_HZ if ARCH_SHMOBILE_LEGACY
        default 0
  
  choice
@@@ -1653,6 -1679,9 +1681,6 @@@ config H
  config SCHED_HRTICK
        def_bool HIGH_RES_TIMERS
  
 -config SCHED_HRTICK
 -      def_bool HIGH_RES_TIMERS
 -
  config THUMB2_KERNEL
        bool "Compile the kernel in Thumb-2 mode" if !CPU_THUMBONLY
        depends on (CPU_V7 || CPU_V7M) && !CPU_V6 && !CPU_V6K
@@@ -1795,10 -1824,10 +1823,10 @@@ config ARCH_WANT_GENERAL_HUGETL
  source "mm/Kconfig"
  
  config FORCE_MAX_ZONEORDER
-       int "Maximum zone order" if ARCH_SHMOBILE
-       range 11 64 if ARCH_SHMOBILE
+       int "Maximum zone order" if ARCH_SHMOBILE_LEGACY
+       range 11 64 if ARCH_SHMOBILE_LEGACY
        default "12" if SOC_AM33XX
-       default "9" if SA1111
+       default "9" if SA1111 || ARCH_EFM32
        default "11"
        help
          The kernel memory allocator divides physically contiguous memory
@@@ -1855,6 -1884,18 +1883,6 @@@ config SECCOM
          and the task is only allowed to execute a few safe syscalls
          defined by each seccomp mode.
  
 -config CC_STACKPROTECTOR
 -      bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)"
 -      help
 -        This option turns on the -fstack-protector GCC feature. This
 -        feature puts, at the beginning of functions, a canary value on
 -        the stack just before the return address, and validates
 -        the value just before actually returning.  Stack based buffer
 -        overflows (that need to overwrite this return address) now also
 -        overwrite the canary, which gets detected and the attack is then
 -        neutralized via a kernel panic.
 -        This feature requires gcc version 4.2 or above.
 -
  config SWIOTLB
        def_bool y
  
@@@ -1933,7 -1974,6 +1961,7 @@@ config ZBOOT_ROM_BS
  config ZBOOT_ROM
        bool "Compressed boot loader in ROM/flash"
        depends on ZBOOT_ROM_TEXT != ZBOOT_ROM_BSS
 +      depends on !ARM_APPENDED_DTB && !XIP_KERNEL && !AUTO_ZRELADDR
        help
          Say Y here if you intend to execute your compressed kernel image
          (zImage) directly from ROM or flash.  If unsure, say N.
@@@ -1969,7 -2009,7 +1997,7 @@@ endchoic
  
  config ARM_APPENDED_DTB
        bool "Use appended device tree blob to zImage (EXPERIMENTAL)"
 -      depends on OF && !ZBOOT_ROM
 +      depends on OF
        help
          With this option, the boot code will look for a device tree binary
          (DTB) appended to zImage
@@@ -2057,7 -2097,7 +2085,7 @@@ endchoic
  
  config XIP_KERNEL
        bool "Kernel Execute-In-Place from ROM"
 -      depends on !ZBOOT_ROM && !ARM_LPAE && !ARCH_MULTIPLATFORM
 +      depends on !ARM_LPAE && !ARCH_MULTIPLATFORM
        help
          Execute-In-Place allows the kernel to run from non-volatile storage
          directly addressable by the CPU, such as NOR flash. This saves RAM
@@@ -2120,6 -2160,7 +2148,6 @@@ config CRASH_DUM
  
  config AUTO_ZRELADDR
        bool "Auto calculation of the decompressed kernel image address"
 -      depends on !ZBOOT_ROM
        help
          ZRELADDR is the physical address where the decompressed kernel
          image will be placed. If AUTO_ZRELADDR is selected, the address
diff --combined arch/arm/Kconfig.debug
index 9afabbb5e798e8cf95d34c9c508bdab2c430b1cc,bda94e46e8d6cf605b51b980da253aab66e8979d..0531da8e5216e442ee1f9c8878e4fb9d84611581
@@@ -2,18 -2,6 +2,18 @@@ menu "Kernel hacking
  
  source "lib/Kconfig.debug"
  
 +config ARM_PTDUMP
 +      bool "Export kernel pagetable layout to userspace via debugfs"
 +      depends on DEBUG_KERNEL
 +      select DEBUG_FS
 +      ---help---
 +        Say Y here if you want to show the kernel pagetable layout in a
 +        debugfs file. This information is only useful for kernel developers
 +        who are working in architecture specific areas of the kernel.
 +        It is probably not a good idea to enable this feature in a production
 +        kernel.
 +        If in doubt, say "N"
 +
  config STRICT_DEVMEM
        bool "Filter access to /dev/mem"
        depends on MMU
@@@ -106,17 -94,14 +106,25 @@@ choic
                depends on ARCH_BCM2835
                select DEBUG_UART_PL01X
  
 +      config DEBUG_BCM_KONA_UART
 +              bool "Kernel low-level debugging messages via BCM KONA UART"
 +              depends on ARCH_BCM
 +              select DEBUG_UART_8250
 +              help
 +                Say Y here if you want kernel low-level debugging support
 +                on Broadcom SoC platforms.
 +                This low level debug works for Broadcom
 +                mobile SoCs in the Kona family of chips (e.g. bcm28155,
 +                bcm11351, etc...)
 +
+       config DEBUG_BERLIN_UART
+               bool "Marvell Berlin SoC Debug UART"
+               depends on ARCH_BERLIN
+               select DEBUG_UART_8250
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on Marvell Berlin SoC based platforms.
        config DEBUG_CLPS711X_UART1
                bool "Kernel low-level debugging messages via UART1"
                depends on ARCH_CLPS711X
                  Say Y here if you want kernel low-level debugging support
                  on i.MX35.
  
+       config DEBUG_IMX50_UART
+               bool "i.MX50 Debug UART"
+               depends on SOC_IMX50
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on i.MX50.
        config DEBUG_IMX51_UART
                bool "i.MX51 Debug UART"
                depends on SOC_IMX51
@@@ -920,6 -912,7 +935,7 @@@ config DEBUG_IMX_UART_POR
                                                DEBUG_IMX21_IMX27_UART || \
                                                DEBUG_IMX31_UART || \
                                                DEBUG_IMX35_UART || \
+                                               DEBUG_IMX50_UART || \
                                                DEBUG_IMX51_UART || \
                                                DEBUG_IMX53_UART || \
                                                DEBUG_IMX6Q_UART || \
@@@ -954,6 -947,7 +970,7 @@@ config DEBUG_LL_INCLUD
                                 DEBUG_IMX21_IMX27_UART || \
                                 DEBUG_IMX31_UART || \
                                 DEBUG_IMX35_UART || \
+                                DEBUG_IMX50_UART || \
                                 DEBUG_IMX51_UART || \
                                 DEBUG_IMX53_UART ||\
                                 DEBUG_IMX6Q_UART || \
@@@ -1011,7 -1005,6 +1028,7 @@@ config DEBUG_UART_PHY
        default 0x20064000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
        default 0x20068000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
        default 0x20201000 if DEBUG_BCM2835
 +      default 0x3e000000 if DEBUG_BCM_KONA_UART
        default 0x4000e400 if DEBUG_LL_UART_EFM32
        default 0x40090000 if ARCH_LPC32XX
        default 0x40100000 if DEBUG_PXA_UART1
        default 0xf1012000 if DEBUG_MVEBU_UART_ALTERNATE
        default 0xf1012000 if ARCH_DOVE || ARCH_KIRKWOOD || ARCH_MV78XX0 || \
                                ARCH_ORION5X
+       default 0xf7fc9000 if DEBUG_BERLIN_UART
        default 0xf8b00000 if DEBUG_HI3716_UART
        default 0xfcb00000 if DEBUG_HI3620_UART
        default 0xfe800000 if ARCH_IOP32X
@@@ -1060,6 -1054,7 +1078,7 @@@ config DEBUG_UART_VIR
        default 0xf2100000 if DEBUG_PXA_UART1
        default 0xf4090000 if ARCH_LPC32XX
        default 0xf4200000 if ARCH_GEMINI
+       default 0xf7fc9000 if DEBUG_BERLIN_UART
        default 0xf8009000 if DEBUG_VEXPRESS_UART0_CA9
        default 0xf8090000 if DEBUG_VEXPRESS_UART0_RS1
        default 0xfb009000 if DEBUG_REALVIEW_STD_PORT
        default 0xfe018000 if DEBUG_MMP_UART3
        default 0xfe100000 if DEBUG_IMX23_UART || DEBUG_IMX28_UART
        default 0xfe230000 if DEBUG_PICOXCELL_UART
 +      default 0xfe300000 if DEBUG_BCM_KONA_UART
        default 0xfe800000 if ARCH_IOP32X
        default 0xfeb00000 if DEBUG_HI3620_UART || DEBUG_HI3716_UART
        default 0xfeb24000 if DEBUG_RK3X_UART0
@@@ -1116,8 -1110,7 +1135,8 @@@ config DEBUG_UART_8250_WOR
        default y if DEBUG_PICOXCELL_UART || DEBUG_SOCFPGA_UART || \
                ARCH_KEYSTONE || \
                DEBUG_DAVINCI_DMx_UART0 || DEBUG_DAVINCI_DA8XX_UART1 || \
 -              DEBUG_DAVINCI_DA8XX_UART2 || DEBUG_DAVINCI_TNETV107X_UART1
 +              DEBUG_DAVINCI_DA8XX_UART2 || DEBUG_DAVINCI_TNETV107X_UART1 || \
 +              DEBUG_BCM_KONA_UART
  
  config DEBUG_UART_8250_FLOW_CONTROL
        bool "Enable flow control for 8250 UART"
@@@ -1176,15 -1169,4 +1195,15 @@@ config PID_IN_CONTEXTID
          additional instructions during context switch. Say Y here only if you
          are planning to use hardware trace tools with this kernel.
  
 +config DEBUG_SET_MODULE_RONX
 +      bool "Set loadable kernel module data as NX and text as RO"
 +      depends on MODULES
 +      ---help---
 +        This option helps catch unintended modifications to loadable
 +        kernel module's text and read-only data. It also prevents execution
 +        of module data. Such protection may interfere with run-time code
 +        patching and dynamic kernel tracing - and they might also protect
 +        against certain classes of kernel exploits.
 +        If in doubt, say "N".
 +
  endmenu
diff --combined arch/arm/Makefile
index 55b4255ad6ed9dd3e911d45b72acd822e81422f0,e47c09bd23bd1ea74dd547526ba3ca28fd26c229..d8605046792c5b7906f54716d7628bc4ac879a58
@@@ -40,6 -40,10 +40,6 @@@ ifeq ($(CONFIG_FRAME_POINTER),y
  KBUILD_CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog
  endif
  
 -ifeq ($(CONFIG_CC_STACKPROTECTOR),y)
 -KBUILD_CFLAGS +=-fstack-protector
 -endif
 -
  ifeq ($(CONFIG_CPU_BIG_ENDIAN),y)
  KBUILD_CPPFLAGS       += -mbig-endian
  AS            += -EB
@@@ -144,15 -148,18 +144,18 @@@ textofs-$(CONFIG_ARCH_MSM8960) := 0x002
  machine-$(CONFIG_ARCH_AT91)           += at91
  machine-$(CONFIG_ARCH_BCM)            += bcm
  machine-$(CONFIG_ARCH_BCM2835)                += bcm2835
+ machine-$(CONFIG_ARCH_BERLIN)         += berlin
  machine-$(CONFIG_ARCH_CLPS711X)               += clps711x
  machine-$(CONFIG_ARCH_CNS3XXX)                += cns3xxx
  machine-$(CONFIG_ARCH_DAVINCI)                += davinci
  machine-$(CONFIG_ARCH_DOVE)           += dove
  machine-$(CONFIG_ARCH_EBSA110)                += ebsa110
+ machine-$(CONFIG_ARCH_EFM32)          += efm32
  machine-$(CONFIG_ARCH_EP93XX)         += ep93xx
  machine-$(CONFIG_ARCH_EXYNOS)         += exynos
  machine-$(CONFIG_ARCH_GEMINI)         += gemini
  machine-$(CONFIG_ARCH_HIGHBANK)               += highbank
+ machine-$(CONFIG_ARCH_HI3xxx)         += hisi
  machine-$(CONFIG_ARCH_INTEGRATOR)     += integrator
  machine-$(CONFIG_ARCH_IOP13XX)                += iop13xx
  machine-$(CONFIG_ARCH_IOP32X)         += iop32x
@@@ -163,6 -170,7 +166,7 @@@ machine-$(CONFIG_ARCH_KIRKWOOD)            += kir
  machine-$(CONFIG_ARCH_KS8695)         += ks8695
  machine-$(CONFIG_ARCH_LPC32XX)                += lpc32xx
  machine-$(CONFIG_ARCH_MMP)            += mmp
+ machine-$(CONFIG_ARCH_MOXART)         += moxart
  machine-$(CONFIG_ARCH_MSM)            += msm
  machine-$(CONFIG_ARCH_MV78XX0)                += mv78xx0
  machine-$(CONFIG_ARCH_MVEBU)          += mvebu
@@@ -186,7 -194,6 +190,6 @@@ machine-$(CONFIG_ARCH_S5PC100)             += s5pc
  machine-$(CONFIG_ARCH_S5PV210)                += s5pv210
  machine-$(CONFIG_ARCH_SA1100)         += sa1100
  machine-$(CONFIG_ARCH_SHMOBILE)       += shmobile
- machine-$(CONFIG_ARCH_SHMOBILE_MULTI)         += shmobile
  machine-$(CONFIG_ARCH_SIRF)           += prima2
  machine-$(CONFIG_ARCH_SOCFPGA)                += socfpga
  machine-$(CONFIG_ARCH_STI)            += sti
index 4bb86d9a749d42826776886a261a07c18e16d516,f54d5a25c7ee1c0b7803c94179bc5c30f7d7d66b..68c918362b79a7dba1baf799697019be2fb70912
@@@ -64,7 -64,7 +64,7 @@@ els
  endif
  endif
  
- ifeq ($(CONFIG_ARCH_SHMOBILE),y)
+ ifeq ($(CONFIG_ARCH_SHMOBILE_LEGACY),y)
  OBJS          += head-shmobile.o
  endif
  
@@@ -108,12 -108,12 +108,12 @@@ endi
  
  targets       := vmlinux vmlinux.lds \
                 piggy.$(suffix_y) piggy.$(suffix_y).o \
 -               lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S \
 -               font.o font.c head.o misc.o $(OBJS)
 +               lib1funcs.o lib1funcs.S ashldi3.o ashldi3.S bswapsdi2.o \
 +               bswapsdi2.S font.o font.c head.o misc.o $(OBJS)
  
  # Make sure files are removed during clean
  extra-y       += piggy.gzip piggy.lzo piggy.lzma piggy.xzkern piggy.lz4 \
 -               lib1funcs.S ashldi3.S $(libfdt) $(libfdt_hdrs) \
 +               lib1funcs.S ashldi3.S bswapsdi2.S $(libfdt) $(libfdt_hdrs) \
                 hyp-stub.S
  
  ifeq ($(CONFIG_FUNCTION_TRACER),y)
@@@ -156,12 -156,6 +156,12 @@@ ashldi3 = $(obj)/ashldi3.
  $(obj)/ashldi3.S: $(srctree)/arch/$(SRCARCH)/lib/ashldi3.S
        $(call cmd,shipped)
  
 +# For __bswapsi2, __bswapdi2
 +bswapsdi2 = $(obj)/bswapsdi2.o
 +
 +$(obj)/bswapsdi2.S: $(srctree)/arch/$(SRCARCH)/lib/bswapsdi2.S
 +      $(call cmd,shipped)
 +
  # We need to prevent any GOTOFF relocs being used with references
  # to symbols in the .bss section since we cannot relocate them
  # independently from the rest at run time.  This can be achieved by
@@@ -183,8 -177,7 +183,8 @@@ if [ $(words $(ZRELADDR)) -gt 1 -a "$(C
  fi
  
  $(obj)/vmlinux: $(obj)/vmlinux.lds $(obj)/$(HEAD) $(obj)/piggy.$(suffix_y).o \
 -              $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) FORCE
 +              $(addprefix $(obj)/, $(OBJS)) $(lib1funcs) $(ashldi3) \
 +              $(bswapsdi2) FORCE
        @$(check_for_multiple_zreladdr)
        $(call if_changed,ld)
        @$(check_for_bad_syms)
index 36e0d06d3efa442b6874865e4134c476e59a4785,e8daf7061f8322de784d4d4e3d11065203da1497..91896a3f703ad5a9ccafa903d77a3476baaa250a
@@@ -6,7 -6,6 +6,7 @@@ dtb-$(CONFIG_ARCH_AT91) += at91rm9200ek
  dtb-$(CONFIG_ARCH_AT91) += mpa1600.dtb
  # sam9260
  dtb-$(CONFIG_ARCH_AT91) += animeo_ip.dtb
 +dtb-$(CONFIG_ARCH_AT91) += at91-qil_a9260.dtb
  dtb-$(CONFIG_ARCH_AT91) += aks-cdu.dtb
  dtb-$(CONFIG_ARCH_AT91) += ethernut5.dtb
  dtb-$(CONFIG_ARCH_AT91) += evk-pro3.dtb
@@@ -46,6 -45,9 +46,9 @@@ dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-r
  dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm11351-brt.dtb \
        bcm28155-ap.dtb
  dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb
+ dtb-$(CONFIG_ARCH_BERLIN) += \
+       berlin2-sony-nsz-gs7.dtb        \
+       berlin2cd-google-chromecast.dtb
  dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
        da850-evm.dtb
  dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
@@@ -53,6 -55,7 +56,7 @@@
        dove-d2plug.dtb \
        dove-d3plug.dtb \
        dove-dove-db.dtb
+ dtb-$(CONFIG_ARCH_EFM32) += efm32gg-dk3750.dtb
  dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
        exynos4210-smdkv310.dtb \
        exynos4210-trats.dtb \
@@@ -67,6 -70,7 +71,7 @@@
        exynos5420-smdk5420.dtb \
        exynos5440-sd5v1.dtb \
        exynos5440-ssdk5440.dtb
+ dtb-$(CONFIG_ARCH_HI3xxx) += hi3620-hi4511.dtb
  dtb-$(CONFIG_ARCH_HIGHBANK) += highbank.dtb \
        ecx-2000.dtb
  dtb-$(CONFIG_ARCH_INTEGRATOR) += integratorap.dtb \
@@@ -217,7 -221,7 +222,7 @@@ dtb-$(CONFIG_ARCH_U8500) += ste-snowbal
  dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb
  dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \
        s3c6410-smdk6410.dtb
- dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
+ dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += emev2-kzm9d.dtb \
        r7s72100-genmai.dtb \
        r8a7740-armadillo800eva.dtb \
        r8a7778-bockw.dtb \
index bede51171d988a15b2e4aca8dd5de814aeba96e1,7a8564e0303ffb5f1ca4d471dcb78806d24cc502..2c38fdf1951d377ee648778a847fb3776fabc70a
@@@ -29,11 -29,9 +29,9 @@@ CONFIG_ARCH_BCM_MOBILE=
  CONFIG_ARM_THUMBEE=y
  CONFIG_PREEMPT=y
  CONFIG_AEABI=y
- # CONFIG_OABI_COMPAT is not set
  # CONFIG_COMPACTION is not set
  CONFIG_ZBOOT_ROM_TEXT=0x0
  CONFIG_ZBOOT_ROM_BSS=0x0
- CONFIG_ARM_APPENDED_DTB=y
  CONFIG_CMDLINE="console=ttyS0,115200n8 mem=128M"
  CONFIG_CPU_IDLE=y
  CONFIG_VFP=y
@@@ -120,10 -118,10 +118,11 @@@ CONFIG_DETECT_HUNG_TASK=
  CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=110
  CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
  # CONFIG_FTRACE is not set
+ # CONFIG_CRYPTO_ANSI_CPRNG is not set
  CONFIG_CRC_CCITT=y
  CONFIG_CRC_T10DIF=y
  CONFIG_CRC_ITU_T=y
  CONFIG_CRC7=y
  CONFIG_XZ_DEC=y
  CONFIG_AVERAGE=y
 +CONFIG_PINCTRL_CAPRI=y
index f1bf952da747cbca542a862ca2252859e76c4169,44eacdd7468bd069ed3a3818ef57f5551c4cd90b..4f0e800e7e711707caaf9c3331f9f90c4eae8cab
@@@ -1,33 -1,15 +1,33 @@@
  if ARCH_AT91
  
 +config HAVE_AT91_UTMI
 +      bool
 +
 +config HAVE_AT91_USB_CLK
 +      bool
 +
  config HAVE_AT91_DBGU0
        bool
  
  config HAVE_AT91_DBGU1
        bool
  
 +config AT91_USE_OLD_CLK
 +      bool
 +
  config AT91_PMC_UNIT
        bool
        default !ARCH_AT91X40
  
 +config COMMON_CLK_AT91
 +      bool
 +      default AT91_PMC_UNIT && USE_OF && !AT91_USE_OLD_CLK
 +      select COMMON_CLK
 +
 +config OLD_CLK_AT91
 +      bool
 +      default AT91_PMC_UNIT && AT91_USE_OLD_CLK
 +
  config AT91_SAM9_ALT_RESET
        bool
        default !ARCH_AT91X40
@@@ -39,9 -21,6 +39,9 @@@ config AT91_SAM9G45_RESE
  config AT91_SAM9_TIME
        bool
  
 +config HAVE_AT91_SMD
 +      bool
 +
  config SOC_AT91SAM9
        bool
        select AT91_SAM9_TIME
@@@ -82,15 -61,13 +82,15 @@@ comment "Atmel AT91 Processor
  if SOC_SAM_V7
  config SOC_SAMA5D3
        bool "SAMA5D3 family"
 -      depends on SOC_SAM_V7
        select SOC_SAMA5
        select HAVE_FB_ATMEL
        select HAVE_AT91_DBGU1
 +      select HAVE_AT91_UTMI
 +      select HAVE_AT91_SMD
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using one of Atmel's SAMA5D3 family SoC.
-         This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35.
+         This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.
  endif
  
  if SOC_SAM_V4_V5
@@@ -101,15 -78,11 +101,15 @@@ config SOC_AT91RM920
        select HAVE_AT91_DBGU0
        select MULTI_IRQ_HANDLER
        select SPARSE_IRQ
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_USB_CLK
  
  config SOC_AT91SAM9260
        bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
        select HAVE_AT91_DBGU0
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
          or AT91SAM9G20 SoC.
@@@ -119,8 -92,6 +119,8 @@@ config SOC_AT91SAM926
        select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
  
@@@ -129,25 -100,18 +129,25 @@@ config SOC_AT91SAM926
        select HAVE_AT91_DBGU1
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_USB_CLK
  
  config SOC_AT91SAM9RL
        bool "AT91SAM9RL"
        select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_UTMI
  
  config SOC_AT91SAM9G45
        bool "AT91SAM9G45 or AT91SAM9M10 families"
        select HAVE_AT91_DBGU1
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_UTMI
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
          This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
@@@ -157,10 -121,6 +157,10 @@@ config SOC_AT91SAM9X
        select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_UTMI
 +      select HAVE_AT91_SMD
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
          This means that your SAM9 name finishes with a '5' (except if it is
@@@ -173,8 -133,6 +173,8 @@@ config SOC_AT91SAM9N1
        select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
        select SOC_AT91SAM9
 +      select AT91_USE_OLD_CLK
 +      select HAVE_AT91_USB_CLK
        help
          Select this if you are using Atmel's AT91SAM9N12 SoC.
  
@@@ -214,6 -172,12 +214,6 @@@ config MACH_SAMA5_D
  
  comment "AT91 Feature Selections"
  
 -config AT91_PROGRAMMABLE_CLOCKS
 -      bool "Programmable Clocks"
 -      help
 -        Select this if you need to program one or more of the PCK0..PCK3
 -        programmable clock outputs.
 -
  config AT91_SLOW_CLOCK
        bool "Suspend-to-RAM disables main oscillator"
        depends on SUSPEND
index 9dc8894c56233db9e9567002d75365c144290ab3,eb6468dc60d56df3d7b44102b8975bcac304c96f..f7ca97b7291e2f9b48a2968f47bc92e788ff79cf
@@@ -11,7 -11,6 +11,7 @@@
  #include <linux/pm.h>
  #include <linux/of_address.h>
  #include <linux/pinctrl/machine.h>
 +#include <linux/clk/at91_pmc.h>
  
  #include <asm/system_misc.h>
  #include <asm/mach/map.h>
@@@ -19,6 -18,7 +19,6 @@@
  #include <mach/hardware.h>
  #include <mach/cpu.h>
  #include <mach/at91_dbgu.h>
 -#include <mach/at91_pmc.h>
  
  #include "at91_shdwc.h"
  #include "soc.h"
@@@ -81,7 -81,7 +81,7 @@@ void __init at91_init_sram(int bank, un
  
        desc->pfn = __phys_to_pfn(base);
        desc->length = length;
 -      desc->type = MT_MEMORY_NONCACHED;
 +      desc->type = MT_MEMORY_RWX_NONCACHED;
  
        pr_info("AT91: sram at 0x%lx of 0x%x mapped at 0x%lx\n",
                base, length, desc->virtual);
@@@ -233,6 -233,9 +233,9 @@@ static void __init soc_detect(u32 dbgu_
                case ARCH_EXID_SAMA5D35:
                        at91_soc_initdata.subtype = AT91_SOC_SAMA5D35;
                        break;
+               case ARCH_EXID_SAMA5D36:
+                       at91_soc_initdata.subtype = AT91_SOC_SAMA5D36;
+                       break;
                }
        }
  }
@@@ -275,6 -278,7 +278,7 @@@ static const char *soc_subtype_name[] 
        [AT91_SOC_SAMA5D33]     = "sama5d33",
        [AT91_SOC_SAMA5D34]     = "sama5d34",
        [AT91_SOC_SAMA5D35]     = "sama5d35",
+       [AT91_SOC_SAMA5D36]     = "sama5d36",
        [AT91_SOC_SUBTYPE_NONE] = "None",
        [AT91_SOC_SUBTYPE_UNKNOWN] = "Unknown",
  };
@@@ -491,8 -495,7 +495,8 @@@ void __init at91rm9200_dt_initialize(vo
        at91_dt_clock_init();
  
        /* Register the processor-specific clocks */
 -      at91_boot_soc.register_clocks();
 +      if (at91_boot_soc.register_clocks)
 +              at91_boot_soc.register_clocks();
  
        at91_boot_soc.init();
  }
@@@ -507,8 -510,7 +511,8 @@@ void __init at91_dt_initialize(void
        at91_dt_clock_init();
  
        /* Register the processor-specific clocks */
 -      at91_boot_soc.register_clocks();
 +      if (at91_boot_soc.register_clocks)
 +              at91_boot_soc.register_clocks();
  
        if (at91_boot_soc.init)
                at91_boot_soc.init();
index fae0578fec7e6285920f40a4f1ae2dfba93e631e,b0c6eb35a3222b8aef44a57b91b9c599d8ab3b90..33567aa5880f423f936aefd5e59dda722c9c3371
@@@ -3,6 -3,7 +3,6 @@@ config ARCH_MX
        select ARCH_REQUIRE_GPIOLIB
        select ARM_CPU_SUSPEND if PM
        select ARM_PATCH_PHYS_VIRT
 -      select AUTO_ZRELADDR if !ZBOOT_ROM
        select CLKSRC_MMIO
        select COMMON_CLK
        select GENERIC_ALLOCATOR
@@@ -10,6 -11,7 +10,7 @@@
        select GENERIC_IRQ_CHIP
        select MIGHT_HAVE_CACHE_L2X0 if ARCH_MULTI_V6_V7
        select MULTI_IRQ_HANDLER
+       select PINCTRL
        select SOC_BUS
        select SPARSE_IRQ
        select USE_OF
  menu "Freescale i.MX support"
        depends on ARCH_MXC
  
- config MXC_IRQ_PRIOR
-       bool "Use IRQ priority"
-       help
-         Select this if you want to use prioritized IRQ handling.
-         This feature prevents higher priority ISR to be interrupted
-         by lower priority IRQ.
-         This may be useful in embedded applications, where are strong
-         requirements for timing.
-         Say N here, unless you have a specialized requirement.
  config MXC_TZIC
        bool
  
@@@ -108,6 -100,7 +99,7 @@@ config SOC_IMX2
        select ARCH_MXC_IOMUX_V3
        select CPU_ARM926T
        select MXC_AVIC
+       select PINCTRL_IMX25
  
  config SOC_IMX27
        bool
        select IMX_HAVE_IOMUX_V1
        select MACH_MX27
        select MXC_AVIC
+       select PINCTRL_IMX27
  
  config SOC_IMX31
        bool
@@@ -132,6 -126,7 +125,7 @@@ config SOC_IMX3
        select HAVE_EPIT
        select MXC_AVIC
        select SMP_ON_UP if SMP
+       select PINCTRL
  
  config SOC_IMX5
        bool
  config        SOC_IMX51
        bool
        select HAVE_IMX_SRC
-       select PINCTRL
        select PINCTRL_IMX51
        select SOC_IMX5
  
@@@ -618,6 -612,13 +611,13 @@@ config MACH_IMX31_D
  
  comment "MX35 platforms:"
  
+ config MACH_IMX35_DT
+       bool "Support i.MX35 platforms from device tree"
+       select SOC_IMX35
+       help
+         Include support for Freescale i.MX35 based platforms
+         using the device tree for discovery.
  config MACH_PCM043
        bool "Support Phytec pcm043 (i.MX35) platforms"
        select IMX_HAVE_PLATFORM_FLEXCAN
@@@ -765,11 -766,19 +765,19 @@@ endchoic
  
  comment "Device tree only"
  
+ config        SOC_IMX50
+       bool "i.MX50 support"
+       select HAVE_IMX_SRC
+       select PINCTRL_IMX50
+       select SOC_IMX5
+       help
+         This enables support for Freescale i.MX50 processor.
  config        SOC_IMX53
        bool "i.MX53 support"
        select HAVE_IMX_SRC
        select IMX_HAVE_PLATFORM_IMX2_WDT
-       select PINCTRL
        select PINCTRL_IMX53
        select SOC_IMX5
  
@@@ -795,7 -804,6 +803,6 @@@ config SOC_IMX6
        select MFD_SYSCON
        select MIGHT_HAVE_PCI
        select PCI_DOMAINS if PCI
-       select PINCTRL
        select PINCTRL_IMX6Q
        select PL310_ERRATA_588369 if CACHE_PL310
        select PL310_ERRATA_727915 if CACHE_PL310
@@@ -816,7 -824,6 +823,6 @@@ config SOC_IMX6S
        select HAVE_IMX_MMDC
        select HAVE_IMX_SRC
        select MFD_SYSCON
-       select PINCTRL
        select PINCTRL_IMX6SL
        select PL310_ERRATA_588369 if CACHE_PL310
        select PL310_ERRATA_727915 if CACHE_PL310
@@@ -830,7 -837,6 +836,6 @@@ config SOC_VF61
        select CPU_V7
        select ARM_GIC
        select CLKSRC_OF
-       select PINCTRL
        select PINCTRL_VF610
        select VF_PIT_TIMER
        select PL310_ERRATA_588369 if CACHE_PL310
index a7906ebedb19ad202fda88ed91ad1c147e5614d0,bc9d8ec2918efded94977dfeda9993c644421486..6d68aed6548a504c23ba0639ea96871760381f12
@@@ -475,7 -475,7 +475,7 @@@ void __init ixp4xx_sys_init(void
  /*
   * sched_clock()
   */
- static u32 notrace ixp4xx_read_sched_clock(void)
+ static u64 notrace ixp4xx_read_sched_clock(void)
  {
        return *IXP4XX_OSTS;
  }
@@@ -493,7 -493,7 +493,7 @@@ unsigned long ixp4xx_timer_freq = IXP4X
  EXPORT_SYMBOL(ixp4xx_timer_freq);
  static void __init ixp4xx_clocksource_init(void)
  {
-       setup_sched_clock(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);
+       sched_clock_register(ixp4xx_read_sched_clock, 32, ixp4xx_timer_freq);
  
        clocksource_mmio_init(NULL, "OSTS", ixp4xx_timer_freq, 200, 32,
                        ixp4xx_clocksource_read);
@@@ -560,7 -560,7 +560,7 @@@ static void __init ixp4xx_clockevent_in
  
  void ixp4xx_restart(enum reboot_mode mode, const char *cmd)
  {
 -      if ( 1 && mode == REBOOT_SOFT) {
 +      if (mode == REBOOT_SOFT) {
                /* Jump into ROM at address 0 */
                soft_restart(0);
        } else {
diff --combined arch/arm/mach-pxa/time.c
index 5fdc9c4f05be5acb6c08beb68fb4ad1851eae3b8,d1bfaa73b1c9bb53adbfb359c7a149aacd8cda24..fca174e3865d692f91715459131f8508c707ff01
@@@ -33,7 -33,7 +33,7 @@@
   * calls to sched_clock() which should always be the case in practice.
   */
  
- static u32 notrace pxa_read_sched_clock(void)
+ static u64 notrace pxa_read_sched_clock(void)
  {
        return readl_relaxed(OSCR);
  }
@@@ -137,7 -137,7 +137,7 @@@ static struct clock_event_device ckevt_
  
  static struct irqaction pxa_ost0_irq = {
        .name           = "ost0",
 -      .flags          = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
 +      .flags          = IRQF_TIMER | IRQF_IRQPOLL,
        .handler        = pxa_ost0_interrupt,
        .dev_id         = &ckevt_pxa_osmr0,
  };
@@@ -149,7 -149,7 +149,7 @@@ void __init pxa_timer_init(void
        writel_relaxed(0, OIER);
        writel_relaxed(OSSR_M0 | OSSR_M1 | OSSR_M2 | OSSR_M3, OSSR);
  
-       setup_sched_clock(pxa_read_sched_clock, 32, clock_tick_rate);
+       sched_clock_register(pxa_read_sched_clock, 32, clock_tick_rate);
  
        ckevt_pxa_osmr0.cpumask = cpumask_of(0);
  
index 3c4995aebd220870406934ba905d90d5949d18ca,44b55ef8857e0ac8fbfdf546c7efb18ea5cb5e2d..37c42dc7f1a807cf9c70a8b3d3421f3ce8148f5e
@@@ -25,6 -25,7 +25,7 @@@
  #include <linux/mmc/sh_mmcif.h>
  #include <linux/mtd/partitions.h>
  #include <linux/pinctrl/machine.h>
+ #include <linux/platform_data/camera-rcar.h>
  #include <linux/platform_data/usb-rcar-phy.h>
  #include <linux/platform_device.h>
  #include <linux/regulator/fixed.h>
@@@ -679,7 -680,7 +680,7 @@@ static void __init bockw_init(void
                        .id             = i,
                        .data           = &rsnd_card_info[i],
                        .size_data      = sizeof(struct asoc_simple_card_info),
 -                      .dma_mask       = ~0,
 +                      .dma_mask       = DMA_BIT_MASK(32),
                };
  
                platform_device_register_full(&cardinfo);
index 0814a508fd61b09fe43202df3b733b695c8e866d,850a8a371b43a4e62247279c9ef5e9bdb5921f8f..e6ab0cd5b28628dbd65a5c3f7dfa1cc57428f090
@@@ -27,6 -27,7 +27,7 @@@
  #define FRQCR2                0xfcfe0014
  #define STBCR3                0xfcfe0420
  #define STBCR4                0xfcfe0424
+ #define STBCR9                0xfcfe0438
  
  #define PLL_RATE 30
  
@@@ -144,10 -145,15 +145,15 @@@ struct clk div4_clks[DIV4_NR] = 
                                        | CLK_ENABLE_ON_INIT),
  };
  
- enum { MSTP47, MSTP46, MSTP45, MSTP44, MSTP43, MSTP42, MSTP41, MSTP40,
+ enum {        MSTP97, MSTP96, MSTP95, MSTP94,
+       MSTP47, MSTP46, MSTP45, MSTP44, MSTP43, MSTP42, MSTP41, MSTP40,
        MSTP33, MSTP_NR };
  
  static struct clk mstp_clks[MSTP_NR] = {
+       [MSTP97] = SH_CLK_MSTP8(&peripheral0_clk, STBCR9, 7, 0), /* RIIC0 */
+       [MSTP96] = SH_CLK_MSTP8(&peripheral0_clk, STBCR9, 6, 0), /* RIIC1 */
+       [MSTP95] = SH_CLK_MSTP8(&peripheral0_clk, STBCR9, 5, 0), /* RIIC2 */
+       [MSTP94] = SH_CLK_MSTP8(&peripheral0_clk, STBCR9, 4, 0), /* RIIC3 */
        [MSTP47] = SH_CLK_MSTP8(&peripheral1_clk, STBCR4, 7, 0), /* SCIF0 */
        [MSTP46] = SH_CLK_MSTP8(&peripheral1_clk, STBCR4, 6, 0), /* SCIF1 */
        [MSTP45] = SH_CLK_MSTP8(&peripheral1_clk, STBCR4, 5, 0), /* SCIF2 */
@@@ -170,9 -176,6 +176,9 @@@ static struct clk_lookup lookups[] = 
        CLKDEV_CON_ID("cpu_clk", &div4_clks[DIV4_I]),
  
        /* MSTP clocks */
 +      CLKDEV_CON_ID("mtu2_fck", &mstp_clks[MSTP33]),
 +
 +      /* ICK */
        CLKDEV_ICK_ID("sci_fck", "sh-sci.0", &mstp_clks[MSTP47]),
        CLKDEV_ICK_ID("sci_fck", "sh-sci.1", &mstp_clks[MSTP46]),
        CLKDEV_ICK_ID("sci_fck", "sh-sci.2", &mstp_clks[MSTP45]),
index fa1b4773677ac7fd9c09ddc9fc00fcc696025fea,e6f88dd838d544963d0ce6d3721c41f94113306c..30552448b0564d54ea98d3bb959fbf6e17de5e2d
@@@ -53,6 -53,7 +53,7 @@@
  #define SMSTPCR7 0xe615014c
  #define SMSTPCR8 0xe6150990
  #define SMSTPCR9 0xe6150994
+ #define SMSTPCR10 0xe6150998
  
  #define SDCKCR                0xE6150074
  #define SD2CKCR               0xE6150078
@@@ -77,7 -78,7 +78,7 @@@ static struct sh_clk_ops followparent_c
  };
  
  static struct clk main_clk = {
 -      /* .parent will be set r8a73a4_clock_init */
 +      /* .parent will be set r8a7790_clock_init */
        .ops    = &followparent_clk_ops,
  };
  
@@@ -182,10 -183,14 +183,14 @@@ static struct clk div6_clks[DIV6_NR] = 
  
  /* MSTP */
  enum {
+       MSTP1015, MSTP1014, MSTP1013, MSTP1012, MSTP1011, MSTP1010,
+       MSTP1009, MSTP1008, MSTP1007, MSTP1006, MSTP1005,
        MSTP931, MSTP930, MSTP929, MSTP928,
+       MSTP917,
        MSTP813,
        MSTP726, MSTP725, MSTP724, MSTP723, MSTP722, MSTP721, MSTP720,
        MSTP717, MSTP716,
+       MSTP704,
        MSTP522,
        MSTP315, MSTP314, MSTP313, MSTP312, MSTP311, MSTP305, MSTP304,
        MSTP216, MSTP207, MSTP206, MSTP204, MSTP203, MSTP202,
  };
  
  static struct clk mstp_clks[MSTP_NR] = {
-       [MSTP931] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 31, 0), /* I2C0 */
-       [MSTP930] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 30, 0), /* I2C1 */
-       [MSTP929] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 29, 0), /* I2C2 */
-       [MSTP928] = SH_CLK_MSTP32(&hp_clk, SMSTPCR9, 28, 0), /* I2C3 */
+       [MSTP1015] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 15, 0), /* SSI0 */
+       [MSTP1014] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 14, 0), /* SSI1 */
+       [MSTP1013] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 13, 0), /* SSI2 */
+       [MSTP1012] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 12, 0), /* SSI3 */
+       [MSTP1011] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 11, 0), /* SSI4 */
+       [MSTP1010] = SH_CLK_MSTP32(&p_clk, SMSTPCR10, 10, 0), /* SSI5 */
+       [MSTP1009] = SH_CLK_MSTP32(&p_clk, SMSTPCR10,  9, 0), /* SSI6 */
+       [MSTP1008] = SH_CLK_MSTP32(&p_clk, SMSTPCR10,  8, 0), /* SSI7 */
+       [MSTP1007] = SH_CLK_MSTP32(&p_clk, SMSTPCR10,  7, 0), /* SSI8 */
+       [MSTP1006] = SH_CLK_MSTP32(&p_clk, SMSTPCR10,  6, 0), /* SSI9 */
+       [MSTP1005] = SH_CLK_MSTP32(&p_clk, SMSTPCR10,  5, 0), /* SSI ALL */
+       [MSTP931] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 31, 0), /* I2C0 */
+       [MSTP930] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 30, 0), /* I2C1 */
+       [MSTP929] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 29, 0), /* I2C2 */
+       [MSTP928] = SH_CLK_MSTP32(&p_clk, SMSTPCR9, 28, 0), /* I2C3 */
+       [MSTP917] = SH_CLK_MSTP32(&qspi_clk, SMSTPCR9, 17, 0), /* QSPI */
        [MSTP813] = SH_CLK_MSTP32(&p_clk, SMSTPCR8, 13, 0), /* Ether */
        [MSTP726] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 26, 0), /* LVDS0 */
        [MSTP725] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 25, 0), /* LVDS1 */
        [MSTP720] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 20, 0), /* SCIF1 */
        [MSTP717] = SH_CLK_MSTP32(&zs_clk, SMSTPCR7, 17, 0), /* HSCIF0 */
        [MSTP716] = SH_CLK_MSTP32(&zs_clk, SMSTPCR7, 16, 0), /* HSCIF1 */
+       [MSTP704] = SH_CLK_MSTP32(&mp_clk, SMSTPCR7, 4, 0), /* HSUSB */
        [MSTP522] = SH_CLK_MSTP32(&extal_clk, SMSTPCR5, 22, 0), /* Thermal */
        [MSTP315] = SH_CLK_MSTP32(&div6_clks[DIV6_MMC0], SMSTPCR3, 15, 0), /* MMC0 */
        [MSTP314] = SH_CLK_MSTP32(&div4_clks[DIV4_SD0], SMSTPCR3, 14, 0), /* SDHI0 */
@@@ -262,11 -280,7 +280,7 @@@ static struct clk_lookup lookups[] = 
        CLKDEV_CON_ID("ssprs",          &div6_clks[DIV6_SSPRS]),
  
        /* MSTP */
-       CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7790", &mstp_clks[MSTP726]),
-       CLKDEV_ICK_ID("lvds.1", "rcar-du-r8a7790", &mstp_clks[MSTP725]),
-       CLKDEV_ICK_ID("du.0", "rcar-du-r8a7790", &mstp_clks[MSTP724]),
-       CLKDEV_ICK_ID("du.1", "rcar-du-r8a7790", &mstp_clks[MSTP723]),
-       CLKDEV_ICK_ID("du.2", "rcar-du-r8a7790", &mstp_clks[MSTP722]),
+       CLKDEV_DEV_ID("rcar_sound", &mstp_clks[MSTP1005]),
        CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]),
        CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]),
        CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]),
        CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP717]),
        CLKDEV_DEV_ID("sh-sci.9", &mstp_clks[MSTP716]),
        CLKDEV_DEV_ID("e6508000.i2c", &mstp_clks[MSTP931]),
+       CLKDEV_DEV_ID("i2c-rcar_gen2.0", &mstp_clks[MSTP931]),
        CLKDEV_DEV_ID("e6518000.i2c", &mstp_clks[MSTP930]),
+       CLKDEV_DEV_ID("i2c-rcar_gen2.1", &mstp_clks[MSTP930]),
        CLKDEV_DEV_ID("e6530000.i2c", &mstp_clks[MSTP929]),
+       CLKDEV_DEV_ID("i2c-rcar_gen2.2", &mstp_clks[MSTP929]),
        CLKDEV_DEV_ID("e6540000.i2c", &mstp_clks[MSTP928]),
+       CLKDEV_DEV_ID("i2c-rcar_gen2.3", &mstp_clks[MSTP928]),
        CLKDEV_DEV_ID("r8a7790-ether", &mstp_clks[MSTP813]),
+       CLKDEV_DEV_ID("e61f0000.thermal", &mstp_clks[MSTP522]),
        CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]),
        CLKDEV_DEV_ID("ee200000.mmcif", &mstp_clks[MSTP315]),
        CLKDEV_DEV_ID("sh_mmcif.0", &mstp_clks[MSTP315]),
        CLKDEV_DEV_ID("ee220000.mmcif", &mstp_clks[MSTP305]),
        CLKDEV_DEV_ID("sh_mmcif.1", &mstp_clks[MSTP305]),
        CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]),
+       CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]),
+       CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP704]),
+       /* ICK */
+       CLKDEV_ICK_ID("usbhs", "usb_phy_rcar_gen2", &mstp_clks[MSTP704]),
+       CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7790", &mstp_clks[MSTP726]),
+       CLKDEV_ICK_ID("lvds.1", "rcar-du-r8a7790", &mstp_clks[MSTP725]),
+       CLKDEV_ICK_ID("du.0", "rcar-du-r8a7790", &mstp_clks[MSTP724]),
+       CLKDEV_ICK_ID("du.1", "rcar-du-r8a7790", &mstp_clks[MSTP723]),
+       CLKDEV_ICK_ID("du.2", "rcar-du-r8a7790", &mstp_clks[MSTP722]),
+       CLKDEV_ICK_ID("ssi.0", "rcar_sound", &mstp_clks[MSTP1015]),
+       CLKDEV_ICK_ID("ssi.1", "rcar_sound", &mstp_clks[MSTP1014]),
+       CLKDEV_ICK_ID("ssi.2", "rcar_sound", &mstp_clks[MSTP1013]),
+       CLKDEV_ICK_ID("ssi.3", "rcar_sound", &mstp_clks[MSTP1012]),
+       CLKDEV_ICK_ID("ssi.4", "rcar_sound", &mstp_clks[MSTP1011]),
+       CLKDEV_ICK_ID("ssi.5", "rcar_sound", &mstp_clks[MSTP1010]),
+       CLKDEV_ICK_ID("ssi.6", "rcar_sound", &mstp_clks[MSTP1009]),
+       CLKDEV_ICK_ID("ssi.7", "rcar_sound", &mstp_clks[MSTP1008]),
+       CLKDEV_ICK_ID("ssi.8", "rcar_sound", &mstp_clks[MSTP1007]),
+       CLKDEV_ICK_ID("ssi.9", "rcar_sound", &mstp_clks[MSTP1006]),
  };
  
  #define R8A7790_CLOCK_ROOT(e, m, p0, p1, p30, p31)            \
@@@ -321,10 -361,10 +361,10 @@@ void __init r8a7790_clock_init(void
                R8A7790_CLOCK_ROOT(20, &extal_clk, 130, 156, 80, 66);
                break;
        case MD(14):
-               R8A7790_CLOCK_ROOT(26, &extal_div2_clk, 200, 240, 122, 102);
+               R8A7790_CLOCK_ROOT(26 / 2, &extal_div2_clk, 200, 240, 122, 102);
                break;
        case MD(13) | MD(14):
-               R8A7790_CLOCK_ROOT(30, &extal_div2_clk, 172, 208, 106, 88);
+               R8A7790_CLOCK_ROOT(30 / 2, &extal_div2_clk, 172, 208, 106, 88);
                break;
        }
  
index 2aeec468cf7cd881ac68db1a248db943d5d1fc25,5e6a0566f3c625e16d7844064872dd7fc7986f59..87e349ddba7c87be60eddcaf7c4717f24b02173e
@@@ -625,6 -625,12 +625,6 @@@ static struct clk_lookup lookups[] = 
        CLKDEV_CON_ID("sdhi0_clk", &div6_clks[DIV6_SDHI0]),
        CLKDEV_CON_ID("sdhi1_clk", &div6_clks[DIV6_SDHI1]),
        CLKDEV_CON_ID("sdhi2_clk", &div6_clks[DIV6_SDHI2]),
 -      CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
 -      CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
 -      CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
 -      CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
 -      CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.0", &dsi0phy_clk),
 -      CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.1", &dsi1phy_clk),
  
        /* MSTP32 clocks */
        CLKDEV_DEV_ID("i2c-sh_mobile.2", &mstp_clks[MSTP001]), /* I2C2 */
        CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP331]), /* SCIFA6 */
        CLKDEV_DEV_ID("sh_cmt.10", &mstp_clks[MSTP329]), /* CMT10 */
        CLKDEV_DEV_ID("sh_fsi2", &mstp_clks[MSTP328]), /* FSI */
+       CLKDEV_DEV_ID("ec230000.sound", &mstp_clks[MSTP328]), /* FSI */
        CLKDEV_DEV_ID("sh_irda.0", &mstp_clks[MSTP325]), /* IrDA */
        CLKDEV_DEV_ID("i2c-sh_mobile.1", &mstp_clks[MSTP323]), /* I2C1 */
        CLKDEV_DEV_ID("e6822000.i2c", &mstp_clks[MSTP323]), /* I2C1 */
        CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */
        CLKDEV_DEV_ID("e6828000.i2c", &mstp_clks[MSTP410]), /* I2C4 */
        CLKDEV_DEV_ID("sh_keysc.0", &mstp_clks[MSTP403]), /* KEYSC */
 +
 +      /* ICK */
 +      CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSIT]),
 +      CLKDEV_ICK_ID("dsit_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSIT]),
 +      CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.0", &div6_clks[DIV6_DSI0P]),
 +      CLKDEV_ICK_ID("dsip_clk", "sh-mipi-dsi.1", &div6_clks[DIV6_DSI1P]),
 +      CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.0", &dsi0phy_clk),
 +      CLKDEV_ICK_ID("dsiphy_clk", "sh-mipi-dsi.1", &dsi1phy_clk),
  };
  
  void __init sh73a0_clock_init(void)
index 8f9453152fb91f9760185466cf666c23c8eb1052,339292e8583872f44220386d44ff573343ed88e6..8e860b36997a670b4e0ad5a4af1368f5b5da510e
@@@ -188,107 -188,35 +188,35 @@@ void __init r8a7779_pinmux_init(void
                            ARRAY_SIZE(r8a7779_pinctrl_devices));
  }
  
- static struct plat_sci_port scif0_platform_data = {
-       .mapbase        = 0xffe40000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x78)),
- };
- static struct platform_device scif0_device = {
-       .name           = "sh-sci",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &scif0_platform_data,
-       },
- };
- static struct plat_sci_port scif1_platform_data = {
-       .mapbase        = 0xffe41000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x79)),
- };
- static struct platform_device scif1_device = {
-       .name           = "sh-sci",
-       .id             = 1,
-       .dev            = {
-               .platform_data  = &scif1_platform_data,
-       },
- };
- static struct plat_sci_port scif2_platform_data = {
-       .mapbase        = 0xffe42000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x7a)),
- };
- static struct platform_device scif2_device = {
-       .name           = "sh-sci",
-       .id             = 2,
-       .dev            = {
-               .platform_data  = &scif2_platform_data,
-       },
- };
- static struct plat_sci_port scif3_platform_data = {
-       .mapbase        = 0xffe43000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x7b)),
- };
- static struct platform_device scif3_device = {
-       .name           = "sh-sci",
-       .id             = 3,
-       .dev            = {
-               .platform_data  = &scif3_platform_data,
-       },
- };
- static struct plat_sci_port scif4_platform_data = {
-       .mapbase        = 0xffe44000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x7c)),
- };
- static struct platform_device scif4_device = {
-       .name           = "sh-sci",
-       .id             = 4,
-       .dev            = {
-               .platform_data  = &scif4_platform_data,
-       },
- };
- static struct plat_sci_port scif5_platform_data = {
-       .mapbase        = 0xffe45000,
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
-       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
-       .scbrr_algo_id  = SCBRR_ALGO_2,
-       .type           = PORT_SCIF,
-       .irqs           = SCIx_IRQ_MUXED(gic_iid(0x7d)),
- };
+ /* SCIF */
+ #define R8A7779_SCIF(index, baseaddr, irq)                    \
+ static struct plat_sci_port scif##index##_platform_data = {   \
+       .type           = PORT_SCIF,                            \
+       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,      \
+       .scscr          = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,     \
+ };                                                            \
+                                                               \
+ static struct resource scif##index##_resources[] = {          \
+       DEFINE_RES_MEM(baseaddr, 0x100),                        \
+       DEFINE_RES_IRQ(irq),                                    \
+ };                                                            \
+                                                               \
+ static struct platform_device scif##index##_device = {                \
+       .name           = "sh-sci",                             \
+       .id             = index,                                \
+       .resource       = scif##index##_resources,              \
+       .num_resources  = ARRAY_SIZE(scif##index##_resources),  \
+       .dev            = {                                     \
+               .platform_data  = &scif##index##_platform_data, \
+       },                                                      \
+ }
  
- static struct platform_device scif5_device = {
-       .name           = "sh-sci",
-       .id             = 5,
-       .dev            = {
-               .platform_data  = &scif5_platform_data,
-       },
- };
+ R8A7779_SCIF(0, 0xffe40000, gic_iid(0x78));
+ R8A7779_SCIF(1, 0xffe41000, gic_iid(0x79));
+ R8A7779_SCIF(2, 0xffe42000, gic_iid(0x7a));
+ R8A7779_SCIF(3, 0xffe43000, gic_iid(0x7b));
+ R8A7779_SCIF(4, 0xffe44000, gic_iid(0x7c));
+ R8A7779_SCIF(5, 0xffe45000, gic_iid(0x7d));
  
  /* TMU */
  static struct sh_timer_config tmu00_platform_data = {
@@@ -598,6 -526,45 +526,6 @@@ static struct platform_device ohci1_dev
        .resource       = ohci1_resources,
  };
  
 -/* Ether */
 -static struct resource ether_resources[] __initdata = {
 -      {
 -              .start  = 0xfde00000,
 -              .end    = 0xfde003ff,
 -              .flags  = IORESOURCE_MEM,
 -      }, {
 -              .start  = gic_iid(0xb4),
 -              .flags  = IORESOURCE_IRQ,
 -      },
 -};
 -
 -#define R8A7779_VIN(idx) \
 -static struct resource vin##idx##_resources[] __initdata = {          \
 -      DEFINE_RES_MEM(0xffc50000 + 0x1000 * (idx), 0x1000),            \
 -      DEFINE_RES_IRQ(gic_iid(0x5f + (idx))),                          \
 -};                                                                    \
 -                                                                      \
 -static struct platform_device_info vin##idx##_info __initdata = {     \
 -      .parent         = &platform_bus,                                \
 -      .name           = "r8a7779-vin",                                \
 -      .id             = idx,                                          \
 -      .res            = vin##idx##_resources,                         \
 -      .num_res        = ARRAY_SIZE(vin##idx##_resources),             \
 -      .dma_mask       = DMA_BIT_MASK(32),                             \
 -}
 -
 -R8A7779_VIN(0);
 -R8A7779_VIN(1);
 -R8A7779_VIN(2);
 -R8A7779_VIN(3);
 -
 -static struct platform_device_info *vin_info_table[] __initdata = {
 -      &vin0_info,
 -      &vin1_info,
 -      &vin2_info,
 -      &vin3_info,
 -};
 -
  /* HPB-DMA */
  
  /* Asynchronous mode register bits */
@@@ -786,6 -753,24 +714,6 @@@ void __init r8a7779_add_standard_device
        r8a7779_register_hpb_dmae();
  }
  
 -void __init r8a7779_add_ether_device(struct sh_eth_plat_data *pdata)
 -{
 -      platform_device_register_resndata(&platform_bus, "r8a777x-ether", -1,
 -                                        ether_resources,
 -                                        ARRAY_SIZE(ether_resources),
 -                                        pdata, sizeof(*pdata));
 -}
 -
 -void __init r8a7779_add_vin_device(int id, struct rcar_vin_platform_data *pdata)
 -{
 -      BUG_ON(id < 0 || id > 3);
 -
 -      vin_info_table[id]->data = pdata;
 -      vin_info_table[id]->size_data = sizeof(*pdata);
 -
 -      platform_device_register_full(vin_info_table[id]);
 -}
 -
  /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
  void __init __weak r8a7779_register_twd(void) { }
  
index 3543c3bacb75d828cd9681f9e5b93740822a9467,d6589f33f31ad1c726f7d099a8aec7f91d024ce6..6ab37aa1e919825aa6584441cffc91b7057fcbf5
@@@ -34,10 -34,6 +34,10 @@@ static const struct resource pfc_resour
        DEFINE_RES_MEM(0xe6060000, 0x250),
  };
  
 +#define r8a7790_register_pfc()                                                \
 +      platform_device_register_simple("pfc-r8a7790", -1, pfc_resources, \
 +                                      ARRAY_SIZE(pfc_resources))
 +
  #define R8A7790_GPIO(idx)                                             \
  static const struct resource r8a7790_gpio##idx##_resources[] __initconst = { \
        DEFINE_RES_MEM(0xe6050000 + 0x1000 * (idx), 0x50),              \
@@@ -67,72 -63,88 +67,87 @@@ R8A7790_GPIO(5)
                &r8a7790_gpio##idx##_platform_data,                     \
                sizeof(r8a7790_gpio##idx##_platform_data))
  
+ static struct resource i2c_resources[] __initdata = {
+       /* I2C0 */
+       DEFINE_RES_MEM(0xE6508000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(287)),
+       /* I2C1 */
+       DEFINE_RES_MEM(0xE6518000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(288)),
+       /* I2C2 */
+       DEFINE_RES_MEM(0xE6530000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(286)),
+       /* I2C3 */
+       DEFINE_RES_MEM(0xE6540000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(290)),
+ };
+ #define r8a7790_register_i2c(idx)             \
+       platform_device_register_simple(        \
+               "i2c-rcar_gen2", idx,           \
+               i2c_resources + (2 * idx), 2);  \
  void __init r8a7790_pinmux_init(void)
  {
 -      platform_device_register_simple("pfc-r8a7790", -1, pfc_resources,
 -                                      ARRAY_SIZE(pfc_resources));
 +      r8a7790_register_pfc();
        r8a7790_register_gpio(0);
        r8a7790_register_gpio(1);
        r8a7790_register_gpio(2);
        r8a7790_register_gpio(3);
        r8a7790_register_gpio(4);
        r8a7790_register_gpio(5);
+       r8a7790_register_i2c(0);
+       r8a7790_register_i2c(1);
+       r8a7790_register_i2c(2);
+       r8a7790_register_i2c(3);
  }
  
- #define SCIF_COMMON(scif_type, baseaddr, irq)                 \
-       .type           = scif_type,                            \
-       .mapbase        = baseaddr,                             \
-       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,      \
-       .irqs           = SCIx_IRQ_MUXED(irq)
- #define SCIFA_DATA(index, baseaddr, irq)              \
- [index] = {                                           \
-       SCIF_COMMON(PORT_SCIFA, baseaddr, irq),         \
-       .scbrr_algo_id  = SCBRR_ALGO_4,                 \
-       .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE0,      \
- }
- #define SCIFB_DATA(index, baseaddr, irq)      \
- [index] = {                                   \
-       SCIF_COMMON(PORT_SCIFB, baseaddr, irq), \
-       .scbrr_algo_id  = SCBRR_ALGO_4,         \
-       .scscr = SCSCR_RE | SCSCR_TE,           \
- }
- #define SCIF_DATA(index, baseaddr, irq)               \
- [index] = {                                           \
-       SCIF_COMMON(PORT_SCIF, baseaddr, irq),          \
-       .scbrr_algo_id  = SCBRR_ALGO_2,                 \
-       .scscr = SCSCR_RE | SCSCR_TE,   \
- }
- #define HSCIF_DATA(index, baseaddr, irq)              \
- [index] = {                                           \
-       SCIF_COMMON(PORT_HSCIF, baseaddr, irq),         \
-       .scbrr_algo_id  = SCBRR_ALGO_6,                 \
-       .scscr = SCSCR_RE | SCSCR_TE,   \
+ #define __R8A7790_SCIF(scif_type, _scscr, index, baseaddr, irq)               \
+ static struct plat_sci_port scif##index##_platform_data = {           \
+       .type           = scif_type,                                    \
+       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,              \
+       .scscr          = _scscr,                                       \
+ };                                                                    \
+                                                                       \
+ static struct resource scif##index##_resources[] = {                  \
+       DEFINE_RES_MEM(baseaddr, 0x100),                                \
+       DEFINE_RES_IRQ(irq),                                            \
  }
  
- enum { SCIFA0, SCIFA1, SCIFB0, SCIFB1, SCIFB2, SCIFA2, SCIF0, SCIF1,
-        HSCIF0, HSCIF1 };
- static const struct plat_sci_port scif[] __initconst = {
-       SCIFA_DATA(SCIFA0, 0xe6c40000, gic_spi(144)), /* SCIFA0 */
-       SCIFA_DATA(SCIFA1, 0xe6c50000, gic_spi(145)), /* SCIFA1 */
-       SCIFB_DATA(SCIFB0, 0xe6c20000, gic_spi(148)), /* SCIFB0 */
-       SCIFB_DATA(SCIFB1, 0xe6c30000, gic_spi(149)), /* SCIFB1 */
-       SCIFB_DATA(SCIFB2, 0xe6ce0000, gic_spi(150)), /* SCIFB2 */
-       SCIFA_DATA(SCIFA2, 0xe6c60000, gic_spi(151)), /* SCIFA2 */
-       SCIF_DATA(SCIF0, 0xe6e60000, gic_spi(152)), /* SCIF0 */
-       SCIF_DATA(SCIF1, 0xe6e68000, gic_spi(153)), /* SCIF1 */
-       HSCIF_DATA(HSCIF0, 0xe62c0000, gic_spi(154)), /* HSCIF0 */
-       HSCIF_DATA(HSCIF1, 0xe62c8000, gic_spi(155)), /* HSCIF1 */
- };
- static inline void r8a7790_register_scif(int idx)
- {
-       platform_device_register_data(&platform_bus, "sh-sci", idx, &scif[idx],
-                                     sizeof(struct plat_sci_port));
- }
+ #define R8A7790_SCIF(index, baseaddr, irq)                            \
+       __R8A7790_SCIF(PORT_SCIF, SCSCR_RE | SCSCR_TE,                  \
+                      index, baseaddr, irq)
+ #define R8A7790_SCIFA(index, baseaddr, irq)                           \
+       __R8A7790_SCIF(PORT_SCIFA, SCSCR_RE | SCSCR_TE | SCSCR_CKE0,    \
+                      index, baseaddr, irq)
+ #define R8A7790_SCIFB(index, baseaddr, irq)                           \
+       __R8A7790_SCIF(PORT_SCIFB, SCSCR_RE | SCSCR_TE,                 \
+                      index, baseaddr, irq)
+ #define R8A7790_HSCIF(index, baseaddr, irq)                           \
+       __R8A7790_SCIF(PORT_HSCIF, SCSCR_RE | SCSCR_TE,                 \
+                      index, baseaddr, irq)
+ R8A7790_SCIFA(0, 0xe6c40000, gic_spi(144)); /* SCIFA0 */
+ R8A7790_SCIFA(1, 0xe6c50000, gic_spi(145)); /* SCIFA1 */
+ R8A7790_SCIFB(2, 0xe6c20000, gic_spi(148)); /* SCIFB0 */
+ R8A7790_SCIFB(3, 0xe6c30000, gic_spi(149)); /* SCIFB1 */
+ R8A7790_SCIFB(4, 0xe6ce0000, gic_spi(150)); /* SCIFB2 */
+ R8A7790_SCIFA(5, 0xe6c60000, gic_spi(151)); /* SCIFA2 */
+ R8A7790_SCIF(6,  0xe6e60000, gic_spi(152)); /* SCIF0 */
+ R8A7790_SCIF(7,  0xe6e68000, gic_spi(153)); /* SCIF1 */
+ R8A7790_HSCIF(8, 0xe62c0000, gic_spi(154)); /* HSCIF0 */
+ R8A7790_HSCIF(9, 0xe62c8000, gic_spi(155)); /* HSCIF1 */
+ #define r8a7790_register_scif(index)                                         \
+       platform_device_register_resndata(&platform_bus, "sh-sci", index,      \
+                                         scif##index##_resources,             \
+                                         ARRAY_SIZE(scif##index##_resources), \
+                                         &scif##index##_platform_data,        \
+                                         sizeof(scif##index##_platform_data))
  
  static const struct renesas_irqc_config irqc0_data __initconst = {
        .irq_base = irq_pin(0), /* IRQ0 -> IRQ3 */
@@@ -185,16 -197,16 +200,16 @@@ static const struct resource cmt00_reso
  
  void __init r8a7790_add_dt_devices(void)
  {
-       r8a7790_register_scif(SCIFA0);
-       r8a7790_register_scif(SCIFA1);
-       r8a7790_register_scif(SCIFB0);
-       r8a7790_register_scif(SCIFB1);
-       r8a7790_register_scif(SCIFB2);
-       r8a7790_register_scif(SCIFA2);
-       r8a7790_register_scif(SCIF0);
-       r8a7790_register_scif(SCIF1);
-       r8a7790_register_scif(HSCIF0);
-       r8a7790_register_scif(HSCIF1);
+       r8a7790_register_scif(0);
+       r8a7790_register_scif(1);
+       r8a7790_register_scif(2);
+       r8a7790_register_scif(3);
+       r8a7790_register_scif(4);
+       r8a7790_register_scif(5);
+       r8a7790_register_scif(6);
+       r8a7790_register_scif(7);
+       r8a7790_register_scif(8);
+       r8a7790_register_scif(9);
        r8a7790_register_cmt(00);
  }
  
index 65151c48cbd4fdc1ee431abf4ce264358d4ad69b,00b348ec48b8cd56632a546552323f7ed8d11bdb..f74ab530c71df767a8d6f9f1dcc0ea018f328298
@@@ -71,167 -71,38 +71,38 @@@ void __init sh73a0_pinmux_init(void
                                        ARRAY_SIZE(pfc_resources));
  }
  
- static struct plat_sci_port scif0_platform_data = {
-       .mapbase        = 0xe6c40000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(72), gic_spi(72),
-                           gic_spi(72), gic_spi(72) },
- };
- static struct platform_device scif0_device = {
-       .name           = "sh-sci",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &scif0_platform_data,
-       },
- };
- static struct plat_sci_port scif1_platform_data = {
-       .mapbase        = 0xe6c50000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(73), gic_spi(73),
-                           gic_spi(73), gic_spi(73) },
- };
- static struct platform_device scif1_device = {
-       .name           = "sh-sci",
-       .id             = 1,
-       .dev            = {
-               .platform_data  = &scif1_platform_data,
-       },
- };
- static struct plat_sci_port scif2_platform_data = {
-       .mapbase        = 0xe6c60000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(74), gic_spi(74),
-                           gic_spi(74), gic_spi(74) },
- };
- static struct platform_device scif2_device = {
-       .name           = "sh-sci",
-       .id             = 2,
-       .dev            = {
-               .platform_data  = &scif2_platform_data,
-       },
- };
- static struct plat_sci_port scif3_platform_data = {
-       .mapbase        = 0xe6c70000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(75), gic_spi(75),
-                           gic_spi(75), gic_spi(75) },
- };
- static struct platform_device scif3_device = {
-       .name           = "sh-sci",
-       .id             = 3,
-       .dev            = {
-               .platform_data  = &scif3_platform_data,
-       },
- };
- static struct plat_sci_port scif4_platform_data = {
-       .mapbase        = 0xe6c80000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(78), gic_spi(78),
-                           gic_spi(78), gic_spi(78) },
- };
- static struct platform_device scif4_device = {
-       .name           = "sh-sci",
-       .id             = 4,
-       .dev            = {
-               .platform_data  = &scif4_platform_data,
-       },
- };
- static struct plat_sci_port scif5_platform_data = {
-       .mapbase        = 0xe6cb0000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(79), gic_spi(79),
-                           gic_spi(79), gic_spi(79) },
- };
- static struct platform_device scif5_device = {
-       .name           = "sh-sci",
-       .id             = 5,
-       .dev            = {
-               .platform_data  = &scif5_platform_data,
-       },
- };
- static struct plat_sci_port scif6_platform_data = {
-       .mapbase        = 0xe6cc0000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(156), gic_spi(156),
-                           gic_spi(156), gic_spi(156) },
- };
- static struct platform_device scif6_device = {
-       .name           = "sh-sci",
-       .id             = 6,
-       .dev            = {
-               .platform_data  = &scif6_platform_data,
-       },
- };
- static struct plat_sci_port scif7_platform_data = {
-       .mapbase        = 0xe6cd0000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFA,
-       .irqs           = { gic_spi(143), gic_spi(143),
-                           gic_spi(143), gic_spi(143) },
- };
- static struct platform_device scif7_device = {
-       .name           = "sh-sci",
-       .id             = 7,
-       .dev            = {
-               .platform_data  = &scif7_platform_data,
-       },
- };
- static struct plat_sci_port scif8_platform_data = {
-       .mapbase        = 0xe6c30000,
-       .flags          = UPF_BOOT_AUTOCONF,
-       .scscr          = SCSCR_RE | SCSCR_TE,
-       .scbrr_algo_id  = SCBRR_ALGO_4,
-       .type           = PORT_SCIFB,
-       .irqs           = { gic_spi(80), gic_spi(80),
-                           gic_spi(80), gic_spi(80) },
- };
+ /* SCIF */
+ #define SH73A0_SCIF(scif_type, index, baseaddr, irq)          \
+ static struct plat_sci_port scif##index##_platform_data = {   \
+       .type           = scif_type,                            \
+       .flags          = UPF_BOOT_AUTOCONF,                    \
+       .scscr          = SCSCR_RE | SCSCR_TE,                  \
+ };                                                            \
+                                                               \
+ static struct resource scif##index##_resources[] = {          \
+       DEFINE_RES_MEM(baseaddr, 0x100),                        \
+       DEFINE_RES_IRQ(irq),                                    \
+ };                                                            \
+                                                               \
+ static struct platform_device scif##index##_device = {                \
+       .name           = "sh-sci",                             \
+       .id             = index,                                \
+       .resource       = scif##index##_resources,              \
+       .num_resources  = ARRAY_SIZE(scif##index##_resources),  \
+       .dev            = {                                     \
+               .platform_data  = &scif##index##_platform_data, \
+       },                                                      \
+ }
  
- static struct platform_device scif8_device = {
-       .name           = "sh-sci",
-       .id             = 8,
-       .dev            = {
-               .platform_data  = &scif8_platform_data,
-       },
- };
+ SH73A0_SCIF(PORT_SCIFA, 0, 0xe6c40000, gic_spi(72));
+ SH73A0_SCIF(PORT_SCIFA, 1, 0xe6c50000, gic_spi(73));
+ SH73A0_SCIF(PORT_SCIFA, 2, 0xe6c60000, gic_spi(74));
+ SH73A0_SCIF(PORT_SCIFA, 3, 0xe6c70000, gic_spi(75));
+ SH73A0_SCIF(PORT_SCIFA, 4, 0xe6c80000, gic_spi(78));
+ SH73A0_SCIF(PORT_SCIFA, 5, 0xe6cb0000, gic_spi(79));
+ SH73A0_SCIF(PORT_SCIFA, 6, 0xe6cc0000, gic_spi(156));
+ SH73A0_SCIF(PORT_SCIFA, 7, 0xe6cd0000, gic_spi(143));
+ SH73A0_SCIF(PORT_SCIFB, 8, 0xe6c30000, gic_spi(80));
  
  static struct sh_timer_config cmt10_platform_data = {
        .name = "CMT10",
@@@ -273,7 -144,7 +144,7 @@@ static struct sh_timer_config tmu00_pla
  };
  
  static struct resource tmu00_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xfff60008, 0xc, "TMU00"),
 +      [0] = DEFINE_RES_MEM(0xfff60008, 0xc),
        [1] = {
                .start  = intcs_evt2irq(0x0e80), /* TMU0_TUNI00 */
                .flags  = IORESOURCE_IRQ,
@@@ -298,7 -169,7 +169,7 @@@ static struct sh_timer_config tmu01_pla
  };
  
  static struct resource tmu01_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xfff60014, 0xc, "TMU00"),
 +      [0] = DEFINE_RES_MEM(0xfff60014, 0xc),
        [1] = {
                .start  = intcs_evt2irq(0x0ea0), /* TMU0_TUNI01 */
                .flags  = IORESOURCE_IRQ,
@@@ -316,7 -187,7 +187,7 @@@ static struct platform_device tmu01_dev
  };
  
  static struct resource i2c0_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xe6820000, 0x426, "IIC0"),
 +      [0] = DEFINE_RES_MEM(0xe6820000, 0x426),
        [1] = {
                .start  = gic_spi(167),
                .end    = gic_spi(170),
  };
  
  static struct resource i2c1_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xe6822000, 0x426, "IIC1"),
 +      [0] = DEFINE_RES_MEM(0xe6822000, 0x426),
        [1] = {
                .start  = gic_spi(51),
                .end    = gic_spi(54),
  };
  
  static struct resource i2c2_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xe6824000, 0x426, "IIC2"),
 +      [0] = DEFINE_RES_MEM(0xe6824000, 0x426),
        [1] = {
                .start  = gic_spi(171),
                .end    = gic_spi(174),
  };
  
  static struct resource i2c3_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xe6826000, 0x426, "IIC3"),
 +      [0] = DEFINE_RES_MEM(0xe6826000, 0x426),
        [1] = {
                .start  = gic_spi(183),
                .end    = gic_spi(186),
  };
  
  static struct resource i2c4_resources[] = {
 -      [0] = DEFINE_RES_MEM_NAMED(0xe6828000, 0x426, "IIC4"),
 +      [0] = DEFINE_RES_MEM(0xe6828000, 0x426),
        [1] = {
                .start  = gic_spi(187),
                .end    = gic_spi(190),
@@@ -722,7 -593,7 +593,7 @@@ static struct platform_device pmu_devic
  
  /* an IPMMU module for ICB */
  static struct resource ipmmu_resources[] = {
 -      DEFINE_RES_MEM_NAMED(0xfe951000, 0x100, "IPMMU"),
 +      DEFINE_RES_MEM(0xfe951000, 0x100),
  };
  
  static const char * const ipmmu_dev_names[] = {
index bce0d4277f71974ceefb7a2f9ec8e31ef75ceb9d,8053b1befc5e6994976b65ad24db1117ca45ffd6..b9d6cad8669b8ea623aa5787de36c80d8caa5621
@@@ -1,7 -1,9 +1,9 @@@
  config ARCH_SUNXI
        bool "Allwinner A1X SOCs" if ARCH_MULTI_V7
+       select ARCH_HAS_RESET_CONTROLLER
        select ARCH_REQUIRE_GPIOLIB
        select ARM_GIC
+       select ARM_PSCI
        select CLKSRC_MMIO
        select CLKSRC_OF
        select COMMON_CLK
@@@ -10,6 -12,6 +12,7 @@@
        select HAVE_SMP
        select PINCTRL
        select PINCTRL_SUNXI
+       select RESET_CONTROLLER
        select SPARSE_IRQ
        select SUN4I_TIMER
 +      select SUN5I_HSTIMER
index 5226162fac69e46f78f470f883b8b11f3f3cdbda,9724e4e7cc93ffa6232833bbb0c1f6ebdc1fbdf2..fe08fd34c0ce8422b00508efb20cb94ff3a2dda2
  #define U300_TIMER_APP_CRC                                    (0x100)
  #define U300_TIMER_APP_CRC_CLOCK_REQUEST_ENABLE                       (0x00000001)
  
 -#define TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
 -#define US_PER_TICK ((1000000 + (HZ/2)) / HZ)
 -
  static void __iomem *u300_timer_base;
  
 +struct u300_clockevent_data {
 +      struct clock_event_device cevd;
 +      unsigned ticks_per_jiffy;
 +};
 +
  /*
   * The u300_set_mode() function is always called first, if we
   * have oneshot timer active, the oneshot scheduling function
  static void u300_set_mode(enum clock_event_mode mode,
                          struct clock_event_device *evt)
  {
 +      struct u300_clockevent_data *cevdata =
 +              container_of(evt, struct u300_clockevent_data, cevd);
 +
        switch (mode) {
        case CLOCK_EVT_MODE_PERIODIC:
                /* Disable interrupts on GPT1 */
                 * Set the periodic mode to a certain number of ticks per
                 * jiffy.
                 */
 -              writel(TICKS_PER_JIFFY,
 +              writel(cevdata->ticks_per_jiffy,
                       u300_timer_base + U300_TIMER_APP_GPT1TC);
                /*
                 * Set continuous mode, so the timer keeps triggering
@@@ -310,23 -305,20 +310,23 @@@ static int u300_set_next_event(unsigne
        return 0;
  }
  
 -
 -/* Use general purpose timer 1 as clock event */
 -static struct clock_event_device clockevent_u300_1mhz = {
 -      .name           = "GPT1",
 -      .rating         = 300, /* Reasonably fast and accurate clock event */
 -      .features       = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
 -      .set_next_event = u300_set_next_event,
 -      .set_mode       = u300_set_mode,
 +static struct u300_clockevent_data u300_clockevent_data = {
 +      /* Use general purpose timer 1 as clock event */
 +      .cevd = {
 +              .name           = "GPT1",
 +              /* Reasonably fast and accurate clock event */
 +              .rating         = 300,
 +              .features       = CLOCK_EVT_FEAT_PERIODIC |
 +                      CLOCK_EVT_FEAT_ONESHOT,
 +              .set_next_event = u300_set_next_event,
 +              .set_mode       = u300_set_mode,
 +      },
  };
  
  /* Clock event timer interrupt handler */
  static irqreturn_t u300_timer_interrupt(int irq, void *dev_id)
  {
 -      struct clock_event_device *evt = &clockevent_u300_1mhz;
 +      struct clock_event_device *evt = &u300_clockevent_data.cevd;
        /* ACK/Clear timer IRQ for the APP GPT1 Timer */
  
        writel(U300_TIMER_APP_GPT1IA_IRQ_ACK,
@@@ -349,7 -341,7 +349,7 @@@ static struct irqaction u300_timer_irq 
   * stamp. (Inspired by OMAP implementation.)
   */
  
- static u32 notrace u300_read_sched_clock(void)
+ static u64 notrace u300_read_sched_clock(void)
  {
        return readl(u300_timer_base + U300_TIMER_APP_GPT2CC);
  }
@@@ -387,9 -379,7 +387,9 @@@ static void __init u300_timer_init_of(s
        clk_prepare_enable(clk);
        rate = clk_get_rate(clk);
  
-       setup_sched_clock(u300_read_sched_clock, 32, rate);
 +      u300_clockevent_data.ticks_per_jiffy = DIV_ROUND_CLOSEST(rate, HZ);
 +
+       sched_clock_register(u300_read_sched_clock, 32, rate);
  
        u300_delay_timer.read_current_timer = &u300_read_current_timer;
        u300_delay_timer.freq = rate;
                pr_err("timer: failed to initialize U300 clock source\n");
  
        /* Configure and register the clockevent */
 -      clockevents_config_and_register(&clockevent_u300_1mhz, rate,
 +      clockevents_config_and_register(&u300_clockevent_data.cevd, rate,
                                        1, 0xffffffff);
  
        /*
index 15921a1839d75dc482a8ed4b29d5b08d421f31f6,dade2920e9a6206f6a552600853402c9b1e1d0a0..261258f717fc200f99d6768d3fe7353ccaf18b90
@@@ -17,7 -17,6 +17,7 @@@
  #include <linux/interrupt.h>
  #include <linux/irq.h>
  #include <linux/sched_clock.h>
 +#include <plat/time.h>
  
  /*
   * MBus bridge block registers.
@@@ -61,7 -60,7 +61,7 @@@ static u32 ticks_per_jiffy
   * at least 7.5ns (133MHz TCLK).
   */
  
- static u32 notrace orion_read_sched_clock(void)
+ static u64 notrace orion_read_sched_clock(void)
  {
        return ~readl(timer_base + TIMER0_VAL_OFF);
  }
@@@ -175,7 -174,7 +175,7 @@@ static irqreturn_t orion_timer_interrup
  
  static struct irqaction orion_timer_irq = {
        .name           = "orion_tick",
 -      .flags          = IRQF_DISABLED | IRQF_TIMER,
 +      .flags          = IRQF_TIMER,
        .handler        = orion_timer_interrupt
  };
  
@@@ -202,7 -201,7 +202,7 @@@ orion_time_init(void __iomem *_bridge_b
        /*
         * Set scale and timer for sched_clock.
         */
-       setup_sched_clock(orion_read_sched_clock, 32, tclk);
+       sched_clock_register(orion_read_sched_clock, 32, tclk);
  
        /*
         * Setup free-running clocksource timer (interrupts
index 358358d87b6dc4f9fe384c9af5158ab43ab3f8ea,1f42e8f0d7c2e90a4823c0e6b45f78f9402144ac..c7ca50a9c232bdcc246fbce2508f71ff6dbcab97
@@@ -22,11 -22,10 +22,11 @@@ obj-$(CONFIG_ARCH_MOXART)  += moxart_tim
  obj-$(CONFIG_ARCH_MXS)                += mxs_timer.o
  obj-$(CONFIG_ARCH_PRIMA2)     += timer-prima2.o
  obj-$(CONFIG_SUN4I_TIMER)     += sun4i_timer.o
 +obj-$(CONFIG_SUN5I_HSTIMER)   += timer-sun5i.o
  obj-$(CONFIG_ARCH_TEGRA)      += tegra20_timer.o
  obj-$(CONFIG_VT8500_TIMER)    += vt8500_timer.o
  obj-$(CONFIG_ARCH_NSPIRE)     += zevio-timer.o
- obj-$(CONFIG_ARCH_BCM)                += bcm_kona_timer.o
+ obj-$(CONFIG_ARCH_BCM_MOBILE) += bcm_kona_timer.o
  obj-$(CONFIG_CADENCE_TTC_TIMER)       += cadence_ttc_timer.o
  obj-$(CONFIG_CLKSRC_EFM32)    += time-efm32.o
  obj-$(CONFIG_CLKSRC_EXYNOS_MCT)       += exynos_mct.o