]> 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>
Tue, 9 Dec 2014 22:38:28 +0000 (14:38 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 9 Dec 2014 22:38:28 +0000 (14:38 -0800)
Pull ARM SoC platform changes from Arnd Bergmann:
 "New and updated SoC support, notable changes include:

   - bcm:
        brcmstb SMP support
        initial iproc/cygnus support
   - exynos:
        Exynos4415 SoC support
        PMU and suspend support for Exynos5420
        PMU support for Exynos3250
        pm related maintenance
   - imx:
        new LS1021A SoC support
        vybrid 610 global timer support
   - integrator:
        convert to using multiplatform configuration
   - mediatek:
        earlyprintk support for mt8127/mt8135
   - meson:
        meson8 soc and l2 cache controller support
   - mvebu:
        Armada 38x CPU hotplug support
        drop support for prerelease Armada 375 Z1 stepping
        extended suspend support, now works on Armada 370/XP
   - omap:
        hwmod related maintenance
        prcm cleanup
   - pxa:
        initial pxa27x DT handling
   - rockchip:
        SMP support for rk3288
        add cpu frequency scaling support
   - shmobile:
        r8a7740 power domain support
        various small restart, timer, pci apmu changes
   - sunxi:
        Allwinner A80 (sun9i) earlyprintk support
   - ux500:
        power domain support

  Overall, a significant chunk of changes, coming mostly from the usual
  suspects: omap, shmobile, samsung and mvebu, all of which already
  contain a lot of platform specific code in arch/arm"

* tag 'soc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (187 commits)
  ARM: mvebu: use the cpufreq-dt platform_data for independent clocks
  soc: integrator: Add terminating entry for integrator_cm_match
  ARM: mvebu: add SDRAM controller description for Armada XP
  ARM: mvebu: adjust mbus controller description on Armada 370/XP
  ARM: mvebu: add suspend/resume DT information for Armada XP GP
  ARM: mvebu: synchronize secondary CPU clocks on resume
  ARM: mvebu: make sure MMU is disabled in armada_370_xp_cpu_resume
  ARM: mvebu: Armada XP GP specific suspend/resume code
  ARM: mvebu: reserve the first 10 KB of each memory bank for suspend/resume
  ARM: mvebu: implement suspend/resume support for Armada XP
  clk: mvebu: add suspend/resume for gatable clocks
  bus: mvebu-mbus: provide a mechanism to save SDRAM window configuration
  bus: mvebu-mbus: suspend/resume support
  clocksource: time-armada-370-xp: add suspend/resume support
  irqchip: armada-370-xp: Add suspend/resume support
  ARM: add lolevel debug support for asm9260
  ARM: add mach-asm9260
  ARM: EXYNOS: use u8 for val[] in struct exynos_pmu_conf
  power: reset: imx-snvs-poweroff: add power off driver for i.mx6
  ARM: imx: temporarily remove CONFIG_SOC_FSL from LS1021A
  ...

24 files changed:
1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
arch/arm/Kconfig
arch/arm/Kconfig.debug
arch/arm/mach-exynos/exynos.c
arch/arm/mach-imx/common.h
arch/arm/mach-imx/mach-imx53.c
arch/arm/mach-imx/mach-imx6sx.c
arch/arm/mach-imx/pm-imx6.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
arch/arm/mach-shmobile/Kconfig
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/board-armadillo800eva.c
arch/arm/mach-shmobile/board-kzm9g-reference.c
arch/arm/mach-shmobile/setup-r8a7740.c
arch/arm/mach-shmobile/setup-r8a7779.c
arch/arm/mach-shmobile/setup-rcar-gen2.c
arch/arm/mach-shmobile/setup-sh7372.c
arch/arm/mach-shmobile/setup-sh73a0.c
arch/arm/mach-shmobile/timer.c
arch/arm/mm/Kconfig
drivers/irqchip/irq-armada-370-xp.c

index a344ec2713a54a06b833d23c59ba55e01419f8fd,3da78a14e6c764ca5038dbd3b47ed4e9cbaac01b..ecaf2035c2fe853ab73957ec58a817cd55f6ef0e
@@@ -34,7 -34,6 +34,7 @@@ chipidea      Chipidea, In
  chrp  Common Hardware Reference Platform
  chunghwa      Chunghwa Picture Tubes Ltd.
  cirrus        Cirrus Logic, Inc.
 +cnm   Chips&Media, Inc.
  cortina       Cortina Systems, Inc.
  crystalfontz  Crystalfontz America, Inc.
  dallas        Maxim Integrated Products (formerly Dallas Semiconductor)
@@@ -91,9 -90,9 +91,10 @@@ lltc Linear Technology Corporatio
  marvell       Marvell Technology Group Ltd.
  maxim Maxim Integrated Products
  mediatek      MediaTek Inc.
+ merrii        Merrii Technology Co., Ltd.
  micrel        Micrel Inc.
  microchip     Microchip Technology Inc.
 +micron        Micron Technology Inc.
  mitsubishi    Mitsubishi Electric Corporation
  mosaixtech    Mosaix Technologies, Inc.
  moxa  Moxa
@@@ -129,7 -128,6 +130,7 @@@ renesas    Renesas Electronics Corporatio
  ricoh Ricoh Co. Ltd.
  rockchip      Fuzhou Rockchip Electronics Co., Ltd
  samsung       Samsung Semiconductor
 +sandisk       Sandisk Corporation
  sbs   Smart Battery System
  schindler     Schindler
  seagate       Seagate Technology PLC
@@@ -141,7 -139,7 +142,7 @@@ silergy    Silergy Corp
  sirf  SiRF Technology, Inc.
  sitronix      Sitronix Technology Corporation
  smsc  Standard Microsystems Corporation
 -snps  Synopsys, Inc.
 +snps  Synopsys, Inc.
  solidrun      SolidRun
  sony  Sony Corporation
  spansion      Spansion Inc.
diff --combined MAINTAINERS
index 79ccbdf57723726a22abbe1be1a9d6db14134313,617ed6a033419503c117441a8ec00d2990ff1760..e3a96e42193c90a6ab1356c10f6a7d0a39660ff6
@@@ -861,7 -861,6 +861,7 @@@ W: http://maxim.org.za/at91_26.htm
  W:    http://www.linux4sam.org
  S:    Supported
  F:    arch/arm/mach-at91/
 +F:    include/soc/at91/
  F:    arch/arm/boot/dts/at91*.dts
  F:    arch/arm/boot/dts/at91*.dtsi
  F:    arch/arm/boot/dts/sama*.dts
@@@ -1309,22 -1308,30 +1309,22 @@@ F:   drivers/*/*rockchip
  F:    drivers/*/*/*rockchip*
  F:    sound/soc/rockchip/
  
 -ARM/SAMSUNG ARM ARCHITECTURES
 -M:    Ben Dooks <ben-linux@fluff.org>
 -M:    Kukjin Kim <kgene.kim@samsung.com>
 +ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
 +M:    Kukjin Kim <kgene@kernel.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
  S:    Maintained
  F:    arch/arm/boot/dts/s3c*
  F:    arch/arm/boot/dts/exynos*
  F:    arch/arm/plat-samsung/
  F:    arch/arm/mach-s3c24*/
  F:    arch/arm/mach-s3c64xx/
 +F:    arch/arm/mach-s5p*/
 +F:    arch/arm/mach-exynos*/
  F:    drivers/*/*s3c2410*
  F:    drivers/*/*/*s3c2410*
  F:    drivers/spi/spi-s3c*
  F:    sound/soc/samsung/*
 -
 -ARM/S5P EXYNOS ARM ARCHITECTURES
 -M:    Kukjin Kim <kgene.kim@samsung.com>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-s5p*/
 -F:    arch/arm/mach-exynos*/
  N:    exynos
  
  ARM/SAMSUNG MOBILE MACHINE SUPPORT
@@@ -1374,11 -1381,13 +1374,12 @@@ F:   arch/arm/boot/dts/sh
  F:    arch/arm/configs/ape6evm_defconfig
  F:    arch/arm/configs/armadillo800eva_defconfig
  F:    arch/arm/configs/bockw_defconfig
 -F:    arch/arm/configs/koelsch_defconfig
  F:    arch/arm/configs/kzm9g_defconfig
  F:    arch/arm/configs/lager_defconfig
  F:    arch/arm/configs/mackerel_defconfig
  F:    arch/arm/configs/marzen_defconfig
  F:    arch/arm/configs/shmobile_defconfig
+ F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
@@@ -1422,7 -1431,6 +1423,7 @@@ F:      drivers/tty/serial/st-asc.
  F:    drivers/usb/dwc3/dwc3-st.c
  F:    drivers/usb/host/ehci-st.c
  F:    drivers/usb/host/ohci-st.c
 +F:    drivers/ata/ahci_st.c
  
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -1496,19 -1504,6 +1497,19 @@@ S:    Maintaine
  F:    drivers/clk/ux500/
  F:    include/linux/platform_data/clk-ux500.h
  
 +ARM/VERSATILE EXPRESS PLATFORM
 +M:    Liviu Dudau <liviu.dudau@arm.com>
 +M:    Sudeep Holla <sudeep.holla@arm.com>
 +M:    Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm/boot/dts/vexpress*
 +F:    arch/arm/mach-vexpress/
 +F:    */*/vexpress*
 +F:    */*/*/vexpress*
 +F:    drivers/clk/versatile/clk-vexpress-osc.c
 +F:    drivers/clocksource/versatile.c
 +
  ARM/VFP SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1549,7 -1544,6 +1550,7 @@@ F:      arch/arm/mach-pxa/include/mach/z2.
  
  ARM/ZYNQ ARCHITECTURE
  M:    Michal Simek <michal.simek@xilinx.com>
 +R:    Sören Brinkmann <soren.brinkmann@xilinx.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://wiki.xilinx.com
  T:    git git://git.xilinx.com/linux-xlnx.git
@@@ -1834,7 -1828,7 +1835,7 @@@ F:      include/net/ax25.
  F:    net/ax25/
  
  AZ6007 DVB DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2078,9 -2072,8 +2079,9 @@@ F:      drivers/clocksource/bcm_kona_timer.
  
  BROADCOM BCM2835 ARM ARCHITECTURE
  M:    Stephen Warren <swarren@wwwdotorg.org>
 +M:    Lee Jones <lee@kernel.org>
  L:    linux-rpi-kernel@lists.infradead.org (moderated for non-subscribers)
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/swarren/linux-rpi.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rpi/linux-rpi.git
  S:    Maintained
  N:    bcm2835
  
@@@ -2103,13 -2096,10 +2104,13 @@@ F:   arch/arm/include/debug/bcm63xx.
  BROADCOM BCM7XXX ARM ARCHITECTURE
  M:    Marc Carino <marc.ceeeee@gmail.com>
  M:    Brian Norris <computersforpeace@gmail.com>
 +M:    Gregory Fong <gregory.0xf0@gmail.com>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-bcm/*brcmstb*
  F:    arch/arm/boot/dts/bcm7*.dts*
 +F:    drivers/bus/brcmstb_gisb.c
  
  BROADCOM TG3 GIGABIT ETHERNET DRIVER
  M:    Prashant Sreedharan <prashant@broadcom.com>
@@@ -2140,20 -2130,6 +2141,20 @@@ L:    linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/bnx2i/
  
 +BROADCOM CYGNUS/IPROC ARM ARCHITECTURE
 +M:    Ray Jui <rjui@broadcom.com>
 +M:    Scott Branden <sbranden@broadcom.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    bcm-kernel-feedback-list@broadcom.com
 +T:    git git://git.github.com/brcm/linux.git
 +S:    Maintained
 +N:    iproc
 +N:    cygnus
 +N:    bcm9113*
 +N:    bcm9583*
 +N:    bcm583*
 +N:    bcm113*
 +
  BROADCOM KONA GPIO DRIVER
  M:    Ray Jui <rjui@broadcom.com>
  L:    bcm-kernel-feedback-list@broadcom.com
@@@ -2221,7 -2197,7 +2222,7 @@@ F:      Documentation/filesystems/btrfs.tx
  F:    fs/btrfs/
  
  BTTV VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2742,7 -2718,7 +2743,7 @@@ F:      drivers/media/common/cx2341x
  F:    include/media/cx2341x*
  
  CX88 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2767,13 -2743,6 +2768,13 @@@ W:    http://www.chelsio.co
  S:    Supported
  F:    drivers/net/ethernet/chelsio/cxgb3/
  
 +CXGB3 ISCSI DRIVER (CXGB3I)
 +M:      Karen Xie <kxie@chelsio.com>
 +L:      linux-scsi@vger.kernel.org
 +W:      http://www.chelsio.com
 +S:      Supported
 +F:      drivers/scsi/cxgbi/cxgb3i
 +
  CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
  M:    Steve Wise <swise@chelsio.com>
  L:    linux-rdma@vger.kernel.org
@@@ -2788,13 -2757,6 +2789,13 @@@ W:    http://www.chelsio.co
  S:    Supported
  F:    drivers/net/ethernet/chelsio/cxgb4/
  
 +CXGB4 ISCSI DRIVER (CXGB4I)
 +M:      Karen Xie <kxie@chelsio.com>
 +L:      linux-scsi@vger.kernel.org
 +W:      http://www.chelsio.com
 +S:      Supported
 +F:      drivers/scsi/cxgbi/cxgb4i
 +
  CXGB4 IWARP RNIC DRIVER (IW_CXGB4)
  M:    Steve Wise <swise@chelsio.com>
  L:    linux-rdma@vger.kernel.org
@@@ -2885,10 -2847,11 +2886,10 @@@ F:   Documentation/networking/dmfe.tx
  F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
 -M:    Kurt Garloff <garloff@suse.de>
 -W:    http://www.garloff.de/kurt/linux/dc390/
 -M:    Guennadi Liakhovetski <g.liakhovetski@gmx.de>
 +M:    Hannes Reinecke <hare@suse.de>
 +L:    linux-scsi@vger.kernel.org
  S:    Maintained
 -F:    drivers/scsi/tmscsim.*
 +F:    drivers/scsi/am53c974.c
  
  DC395x SCSI driver
  M:    Oliver Neukum <oliver@neukum.org>
@@@ -3424,7 -3387,7 +3425,7 @@@ F:      fs/ecryptfs
  EDAC-CORE
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Supported
@@@ -3473,7 -3436,7 +3474,7 @@@ S:      Maintaine
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3501,21 -3464,21 +3502,21 @@@ S:   Maintaine
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3558,7 -3521,7 +3559,7 @@@ S:      Maintaine
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-edac@vger.kernel.org
  W:    bluesmoke.sourceforge.net
  S:    Maintained
@@@ -3618,7 -3581,7 +3619,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/ibm/ehea/
  
  EM28XX VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -4752,7 -4715,6 +4753,7 @@@ L:      linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/iio/
  F:    drivers/staging/iio/
 +F:    include/linux/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
  M:    Matthieu Castet <castet.matthieu@free.fr>
@@@ -5984,7 -5946,7 +5985,7 @@@ S:      Maintaine
  F:    drivers/media/radio/radio-maxiradio*
  
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
@@@ -6013,13 -5975,10 +6014,13 @@@ W:   http://linuxtv.or
  S:    Odd Fixes
  F:    drivers/media/parport/pms*
  
 -MEGARAID SCSI DRIVERS
 -M:    Neela Syam Kolli <megaraidlinux@lsi.com>
 +MEGARAID SCSI/SAS DRIVERS
 +M:    Kashyap Desai <kashyap.desai@avagotech.com>
 +M:    Sumit Saxena <sumit.saxena@avagotech.com>
 +M:    Uday Lingala <uday.lingala@avagotech.com>
 +L:    megaraidlinux.pdl@avagotech.com
  L:    linux-scsi@vger.kernel.org
 -W:    http://megaraid.lsilogic.com
 +W:    http://www.lsi.com
  S:    Maintained
  F:    Documentation/scsi/megaraid.txt
  F:    drivers/scsi/megaraid.*
@@@ -6330,6 -6289,7 +6331,6 @@@ F:      drivers/scsi/g_NCR5380.
  F:    drivers/scsi/g_NCR5380_mmio.c
  F:    drivers/scsi/mac_scsi.*
  F:    drivers/scsi/pas16.*
 -F:    drivers/scsi/sun3_NCR5380.c
  F:    drivers/scsi/sun3_scsi.*
  F:    drivers/scsi/sun3_scsi_vme.c
  F:    drivers/scsi/t128.*
@@@ -6585,13 -6545,6 +6586,13 @@@ S:    Maintaine
  F:    Documentation/scsi/NinjaSCSI.txt
  F:    drivers/scsi/nsp32*
  
 +NIOS2 ARCHITECTURE
 +M:    Ley Foon Tan <lftan@altera.com>
 +L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
 +T:    git git://git.rocketboards.org/linux-socfpga.git
 +S:    Maintained
 +F:    arch/nios2/
 +
  NTB DRIVER
  M:    Jon Mason <jdmason@kudzu.us>
  M:    Dave Jiang <dave.jiang@intel.com>
@@@ -6642,23 -6595,6 +6643,23 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/arm/*omap*/
  F:    drivers/i2c/busses/i2c-omap.c
 +F:    drivers/irqchip/irq-omap-intc.c
 +F:    drivers/mfd/*omap*.c
 +F:    drivers/mfd/menelaus.c
 +F:    drivers/mfd/palmas.c
 +F:    drivers/mfd/tps65217.c
 +F:    drivers/mfd/tps65218.c
 +F:    drivers/mfd/tps65910.c
 +F:    drivers/mfd/twl-core.[ch]
 +F:    drivers/mfd/twl4030*.c
 +F:    drivers/mfd/twl6030*.c
 +F:    drivers/mfd/twl6040*.c
 +F:    drivers/regulator/palmas-regulator*.c
 +F:    drivers/regulator/pbias-regulator.c
 +F:    drivers/regulator/tps65217-regulator.c
 +F:    drivers/regulator/tps65218-regulator.c
 +F:    drivers/regulator/tps65910-regulator.c
 +F:    drivers/regulator/twl-regulator.c
  F:    include/linux/i2c-omap.h
  
  OMAP DEVICE TREE SUPPORT
@@@ -6669,9 -6605,6 +6670,9 @@@ L:      devicetree@vger.kernel.or
  S:    Maintained
  F:    arch/arm/boot/dts/*omap*
  F:    arch/arm/boot/dts/*am3*
 +F:    arch/arm/boot/dts/*am4*
 +F:    arch/arm/boot/dts/*am5*
 +F:    arch/arm/boot/dts/*dra7*
  
  OMAP CLOCK FRAMEWORK SUPPORT
  M:    Paul Walmsley <paul@pwsan.com>
@@@ -6919,12 -6852,11 +6920,12 @@@ F:   drivers/scsi/osd
  F:    include/scsi/osd_*
  F:    fs/exofs/
  
 -OVERLAYFS FILESYSTEM
 +OVERLAY FILESYSTEM
  M:    Miklos Szeredi <miklos@szeredi.hu>
 -L:    linux-fsdevel@vger.kernel.org
 +L:    linux-unionfs@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/vfs.git
  S:    Supported
 -F:    fs/overlayfs/*
 +F:    fs/overlayfs/
  F:    Documentation/filesystems/overlayfs.txt
  
  P54 WIRELESS DRIVER
@@@ -7248,7 -7180,6 +7249,7 @@@ F:      drivers/crypto/picoxcell
  
  PIN CONTROL SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
 +L:    linux-gpio@vger.kernel.org
  S:    Maintained
  F:    drivers/pinctrl/
  F:    include/linux/pinctrl/
@@@ -8044,7 -7975,7 +8045,7 @@@ S:      Odd Fixe
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -8502,7 -8433,7 +8503,7 @@@ S:      Maintaine
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -8553,6 -8484,7 +8554,6 @@@ F:      arch/arm/mach-s3c24xx/bast-irq.
  TI DAVINCI MACHINE SUPPORT
  M:    Sekhar Nori <nsekhar@ti.com>
  M:    Kevin Hilman <khilman@deeprootsystems.com>
 -L:    davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers)
  T:    git git://gitorious.org/linux-davinci/linux-davinci.git
  Q:    http://patchwork.kernel.org/project/linux-davinci/list/
  S:    Supported
@@@ -8562,6 -8494,7 +8563,6 @@@ F:      drivers/i2c/busses/i2c-davinci.
  TI DAVINCI SERIES MEDIA DRIVER
  M:    Lad, Prabhakar <prabhakar.csengg@gmail.com>
  L:    linux-media@vger.kernel.org
 -L:    davinci-linux-open-source@linux.davincidsp.com (moderated for non-subscribers)
  W:    http://linuxtv.org/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  T:    git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
@@@ -8713,9 -8646,7 +8714,9 @@@ S:      Maintaine
  F:    drivers/leds/leds-net48xx.c
  
  SOFTLOGIC 6x10 MPEG CODEC
 -M:    Ismael Luceno <ismael.luceno@corp.bluecherry.net>
 +M:    Bluecherry Maintainers <maintainers@bluecherrydvr.com>
 +M:    Andrey Utkin <andrey.utkin@corp.bluecherry.net>
 +M:    Andrey Utkin <andrey.krieger.utkin@gmail.com>
  L:    linux-media@vger.kernel.org
  S:    Supported
  F:    drivers/media/pci/solo6x10/
@@@ -9189,7 -9120,7 +9190,7 @@@ S:      Maintaine
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9197,7 -9128,7 +9198,7 @@@ S:      Odd fixe
  F:    drivers/media/tuners/tea5761.*
  
  TEA5767 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9509,7 -9440,7 +9510,7 @@@ F:      include/linux/shmem_fs.
  F:    mm/shmem.c
  
  TM6000 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -9773,6 -9704,11 +9774,6 @@@ S:     Maintaine
  F:    Documentation/hid/hiddev.txt
  F:    drivers/hid/usbhid/
  
 -USB/IP DRIVERS
 -L:    linux-usb@vger.kernel.org
 -S:    Orphan
 -F:    drivers/staging/usbip/
 -
  USB ISP116X DRIVER
  M:    Olav Kongas <ok@artecdesign.ee>
  L:    linux-usb@vger.kernel.org
@@@ -10330,7 -10266,7 +10331,7 @@@ S:   Maintaine
  F:    arch/x86/kernel/cpu/mcheck/*
  
  XC2028/3028 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <m.chehab@samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
diff --combined arch/arm/Kconfig
index fd4515ca835817ad4fac8fb5e9612d3227af14af,b9bde0c337b19d017f6f26dff3fdfe74bb1b0490..8db9dc07f8accfce5f6d9f36d927d9eae1fee4a1
@@@ -320,24 -320,6 +320,6 @@@ config ARCH_MULTIPLATFOR
        select SPARSE_IRQ
        select USE_OF
  
- config ARCH_INTEGRATOR
-       bool "ARM Ltd. Integrator family"
-       select ARM_AMBA
-       select ARM_PATCH_PHYS_VIRT if MMU
-       select AUTO_ZRELADDR
-       select COMMON_CLK
-       select COMMON_CLK_VERSATILE
-       select GENERIC_CLOCKEVENTS
-       select HAVE_TCM
-       select ICST
-       select MULTI_IRQ_HANDLER
-       select PLAT_VERSATILE
-       select SPARSE_IRQ
-       select USE_OF
-       select VERSATILE_FPGA_IRQ
-       help
-         Support for ARM's Integrator platform.
  config ARCH_REALVIEW
        bool "ARM Ltd. RealView family"
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select ICST
        select NEED_MACH_MEMORY_H
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_SCHED_CLOCK
        help
          This enables support for ARM Ltd RealView boards.
  
@@@ -366,7 -347,6 +348,7 @@@ config ARCH_VERSATIL
        select ICST
        select PLAT_VERSATILE
        select PLAT_VERSATILE_CLOCK
 +      select PLAT_VERSATILE_SCHED_CLOCK
        select VERSATILE_FPGA_IRQ
        help
          This enables support for ARM Ltd Versatile board.
@@@ -378,11 -358,10 +360,11 @@@ config ARCH_AT9
        select IRQ_DOMAIN
        select NEED_MACH_IO_H if PCCARD
        select PINCTRL
 -      select PINCTRL_AT91 if USE_OF
 +      select PINCTRL_AT91
 +      select USE_OF
        help
          This enables support for systems based on Atmel
 -        AT91RM9200 and AT91SAM9* processors.
 +        AT91RM9200, AT91SAM9 and SAMA5 processors.
  
  config ARCH_CLPS711X
        bool "Cirrus Logic CLPS711x/EP721x/EP731x-based"
@@@ -857,6 -836,8 +839,8 @@@ config ARCH_VIR
  #
  source "arch/arm/mach-mvebu/Kconfig"
  
+ source "arch/arm/mach-asm9260/Kconfig"
  source "arch/arm/mach-at91/Kconfig"
  
  source "arch/arm/mach-axxia/Kconfig"
diff --combined arch/arm/Kconfig.debug
index d8f6a2ec3d4e065bb49de2ff75801269090805ea,66ebfb88c5054b1351db1d22e12cb5a709c0eab2..f9295a4e10363b09cd12de523b6a2bc158a48c5b
@@@ -93,6 -93,27 +93,27 @@@ choic
        prompt "Kernel low-level debugging port"
        depends on DEBUG_LL
  
+       config DEBUG_ASM9260_UART
+               bool "Kernel low-level debugging via asm9260 UART"
+               depends on MACH_ASM9260
+               help
+                 Say Y here if you want the debug print routines to direct
+                 their output to an UART or USART port on asm9260 based
+                 machines.
+                   DEBUG_UART_PHYS | DEBUG_UART_VIRT
+                   0x80000000      | 0xf0000000     | UART0
+                   0x80004000      | 0xf0004000     | UART1
+                   0x80008000      | 0xf0008000     | UART2
+                   0x8000c000      | 0xf000c000     | UART3
+                   0x80010000      | 0xf0010000     | UART4
+                   0x80014000      | 0xf0014000     | UART5
+                   0x80018000      | 0xf0018000     | UART6
+                   0x8001c000      | 0xf001c000     | UART7
+                   0x80020000      | 0xf0020000     | UART8
+                   0x80024000      | 0xf0024000     | UART9
        config AT91_DEBUG_LL_DBGU0
                bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl"
                depends on HAVE_AT91_DBGU0
        config DEBUG_BCM_5301X
                bool "Kernel low-level debugging on BCM5301X UART1"
                depends on ARCH_BCM_5301X
-               select DEBUG_UART_PL01X
+               select DEBUG_UART_8250
  
        config DEBUG_BCM_KONA_UART
                bool "Kernel low-level debugging messages via BCM KONA UART"
                  Say Y here if you want kernel low-level debugging support
                  on Marvell Berlin SoC based platforms.
  
+       config DEBUG_BRCMSTB_UART
+               bool "Use BRCMSTB UART for low-level debug"
+               depends on ARCH_BRCMSTB
+               select DEBUG_UART_8250
+               help
+                 Say Y here if you want the debug print routines to direct
+                 their output to the first serial port on these devices.
+                 If you have a Broadcom STB chip and would like early print
+                 messages to appear over the UART, select this option.
        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 Rockchip RK32xx based platforms.
  
+       config DEBUG_R7S72100_SCIF2
+               bool "Kernel low-level debugging messages via SCIF2 on R7S72100"
+               depends on ARCH_R7S72100
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIF2 on Renesas RZ/A1H (R7S72100).
+       config DEBUG_RCAR_GEN1_SCIF0
+               bool "Kernel low-level debugging messages via SCIF0 on R8A7778"
+               depends on ARCH_R8A7778
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIF0 on Renesas R-Car M1A (R8A7778).
+       config DEBUG_RCAR_GEN1_SCIF2
+               bool "Kernel low-level debugging messages via SCIF2 on R8A7779"
+               depends on ARCH_R8A7779
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIF2 on Renesas R-Car H1 (R8A7779).
+       config DEBUG_RCAR_GEN2_SCIF0
+               bool "Kernel low-level debugging messages via SCIF0 on R8A7790/R8A7791/R8A7793)"
+               depends on ARCH_R8A7790 || ARCH_R8A7791 || ARCH_R8A7793
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIF0 on Renesas R-Car H2 (R8A7790), M2-W (R8A7791), or
+                 M2-N (R8A7793).
+       config DEBUG_RCAR_GEN2_SCIF2
+               bool "Kernel low-level debugging messages via SCIF2 on R8A7794"
+               depends on ARCH_R8A7794
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIF2 on Renesas R-Car E2 (R8A7794).
+       config DEBUG_RMOBILE_SCIFA0
+               bool "Kernel low-level debugging messages via SCIFA0 on R8A73A4/SH7372"
+               depends on ARCH_R8A73A4 || ARCH_SH7372
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIFA0 on Renesas R-Mobile APE6 (R8A73A4) or SH-Mobile
+                 AP4 (SH7372).
+       config DEBUG_RMOBILE_SCIFA1
+               bool "Kernel low-level debugging messages via SCIFA1 on R8A7740"
+               depends on ARCH_R8A7740
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIFA1 on Renesas R-Mobile A1 (R8A7740).
+       config DEBUG_RMOBILE_SCIFA4
+               bool "Kernel low-level debugging messages via SCIFA4 on SH73A0"
+               depends on ARCH_SH73A0
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 via SCIFA4 on Renesas SH-Mobile AG5 (SH73A0).
        config DEBUG_S3C_UART0
                depends on PLAT_SAMSUNG
                select DEBUG_EXYNOS_UART if ARCH_EXYNOS
                  their output to UART 2. The port must have been initialised
                  by the boot-loader before use.
  
+       config DEBUG_SA1100
+               depends on ARCH_SA1100
+               bool "Use SA1100 UARTs for low-level debug"
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on SA-11x0 UART ports. The kernel will check for the first
+                 enabled UART in a sequence 3-1-2.
        config DEBUG_SOCFPGA_UART
                depends on ARCH_SOCFPGA
                bool "Use SOCFPGA UART for low-level debug"
                  Say Y here if you want kernel low-level debugging support
                  on SOCFPGA based platforms.
  
+       config DEBUG_SUN9I_UART0
+               bool "Kernel low-level debugging messages via sun9i UART0"
+               depends on MACH_SUN9I
+               select DEBUG_UART_8250
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 on Allwinner A80 based platforms on the UART0.
        config DEBUG_SUNXI_UART0
                bool "Kernel low-level debugging messages via sunXi UART0"
                depends on ARCH_SUNXI
                  Say Y here if you want kernel low-level debugging support
                  for Mediatek mt6589 based platforms on UART0.
  
+       config DEBUG_MT8127_UART0
+               bool "Mediatek mt8127 UART0"
+               depends on ARCH_MEDIATEK
+               select DEBUG_UART_8250
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 for Mediatek mt8127 based platforms on UART0.
+       config DEBUG_MT8135_UART3
+               bool "Mediatek mt8135 UART3"
+               depends on ARCH_MEDIATEK
+               select DEBUG_UART_8250
+               help
+                 Say Y here if you want kernel low-level debugging support
+                 for Mediatek mt8135 based platforms on UART3.
        config DEBUG_VEXPRESS_UART0_DETECT
                bool "Autodetect UART0 on Versatile Express Cortex-A core tiles"
                depends on ARCH_VEXPRESS && CPU_CP15_MMU
@@@ -1041,7 -1163,9 +1163,9 @@@ config DEBUG_STI_UAR
  
  config DEBUG_LL_INCLUDE
        string
+       default "debug/sa1100.S" if DEBUG_SA1100
        default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250
+       default "debug/asm9260.S" if DEBUG_ASM9260_UART
        default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2
        default "debug/meson.S" if DEBUG_MESON_UARTAO
        default "debug/pl01x.S" if DEBUG_LL_UART_PL01X || DEBUG_UART_PL01X
                                 DEBUG_IMX6SX_UART
        default "debug/msm.S" if DEBUG_MSM_UART || DEBUG_QCOM_UARTDM
        default "debug/omap2plus.S" if DEBUG_OMAP2PLUS_UART
+       default "debug/renesas-scif.S" if DEBUG_R7S72100_SCIF2
+       default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF0
+       default "debug/renesas-scif.S" if DEBUG_RCAR_GEN1_SCIF2
+       default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF0
+       default "debug/renesas-scif.S" if DEBUG_RCAR_GEN2_SCIF2
+       default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA0
+       default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA1
+       default "debug/renesas-scif.S" if DEBUG_RMOBILE_SCIFA4
        default "debug/s3c24xx.S" if DEBUG_S3C24XX_UART
        default "debug/s5pv210.S" if DEBUG_S5PV210_UART
        default "debug/sirf.S" if DEBUG_SIRFPRIMA2_UART1 || DEBUG_SIRFMARCO_UART1
@@@ -1106,6 -1238,7 +1238,7 @@@ config DEBUG_UART_PHY
        default 0x02530c00 if DEBUG_KEYSTONE_UART0
        default 0x02531000 if DEBUG_KEYSTONE_UART1
        default 0x03010fe0 if ARCH_RPC
+       default 0x07000000 if DEBUG_SUN9I_UART0
        default 0x10009000 if DEBUG_REALVIEW_STD_PORT || \
                                DEBUG_VEXPRESS_UART0_CA9
        default 0x1010c000 if DEBUG_REALVIEW_PB1176_PORT
        default 0x10126000 if DEBUG_RK3X_UART1
        default 0x101f1000 if ARCH_VERSATILE
        default 0x101fb000 if DEBUG_NOMADIK_UART
+       default 0x11002000 if DEBUG_MT8127_UART0
        default 0x11006000 if DEBUG_MT6589_UART0
+       default 0x11009000 if DEBUG_MT8135_UART3
        default 0x16000000 if ARCH_INTEGRATOR
        default 0x18000300 if DEBUG_BCM_5301X
        default 0x1c090000 if DEBUG_VEXPRESS_UART0_RS1
        default 0x78000000 if DEBUG_CNS3XXX
        default 0x7c0003f8 if FOOTBRIDGE
        default 0x78000000 if DEBUG_CNS3XXX
+       default 0x80010000 if DEBUG_ASM9260_UART
        default 0x80070000 if DEBUG_IMX23_UART
        default 0x80074000 if DEBUG_IMX28_UART
        default 0x80230000 if DEBUG_PICOXCELL_UART
        default 0xd4018000 if DEBUG_MMP_UART3
        default 0xe0000000 if ARCH_SPEAR13XX
        default 0xe4007000 if DEBUG_HIP04_UART
+       default 0xe6c40000 if DEBUG_RMOBILE_SCIFA0
+       default 0xe6c50000 if DEBUG_RMOBILE_SCIFA1
+       default 0xe6c80000 if DEBUG_RMOBILE_SCIFA4
+       default 0xe6e58000 if DEBUG_RCAR_GEN2_SCIF2
+       default 0xe6e60000 if DEBUG_RCAR_GEN2_SCIF0
+       default 0xe8008000 if DEBUG_R7S72100_SCIF2
        default 0xf0000be0 if ARCH_EBSA110
+       default 0xf040ab00 if DEBUG_BRCMSTB_UART
        default 0xf1012000 if DEBUG_MVEBU_UART_ALTERNATE
        default 0xf1012000 if ARCH_DOVE || ARCH_MV78XX0 || \
                                ARCH_ORION5X
        default 0xff690000 if DEBUG_RK32_UART2
        default 0xffc02000 if DEBUG_SOCFPGA_UART
        default 0xffd82340 if ARCH_IOP13XX
+       default 0xffe40000 if DEBUG_RCAR_GEN1_SCIF0
+       default 0xffe42000 if DEBUG_RCAR_GEN1_SCIF2
        default 0xfff36000 if DEBUG_HIGHBANK_UART
        default 0xfffe8600 if DEBUG_UART_BCM63XX
        default 0xfffff700 if ARCH_IOP33X
        depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
                DEBUG_LL_UART_EFM32 || \
                DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
-               DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
-               DEBUG_UART_BCM63XX
+               DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_R7S72100_SCIF2 || \
+               DEBUG_RCAR_GEN1_SCIF0 || DEBUG_RCAR_GEN1_SCIF2 || \
+               DEBUG_RCAR_GEN2_SCIF0 || DEBUG_RCAR_GEN2_SCIF2 || \
+               DEBUG_RMOBILE_SCIFA0 || DEBUG_RMOBILE_SCIFA1 || \
+               DEBUG_RMOBILE_SCIFA4 || DEBUG_S3C24XX_UART || \
+               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
  
  config DEBUG_UART_VIRT
        hex "Virtual base address of debug UART"
        default 0xe0010fe0 if ARCH_RPC
        default 0xe1000000 if DEBUG_MSM_UART
        default 0xf0000be0 if ARCH_EBSA110
+       default 0xf0010000 if DEBUG_ASM9260_UART
        default 0xf01fb000 if DEBUG_NOMADIK_UART
        default 0xf0201000 if DEBUG_BCM2835
        default 0xf1000300 if DEBUG_BCM_5301X
+       default 0xf1002000 if DEBUG_MT8127_UART0
        default 0xf1006000 if DEBUG_MT6589_UART0
+       default 0xf1009000 if DEBUG_MT8135_UART3
        default 0xf11f1000 if ARCH_VERSATILE
        default 0xf1600000 if ARCH_INTEGRATOR
        default 0xf1c28000 if DEBUG_SUNXI_UART0
        default 0xf1c28400 if DEBUG_SUNXI_UART1
        default 0xf1f02800 if DEBUG_SUNXI_R_UART
 -      default 0xf2100000 if DEBUG_PXA_UART1
 +      default 0xf6200000 if DEBUG_PXA_UART1
        default 0xf4090000 if ARCH_LPC32XX
        default 0xf4200000 if ARCH_GEMINI
+       default 0xf7000000 if DEBUG_SUN9I_UART0
        default 0xf7000000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART0 || \
                                DEBUG_S3C2410_UART0)
        default 0xf7004000 if DEBUG_S3C24XX_UART && (DEBUG_S3C_UART1 || \
        default 0xfb002000 if DEBUG_CNS3XXX
        default 0xfb009000 if DEBUG_REALVIEW_STD_PORT
        default 0xfb10c000 if DEBUG_REALVIEW_PB1176_PORT
+       default 0xfc40ab00 if DEBUG_BRCMSTB_UART
        default 0xfcfe8600 if DEBUG_UART_BCM63XX
        default 0xfd000000 if ARCH_SPEAR3XX || ARCH_SPEAR6XX
        default 0xfd000000 if ARCH_SPEAR13XX
        depends on DEBUG_LL_UART_8250 || DEBUG_LL_UART_PL01X || \
                DEBUG_UART_8250 || DEBUG_UART_PL01X || DEBUG_MESON_UARTAO || \
                DEBUG_MSM_UART || DEBUG_QCOM_UARTDM || DEBUG_S3C24XX_UART || \
-               DEBUG_UART_BCM63XX
+               DEBUG_UART_BCM63XX || DEBUG_ASM9260_UART
  
  config DEBUG_UART_8250_SHIFT
        int "Register offset shift for the 8250 debug UART"
        depends on DEBUG_LL_UART_8250 || DEBUG_UART_8250
-       default 0 if FOOTBRIDGE || ARCH_IOP32X
+       default 0 if FOOTBRIDGE || ARCH_IOP32X || DEBUG_BCM_5301X
        default 2
  
  config DEBUG_UART_8250_WORD
                ARCH_KEYSTONE || \
                DEBUG_DAVINCI_DMx_UART0 || DEBUG_DAVINCI_DA8XX_UART1 || \
                DEBUG_DAVINCI_DA8XX_UART2 || \
-               DEBUG_BCM_KONA_UART || DEBUG_RK32_UART2
+               DEBUG_BCM_KONA_UART || DEBUG_RK32_UART2 || \
+               DEBUG_BRCMSTB_UART
  
  config DEBUG_UART_8250_FLOW_CONTROL
        bool "Enable flow control for 8250 UART"
index 6de7cf5ef2b29bf7e07ba53eb2a63f7d7589fdf0,80d744db7dc7a646f60209f2ee2347889f01cb02..c13d0837fa8cd3b5325c84e031416098b4c90fea
@@@ -40,11 -40,41 +40,11 @@@ static struct map_desc exynos4_iodesc[
                .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSCON),
                .length         = SZ_64K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S3C_VA_TIMER,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_TIMER),
 -              .length         = SZ_16K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S3C_VA_WATCHDOG,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_WATCHDOG),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
        }, {
                .virtual        = (unsigned long)S5P_VA_SROMC,
                .pfn            = __phys_to_pfn(EXYNOS4_PA_SROMC),
                .length         = SZ_4K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_SYSTIMER,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_SYSTIMER),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_COMBINER_BASE,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_COMBINER),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_GIC_CPU,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_GIC_CPU),
 -              .length         = SZ_64K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_GIC_DIST,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_GIC_DIST),
 -              .length         = SZ_64K,
 -              .type           = MT_DEVICE,
        }, {
                .virtual        = (unsigned long)S5P_VA_CMU,
                .pfn            = __phys_to_pfn(EXYNOS4_PA_CMU),
                .pfn            = __phys_to_pfn(EXYNOS4_PA_COREPERI),
                .length         = SZ_8K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S5P_VA_L2CC,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_L2CC),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
        }, {
                .virtual        = (unsigned long)S5P_VA_DMC0,
                .pfn            = __phys_to_pfn(EXYNOS4_PA_DMC0),
                .pfn            = __phys_to_pfn(EXYNOS4_PA_DMC1),
                .length         = SZ_64K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S3C_VA_USB_HSPHY,
 -              .pfn            = __phys_to_pfn(EXYNOS4_PA_HSPHY),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
        },
  };
  
@@@ -74,6 -114,16 +74,6 @@@ static struct map_desc exynos5_iodesc[
                .pfn            = __phys_to_pfn(EXYNOS5_PA_SYSCON),
                .length         = SZ_64K,
                .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S3C_VA_TIMER,
 -              .pfn            = __phys_to_pfn(EXYNOS5_PA_TIMER),
 -              .length         = SZ_16K,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = (unsigned long)S3C_VA_WATCHDOG,
 -              .pfn            = __phys_to_pfn(EXYNOS5_PA_WATCHDOG),
 -              .length         = SZ_4K,
 -              .type           = MT_DEVICE,
        }, {
                .virtual        = (unsigned long)S5P_VA_SROMC,
                .pfn            = __phys_to_pfn(EXYNOS5_PA_SROMC),
        },
  };
  
- static void exynos_restart(enum reboot_mode mode, const char *cmd)
- {
-       struct device_node *np;
-       u32 val = 0x1;
-       void __iomem *addr = pmu_base_addr + EXYNOS_SWRESET;
-       if (of_machine_is_compatible("samsung,exynos5440")) {
-               u32 status;
-               np = of_find_compatible_node(NULL, NULL, "samsung,exynos5440-clock");
-               addr = of_iomap(np, 0) + 0xbc;
-               status = __raw_readl(addr);
-               addr = of_iomap(np, 0) + 0xcc;
-               val = __raw_readl(addr);
-               val = (val & 0xffff0000) | (status & 0xffff);
-       }
-       __raw_writel(val, addr);
- }
  static struct platform_device exynos_cpuidle = {
        .name              = "exynos_cpuidle",
  #ifdef CONFIG_ARM_EXYNOS_CPUIDLE
@@@ -202,6 -230,7 +180,7 @@@ static const struct of_device_id exynos
        { .compatible = "samsung,exynos4210-pmu" },
        { .compatible = "samsung,exynos4212-pmu" },
        { .compatible = "samsung,exynos4412-pmu" },
+       { .compatible = "samsung,exynos4415-pmu" },
        { .compatible = "samsung,exynos5250-pmu" },
        { .compatible = "samsung,exynos5260-pmu" },
        { .compatible = "samsung,exynos5410-pmu" },
@@@ -268,7 -297,10 +247,10 @@@ static void __init exynos_dt_machine_in
                exynos_sysram_init();
  
        if (of_machine_is_compatible("samsung,exynos4210") ||
-                       of_machine_is_compatible("samsung,exynos5250"))
+           of_machine_is_compatible("samsung,exynos4212") ||
+           (of_machine_is_compatible("samsung,exynos4412") &&
+            of_machine_is_compatible("samsung,trats2")) ||
+           of_machine_is_compatible("samsung,exynos5250"))
                platform_device_register(&exynos_cpuidle);
  
        platform_device_register_simple("exynos-cpufreq", -1, NULL, 0);
@@@ -283,6 -315,7 +265,7 @@@ static char const *exynos_dt_compat[] _
        "samsung,exynos4210",
        "samsung,exynos4212",
        "samsung,exynos4412",
+       "samsung,exynos4415",
        "samsung,exynos5",
        "samsung,exynos5250",
        "samsung,exynos5260",
@@@ -328,7 -361,6 +311,6 @@@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EX
        .init_machine   = exynos_dt_machine_init,
        .init_late      = exynos_init_late,
        .dt_compat      = exynos_dt_compat,
-       .restart        = exynos_restart,
        .reserve        = exynos_reserve,
        .dt_fixup       = exynos_dt_fixup,
  MACHINE_END
index 3d383cb5e6d117908f147c57d11e8ef2d09b8afc,fe9a908da3ede8a2593a527402370afdaab0bd8a..cfcdb623d78fc5be98092a7f2a65fa735056c7cc
@@@ -61,6 -61,7 +61,6 @@@ struct platform_device *mxc_register_gp
  void mxc_set_cpu_type(unsigned int type);
  void mxc_restart(enum reboot_mode, const char *);
  void mxc_arch_reset_init(void __iomem *);
 -void mxc_arch_reset_init_dt(void);
  int mx51_revision(void);
  int mx53_revision(void);
  void imx_set_aips(void __iomem *);
@@@ -107,14 -108,15 +107,15 @@@ void imx_gpc_pre_suspend(bool arm_power
  void imx_gpc_post_resume(void);
  void imx_gpc_mask_all(void);
  void imx_gpc_restore_all(void);
 -void imx_gpc_irq_mask(struct irq_data *d);
 -void imx_gpc_irq_unmask(struct irq_data *d);
 +void imx_gpc_hwirq_mask(unsigned int hwirq);
 +void imx_gpc_hwirq_unmask(unsigned int hwirq);
  void imx_anatop_init(void);
  void imx_anatop_pre_suspend(void);
  void imx_anatop_post_resume(void);
  int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode);
  void imx6q_set_int_mem_clk_lpm(bool enable);
  void imx6sl_set_wait_clk(bool enter);
+ int imx_mmdc_get_ddr_type(void);
  
  void imx_cpu_die(unsigned int cpu);
  int imx_cpu_kill(unsigned int cpu);
@@@ -156,5 -158,6 +157,6 @@@ static inline void imx_init_l2cache(voi
  #endif
  
  extern struct smp_operations imx_smp_ops;
+ extern struct smp_operations ls1021a_smp_ops;
  
  #endif
index 18b5c5c136db94aeb0456e3fd248f7943e7f85c2,7587cf0cba3ec1f45ce02cc73d1cefcd41ef27e8..86316a979297fbafdafb815e4a140a24540d4bc8
@@@ -30,6 -30,7 +30,6 @@@ static void __init imx53_init_early(voi
  
  static void __init imx53_dt_init(void)
  {
 -      mxc_arch_reset_init_dt();
        imx_src_init();
  
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
@@@ -40,6 -41,8 +40,8 @@@
  static void __init imx53_init_late(void)
  {
        imx53_pm_init();
+       platform_device_register_simple("cpufreq-dt", -1, NULL, 0);
  }
  
  static const char * const imx53_dt_board_compat[] __initconst = {
@@@ -53,4 -56,5 +55,4 @@@ DT_MACHINE_START(IMX53_DT, "Freescale i
        .init_machine   = imx53_dt_init,
        .init_late      = imx53_init_late,
        .dt_compat      = imx53_dt_board_compat,
 -      .restart        = mxc_restart,
  MACHINE_END
index 4111c0fa8d0949d3317d25263a0d1b27bf8a6feb,982224922fb16cef048262a5a8209997e21b5f51..7a96c65772344f20e385993b6dd17057bd2af658
@@@ -8,22 -8,75 +8,73 @@@
  
  #include <linux/irqchip.h>
  #include <linux/of_platform.h>
+ #include <linux/phy.h>
+ #include <linux/regmap.h>
+ #include <linux/mfd/syscon.h>
+ #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  
  #include "common.h"
  #include "cpuidle.h"
  
+ static int ar8031_phy_fixup(struct phy_device *dev)
+ {
+       u16 val;
+       /* Set RGMII IO voltage to 1.8V */
+       phy_write(dev, 0x1d, 0x1f);
+       phy_write(dev, 0x1e, 0x8);
+       /* introduce tx clock delay */
+       phy_write(dev, 0x1d, 0x5);
+       val = phy_read(dev, 0x1e);
+       val |= 0x0100;
+       phy_write(dev, 0x1e, val);
+       return 0;
+ }
+ #define PHY_ID_AR8031   0x004dd074
+ static void __init imx6sx_enet_phy_init(void)
+ {
+       if (IS_BUILTIN(CONFIG_PHYLIB))
+               phy_register_fixup_for_uid(PHY_ID_AR8031, 0xffffffff,
+                                          ar8031_phy_fixup);
+ }
+ static void __init imx6sx_enet_clk_sel(void)
+ {
+       struct regmap *gpr;
+       gpr = syscon_regmap_lookup_by_compatible("fsl,imx6sx-iomuxc-gpr");
+       if (!IS_ERR(gpr)) {
+               regmap_update_bits(gpr, IOMUXC_GPR1,
+                                  IMX6SX_GPR1_FEC_CLOCK_MUX_SEL_MASK, 0);
+               regmap_update_bits(gpr, IOMUXC_GPR1,
+                                  IMX6SX_GPR1_FEC_CLOCK_PAD_DIR_MASK, 0);
+       } else {
+               pr_err("failed to find fsl,imx6sx-iomux-gpr regmap\n");
+       }
+ }
+ static inline void imx6sx_enet_init(void)
+ {
+       imx6sx_enet_phy_init();
+       imx6sx_enet_clk_sel();
+ }
  static void __init imx6sx_init_machine(void)
  {
        struct device *parent;
  
 -      mxc_arch_reset_init_dt();
 -
        parent = imx_soc_device_init();
        if (parent == NULL)
                pr_warn("failed to initialize soc device\n");
  
        of_platform_populate(NULL, of_default_bus_match_table, NULL, parent);
  
+       imx6sx_enet_init();
        imx_anatop_init();
        imx6sx_pm_init();
  }
