Merge tag 'newsoc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 23 Jul 2012 23:31:31 +0000 (16:31 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 23 Jul 2012 23:31:31 +0000 (16:31 -0700)
Pull support for three new arm SoC types from Arnd Bergmann:

 - The mvebu platform includes Marvell's Armada XP and Armada 370 chips,
   made by the mvebu business unit inside of Marvell.  Since the same
   group also made the older but similar platforms we call "orion5x",
   "kirkwood", "mv78xx0" and "dove", we plan to move all of them into
   the mach-mvebu directory in the future.

 - socfpga is Altera's platform based on Cortex-A9 cores and a lot of
   FPGA space.  This is similar to the Xilinx zynq platform we already
   support.  The code is particularly clean, which is helped by the fact
   that the hardware doesn't do much besides the parts that are expected
   to get added in the FPGA.

 - The OMAP subarchitecture gains support for the latest generation, the
   OMAP5 based on the new Cortex-A15 core.  Support is rather
   rudimentary for now, but will be extended in the future.

* tag 'newsoc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (25 commits)
  ARM: socfpga: initial support for Altera's SOCFPGA platform
  arm: mvebu: generate DTBs for supported SoCs
  ARM: mvebu: MPIC: read number of interrupts from control register
  arm: mach-mvebu: add entry to MAINTAINERS
  arm: mach-mvebu: add compilation/configuration change
  arm: mach-mvebu: add defconfig
  arm: mach-mvebu: add documentation for new device tree bindings
  arm: mach-mvebu: add support for Armada 370 and Armada XP with DT
  arm: mach-mvebu: add source files
  arm: mach-mvebu: add header
  clocksource: time-armada-370-xp: Marvell Armada 370/XP SoC timer driver
  ARM: Kconfig update to support additional GPIOs in OMAP5
  ARM: OMAP5: Add the build support
  arm/dts: OMAP5: Add omap5 dts files
  ARM: OMAP5: board-generic: Add device tree support
  ARM: omap2+: board-generic: clean up the irq data from board file
  ARM: OMAP5: Add SMP support
  ARM: OMAP5: Add the WakeupGen IP updates
  ARM: OMAP5: l3: Add l3 error handler support for omap5
  ARM: OMAP5: gpmc: Update gpmc_init()
  ...

Conflicts:
Documentation/devicetree/bindings/arm/omap/omap.txt
arch/arm/mach-omap2/Makefile
drivers/clocksource/Kconfig
drivers/clocksource/Makefile

14 files changed:
1  2 
Documentation/devicetree/bindings/arm/omap/omap.txt
MAINTAINERS
arch/arm/Kconfig
arch/arm/configs/omap2plus_defconfig
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/irq.c
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/prcm-common.h
arch/arm/plat-omap/include/plat/cpu.h
drivers/clk/Makefile
drivers/clocksource/Kconfig
drivers/clocksource/Makefile

@@@ -48,5 -48,5 +48,8 @@@ Boards
  - AM335X EVM : Software Developement Board for AM335x
    compatible = "ti,am335x-evm", "ti,am33xx", "ti,omap3"
  
 +- AM335X Bone : Low cost community board
 +  compatible = "ti,am335x-bone", "ti,am33xx", "ti,omap3"
++
+ - OMAP5 EVM : Evaluation Module
+   compatible = "ti,omap5-evm", "ti,omap5"
diff --combined MAINTAINERS
@@@ -894,6 -894,14 +894,14 @@@ ARM/MAGICIAN MACHINE SUPPOR
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
+ ARM/Marvell Armada 370 and Armada XP SOC support
+ M:    Jason Cooper <jason@lakedaemon.net>
+ M:    Andrew Lunn <andrew@lunn.ch>
+ M:    Gregory Clement <gregory.clement@free-electrons.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    arch/arm/mach-mvebu/
  ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
  M:    Jason Cooper <jason@lakedaemon.net>
  M:    Andrew Lunn <andrew@lunn.ch>
@@@ -1103,6 -1111,16 +1111,16 @@@ S:    Supporte
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
+ ARM/SOCFPGA ARCHITECTURE
+ M:    Dinh Nguyen <dinguyen@altera.com>
+ S:    Maintained
+ F:    arch/arm/mach-socfpga/
+ ARM/SOCFPGA CLOCK FRAMEWORK SUPPORT
+ M:    Dinh Nguyen <dinguyen@altera.com>
+ S:    Maintained
+ F:    drivers/clk/socfpga/
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -3433,14 -3451,13 +3451,14 @@@ S:   Supporte
  F:    drivers/idle/i7300_idle.c
  
  IEEE 802.15.4 SUBSYSTEM
 +M:    Alexander Smirnov <alex.bluesman.smirnov@gmail.com>
  M:    Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
 -M:    Sergey Lapin <slapin@ossfans.org>
  L:    linux-zigbee-devel@lists.sourceforge.net (moderated for non-subscribers)
  W:    http://apps.sourceforge.net/trac/linux-zigbee
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lowpan/lowpan.git
  S:    Maintained
  F:    net/ieee802154/
 +F:    net/mac802154/
  F:    drivers/ieee802154/
  
  IIO SUBSYSTEM AND DRIVERS