@@@ -51,8 -104,10 +102,8 @@@ static const char * const imx6sx_dt_com
  };
  
  DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)")
 -      .map_io         = debug_ll_io_init,
        .init_irq       = imx6sx_init_irq,
        .init_machine   = imx6sx_init_machine,
        .dt_compat      = imx6sx_dt_compat,
        .init_late      = imx6sx_init_late,
 -      .restart        = mxc_restart,
  MACHINE_END
index d815d1ba27a585de2f8d3fbe768d5d5d72b3cb15,c653dd4c91031087ea0011d7141410079accf3c3..5d2c1bd5f5ef911834a477d82de71909ec0e80d7
@@@ -88,7 -88,7 +88,7 @@@ struct imx6_pm_base 
  };
  
  struct imx6_pm_socdata {
-       u32 cpu_type;
+       u32 ddr_type;
        const char *mmdc_compat;
        const char *src_compat;
        const char *iomuxc_compat;
@@@ -138,7 -138,6 +138,6 @@@ static const u32 imx6sx_mmdc_io_offset[
  };
  
  static const struct imx6_pm_socdata imx6q_pm_data __initconst = {
-       .cpu_type = MXC_CPU_IMX6Q,
        .mmdc_compat = "fsl,imx6q-mmdc",
        .src_compat = "fsl,imx6q-src",
        .iomuxc_compat = "fsl,imx6q-iomuxc",
  };
  
  static const struct imx6_pm_socdata imx6dl_pm_data __initconst = {
-       .cpu_type = MXC_CPU_IMX6DL,
        .mmdc_compat = "fsl,imx6q-mmdc",
        .src_compat = "fsl,imx6q-src",
        .iomuxc_compat = "fsl,imx6dl-iomuxc",
  };
  
  static const struct imx6_pm_socdata imx6sl_pm_data __initconst = {
-       .cpu_type = MXC_CPU_IMX6SL,
        .mmdc_compat = "fsl,imx6sl-mmdc",
        .src_compat = "fsl,imx6sl-src",
        .iomuxc_compat = "fsl,imx6sl-iomuxc",
  };
  
  static const struct imx6_pm_socdata imx6sx_pm_data __initconst = {
-       .cpu_type = MXC_CPU_IMX6SX,
        .mmdc_compat = "fsl,imx6sx-mmdc",
        .src_compat = "fsl,imx6sx-src",
        .iomuxc_compat = "fsl,imx6sx-iomuxc",
  struct imx6_cpu_pm_info {
        phys_addr_t pbase; /* The physical address of pm_info. */
        phys_addr_t resume_addr; /* The physical resume address for asm code */
-       u32 cpu_type;
+       u32 ddr_type;
        u32 pm_info_size; /* Size of pm_info. */
        struct imx6_pm_base mmdc_base;
        struct imx6_pm_base src_base;
@@@ -261,6 -257,7 +257,6 @@@ static void imx6q_enable_wb(bool enable
  
  int imx6q_set_lpm(enum mxc_cpu_pwr_mode mode)
  {
 -      struct irq_data *iomuxc_irq_data = irq_get_irq_data(32);
        u32 val = readl_relaxed(ccm_base + CLPCR);
  
        val &= ~BM_CLPCR_LPM;
         * 3) Software should mask IRQ #32 right after CCM Low-Power mode
         *    is set (set bits 0-1 of CCM_CLPCR).
         */
 -      imx_gpc_irq_unmask(iomuxc_irq_data);
 +      imx_gpc_hwirq_unmask(32);
        writel_relaxed(val, ccm_base + CLPCR);
 -      imx_gpc_irq_mask(iomuxc_irq_data);
 +      imx_gpc_hwirq_mask(32);
  
        return 0;
  }
@@@ -521,7 -518,7 +517,7 @@@ static int __init imx6q_suspend_init(co
                goto pl310_cache_map_failed;
        }
  
-       pm_info->cpu_type = socdata->cpu_type;
+       pm_info->ddr_type = imx_mmdc_get_ddr_type();
        pm_info->mmdc_io_num = socdata->mmdc_io_num;
        mmdc_offset_array = socdata->mmdc_io_offset;
  
index d8a3cf1c17879e5678249816648334029ca9f96a,d6f41e1b6d1b36007930d875af3b44dd6ee2378a..c314b3c31117e8cbee248db6aec7c0feb64f4fa9
@@@ -22,7 -22,6 +22,7 @@@
  
  #include <linux/io.h>
  #include <linux/platform_data/gpio-omap.h>
 +#include <linux/platform_data/hsmmc-omap.h>
  #include <linux/power/smartreflex.h>
  #include <linux/i2c-omap.h>
  
@@@ -40,6 -39,7 +40,6 @@@
  #include "prm44xx.h"
  #include "prm-regbits-44xx.h"
  #include "i2c.h"
 -#include "mmc.h"
  #include "wd_timer.h"
  
  /* Base offset for all OMAP4 interrupts external to MPUSS */
@@@ -589,6 -589,7 +589,7 @@@ static struct omap_hwmod omap44xx_dss_h
                .omap4 = {
                        .clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET,
                        .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
                },
        },
        .opt_clks       = dss_opt_clks,
@@@ -647,7 -648,8 +648,8 @@@ static struct omap_hwmod omap44xx_dss_d
                        .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
                },
        },
-       .dev_attr       = &omap44xx_dss_dispc_dev_attr
+       .dev_attr       = &omap44xx_dss_dispc_dev_attr,
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /*
@@@ -701,6 -703,7 +703,7 @@@ static struct omap_hwmod omap44xx_dss_d
        },
        .opt_clks       = dss_dsi1_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_opt_clks),
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /* dss_dsi2 */
@@@ -733,6 -736,7 +736,7 @@@ static struct omap_hwmod omap44xx_dss_d
        },
        .opt_clks       = dss_dsi2_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi2_opt_clks),
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /*
@@@ -790,6 -794,7 +794,7 @@@ static struct omap_hwmod omap44xx_dss_h
        },
        .opt_clks       = dss_hdmi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /*
@@@ -819,7 -824,7 +824,7 @@@ static struct omap_hwmod_dma_info omap4
  };
  
  static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
-       { .role = "ick", .clk = "dss_fck" },
+       { .role = "ick", .clk = "l3_div_ck" },
  };
  
  static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
        },
        .opt_clks       = dss_rfbi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /*
@@@ -859,6 -865,7 +865,7 @@@ static struct omap_hwmod omap44xx_dss_v
                        .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
                },
        },
+       .parent_hwmod   = &omap44xx_dss_hwmod,
  };
  
  /*
@@@ -1952,7 -1959,7 +1959,7 @@@ static struct omap_hwmod_dma_info omap4
  };
  
  /* mmc1 dev_attr */
 -static struct omap_mmc_dev_attr mmc1_dev_attr = {
 +static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
        .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
  };
  