@@@ -4655,8 -4672,8 +4673,8 @@@ L:      netfilter@vger.kernel.or
  L:    coreteam@netfilter.org
  W:    http://www.netfilter.org/
  W:    http://www.iptables.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-2.6.git
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/netfilter/nf-next-2.6.git
 +T:    git git://1984.lsi.us.es/nf
 +T:    git git://1984.lsi.us.es/nf-next
  S:    Supported
  F:    include/linux/netfilter*
  F:    include/linux/netfilter/
@@@ -4858,7 -4875,6 +4876,7 @@@ M:      Kevin Hilman <khilman@ti.com
  L:    linux-omap@vger.kernel.org
  S:    Maintained
  F:    arch/arm/*omap*/*pm*
 +F:    drivers/cpufreq/omap-cpufreq.c
  
  OMAP POWERDOMAIN/CLOCKDOMAIN SOC ADAPTATION LAYER SUPPORT
  M:    Rajendra Nayak <rnayak@ti.com>
@@@ -5565,7 -5581,7 +5583,7 @@@ F:      Documentation/networking/LICENSE.qla
  F:    drivers/net/ethernet/qlogic/qla3xxx.*
  
  QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
 -M:    Anirban Chakraborty <anirban.chakraborty@qlogic.com>
 +M:    Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
  M:    Sony Chacko <sony.chacko@qlogic.com>
  M:    linux-driver@qlogic.com
  L:    netdev@vger.kernel.org
@@@ -5573,6 -5589,7 +5591,6 @@@ S:      Supporte
  F:    drivers/net/ethernet/qlogic/qlcnic/
  
  QLOGIC QLGE 10Gb ETHERNET DRIVER
 -M:    Anirban Chakraborty <anirban.chakraborty@qlogic.com>
  M:    Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
  M:    Ron Mercer <ron.mercer@qlogic.com>
  M:    linux-driver@qlogic.com
@@@ -5910,7 -5927,7 +5928,7 @@@ M:      Ingo Molnar <mingo@redhat.com
  M:    Peter Zijlstra <peterz@infradead.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
  S:    Maintained
 -F:    kernel/sched*
 +F:    kernel/sched/
  F:    include/linux/sched.h
  
  SCORE ARCHITECTURE
diff --combined arch/arm/Kconfig
@@@ -250,6 -250,25 +250,25 @@@ choic
        prompt "ARM system type"
        default ARCH_VERSATILE
  
+ config ARCH_SOCFPGA
+       bool "Altera SOCFPGA family"
+       select ARCH_WANT_OPTIONAL_GPIOLIB
+       select ARM_AMBA
+       select ARM_GIC
+       select CACHE_L2X0
+       select CLKDEV_LOOKUP
+       select COMMON_CLK
+       select CPU_V7
+       select DW_APB_TIMER
+       select DW_APB_TIMER_OF
+       select GENERIC_CLOCKEVENTS
+       select GPIO_PL061 if GPIOLIB
+       select HAVE_ARM_SCU
+       select SPARSE_IRQ
+       select USE_OF
+       help
+         This enables support for Altera SOCFPGA Cyclone V platform
  config ARCH_INTEGRATOR
        bool "ARM Ltd. Integrator family"
        select ARM_AMBA
        select ICST
        select GENERIC_CLOCKEVENTS
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_FPGA_IRQ
        select NEED_MACH_IO_H
        select NEED_MACH_MEMORY_H
@@@ -278,7 -296,6 +297,7 @@@ config ARCH_REALVIE
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
        select ARM_TIMER_SP804
        select GPIO_PL061 if GPIOLIB
@@@ -297,7 -314,6 +316,7 @@@ config ARCH_VERSATIL
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select NEED_MACH_IO_H if PCI
        select PLAT_VERSATILE
 +      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
        select PLAT_VERSATILE_FPGA_IRQ
        select ARM_TIMER_SP804
@@@ -310,7 -326,7 +329,7 @@@ config ARCH_VEXPRES
        select ARM_AMBA
        select ARM_TIMER_SP804
        select CLKDEV_LOOKUP
 -      select HAVE_MACH_CLKDEV
 +      select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        select HAVE_CLK
        select HAVE_PATA_PLATFORM
        select NO_IOPORT
        select PLAT_VERSATILE
        select PLAT_VERSATILE_CLCD
 +      select REGULATOR_FIXED_VOLTAGE if REGULATOR
        help
          This enables support for the ARM Ltd Versatile Express boards.
  
@@@ -537,6 -552,18 +556,18 @@@ config ARCH_IXP4X
        help
          Support for Intel's IXP4XX (XScale) family of processors.
  
+ config ARCH_MVEBU
+       bool "Marvell SOCs with Device Tree support"
+       select GENERIC_CLOCKEVENTS
+       select MULTI_IRQ_HANDLER
+       select SPARSE_IRQ
+       select CLKSRC_MMIO
+       select GENERIC_IRQ_CHIP
+       select IRQ_DOMAIN
+       select COMMON_CLK
+       help
+         Support for the Marvell SoC Family with device tree support
  config ARCH_DOVE
        bool "Marvell Dove"
        select CPU_V7
@@@ -571,7 -598,6 +602,7 @@@ config ARCH_LPC32X
        select CLKDEV_LOOKUP
        select GENERIC_CLOCKEVENTS
        select USE_OF
 +      select HAVE_PWM
        help
          Support for the NXP LPC32XX family of processors
  
@@@ -663,7 -689,6 +694,7 @@@ config ARCH_PICOXCEL
        select ARM_VIC
        select CPU_V6K
        select DW_APB_TIMER
 +      select DW_APB_TIMER_OF
        select GENERIC_CLOCKEVENTS
        select GENERIC_GPIO
        select HAVE_TCM
@@@ -919,7 -944,7 +950,7 @@@ config ARCH_NOMADI
        select ARM_AMBA
        select ARM_VIC
        select CPU_ARM926T
 -      select CLKDEV_LOOKUP
 +      select COMMON_CLK
        select GENERIC_CLOCKEVENTS
        select PINCTRL
        select MIGHT_HAVE_CACHE_L2X0
@@@ -942,7 -967,6 +973,7 @@@ config ARCH_DAVINC
  
  config ARCH_OMAP
        bool "TI OMAP"
 +      depends on MMU
        select HAVE_CLK
        select ARCH_REQUIRE_GPIOLIB
        select ARCH_HAS_CPUFREQ
@@@ -994,6 -1018,8 +1025,8 @@@ endchoic
  # Kconfigs may be included either alphabetically (according to the
  # plat- suffix) or along side the corresponding mach-* source.
  #
+ source "arch/arm/mach-mvebu/Kconfig"
  source "arch/arm/mach-at91/Kconfig"
  
  source "arch/arm/mach-bcmring/Kconfig"
@@@ -1028,6 -1054,8 +1061,6 @@@ source "arch/arm/mach-kirkwood/Kconfig
  
  source "arch/arm/mach-ks8695/Kconfig"
  
 -source "arch/arm/mach-lpc32xx/Kconfig"
 -
  source "arch/arm/mach-msm/Kconfig"
  
  source "arch/arm/mach-mv78xx0/Kconfig"
@@@ -1586,6 -1614,7 +1619,7 @@@ config ARCH_NR_GPI
        default 1024 if ARCH_SHMOBILE || ARCH_TEGRA
        default 355 if ARCH_U8500
        default 264 if MACH_H4700
+       default 512 if SOC_OMAP5
        default 0
        help
          Maximum number of GPIOs in the system.
@@@ -176,6 -176,7 +176,6 @@@ CONFIG_USB_ANNOUNCE_NEW_DEVICES=
  CONFIG_USB_DEVICEFS=y
  CONFIG_USB_SUSPEND=y
  CONFIG_USB_MON=y
 -CONFIG_USB_EHCI_HCD=y
  CONFIG_USB_WDM=y
  CONFIG_USB_STORAGE=y
  CONFIG_USB_LIBUSUAL=y
@@@ -196,7 -197,6 +196,7 @@@ CONFIG_RTC_DRV_TWL4030=
  CONFIG_EXT2_FS=y
  CONFIG_EXT3_FS=y
  # CONFIG_EXT3_FS_XATTR is not set
 +CONFIG_EXT4_FS=y
  CONFIG_QUOTA=y
  CONFIG_QFMT_V2=y
  CONFIG_MSDOS_FS=y
@@@ -236,3 -236,4 +236,4 @@@ CONFIG_CRC_T10DIF=
  CONFIG_CRC_ITU_T=y
  CONFIG_CRC7=y
  CONFIG_LIBCRC32C=y
+ CONFIG_SOC_OMAP5=y
@@@ -9,7 -9,7 +9,7 @@@ config ARCH_OMAP2PLUS_TYPICA
        select REGULATOR
        select PM_RUNTIME
        select VFP
-       select NEON if ARCH_OMAP3 || ARCH_OMAP4
+       select NEON if ARCH_OMAP3 || ARCH_OMAP4 || SOC_OMAP5
        select SERIAL_OMAP
        select SERIAL_OMAP_CONSOLE
        select I2C