@@@ -3671,7 -3678,7 +3678,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3707,7 -3714,7 +3714,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_dispc_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_dispc_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3743,7 -3750,7 +3750,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_dsi1_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_dsi1_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3779,7 -3786,7 +3786,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_dsi2_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_dsi2_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3815,7 -3822,7 +3822,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_hdmi_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_hdmi_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3851,7 -3858,7 +3858,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_rfbi_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_rfbi_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
@@@ -3887,7 -3894,7 +3894,7 @@@ static struct omap_hwmod_addr_space oma
  static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
        .master         = &omap44xx_l3_main_2_hwmod,
        .slave          = &omap44xx_dss_venc_hwmod,
-       .clk            = "dss_fck",
+       .clk            = "l3_div_ck",
        .addr           = omap44xx_dss_venc_dma_addrs,
        .user           = OCP_USER_SDMA,
  };
index 5ec786a76d3cc8df4abfd52e8dc4ec802cb8b57d,229c7fb7e1c35b179bdff8ff328b06b9d40361df..3e9523084b2ace3005adbd18ceae347eaef3e66a
@@@ -19,7 -19,6 +19,7 @@@
  
  #include <linux/io.h>
  #include <linux/platform_data/gpio-omap.h>
 +#include <linux/platform_data/hsmmc-omap.h>
  #include <linux/power/smartreflex.h>
  #include <linux/i2c-omap.h>
  