@@@ -39,7 -39,6 +39,7 @@@ config ARCH_OMAP
        select CPU_V7
        select USB_ARCH_HAS_EHCI if USB_SUPPORT
        select ARCH_HAS_OPP
 +      select PM_RUNTIME if CPU_IDLE
        select PM_OPP if PM
        select ARM_CPU_SUSPEND if PM
        select MULTI_IRQ_HANDLER
@@@ -58,11 -57,16 +58,17 @@@ config ARCH_OMAP
        select PL310_ERRATA_727915
        select ARM_ERRATA_720789
        select ARCH_HAS_OPP
 +      select PM_RUNTIME if CPU_IDLE
        select PM_OPP if PM
        select USB_ARCH_HAS_EHCI if USB_SUPPORT
        select ARM_CPU_SUSPEND if PM
  
+ config SOC_OMAP5
+       bool "TI OMAP5"
+       select CPU_V7
+       select ARM_GIC
+       select HAVE_SMP
  comment "OMAP Core Type"
        depends on ARCH_OMAP2
  
@@@ -17,6 -17,7 +17,7 @@@ obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-
  obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
  obj-$(CONFIG_ARCH_OMAP4) += prm44xx.o $(hwmod-common) $(secure-common)
  obj-$(CONFIG_SOC_AM33XX) += irq.o $(hwmod-common)
+ obj-$(CONFIG_SOC_OMAP5)        += prm44xx.o $(hwmod-common) $(secure-common)
  
  ifneq ($(CONFIG_SND_OMAP_SOC_MCBSP),)
  obj-y += mcbsp.o
@@@ -29,8 -30,10 +30,10 @@@ obj-$(CONFIG_SOC_HAS_OMAP2_SDRC)    += sdr
  
  obj-$(CONFIG_SMP)                     += omap-smp.o omap-headsmp.o
  obj-$(CONFIG_HOTPLUG_CPU)             += omap-hotplug.o
- obj-$(CONFIG_ARCH_OMAP4)              += omap4-common.o omap-wakeupgen.o
- obj-$(CONFIG_ARCH_OMAP4)              += sleep44xx.o
+ omap-4-5-common                               =  omap4-common.o omap-wakeupgen.o \
+                                          sleep44xx.o
+ obj-$(CONFIG_ARCH_OMAP4)              += $(omap-4-5-common)
+ obj-$(CONFIG_SOC_OMAP5)                       += $(omap-4-5-common)
  
  plus_sec := $(call as-instr,.arch_extension sec,+sec)
  AFLAGS_omap-headsmp.o                 :=-Wa,-march=armv7-a$(plus_sec)
@@@ -68,7 -71,10 +71,8 @@@ ifeq ($(CONFIG_PM),y
  obj-$(CONFIG_ARCH_OMAP2)              += pm24xx.o
  obj-$(CONFIG_ARCH_OMAP2)              += sleep24xx.o
  obj-$(CONFIG_ARCH_OMAP3)              += pm34xx.o sleep34xx.o
 -obj-$(CONFIG_ARCH_OMAP3)              += cpuidle34xx.o
  obj-$(CONFIG_ARCH_OMAP4)              += pm44xx.o omap-mpuss-lowpower.o
 -obj-$(CONFIG_ARCH_OMAP4)              += cpuidle44xx.o
+ obj-$(CONFIG_SOC_OMAP5)                       += omap-mpuss-lowpower.o
  obj-$(CONFIG_PM_DEBUG)                        += pm-debug.o
  obj-$(CONFIG_OMAP_SMARTREFLEX)          += sr_device.o smartreflex.o
  obj-$(CONFIG_OMAP_SMARTREFLEX_CLASS3) += smartreflex-class3.o
@@@ -82,20 -88,17 +86,22 @@@ endi
  
  endif
  
 +ifeq ($(CONFIG_CPU_IDLE),y)
 +obj-$(CONFIG_ARCH_OMAP3)                += cpuidle34xx.o
 +obj-$(CONFIG_ARCH_OMAP4)                += cpuidle44xx.o
 +endif
 +
  # PRCM
+ omap-prcm-4-5-common                  =  prcm.o cminst44xx.o cm44xx.o \
+                                          prcm_mpu44xx.o prminst44xx.o \
+                                          vc44xx_data.o vp44xx_data.o
  obj-y                                 += prm_common.o
  obj-$(CONFIG_ARCH_OMAP2)              += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o
  obj-$(CONFIG_ARCH_OMAP3)              += prcm.o cm2xxx_3xxx.o prm2xxx_3xxx.o
  obj-$(CONFIG_ARCH_OMAP3)              += vc3xxx_data.o vp3xxx_data.o
- obj-$(CONFIG_ARCH_OMAP4)              += prcm.o cminst44xx.o cm44xx.o
- obj-$(CONFIG_ARCH_OMAP4)              += prcm_mpu44xx.o prminst44xx.o
- obj-$(CONFIG_ARCH_OMAP4)              += vc44xx_data.o vp44xx_data.o prm44xx.o
  obj-$(CONFIG_SOC_AM33XX)              += prcm.o prm33xx.o cm33xx.o
+ obj-$(CONFIG_ARCH_OMAP4)              += $(omap-prcm-4-5-common) prm44xx.o
+ obj-$(CONFIG_SOC_OMAP5)                       += $(omap-prcm-4-5-common)
  
  # OMAP voltage domains
  voltagedomain-common                  := voltage.o vc.o vp.o
@@@ -107,6 -110,7 +113,7 @@@ obj-$(CONFIG_ARCH_OMAP4)           += $(voltaged
  obj-$(CONFIG_ARCH_OMAP4)              += voltagedomains44xx_data.o
  obj-$(CONFIG_SOC_AM33XX)              += $(voltagedomain-common)
  obj-$(CONFIG_SOC_AM33XX)                += voltagedomains33xx_data.o
+ obj-$(CONFIG_SOC_OMAP5)                       += $(voltagedomain-common)
  
  # OMAP powerdomain framework
  powerdomain-common                    += powerdomain.o powerdomain-common.o
@@@ -124,6 -128,8 +131,8 @@@ obj-$(CONFIG_ARCH_OMAP4)           += powerdomai
  obj-$(CONFIG_SOC_AM33XX)              += $(powerdomain-common)
  obj-$(CONFIG_SOC_AM33XX)              += powerdomain33xx.o
  obj-$(CONFIG_SOC_AM33XX)              += powerdomains33xx_data.o
+ obj-$(CONFIG_SOC_OMAP5)                       += $(powerdomain-common)
+ obj-$(CONFIG_SOC_OMAP5)                       += powerdomain44xx.o
  
  # PRCM clockdomain control
  clockdomain-common                    += clockdomain.o
@@@ -142,6 -148,8 +151,8 @@@ obj-$(CONFIG_ARCH_OMAP4)           += clockdomai
  obj-$(CONFIG_SOC_AM33XX)              += $(clockdomain-common)
  obj-$(CONFIG_SOC_AM33XX)              += clockdomain33xx.o
  obj-$(CONFIG_SOC_AM33XX)              += clockdomains33xx_data.o
+ obj-$(CONFIG_SOC_OMAP5)                       += $(clockdomain-common)
+ obj-$(CONFIG_SOC_OMAP5)                       += clockdomain44xx.o
  
  # Clock framework
  obj-$(CONFIG_ARCH_OMAP2)              += $(clock-common) clock2xxx.o
@@@ -160,6 -168,8 +171,8 @@@ obj-$(CONFIG_ARCH_OMAP3)           += clkt_iclk.
  obj-$(CONFIG_ARCH_OMAP4)              += $(clock-common) clock44xx_data.o
  obj-$(CONFIG_ARCH_OMAP4)              += dpll3xxx.o dpll44xx.o
  obj-$(CONFIG_SOC_AM33XX)              += $(clock-common) dpll3xxx.o
+ obj-$(CONFIG_SOC_OMAP5)                       += $(clock-common)
+ obj-$(CONFIG_SOC_OMAP5)                       += dpll3xxx.o dpll44xx.o
  
  # OMAP2 clock rate set data (old "OPP" data)
  obj-$(CONFIG_SOC_OMAP2420)            += opp2420_data.o
@@@ -187,6 -197,7 +200,7 @@@ obj-$(CONFIG_OMAP3_EMU)                    += emu.
  # L3 interconnect
  obj-$(CONFIG_ARCH_OMAP3)              += omap_l3_smx.o
  obj-$(CONFIG_ARCH_OMAP4)              += omap_l3_noc.o
+ obj-$(CONFIG_SOC_OMAP5)                       += omap_l3_noc.o
  
  obj-$(CONFIG_OMAP_MBOX_FWK)           += mailbox_mach.o
  mailbox_mach-objs                     := mailbox.o
@@@ -84,7 -84,7 +84,7 @@@ static int __init omap4_l3_init(void
         * To avoid code running on other OMAPs in
         * multi-omap builds
         */
-       if (!(cpu_is_omap44xx()))
+       if (!cpu_is_omap44xx() && !soc_is_omap54xx())
                return -ENODEV;
  
        for (i = 0; i < L3_MODULES; i++) {
@@@ -772,7 -772,7 +772,7 @@@ static int __init omap_init_wdt(void
        char *oh_name = "wd_timer2";
        char *dev_name = "omap_wdt";
  
 -      if (!cpu_class_is_omap2())
 +      if (!cpu_class_is_omap2() || of_have_populated_dt())
                return 0;
  
        oh = omap_hwmod_lookup(oh_name);
@@@ -21,6 -21,7 +21,7 @@@
  #include <linux/irqdomain.h>
  #include <linux/of.h>
  #include <linux/of_address.h>
+ #include <linux/of_irq.h>
  
  #include <mach/hardware.h>
  
@@@ -258,11 -259,11 +259,11 @@@ asmlinkage void __exception_irq_entry o
        omap_intc_handle_irq(base_addr, regs);
  }
  
- int __init omap_intc_of_init(struct device_node *node,
+ int __init intc_of_init(struct device_node *node,
                             struct device_node *parent)
  {
        struct resource res;
 -      u32 nr_irqs = 96;
 +      u32 nr_irq = 96;
  
        if (WARN_ON(!node))
                return -ENODEV;
                return -EINVAL;
        }
  
 -      if (of_property_read_u32(node, "ti,intc-size", &nr_irqs))
 -              pr_warn("unable to get intc-size, default to %d\n", nr_irqs);
 +      if (of_property_read_u32(node, "ti,intc-size", &nr_irq))
 +              pr_warn("unable to get intc-size, default to %d\n", nr_irq);
  
 -      omap_init_irq(res.start, nr_irqs, of_node_get(node));
 +      omap_init_irq(res.start, nr_irq, of_node_get(node));
  
        return 0;
  }
  
+ static struct of_device_id irq_match[] __initdata = {
+       { .compatible = "ti,omap2-intc", .data = intc_of_init, },
+       { }
+ };
+ void __init omap_intc_of_init(void)
+ {
+       of_irq_init(irq_match);
+ }
  #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_SOC_AM33XX)
  static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)];
  
@@@ -1188,18 -1188,15 +1188,18 @@@ static struct omap_hwmod_addr_space * _
   * _enable_sysc - try to bring a module out of idle via OCP_SYSCONFIG
   * @oh: struct omap_hwmod *
   *
 - * If module is marked as SWSUP_SIDLE, force the module out of slave
 - * idle; otherwise, configure it for smart-idle.  If module is marked
 - * as SWSUP_MSUSPEND, force the module out of master standby;
 - * otherwise, configure it for smart-standby.  No return value.
 + * Ensure that the OCP_SYSCONFIG register for the IP block represented
 + * by @oh is set to indicate to the PRCM that the IP block is active.
 + * Usually this means placing the module into smart-idle mode and
 + * smart-standby, but if there is a bug in the automatic idle handling
 + * for the IP block, it may need to be placed into the force-idle or
 + * no-idle variants of these modes.  No return value.
   */
  static void _enable_sysc(struct omap_hwmod *oh)
  {
        u8 idlemode, sf;
        u32 v;
 +      bool clkdm_act;
  
        if (!oh->class->sysc)
                return;
        sf = oh->class->sysc->sysc_flags;
  
        if (sf & SYSC_HAS_SIDLEMODE) {
 -              idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ?
 -                      HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART;
 +              clkdm_act = ((oh->clkdm &&
 +                            oh->clkdm->flags & CLKDM_ACTIVE_WITH_MPU) ||
 +                           (oh->_clk && oh->_clk->clkdm &&
 +                            oh->_clk->clkdm->flags & CLKDM_ACTIVE_WITH_MPU));
 +              if (clkdm_act && !(oh->class->sysc->idlemodes &
 +                                 (SIDLE_SMART | SIDLE_SMART_WKUP)))
 +                      idlemode = HWMOD_IDLEMODE_FORCE;
 +              else
 +                      idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ?
 +                              HWMOD_IDLEMODE_NO : HWMOD_IDLEMODE_SMART;
                _set_slave_idlemode(oh, idlemode, &v);
        }
  
@@@ -1283,13 -1272,8 +1283,13 @@@ static void _idle_sysc(struct omap_hwmo
        sf = oh->class->sysc->sysc_flags;
  
        if (sf & SYSC_HAS_SIDLEMODE) {
 -              idlemode = (oh->flags & HWMOD_SWSUP_SIDLE) ?
 -                      HWMOD_IDLEMODE_FORCE : HWMOD_IDLEMODE_SMART;
 +              /* XXX What about HWMOD_IDLEMODE_SMART_WKUP? */
 +              if (oh->flags & HWMOD_SWSUP_SIDLE ||
 +                  !(oh->class->sysc->idlemodes &
 +                    (SIDLE_SMART | SIDLE_SMART_WKUP)))
 +                      idlemode = HWMOD_IDLEMODE_FORCE;
 +              else
 +                      idlemode = HWMOD_IDLEMODE_SMART;
                _set_slave_idlemode(oh, idlemode, &v);
        }
  
@@@ -3635,7 -3619,7 +3635,7 @@@ void __init omap_hwmod_init(void
                soc_ops.assert_hardreset = _omap2_assert_hardreset;
                soc_ops.deassert_hardreset = _omap2_deassert_hardreset;
                soc_ops.is_hardreset_asserted = _omap2_is_hardreset_asserted;
-       } else if (cpu_is_omap44xx()) {
+       } else if (cpu_is_omap44xx() || soc_is_omap54xx()) {
                soc_ops.enable_module = _omap4_enable_module;
                soc_ops.disable_module = _omap4_disable_module;
                soc_ops.wait_target_ready = _omap4_wait_target_ready;
  #define OMAP3430_EN_MMC2_SHIFT                                25
  #define OMAP3430_EN_MMC1_MASK                         (1 << 24)
  #define OMAP3430_EN_MMC1_SHIFT                                24
 -#define OMAP3430_EN_UART4_MASK                                (1 << 23)
 -#define OMAP3430_EN_UART4_SHIFT                               23
 +#define AM35XX_EN_UART4_MASK                          (1 << 23)
 +#define AM35XX_EN_UART4_SHIFT                         23
  #define OMAP3430_EN_MCSPI4_MASK                               (1 << 21)
  #define OMAP3430_EN_MCSPI4_SHIFT                      21
  #define OMAP3430_EN_MCSPI3_MASK                               (1 << 20)
@@@ -416,7 -416,7 +416,7 @@@ extern void __iomem *cm_base
  extern void __iomem *cm2_base;
  extern void __iomem *prcm_mpu_base;
  
- #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_ARCH_OMAP5)
+ #if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
  extern void omap_prm_base_init(void);
  extern void omap_cm_base_init(void);
  #else
@@@ -9,7 -9,7 +9,7 @@@
   *
   * Written by Tony Lindgren <tony.lindgren@nokia.com>
   *
-  * Added OMAP4 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com>
+  * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com>
   *
   * 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
@@@ -70,6 -70,7 +70,7 @@@ unsigned int omap_rev(void)
   * cpu_is_omap443x(): True for OMAP4430
   * cpu_is_omap446x(): True for OMAP4460
   * cpu_is_omap447x(): True for OMAP4470
+  * soc_is_omap543x(): True for OMAP5430, OMAP5432
   */
  #define GET_OMAP_CLASS        (omap_rev() & 0xff)
  
@@@ -122,6 -123,7 +123,7 @@@ IS_OMAP_CLASS(24xx, 0x24
  IS_OMAP_CLASS(34xx, 0x34)
  IS_OMAP_CLASS(44xx, 0x44)
  IS_AM_CLASS(35xx, 0x35)
+ IS_OMAP_CLASS(54xx, 0x54)
  IS_AM_CLASS(33xx, 0x33)
  
  IS_TI_CLASS(81xx, 0x81)
@@@ -133,6 -135,7 +135,7 @@@ IS_OMAP_SUBCLASS(363x, 0x363
  IS_OMAP_SUBCLASS(443x, 0x443)
  IS_OMAP_SUBCLASS(446x, 0x446)
  IS_OMAP_SUBCLASS(447x, 0x447)
+ IS_OMAP_SUBCLASS(543x, 0x543)
  
  IS_TI_SUBCLASS(816x, 0x816)
  IS_TI_SUBCLASS(814x, 0x814)
@@@ -156,6 -159,8 +159,8 @@@ IS_AM_SUBCLASS(335x, 0x335
  #define cpu_is_omap443x()             0
  #define cpu_is_omap446x()             0
  #define cpu_is_omap447x()             0
+ #define soc_is_omap54xx()             0
+ #define soc_is_omap543x()             0
  
  #if defined(MULTI_OMAP1)
  # if defined(CONFIG_ARCH_OMAP730)
  /*
   * Macros to detect individual cpu types.
   * These are only rarely needed.
 - * cpu_is_omap330():  True for OMAP330
 - * cpu_is_omap730():  True for OMAP730
 - * cpu_is_omap850():  True for OMAP850
 + * cpu_is_omap310():  True for OMAP310
   * cpu_is_omap1510(): True for OMAP1510
   * cpu_is_omap1610(): True for OMAP1610
   * cpu_is_omap1611(): True for OMAP1611
@@@ -260,6 -267,8 +265,6 @@@ static inline int is_omap ##type (void
  }
  
  IS_OMAP_TYPE(310, 0x0310)
 -IS_OMAP_TYPE(730, 0x0730)
 -IS_OMAP_TYPE(850, 0x0850)
  IS_OMAP_TYPE(1510, 0x1510)
  IS_OMAP_TYPE(1610, 0x1610)
  IS_OMAP_TYPE(1611, 0x1611)
@@@ -273,6 -282,8 +278,6 @@@ IS_OMAP_TYPE(2430, 0x2430
  IS_OMAP_TYPE(3430, 0x3430)
  
  #define cpu_is_omap310()              0
 -#define cpu_is_omap730()              0
 -#define cpu_is_omap850()              0
  #define cpu_is_omap1510()             0
  #define cpu_is_omap1610()             0
  #define cpu_is_omap5912()             0
  #define cpu_is_omap2430()             0
  #define cpu_is_omap3430()             0
  #define cpu_is_omap3630()             0
+ #define soc_is_omap5430()             0
  
  /*
   * Whether we have MULTI_OMAP1 or not, we still need to distinguish
 - * between 730 vs 850, 330 vs. 1510 and 1611B/5912 vs. 1710.
 + * between 310 vs. 1510 and 1611B/5912 vs. 1710.
   */
  
 -#if defined(CONFIG_ARCH_OMAP730)
 -# undef  cpu_is_omap730
 -# define cpu_is_omap730()             is_omap730()
 -#endif
 -
 -#if defined(CONFIG_ARCH_OMAP850)
 -# undef  cpu_is_omap850
 -# define cpu_is_omap850()             is_omap850()
 -#endif
 -
  #if defined(CONFIG_ARCH_OMAP15XX)
  # undef  cpu_is_omap310
  # undef  cpu_is_omap1510
  # define cpu_is_omap447x()            is_omap447x()
  # endif
  
+ # if defined(CONFIG_SOC_OMAP5)
+ # undef soc_is_omap54xx
+ # undef soc_is_omap543x
+ # define soc_is_omap54xx()            is_omap54xx()
+ # define soc_is_omap543x()            is_omap543x()
+ #endif
  /* Macros to detect if we have OMAP1 or OMAP2 */
  #define cpu_class_is_omap1()  (cpu_is_omap7xx() || cpu_is_omap15xx() || \
                                cpu_is_omap16xx())
  #define cpu_class_is_omap2()  (cpu_is_omap24xx() || cpu_is_omap34xx() || \
-                               cpu_is_omap44xx())
+                               cpu_is_omap44xx() || soc_is_omap54xx())
  
  /* Various silicon revisions for omap2 */
  #define OMAP242X_CLASS                0x24200024
  #define OMAP447X_CLASS                0x44700044
  #define OMAP4470_REV_ES1_0    (OMAP447X_CLASS | (0x10 << 8))
  
+ #define OMAP54XX_CLASS                0x54000054
+ #define OMAP5430_REV_ES1_0    (OMAP54XX_CLASS | (0x30 << 16) | (0x10 << 8))
+ #define OMAP5432_REV_ES1_0    (OMAP54XX_CLASS | (0x32 << 16) | (0x10 << 8))
  void omap2xxx_check_revision(void);
  void omap3xxx_check_revision(void);
  void omap4xxx_check_revision(void);
+ void omap5xxx_check_revision(void);
  void omap3xxx_check_features(void);
  void ti81xx_check_features(void);
  void omap4xxx_check_features(void);
diff --combined drivers/clk/Makefile
@@@ -3,6 -3,6 +3,7 @@@ obj-$(CONFIG_CLKDEV_LOOKUP)      += clkdev.
  obj-$(CONFIG_COMMON_CLK)      += clk.o clk-fixed-rate.o clk-gate.o \
                                   clk-mux.o clk-divider.o clk-fixed-factor.o
  # SoCs specific
 +obj-$(CONFIG_ARCH_NOMADIK)    += clk-nomadik.o
  obj-$(CONFIG_ARCH_MXS)                += mxs/
+ obj-$(CONFIG_ARCH_SOCFPGA)    += socfpga/
  obj-$(CONFIG_PLAT_SPEAR)      += spear/
@@@ -16,9 -16,9 +16,12 @@@ config CLKSRC_MMI
  config DW_APB_TIMER
        bool
  
 +config DW_APB_TIMER_OF
 +      bool
 +
+ config ARMADA_370_XP_TIMER
+       bool
  config CLKSRC_DBX500_PRCMU
        bool "Clocksource PRCMU Timer"
        depends on UX500_SOC_DB8500
@@@ -10,5 -10,5 +10,6 @@@ obj-$(CONFIG_EM_TIMER_STI)    += em_sti.
  obj-$(CONFIG_CLKBLD_I8253)    += i8253.o
  obj-$(CONFIG_CLKSRC_MMIO)     += mmio.o
  obj-$(CONFIG_DW_APB_TIMER)    += dw_apb_timer.o
- obj-$(CONFIG_CLKSRC_DBX500_PRCMU)     += clksrc-dbx500-prcmu.o
 +obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o
+ obj-$(CONFIG_CLKSRC_DBX500_PRCMU)     += clksrc-dbx500-prcmu.o
+ obj-$(CONFIG_ARMADA_370_XP_TIMER)     += time-armada-370-xp.o