@@@ -34,6 -33,7 +34,6 @@@
  #include "cm2_54xx.h"
  #include "prm54xx.h"
  #include "i2c.h"
 -#include "mmc.h"
  #include "wd_timer.h"
  
  /* Base offset for all OMAP5 interrupts external to MPUSS */
@@@ -421,6 -421,7 +421,7 @@@ static struct omap_hwmod omap54xx_dss_d
        .opt_clks       = dss_dispc_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dispc_opt_clks),
        .dev_attr       = &dss_dispc_dev_attr,
+       .parent_hwmod   = &omap54xx_dss_hwmod,
  };
  
  /*
@@@ -462,6 -463,7 +463,7 @@@ static struct omap_hwmod omap54xx_dss_d
        },
        .opt_clks       = dss_dsi1_a_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_a_opt_clks),
+       .parent_hwmod   = &omap54xx_dss_hwmod,
  };
  
  /* dss_dsi1_c */
@@@ -482,6 -484,7 +484,7 @@@ static struct omap_hwmod omap54xx_dss_d
        },
        .opt_clks       = dss_dsi1_c_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_c_opt_clks),
+       .parent_hwmod   = &omap54xx_dss_hwmod,
  };
  
  /*
@@@ -521,6 -524,7 +524,7 @@@ static struct omap_hwmod omap54xx_dss_h
        },
        .opt_clks       = dss_hdmi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
+       .parent_hwmod   = &omap54xx_dss_hwmod,
  };
  
  /*
@@@ -560,6 -564,7 +564,7 @@@ static struct omap_hwmod omap54xx_dss_r
        },
        .opt_clks       = dss_rfbi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
+       .parent_hwmod   = &omap54xx_dss_hwmod,
  };
  
  /*
@@@ -1269,7 -1274,7 +1274,7 @@@ static struct omap_hwmod_opt_clk mmc1_o
  };
  
  /* mmc1 dev_attr */
 -static struct omap_mmc_dev_attr mmc1_dev_attr = {
 +static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
        .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
  };
  
index 711c97e90990511ebcc2e20679428f0d711f0fd2,e2a70439bf35313b66bfd8b520268a9b6f071ea8..ffd6604cd546432c5c12e755414566bca9e907c7
@@@ -19,7 -19,6 +19,7 @@@
  
  #include <linux/io.h>
  #include <linux/platform_data/gpio-omap.h>
 +#include <linux/platform_data/hsmmc-omap.h>
  #include <linux/power/smartreflex.h>
  #include <linux/i2c-omap.h>
  
@@@ -34,6 -33,7 +34,6 @@@
  #include "cm2_7xx.h"
  #include "prm7xx.h"
  #include "i2c.h"
 -#include "mmc.h"
  #include "wd_timer.h"
  #include "soc.h"
  
@@@ -1301,7 -1301,7 +1301,7 @@@ static struct omap_hwmod_opt_clk mmc1_o
  };
  
  /* mmc1 dev_attr */
 -static struct omap_mmc_dev_attr mmc1_dev_attr = {
 +static struct omap_hsmmc_dev_attr mmc1_dev_attr = {
        .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
  };
  
@@@ -2075,6 -2075,70 +2075,70 @@@ static struct omap_hwmod dra7xx_uart6_h
        },
  };
  
+ /* uart7 */
+ static struct omap_hwmod dra7xx_uart7_hwmod = {
+       .name           = "uart7",
+       .class          = &dra7xx_uart_hwmod_class,
+       .clkdm_name     = "l4per2_clkdm",
+       .main_clk       = "uart7_gfclk_mux",
+       .flags          = HWMOD_SWSUP_SIDLE_ACT,
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = DRA7XX_CM_L4PER2_UART7_CLKCTRL_OFFSET,
+                       .context_offs = DRA7XX_RM_L4PER2_UART7_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
+       },
+ };
+ /* uart8 */
+ static struct omap_hwmod dra7xx_uart8_hwmod = {
+       .name           = "uart8",
+       .class          = &dra7xx_uart_hwmod_class,
+       .clkdm_name     = "l4per2_clkdm",
+       .main_clk       = "uart8_gfclk_mux",
+       .flags          = HWMOD_SWSUP_SIDLE_ACT,
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = DRA7XX_CM_L4PER2_UART8_CLKCTRL_OFFSET,
+                       .context_offs = DRA7XX_RM_L4PER2_UART8_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
+       },
+ };
+ /* uart9 */
+ static struct omap_hwmod dra7xx_uart9_hwmod = {
+       .name           = "uart9",
+       .class          = &dra7xx_uart_hwmod_class,
+       .clkdm_name     = "l4per2_clkdm",
+       .main_clk       = "uart9_gfclk_mux",
+       .flags          = HWMOD_SWSUP_SIDLE_ACT,
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = DRA7XX_CM_L4PER2_UART9_CLKCTRL_OFFSET,
+                       .context_offs = DRA7XX_RM_L4PER2_UART9_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
+       },
+ };
+ /* uart10 */
+ static struct omap_hwmod dra7xx_uart10_hwmod = {
+       .name           = "uart10",
+       .class          = &dra7xx_uart_hwmod_class,
+       .clkdm_name     = "wkupaon_clkdm",
+       .main_clk       = "uart10_gfclk_mux",
+       .flags          = HWMOD_SWSUP_SIDLE_ACT,
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = DRA7XX_CM_WKUPAON_UART10_CLKCTRL_OFFSET,
+                       .context_offs = DRA7XX_RM_WKUPAON_UART10_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
+       },
+ };
  /*
   * 'usb_otg_ss' class
   *
@@@ -3095,6 -3159,38 +3159,38 @@@ static struct omap_hwmod_ocp_if dra7xx_
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
  };
  
+ /* l4_per2 -> uart7 */
+ static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart7 = {
+       .master         = &dra7xx_l4_per2_hwmod,
+       .slave          = &dra7xx_uart7_hwmod,
+       .clk            = "l3_iclk_div",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+ };
+ /* l4_per2 -> uart8 */
+ static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart8 = {
+       .master         = &dra7xx_l4_per2_hwmod,
+       .slave          = &dra7xx_uart8_hwmod,
+       .clk            = "l3_iclk_div",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+ };
+ /* l4_per2 -> uart9 */
+ static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart9 = {
+       .master         = &dra7xx_l4_per2_hwmod,
+       .slave          = &dra7xx_uart9_hwmod,
+       .clk            = "l3_iclk_div",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+ };
+ /* l4_wkup -> uart10 */
+ static struct omap_hwmod_ocp_if dra7xx_l4_wkup__uart10 = {
+       .master         = &dra7xx_l4_wkup_hwmod,
+       .slave          = &dra7xx_uart10_hwmod,
+       .clk            = "wkupaon_iclk_mux",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+ };
  /* l4_per3 -> usb_otg_ss1 */
  static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss1 = {
        .master         = &dra7xx_l4_per3_hwmod,
@@@ -3259,6 -3355,10 +3355,10 @@@ static struct omap_hwmod_ocp_if *dra7xx
        &dra7xx_l4_per1__uart4,
        &dra7xx_l4_per1__uart5,
        &dra7xx_l4_per1__uart6,
+       &dra7xx_l4_per2__uart7,
+       &dra7xx_l4_per2__uart8,
+       &dra7xx_l4_per2__uart9,
+       &dra7xx_l4_wkup__uart10,
        &dra7xx_l4_per3__usb_otg_ss1,
        &dra7xx_l4_per3__usb_otg_ss2,
        &dra7xx_l4_per3__usb_otg_ss3,
index 0f2539550f1b17218e724e3b2c3f61bc8e42010f,b0a9e1a7955a20f1cbf06a0c237f5d38952f8905..1b4fafe524ffeb4135d123ed3e0ce9e54be98755
@@@ -1,5 -1,6 +1,6 @@@
  config ARCH_SHMOBILE
        bool
+       select ZONE_DMA if ARM_LPAE
  
  config PM_RCAR
        bool
@@@ -18,6 -19,7 +19,7 @@@ config ARCH_RCAR_GEN
        select PM_RCAR if PM || SMP
        select RENESAS_IRQC
        select SYS_SUPPORTS_SH_CMT
+       select PCI_DOMAINS if PCI
  
  config ARCH_RMOBILE
        bool
@@@ -36,6 -38,7 +38,6 @@@ menuconfig ARCH_SHMOBILE_MULT
        select NO_IOPORT_MAP
        select PINCTRL
        select ARCH_REQUIRE_GPIOLIB
 -      select ARCH_HAS_OPP
  
  if ARCH_SHMOBILE_MULTI
  
@@@ -72,6 -75,11 +74,6 @@@ config ARCH_R8A779
  
  comment "Renesas ARM SoCs Board Type"
  
 -config MACH_KOELSCH
 -      bool "Koelsch board"
 -      depends on ARCH_R8A7791
 -      select MICREL_PHY if SH_ETH
 -
  config MACH_LAGER
        bool "Lager board"
        depends on ARCH_R8A7790
@@@ -139,6 -147,14 +141,6 @@@ config ARCH_R8A779
        select MIGHT_HAVE_PCI
        select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
  
 -config ARCH_R8A7791
 -      bool "R-Car M2-W (R8A77910)"
 -      select ARCH_RCAR_GEN2
 -      select ARCH_WANT_OPTIONAL_GPIOLIB
 -      select ARM_GIC
 -      select MIGHT_HAVE_PCI
 -      select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
 -
  comment "Renesas ARM SoCs Board Type"
  
  config MACH_APE6EVM
@@@ -213,6 -229,12 +215,6 @@@ config MACH_LAGE
        select MICREL_PHY if SH_ETH
        select SND_SOC_AK4642 if SND_SIMPLE_CARD
  
 -config MACH_KOELSCH
 -      bool "Koelsch board"
 -      depends on ARCH_R8A7791
 -      select USE_OF
 -      select MICREL_PHY if SH_ETH
 -
  config MACH_KZM9G
        bool "KZM-A9-GT board"
        depends on ARCH_SH73A0
index 7d68eba53be350ae7b0d2f98e91eb2001d62ad31,71e68ca568867ad956aa5834d06b6251889381f6..b55cac0e5b2b21546f2d467e0d5db1c36ed6dded
@@@ -19,8 -19,8 +19,8 @@@ obj-$(CONFIG_ARCH_EMEV2)      += setup-emev2
  obj-$(CONFIG_ARCH_R7S72100)   += setup-r7s72100.o
  
  # Clock objects
 -obj-y                         += clock.o
  ifndef CONFIG_COMMON_CLK
 +obj-y                         += clock.o
  obj-$(CONFIG_ARCH_SH7372)     += clock-sh7372.o
  obj-$(CONFIG_ARCH_SH73A0)     += clock-sh73a0.o
  obj-$(CONFIG_ARCH_R8A73A4)    += clock-r8a73a4.o
@@@ -28,6 -28,7 +28,6 @@@ obj-$(CONFIG_ARCH_R8A7740)    += clock-r8a
  obj-$(CONFIG_ARCH_R8A7778)    += clock-r8a7778.o
  obj-$(CONFIG_ARCH_R8A7779)    += clock-r8a7779.o
  obj-$(CONFIG_ARCH_R8A7790)    += clock-r8a7790.o
 -obj-$(CONFIG_ARCH_R8A7791)    += clock-r8a7791.o
  endif
  
  # CPU reset vector handling objects
@@@ -35,6 -36,7 +35,7 @@@ cpu-y                         := platsmp.o headsmp.
  
  # Shared SoC family objects
  obj-$(CONFIG_ARCH_RCAR_GEN2)  += setup-rcar-gen2.o platsmp-apmu.o $(cpu-y)
+ CFLAGS_setup-rcar-gen2.o      += -march=armv7-a
  
  # SMP objects
  smp-y                         := $(cpu-y)
@@@ -56,6 -58,7 +57,6 @@@ obj-$(CONFIG_ARCH_SH7372)     += entry-intc
  
  # Board objects
  ifdef CONFIG_ARCH_SHMOBILE_MULTI
 -obj-$(CONFIG_MACH_KOELSCH)    += board-koelsch-reference.o
  obj-$(CONFIG_MACH_LAGER)      += board-lager-reference.o
  obj-$(CONFIG_MACH_MARZEN)     += board-marzen-reference.o
  else
@@@ -67,6 -70,7 +68,6 @@@ obj-$(CONFIG_MACH_BOCKW_REFERENCE)    += b
  obj-$(CONFIG_MACH_MARZEN)     += board-marzen.o
  obj-$(CONFIG_MACH_LAGER)      += board-lager.o
  obj-$(CONFIG_MACH_ARMADILLO800EVA)    += board-armadillo800eva.o
 -obj-$(CONFIG_MACH_KOELSCH)    += board-koelsch.o
  obj-$(CONFIG_MACH_KZM9G)      += board-kzm9g.o
  obj-$(CONFIG_MACH_KZM9G_REFERENCE)    += board-kzm9g-reference.o
  endif
index de95181c7de471c801553f34f41a9fc017cf92b3,25813dac77d9813d25a4741e148c271cce9b0a2b..6d949f1c850bda8bdf25b0ec3cc56e3658e514be
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 - *
   */
  
  #include <linux/clk.h>
  #include <linux/delay.h>
  #include <linux/err.h>
 -#include <linux/kernel.h>
 -#include <linux/input.h>
 -#include <linux/platform_data/st1232_pdata.h>
 -#include <linux/irq.h>
 -#include <linux/platform_device.h>
  #include <linux/gpio.h>
  #include <linux/gpio_keys.h>
 -#include <linux/regulator/driver.h>
 +#include <linux/i2c-gpio.h>
 +#include <linux/input.h>
 +#include <linux/irq.h>
 +#include <linux/kernel.h>
 +#include <linux/mfd/tmio.h>
 +#include <linux/mmc/host.h>
 +#include <linux/mmc/sh_mmcif.h>
 +#include <linux/mmc/sh_mobile_sdhi.h>
  #include <linux/pinctrl/machine.h>
 +#include <linux/platform_data/st1232_pdata.h>
 +#include <linux/platform_device.h>
  #include <linux/pwm.h>
  #include <linux/pwm_backlight.h>
 +#include <linux/reboot.h>
 +#include <linux/regulator/driver.h>
  #include <linux/regulator/fixed.h>
  #include <linux/regulator/gpio-regulator.h>
  #include <linux/regulator/machine.h>
  #include <linux/sh_eth.h>
 -#include <linux/videodev2.h>
  #include <linux/usb/renesas_usbhs.h>
 -#include <linux/mfd/tmio.h>
 -#include <linux/mmc/host.h>
 -#include <linux/mmc/sh_mmcif.h>
 -#include <linux/mmc/sh_mobile_sdhi.h>
 -#include <linux/i2c-gpio.h>
 -#include <linux/reboot.h>
 +#include <linux/videodev2.h>
  
 -#include <media/mt9t112.h>
 -#include <media/sh_mobile_ceu.h>
 -#include <media/soc_camera.h>
 -#include <asm/page.h>
 +#include <asm/hardware/cache-l2x0.h>
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/mach/time.h>
 -#include <asm/hardware/cache-l2x0.h>
 -#include <video/sh_mobile_lcdc.h>
 -#include <video/sh_mobile_hdmi.h>
 +#include <asm/page.h>
 +#include <media/mt9t112.h>
 +#include <media/sh_mobile_ceu.h>
 +#include <media/soc_camera.h>
  #include <sound/sh_fsi.h>
  #include <sound/simple_card.h>
 +#include <video/sh_mobile_hdmi.h>
 +#include <video/sh_mobile_lcdc.h>
  
  #include "common.h"
  #include "irqs.h"
@@@ -1229,8 -1234,15 +1229,15 @@@ static void __init eva_init(void
        static struct pm_domain_device domain_devices[] __initdata = {
                { "A4LC", &lcdc0_device },
                { "A4LC", &hdmi_lcdc_device },
+               { "A4MP", &hdmi_device },
+               { "A4MP", &fsi_device },
+               { "A4R",  &ceu0_device },
+               { "A4S",  &sh_eth_device },
+               { "A3SP", &pwm_device },
+               { "A3SP", &sdhi0_device },
+               { "A3SP", &sh_mmcif_device },
        };
-       struct platform_device *usb = NULL;
+       struct platform_device *usb = NULL, *sdhi1 = NULL;
  
        regulator_register_always_on(0, "fixed-3.3V", fixed3v3_power_consumers,
                                     ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
  
                platform_device_register(&vcc_sdhi1);
                platform_device_register(&sdhi1_device);
+               sdhi1 = &sdhi1_device;
        }
  
  
                                       ARRAY_SIZE(domain_devices));
        if (usb)
                rmobile_add_device_to_domain("A3SP", usb);
+       if (sdhi1)
+               rmobile_add_device_to_domain("A3SP", sdhi1);
  
        r8a7740_pm_init();
  }
index f2ef759b6e969cc811f283c7700ef18de0f057ac,0e1de7455c5c08f6ac9c31f49fda169a2f130d76..2e82e44ab85258b725c3d62c665ceb4e757fc2f9
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  
  #include <linux/delay.h>
@@@ -39,6 -43,13 +39,13 @@@ static void __init kzm_init(void
  #endif
  }
  
+ #define RESCNT2 IOMEM(0xe6188020)
+ static void kzm9g_restart(enum reboot_mode mode, const char *cmd)
+ {
+       /* Do soft power on reset */
+       writel((1 << 31), RESCNT2);
+ }
  static const char *kzm9g_boards_compat_dt[] __initdata = {
        "renesas,kzm9g-reference",
        NULL,
@@@ -50,5 -61,6 +57,6 @@@ DT_MACHINE_START(KZM9G_DT, "kzm9g-refer
        .init_early     = shmobile_init_delay,
        .init_machine   = kzm_init,
        .init_late      = shmobile_init_late,
+       .restart        = kzm9g_restart,
        .dt_compat      = kzm9g_boards_compat_dt,
  MACHINE_END
index fe15dd26d15dc3ec5a33a94528b066595849eadb,c3712239fe295d21879c55027eae11b30a6b08e4..79ad93dfdae4ee7083f2c2f1351ee863355d20c4
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  #include <linux/delay.h>
  #include <linux/dma-mapping.h>
@@@ -67,6 -71,7 +67,7 @@@ static struct map_desc r8a7740_io_desc[
  
  void __init r8a7740_map_io(void)
  {
+       debug_ll_io_init();
        iotable_init(r8a7740_io_desc, ARRAY_SIZE(r8a7740_io_desc));
  }
  
@@@ -742,6 -747,12 +743,12 @@@ static void r8a7740_i2c_workaround(stru
  void __init r8a7740_add_standard_devices(void)
  {
        static struct pm_domain_device domain_devices[] __initdata = {
+               { "A4R",  &tmu0_device },
+               { "A4R",  &i2c0_device },
+               { "A4S",  &irqpin0_device },
+               { "A4S",  &irqpin1_device },
+               { "A4S",  &irqpin2_device },
+               { "A4S",  &irqpin3_device },
                { "A3SP", &scif0_device },
                { "A3SP", &scif1_device },
                { "A3SP", &scif2_device },
                { "A3SP", &scif7_device },
                { "A3SP", &scif8_device },
                { "A3SP", &i2c1_device },
+               { "A3SP", &ipmmu_device },
+               { "A3SP", &dma0_device },
+               { "A3SP", &dma1_device },
+               { "A3SP", &dma2_device },
+               { "A3SP", &usb_dma_device },
        };
  
        /* I2C work-around */
index 645d7cca623806b7692c9dfcafa6a91ab7c19583,434d1504066a66de12bb185b15e3ae67c788f808..6156d172cf3108d79c44a397931037a53f1c5266
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  #include <linux/kernel.h>
  #include <linux/init.h>
  #include "r8a7779.h"
  
  static struct map_desc r8a7779_io_desc[] __initdata = {
 -      /* 2M entity map for 0xf0000000 (MPCORE) */
 +      /* 2M identity mapping for 0xf0000000 (MPCORE) */
        {
                .virtual        = 0xf0000000,
                .pfn            = __phys_to_pfn(0xf0000000),
                .length         = SZ_2M,
                .type           = MT_DEVICE_NONSHARED
        },
 -      /* 16M entity map for 0xfexxxxxx (DMAC-S/HPBREG/INTC2/LRAM/DBSC) */
 +      /* 16M identity mapping for 0xfexxxxxx (DMAC-S/HPBREG/INTC2/LRAM/DBSC) */
        {
                .virtual        = 0xfe000000,
                .pfn            = __phys_to_pfn(0xfe000000),
@@@ -66,6 -70,7 +66,7 @@@
  
  void __init r8a7779_map_io(void)
  {
+       debug_ll_io_init();
        iotable_init(r8a7779_io_desc, ARRAY_SIZE(r8a7779_io_desc));
  }
  
@@@ -679,7 -684,7 +680,7 @@@ void __init r8a7779_add_early_devices(v
  
        /* Early serial console setup is not included here due to
         * memory map collisions. The SCIF serial ports in r8a7779
 -       * are difficult to entity map 1:1 due to collision with the
 +       * are difficult to identity map 1:1 due to collision with the
         * virtual memory range used by the coherent DMA code on ARM.
         *
         * Anyone wanting to debug early can remove UPF_IOREMAP from
index a669377aea5798194e65451aaf2c51e99d36e808,7ed92790d13fbea74ed9b4c95793898b7517e6b5..3dd6edd9bd1d3dfe5b6bb7787e4d672c1a6f63be
@@@ -3,6 -3,7 +3,7 @@@
   *
   * Copyright (C) 2013  Renesas Solutions Corp.
   * Copyright (C) 2013  Magnus Damm
+  * Copyright (C) 2014  Ulrich Hecht
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  
  #include <linux/clk/shmobile.h>
@@@ -20,6 -25,7 +21,7 @@@
  #include <linux/dma-contiguous.h>
  #include <linux/io.h>
  #include <linux/kernel.h>
+ #include <linux/of.h>
  #include <linux/of_fdt.h>
  #include <asm/mach/arch.h>
  #include "common.h"
@@@ -50,36 -56,60 +52,60 @@@ void __init rcar_gen2_timer_init(void
  {
  #if defined(CONFIG_ARM_ARCH_TIMER) || defined(CONFIG_COMMON_CLK)
        u32 mode = rcar_gen2_read_mode_pins();
+       bool is_e2 = (bool)of_find_compatible_node(NULL, NULL,
+               "renesas,r8a7794");
  #endif
  #ifdef CONFIG_ARM_ARCH_TIMER
        void __iomem *base;
        int extal_mhz = 0;
        u32 freq;
  
-       /* At Linux boot time the r8a7790 arch timer comes up
-        * with the counter disabled. Moreover, it may also report
-        * a potentially incorrect fixed 13 MHz frequency. To be
-        * correct these registers need to be updated to use the
-        * frequency EXTAL / 2 which can be determined by the MD pins.
-        */
+       if (is_e2) {
+               freq = 260000000 / 8;   /* ZS / 8 */
+               /* CNTVOFF has to be initialized either from non-secure
+                * Hypervisor mode or secure Monitor mode with SCR.NS==1.
+                * If TrustZone is enabled then it should be handled by the
+                * secure code.
+                */
+               asm volatile(
+               "       cps     0x16\n"
+               "       mrc     p15, 0, r1, c1, c1, 0\n"
+               "       orr     r0, r1, #1\n"
+               "       mcr     p15, 0, r0, c1, c1, 0\n"
+               "       isb\n"
+               "       mov     r0, #0\n"
+               "       mcrr    p15, 4, r0, r0, c14\n"
+               "       isb\n"
+               "       mcr     p15, 0, r1, c1, c1, 0\n"
+               "       isb\n"
+               "       cps     0x13\n"
+                       : : : "r0", "r1");
+       } else {
+               /* At Linux boot time the r8a7790 arch timer comes up
+                * with the counter disabled. Moreover, it may also report
+                * a potentially incorrect fixed 13 MHz frequency. To be
+                * correct these registers need to be updated to use the
+                * frequency EXTAL / 2 which can be determined by the MD pins.
+                */
  
-       switch (mode & (MD(14) | MD(13))) {
-       case 0:
-               extal_mhz = 15;
-               break;
-       case MD(13):
-               extal_mhz = 20;
-               break;
-       case MD(14):
-               extal_mhz = 26;
-               break;
-       case MD(13) | MD(14):
-               extal_mhz = 30;
-               break;
-       }
+               switch (mode & (MD(14) | MD(13))) {
+               case 0:
+                       extal_mhz = 15;
+                       break;
+               case MD(13):
+                       extal_mhz = 20;
+                       break;
+               case MD(14):
+                       extal_mhz = 26;
+                       break;
+               case MD(13) | MD(14):
+                       extal_mhz = 30;
+                       break;
+               }
  
-       /* The arch timer frequency equals EXTAL / 2 */
-       freq = extal_mhz * (1000000 / 2);
+               /* The arch timer frequency equals EXTAL / 2 */
+               freq = extal_mhz * (1000000 / 2);
+       }
  
        /* Remap "armgcnt address map" space */
        base = ioremap(0xe6080000, PAGE_SIZE);
index ca2b80b9bc90700a54b8d2b679503f41bddd0d09,322e2dc3fa36078121322edd966a25ea650e3e77..458a2cfad4173ca74d2226a8037a299cdf9b971f
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  #include <linux/kernel.h>
  #include <linux/init.h>
@@@ -43,7 -47,7 +43,7 @@@
  #include "sh7372.h"
  
  static struct map_desc sh7372_io_desc[] __initdata = {
 -      /* create a 1:1 entity map for 0xe6xxxxxx
 +      /* create a 1:1 identity mapping for 0xe6xxxxxx
         * used by CPGA, INTC and PFC.
         */
        {
@@@ -56,6 -60,7 +56,7 @@@
  
  void __init sh7372_map_io(void)
  {
+       debug_ll_io_init();
        iotable_init(sh7372_io_desc, ARRAY_SIZE(sh7372_io_desc));
  }
  
@@@ -1008,6 -1013,7 +1009,7 @@@ DT_MACHINE_START(SH7372_DT, "Generic SH
        .init_irq       = sh7372_init_irq,
        .handle_irq     = shmobile_handle_irq_intc,
        .init_machine   = sh7372_add_standard_devices_dt,
+       .init_late      = shmobile_init_late,
        .dt_compat      = sh7372_boards_compat_dt,
  MACHINE_END
  
index 1ff4bd65e647e69d1fe899d112ea5b30b3789697,fa7cab820ab910f94b7eb8cbf6ec515c8de8e797..93ebe3430bfe707ac234b35f37deb54a1998a531
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   */
  #include <linux/kernel.h>
  #include <linux/init.h>
@@@ -22,7 -26,6 +22,7 @@@
  #include <linux/of_platform.h>
  #include <linux/delay.h>
  #include <linux/input.h>
 +#include <linux/i2c/i2c-sh_mobile.h>
  #include <linux/io.h>
  #include <linux/serial_sci.h>
  #include <linux/sh_dma.h>
@@@ -42,7 -45,7 +42,7 @@@
  #include "sh73a0.h"
  
  static struct map_desc sh73a0_io_desc[] __initdata = {
 -      /* create a 1:1 entity map for 0xe6xxxxxx
 +      /* create a 1:1 identity mapping for 0xe6xxxxxx
         * used by CPGA, INTC and PFC.
         */
        {
@@@ -55,6 -58,7 +55,7 @@@
  
  void __init sh73a0_map_io(void)
  {
+       debug_ll_io_init();
        iotable_init(sh73a0_io_desc, ARRAY_SIZE(sh73a0_io_desc));
  }
  
@@@ -189,18 -193,11 +190,18 @@@ static struct resource i2c4_resources[
        },
  };
  
 +static struct i2c_sh_mobile_platform_data i2c_platform_data = {
 +      .clks_per_count = 2,
 +};
 +
  static struct platform_device i2c0_device = {
        .name           = "i2c-sh_mobile",
        .id             = 0,
        .resource       = i2c0_resources,
        .num_resources  = ARRAY_SIZE(i2c0_resources),
 +      .dev            = {
 +              .platform_data  = &i2c_platform_data,
 +      },
  };
  
  static struct platform_device i2c1_device = {
        .id             = 1,
        .resource       = i2c1_resources,
        .num_resources  = ARRAY_SIZE(i2c1_resources),
 +      .dev            = {
 +              .platform_data  = &i2c_platform_data,
 +      },
  };
  
  static struct platform_device i2c2_device = {
        .id             = 2,
        .resource       = i2c2_resources,
        .num_resources  = ARRAY_SIZE(i2c2_resources),
 +      .dev            = {
 +              .platform_data  = &i2c_platform_data,
 +      },
  };
  
  static struct platform_device i2c3_device = {
        .id             = 3,
        .resource       = i2c3_resources,
        .num_resources  = ARRAY_SIZE(i2c3_resources),
 +      .dev            = {
 +              .platform_data  = &i2c_platform_data,
 +      },
  };
  
  static struct platform_device i2c4_device = {
        .id             = 4,
        .resource       = i2c4_resources,
        .num_resources  = ARRAY_SIZE(i2c4_resources),
 +      .dev            = {
 +              .platform_data  = &i2c_platform_data,
 +      },
  };
  
  static const struct sh_dmae_slave_config sh73a0_dmae_slaves[] = {
@@@ -756,12 -741,17 +757,12 @@@ void __init sh73a0_add_standard_devices
                            ARRAY_SIZE(sh73a0_late_devices));
  }
  
 -void __init sh73a0_init_delay(void)
 -{
 -      shmobile_init_delay();
 -}
 -
  /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */
  void __init __weak sh73a0_register_twd(void) { }
  
  void __init sh73a0_earlytimer_init(void)
  {
 -      sh73a0_init_delay();
 +      shmobile_init_delay();
        sh73a0_clock_init();
        shmobile_earlytimer_init();
        sh73a0_register_twd();
@@@ -786,6 -776,13 +787,13 @@@ void __init sh73a0_add_standard_devices
        of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  }
  
+ #define RESCNT2 IOMEM(0xe6188020)
+ static void sh73a0_restart(enum reboot_mode mode, const char *cmd)
+ {
+       /* Do soft power on reset */
+       writel((1 << 31), RESCNT2);
+ }
  static const char *sh73a0_boards_compat_dt[] __initdata = {
        "renesas,sh73a0",
        NULL,
  DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)")
        .smp            = smp_ops(sh73a0_smp_ops),
        .map_io         = sh73a0_map_io,
 -      .init_early     = sh73a0_init_delay,
 +      .init_early     = shmobile_init_delay,
        .init_machine   = sh73a0_add_standard_devices_dt,
        .init_late      = shmobile_init_late,
+       .restart        = sh73a0_restart,
        .dt_compat      = sh73a0_boards_compat_dt,
  MACHINE_END
  #endif /* CONFIG_USE_OF */
index 1081b763e0f390d627c2ce7f561a7533bc19872b,32ee335d26323287d1d0f27b360dfa2c453e95de..f1d027aa7a81ac3361401380553771bdb37d47d2
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   * GNU General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License
 - * along with this program; if not, write to the Free Software
 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 - *
   */
  #include <linux/platform_device.h>
  #include <linux/clocksource.h>
@@@ -40,6 -45,7 +40,7 @@@ void __init shmobile_init_delay(void
        struct device_node *np, *cpus;
        bool is_a7_a8_a9 = false;
        bool is_a15 = false;
+       bool has_arch_timer = false;
        u32 max_freq = 0;
  
        cpus = of_find_node_by_path("/cpus");
                if (!of_property_read_u32(np, "clock-frequency", &freq))
                        max_freq = max(max_freq, freq);
  
-               if (of_device_is_compatible(np, "arm,cortex-a7") ||
-                   of_device_is_compatible(np, "arm,cortex-a8") ||
-                   of_device_is_compatible(np, "arm,cortex-a9"))
+               if (of_device_is_compatible(np, "arm,cortex-a8") ||
+                   of_device_is_compatible(np, "arm,cortex-a9")) {
                        is_a7_a8_a9 = true;
-               else if (of_device_is_compatible(np, "arm,cortex-a15"))
+               } else if (of_device_is_compatible(np, "arm,cortex-a7")) {
+                       is_a7_a8_a9 = true;
+                       has_arch_timer = true;
+               } else if (of_device_is_compatible(np, "arm,cortex-a15")) {
                        is_a15 = true;
+                       has_arch_timer = true;
+               }
        }
  
        of_node_put(cpus);
        if (!max_freq)
                return;
  
-       if (is_a7_a8_a9)
-               shmobile_setup_delay_hz(max_freq, 1, 3);
-       else if (is_a15 && !IS_ENABLED(CONFIG_ARM_ARCH_TIMER))
-               shmobile_setup_delay_hz(max_freq, 2, 4);
+       if (!has_arch_timer || !IS_ENABLED(CONFIG_ARM_ARCH_TIMER)) {
+               if (is_a7_a8_a9)
+                       shmobile_setup_delay_hz(max_freq, 1, 3);
+               else if (is_a15)
+                       shmobile_setup_delay_hz(max_freq, 2, 4);
+       }
  }
  
  static void __init shmobile_late_time_init(void)
diff --combined arch/arm/mm/Kconfig
index 7eb94e6fc37672f82c115c16926832a2089329c4,179a100493f54a081af2f797fba5b4b92a8b0d3f..ab906b8010470ad514081bc6901923a2c76f2f5d
@@@ -21,7 -21,7 +21,7 @@@ config CPU_ARM7TDM
  
  # ARM720T
  config CPU_ARM720T
-       bool "Support ARM720T processor" if ARCH_INTEGRATOR
+       bool "Support ARM720T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
        select CPU_32v4T
        select CPU_ABRT_LV4T
        select CPU_CACHE_V4
@@@ -39,7 -39,7 +39,7 @@@
  
  # ARM740T
  config CPU_ARM740T
-       bool "Support ARM740T processor" if ARCH_INTEGRATOR
+       bool "Support ARM740T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
        depends on !MMU
        select CPU_32v4T
        select CPU_ABRT_LV4T
@@@ -71,7 -71,7 +71,7 @@@ config CPU_ARM9TDM
  
  # ARM920T
  config CPU_ARM920T
-       bool "Support ARM920T processor" if ARCH_INTEGRATOR
+       bool "Support ARM920T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
        select CPU_32v4T
        select CPU_ABRT_EV4T
        select CPU_CACHE_V4WT
@@@ -89,7 -89,7 +89,7 @@@
  
  # ARM922T
  config CPU_ARM922T
-       bool "Support ARM922T processor" if ARCH_INTEGRATOR
+       bool "Support ARM922T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
        select CPU_32v4T
        select CPU_ABRT_EV4T
        select CPU_CACHE_V4WT
@@@ -127,7 -127,7 +127,7 @@@ config CPU_ARM925
  
  # ARM926T
  config CPU_ARM926T
-       bool "Support ARM926T processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB
+       bool "Support ARM926T processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V5) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB)
        select CPU_32v5
        select CPU_ABRT_EV5TJ
        select CPU_CACHE_VIVT
@@@ -163,7 -163,7 +163,7 @@@ config CPU_FA52
  
  # ARM940T
  config CPU_ARM940T
-       bool "Support ARM940T processor" if ARCH_INTEGRATOR
+       bool "Support ARM940T processor" if (ARCH_MULTI_V4T && ARCH_INTEGRATOR)
        depends on !MMU
        select CPU_32v4T
        select CPU_ABRT_NOMMU
  
  # ARM946E-S
  config CPU_ARM946E
-       bool "Support ARM946E-S processor" if ARCH_INTEGRATOR
+       bool "Support ARM946E-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
        depends on !MMU
        select CPU_32v5
        select CPU_ABRT_NOMMU
  
  # ARM1020 - needs validating
  config CPU_ARM1020
-       bool "Support ARM1020T (rev 0) processor" if ARCH_INTEGRATOR
+       bool "Support ARM1020T (rev 0) processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
        select CPU_32v5
        select CPU_ABRT_EV4T
        select CPU_CACHE_V4WT
  
  # ARM1020E - needs validating
  config CPU_ARM1020E
-       bool "Support ARM1020E processor" if ARCH_INTEGRATOR
+       bool "Support ARM1020E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
        depends on n
        select CPU_32v5
        select CPU_ABRT_EV4T
  
  # ARM1022E
  config CPU_ARM1022
-       bool "Support ARM1022E processor" if ARCH_INTEGRATOR
+       bool "Support ARM1022E processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
        select CPU_32v5
        select CPU_ABRT_EV4T
        select CPU_CACHE_VIVT
  
  # ARM1026EJ-S
  config CPU_ARM1026
-       bool "Support ARM1026EJ-S processor" if ARCH_INTEGRATOR
+       bool "Support ARM1026EJ-S processor" if (ARCH_MULTI_V5 && ARCH_INTEGRATOR)
        select CPU_32v5
        select CPU_ABRT_EV5T # But need Jazelle, but EV5TJ ignores bit 10
        select CPU_CACHE_VIVT
@@@ -358,7 -358,7 +358,7 @@@ config CPU_PJ4
  
  # ARMv6
  config CPU_V6
-       bool "Support ARM V6 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
+       bool "Support ARM V6 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
        select CPU_32v6
        select CPU_ABRT_EV6
        select CPU_CACHE_V6
  
  # ARMv6k
  config CPU_V6K
-       bool "Support ARM V6K processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
+       bool "Support ARM V6K processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V6) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
        select CPU_32v6
        select CPU_32v6K
        select CPU_ABRT_EV6
  
  # ARMv7
  config CPU_V7
-       bool "Support ARM V7 processor" if ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX
+       bool "Support ARM V7 processor" if (!ARCH_MULTIPLATFORM || ARCH_MULTI_V7) && (ARCH_INTEGRATOR || MACH_REALVIEW_EB || MACH_REALVIEW_PBX)
        select CPU_32v6K
        select CPU_32v7
        select CPU_ABRT_EV7
@@@ -798,7 -798,6 +798,7 @@@ config NEED_KUSER_HELPER
  
  config KUSER_HELPERS
        bool "Enable kuser helpers in vector page" if !NEED_KUSER_HELPERS
 +      depends on MMU
        default y
        help
          Warning: disabling this option may break user programs.
index 6a2e168c3ab0fdae090000ba2d2a3659501499ab,4ec137bba7f67ac5268682802a8136f320fc9d19..b907550ae9a5772d06d3a3894d57211e8c3d5204
@@@ -26,6 -26,7 +26,7 @@@
  #include <linux/of_pci.h>
  #include <linux/irqdomain.h>
  #include <linux/slab.h>
+ #include <linux/syscore_ops.h>
  #include <linux/msi.h>
  #include <asm/mach/arch.h>
  #include <asm/exception.h>
@@@ -43,7 -44,6 +44,7 @@@
  #define ARMADA_370_XP_INT_CLEAR_ENABLE_OFFS   (0x34)
  #define ARMADA_370_XP_INT_SOURCE_CTL(irq)     (0x100 + irq*4)
  #define ARMADA_370_XP_INT_SOURCE_CPU_MASK     0xF
 +#define ARMADA_370_XP_INT_IRQ_FIQ_MASK(cpuid) ((BIT(0) | BIT(8)) << cpuid)
  
  #define ARMADA_370_XP_CPU_INTACK_OFFS         (0x44)
  #define ARMADA_375_PPI_CAUSE                  (0x10)
@@@ -67,6 -67,7 +68,7 @@@
  static void __iomem *per_cpu_int_base;
  static void __iomem *main_int_base;
  static struct irq_domain *armada_370_xp_mpic_domain;
+ static u32 doorbell_mask_reg;
  #ifdef CONFIG_PCI_MSI
  static struct irq_domain *armada_370_xp_msi_domain;
  static DECLARE_BITMAP(msi_used, PCI_MSI_DOORBELL_NR);
@@@ -407,29 -408,19 +409,29 @@@ static void armada_370_xp_mpic_handle_c
                                                  struct irq_desc *desc)
  {
        struct irq_chip *chip = irq_get_chip(irq);
 -      unsigned long irqmap, irqn;
 +      unsigned long irqmap, irqn, irqsrc, cpuid;
        unsigned int cascade_irq;
  
        chained_irq_enter(chip, desc);
  
        irqmap = readl_relaxed(per_cpu_int_base + ARMADA_375_PPI_CAUSE);
 -
 -      if (irqmap & BIT(0)) {
 -              armada_370_xp_handle_msi_irq(NULL, true);
 -              irqmap &= ~BIT(0);
 -      }
 +      cpuid = cpu_logical_map(smp_processor_id());
  
        for_each_set_bit(irqn, &irqmap, BITS_PER_LONG) {
 +              irqsrc = readl_relaxed(main_int_base +
 +                                     ARMADA_370_XP_INT_SOURCE_CTL(irqn));
 +
 +              /* Check if the interrupt is not masked on current CPU.
 +               * Test IRQ (0-1) and FIQ (8-9) mask bits.
 +               */
 +              if (!(irqsrc & ARMADA_370_XP_INT_IRQ_FIQ_MASK(cpuid)))
 +                      continue;
 +
 +              if (irqn == 1) {
 +                      armada_370_xp_handle_msi_irq(NULL, true);
 +                      continue;
 +              }
 +
                cascade_irq = irq_find_mapping(armada_370_xp_mpic_domain, irqn);
                generic_handle_irq(cascade_irq);
        }
@@@ -485,6 -476,54 +487,54 @@@ armada_370_xp_handle_irq(struct pt_reg
        } while (1);
  }
  
+ static int armada_370_xp_mpic_suspend(void)
+ {
+       doorbell_mask_reg = readl(per_cpu_int_base +
+                                 ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
+       return 0;
+ }
+ static void armada_370_xp_mpic_resume(void)
+ {
+       int nirqs;
+       irq_hw_number_t irq;
+       /* Re-enable interrupts */
+       nirqs = (readl(main_int_base + ARMADA_370_XP_INT_CONTROL) >> 2) & 0x3ff;
+       for (irq = 0; irq < nirqs; irq++) {
+               struct irq_data *data;
+               int virq;
+               virq = irq_linear_revmap(armada_370_xp_mpic_domain, irq);
+               if (virq == 0)
+                       continue;
+               if (irq != ARMADA_370_XP_TIMER0_PER_CPU_IRQ)
+                       writel(irq, per_cpu_int_base +
+                              ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
+               else
+                       writel(irq, main_int_base +
+                              ARMADA_370_XP_INT_SET_ENABLE_OFFS);
+               data = irq_get_irq_data(virq);
+               if (!irqd_irq_disabled(data))
+                       armada_370_xp_irq_unmask(data);
+       }
+       /* Reconfigure doorbells for IPIs and MSIs */
+       writel(doorbell_mask_reg,
+              per_cpu_int_base + ARMADA_370_XP_IN_DRBEL_MSK_OFFS);
+       if (doorbell_mask_reg & IPI_DOORBELL_MASK)
+               writel(0, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
+       if (doorbell_mask_reg & PCI_MSI_DOORBELL_MASK)
+               writel(1, per_cpu_int_base + ARMADA_370_XP_INT_CLEAR_MASK_OFFS);
+ }
+ struct syscore_ops armada_370_xp_mpic_syscore_ops = {
+       .suspend        = armada_370_xp_mpic_suspend,
+       .resume         = armada_370_xp_mpic_resume,
+ };
  static int __init armada_370_xp_mpic_of_init(struct device_node *node,
                                             struct device_node *parent)
  {
                                        armada_370_xp_mpic_handle_cascade_irq);
        }
  
+       register_syscore_ops(&armada_370_xp_mpic_syscore_ops);
        return 0;
  }