Merge tag 'v3.4-rc6' into next/cleanup
authorOlof Johansson <olof@lixom.net>
Wed, 9 May 2012 09:31:01 +0000 (02:31 -0700)
committerOlof Johansson <olof@lixom.net>
Wed, 9 May 2012 09:31:01 +0000 (02:31 -0700)
Linux 3.4-rc6

Resolve conflict where an u5500 file had a bugfix go in, but was
deleted in the branch staged for next merge window.

Signed-off-by: Olof Johansson <olof@lixom.net>
242 files changed:
Documentation/arm/00-INDEX
Documentation/arm/IXP2000 [deleted file]
MAINTAINERS
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/compressed/head-xscale.S
arch/arm/common/Makefile
arch/arm/common/uengine.c [deleted file]
arch/arm/configs/at91_dt_defconfig [new file with mode: 0644]
arch/arm/configs/at91rm9200_defconfig
arch/arm/configs/ixp2000_defconfig [deleted file]
arch/arm/configs/ixp23xx_defconfig [deleted file]
arch/arm/include/asm/hardware/uengine.h [deleted file]
arch/arm/mach-at91/Kconfig
arch/arm/mach-at91/Makefile
arch/arm/mach-at91/at91rm9200.c
arch/arm/mach-at91/at91rm9200_devices.c
arch/arm/mach-at91/at91sam9260.c
arch/arm/mach-at91/at91sam9260_devices.c
arch/arm/mach-at91/at91sam9261.c
arch/arm/mach-at91/at91sam9261_devices.c
arch/arm/mach-at91/at91sam9263.c
arch/arm/mach-at91/at91sam9263_devices.c
arch/arm/mach-at91/at91sam9g45.c
arch/arm/mach-at91/at91sam9g45_devices.c
arch/arm/mach-at91/at91sam9rl.c
arch/arm/mach-at91/at91sam9rl_devices.c
arch/arm/mach-at91/board-1arm.c
arch/arm/mach-at91/board-afeb-9260v1.c
arch/arm/mach-at91/board-cam60.c
arch/arm/mach-at91/board-carmeva.c
arch/arm/mach-at91/board-cpu9krea.c
arch/arm/mach-at91/board-cpuat91.c
arch/arm/mach-at91/board-csb337.c
arch/arm/mach-at91/board-csb637.c
arch/arm/mach-at91/board-dt.c
arch/arm/mach-at91/board-eb9200.c
arch/arm/mach-at91/board-ecbat91.c
arch/arm/mach-at91/board-eco920.c
arch/arm/mach-at91/board-flexibity.c
arch/arm/mach-at91/board-foxg20.c
arch/arm/mach-at91/board-gsia18s.c
arch/arm/mach-at91/board-kafa.c
arch/arm/mach-at91/board-kb9202.c
arch/arm/mach-at91/board-neocore926.c
arch/arm/mach-at91/board-pcontrol-g20.c
arch/arm/mach-at91/board-picotux200.c
arch/arm/mach-at91/board-qil-a9260.c
arch/arm/mach-at91/board-rm9200dk.c
arch/arm/mach-at91/board-rm9200ek.c
arch/arm/mach-at91/board-rsi-ews.c
arch/arm/mach-at91/board-sam9-l9260.c
arch/arm/mach-at91/board-sam9260ek.c
arch/arm/mach-at91/board-sam9261ek.c
arch/arm/mach-at91/board-sam9263ek.c
arch/arm/mach-at91/board-sam9g20ek.c
arch/arm/mach-at91/board-sam9m10g45ek.c
arch/arm/mach-at91/board-sam9rlek.c
arch/arm/mach-at91/board-snapper9260.c
arch/arm/mach-at91/board-stamp9g20.c
arch/arm/mach-at91/board-usb-a926x.c
arch/arm/mach-at91/board-yl-9200.c
arch/arm/mach-at91/cpuidle.c
arch/arm/mach-at91/generic.h
arch/arm/mach-at91/include/mach/at91rm9200.h
arch/arm/mach-at91/include/mach/at91sam9260.h
arch/arm/mach-at91/include/mach/at91sam9261.h
arch/arm/mach-at91/include/mach/at91sam9263.h
arch/arm/mach-at91/include/mach/at91sam9g45.h
arch/arm/mach-at91/include/mach/at91sam9rl.h
arch/arm/mach-at91/include/mach/at91sam9x5.h
arch/arm/mach-at91/include/mach/board.h
arch/arm/mach-at91/include/mach/cpu.h
arch/arm/mach-at91/include/mach/hardware.h
arch/arm/mach-at91/include/mach/uncompress.h
arch/arm/mach-at91/pm.c
arch/arm/mach-at91/pm.h
arch/arm/mach-at91/pm_slowclock.S
arch/arm/mach-at91/soc.h
arch/arm/mach-imx/Kconfig
arch/arm/mach-imx/eukrea_mbimx27-baseboard.c
arch/arm/mach-imx/mach-cpuimx35.c
arch/arm/mach-imx/mach-mx1ads.c
arch/arm/mach-imx/mach-mx21ads.c
arch/arm/mach-imx/mach-mx31lite.c
arch/arm/mach-imx/mach-mx31moboard.c
arch/arm/mach-imx/mach-mx35_3ds.c
arch/arm/mach-imx/mach-mx51_efikamx.c
arch/arm/mach-imx/mach-mx51_efikasb.c
arch/arm/mach-imx/mach-pcm037.c
arch/arm/mach-imx/mach-pcm043.c
arch/arm/mach-imx/mach-vpr200.c
arch/arm/mach-ixp2000/Kconfig [deleted file]
arch/arm/mach-ixp2000/Makefile [deleted file]
arch/arm/mach-ixp2000/Makefile.boot [deleted file]
arch/arm/mach-ixp2000/core.c [deleted file]
arch/arm/mach-ixp2000/enp2611.c [deleted file]
arch/arm/mach-ixp2000/include/mach/debug-macro.S [deleted file]
arch/arm/mach-ixp2000/include/mach/enp2611.h [deleted file]
arch/arm/mach-ixp2000/include/mach/entry-macro.S [deleted file]
arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h [deleted file]
arch/arm/mach-ixp2000/include/mach/hardware.h [deleted file]
arch/arm/mach-ixp2000/include/mach/io.h [deleted file]
arch/arm/mach-ixp2000/include/mach/irqs.h [deleted file]
arch/arm/mach-ixp2000/include/mach/ixdp2x00.h [deleted file]
arch/arm/mach-ixp2000/include/mach/ixdp2x01.h [deleted file]
arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h [deleted file]
arch/arm/mach-ixp2000/include/mach/memory.h [deleted file]
arch/arm/mach-ixp2000/include/mach/platform.h [deleted file]
arch/arm/mach-ixp2000/include/mach/timex.h [deleted file]
arch/arm/mach-ixp2000/include/mach/uncompress.h [deleted file]
arch/arm/mach-ixp2000/ixdp2400.c [deleted file]
arch/arm/mach-ixp2000/ixdp2800.c [deleted file]
arch/arm/mach-ixp2000/ixdp2x00.c [deleted file]
arch/arm/mach-ixp2000/ixdp2x01.c [deleted file]
arch/arm/mach-ixp2000/pci.c [deleted file]
arch/arm/mach-ixp23xx/Kconfig [deleted file]
arch/arm/mach-ixp23xx/Makefile [deleted file]
arch/arm/mach-ixp23xx/Makefile.boot [deleted file]
arch/arm/mach-ixp23xx/core.c [deleted file]
arch/arm/mach-ixp23xx/espresso.c [deleted file]
arch/arm/mach-ixp23xx/include/mach/debug-macro.S [deleted file]
arch/arm/mach-ixp23xx/include/mach/entry-macro.S [deleted file]
arch/arm/mach-ixp23xx/include/mach/hardware.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/io.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/irqs.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/ixdp2351.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/ixp23xx.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/memory.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/platform.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/time.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/timex.h [deleted file]
arch/arm/mach-ixp23xx/include/mach/uncompress.h [deleted file]
arch/arm/mach-ixp23xx/ixdp2351.c [deleted file]
arch/arm/mach-ixp23xx/pci.c [deleted file]
arch/arm/mach-ixp23xx/roadrunner.c [deleted file]
arch/arm/mach-omap1/Makefile
arch/arm/mach-omap1/ams-delta-fiq.c
arch/arm/mach-omap1/board-fsample.c
arch/arm/mach-omap1/board-h2.c
arch/arm/mach-omap1/board-h3.c
arch/arm/mach-omap1/board-nand.c [new file with mode: 0644]
arch/arm/mach-omap1/board-palmz71.c
arch/arm/mach-omap1/board-perseus2.c
arch/arm/mach-omap1/clock.c
arch/arm/mach-omap1/common.h
arch/arm/mach-omap1/fpga.c
arch/arm/mach-omap1/id.c
arch/arm/mach-omap1/io.c
arch/arm/mach-omap1/irq.c
arch/arm/mach-omap1/lcd_dma.c
arch/arm/mach-omap1/ocpi.c [new file with mode: 0644]
arch/arm/mach-omap1/pm.c
arch/arm/mach-omap1/reset.c
arch/arm/mach-omap1/timer.c
arch/arm/mach-omap1/usb.c
arch/arm/mach-omap2/am35xx-emac.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom-display.c
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/gpio.c
arch/arm/mach-omap2/gpmc-onenand.c
arch/arm/mach-omap2/gpmc.c
arch/arm/mach-omap2/hwspinlock.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/irq.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/omap-secure.c
arch/arm/mach-omap2/omap-wakeupgen.c
arch/arm/mach-omap2/omap_hwmod.c
arch/arm/mach-omap2/omap_hwmod_2420_data.c
arch/arm/mach-omap2/omap_hwmod_2430_data.c
arch/arm/mach-omap2/omap_hwmod_2xxx_interconnect_data.c
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_hwmod_common_data.h
arch/arm/mach-omap2/pm24xx.c
arch/arm/mach-omap2/pm34xx.c
arch/arm/mach-omap2/prm_common.c
arch/arm/mach-omap2/serial.c
arch/arm/mach-omap2/timer.c
arch/arm/mach-omap2/usb-tusb6010.c
arch/arm/mach-ux500/Kconfig
arch/arm/mach-ux500/Makefile
arch/arm/mach-ux500/board-u5500-sdi.c [deleted file]
arch/arm/mach-ux500/board-u5500.c [deleted file]
arch/arm/mach-ux500/cache-l2x0.c
arch/arm/mach-ux500/clock.c
arch/arm/mach-ux500/cpu-db5500.c [deleted file]
arch/arm/mach-ux500/cpu.c
arch/arm/mach-ux500/devices-db5500.h [deleted file]
arch/arm/mach-ux500/dma-db5500.c [deleted file]
arch/arm/mach-ux500/include/mach/db5500-regs.h [deleted file]
arch/arm/mach-ux500/include/mach/debug-macro.S
arch/arm/mach-ux500/include/mach/devices.h
arch/arm/mach-ux500/include/mach/hardware.h
arch/arm/mach-ux500/include/mach/irqs-board-u5500.h [deleted file]
arch/arm/mach-ux500/include/mach/irqs-db5500.h [deleted file]
arch/arm/mach-ux500/include/mach/irqs.h
arch/arm/mach-ux500/include/mach/mbox-db5500.h [deleted file]
arch/arm/mach-ux500/include/mach/setup.h
arch/arm/mach-ux500/include/mach/uncompress.h
arch/arm/mach-ux500/mbox-db5500.c [deleted file]
arch/arm/mach-ux500/modem-irq-db5500.c [deleted file]
arch/arm/mach-ux500/pins-db5500.h [deleted file]
arch/arm/mach-ux500/platsmp.c
arch/arm/mach-ux500/ste-dma40-db5500.h [deleted file]
arch/arm/mach-ux500/timer.c
arch/arm/plat-mxc/include/mach/iomux-mx51.h
arch/arm/plat-mxc/include/mach/iomux-mx53.h
arch/arm/plat-omap/Makefile
arch/arm/plat-omap/common.c
arch/arm/plat-omap/dma.c
arch/arm/plat-omap/dmtimer.c
arch/arm/plat-omap/include/plat/board.h
arch/arm/plat-omap/include/plat/common.h
arch/arm/plat-omap/include/plat/dma.h
arch/arm/plat-omap/include/plat/dmtimer.h
arch/arm/plat-omap/include/plat/omap_hwmod.h
arch/arm/plat-omap/ocpi.c [deleted file]
arch/arm/plat-omap/omap_device.c
arch/arm/plat-omap/sram.c
arch/arm/plat-omap/usb.c
drivers/char/hw_random/Kconfig
drivers/clocksource/Kconfig
drivers/input/touchscreen/Kconfig
drivers/mfd/Kconfig
drivers/mfd/Makefile
drivers/mfd/ab5500-core.c [deleted file]
drivers/mfd/ab5500-debugfs.c [deleted file]
drivers/mfd/ab5500-debugfs.h [deleted file]
drivers/mfd/db5500-prcmu.c [deleted file]
drivers/rtc/Kconfig
drivers/usb/host/ohci-omap.c
include/linux/mfd/abx500.h
include/linux/mfd/abx500/ab5500.h [deleted file]
include/linux/mfd/db5500-prcmu.h [deleted file]
include/linux/mfd/dbx500-prcmu.h

index 91c24a1e8a9ef14d209bb7c3fa655fef6c81149b..36420e116c908bc7fd6dea9bd3b55081c0addad1 100644 (file)
@@ -4,8 +4,6 @@ Booting
        - requirements for booting
 Interrupts
        - ARM Interrupt subsystem documentation
-IXP2000
-       - Release Notes for Linux on Intel's IXP2000 Network Processor
 msm
        - MSM specific documentation
 Netwinder
diff --git a/Documentation/arm/IXP2000 b/Documentation/arm/IXP2000
deleted file mode 100644 (file)
index 68d21d9..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
--------------------------------------------------------------------------
-Release Notes for Linux on Intel's IXP2000 Network Processor
-
-Maintained by Deepak Saxena <dsaxena@plexity.net>
--------------------------------------------------------------------------
-
-1. Overview
-
-Intel's IXP2000 family of NPUs (IXP2400, IXP2800, IXP2850) is designed
-for high-performance network applications such high-availability
-telecom systems. In addition to an XScale core, it contains up to 8
-"MicroEngines" that run special code, several high-end networking 
-interfaces (UTOPIA, SPI, etc), a PCI host bridge, one serial port,
-flash interface, and some other odds and ends. For more information, see:
-
-http://developer.intel.com
-
-2. Linux Support
-
-Linux currently supports the following features on the IXP2000 NPUs:
-
-- On-chip serial
-- PCI
-- Flash (MTD/JFFS2)
-- I2C through GPIO
-- Timers (watchdog, OS)
-
-That is about all we can support under Linux ATM b/c the core networking
-components of the chip are accessed via Intel's closed source SDK. 
-Please contact Intel directly on issues with using those. There is
-also a mailing list run by some folks at Princeton University that might
-be of help:  https://lists.cs.princeton.edu/mailman/listinfo/ixp2xxx
-
-WHATEVER YOU DO, DO NOT POST EMAIL TO THE LINUX-ARM OR LINUX-ARM-KERNEL
-MAILING LISTS REGARDING THE INTEL SDK.
-
-3. Supported Platforms
-
-- Intel IXDP2400 Reference Platform
-- Intel IXDP2800 Reference Platform
-- Intel IXDP2401 Reference Platform
-- Intel IXDP2801 Reference Platform
-- RadiSys ENP-2611
-
-4. Usage Notes
-
-- The IXP2000 platforms usually have rather complex PCI bus topologies
-  with large memory space requirements. In addition, b/c of the way the
-  Intel SDK is designed, devices are enumerated in a very specific
-  way. B/c of this this, we use "pci=firmware" option in the kernel
-  command line so that we do not re-enumerate the bus.
-
-- IXDP2x01 systems have variable clock tick rates that we cannot determine 
-  via HW registers. The "ixdp2x01_clk=XXX" cmd line options allow you
-  to pass the clock rate to the board port.
-
-5. Thanks
-
-The IXP2000 work has been funded by Intel Corp. and MontaVista Software, Inc.
-
-The following people have contributed patches/comments/etc:
-
-Naeem F. Afzal
-Lennert Buytenhek
-Jeffrey Daly
-
--------------------------------------------------------------------------
-Last Update: 8/09/2004
index 707163365a9308845de03708d43fcbdde8c5452c..101c1b7d8f0033f9b22da1fb57824c10b7660736 100644 (file)
@@ -640,13 +640,6 @@ S: Maintained
 F:     drivers/amba/
 F:     include/linux/amba/bus.h
 
-ARM/ADI ROADRUNNER MACHINE SUPPORT
-M:     Lennert Buytenhek <kernel@wantstofly.org>
-L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:     Maintained
-F:     arch/arm/mach-ixp23xx/
-F:     arch/arm/mach-ixp23xx/include/mach/
-
 ARM/ADS SPHERE MACHINE SUPPORT
 M:     Lennert Buytenhek <kernel@wantstofly.org>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -859,21 +852,11 @@ M:        Dan Williams <dan.j.williams@intel.com>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:     Maintained
 
-ARM/INTEL IXP2000 ARM ARCHITECTURE
-M:     Lennert Buytenhek <kernel@wantstofly.org>
-L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:     Maintained
-
 ARM/INTEL IXDP2850 MACHINE SUPPORT
 M:     Lennert Buytenhek <kernel@wantstofly.org>
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:     Maintained
 
-ARM/INTEL IXP23XX ARM ARCHITECTURE
-M:     Lennert Buytenhek <kernel@wantstofly.org>
-L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
-S:     Maintained
-
 ARM/INTEL IXP4XX ARM ARCHITECTURE
 M:     Imre Kaloz <kaloz@openwrt.org>
 M:     Krzysztof Halasa <khc@pm.waw.pl>
index 36586dba6fa6e0af6260dce3827cfe1495c7f592..cece19202c6b490322d06f60233ef9f4f95311fb 100644 (file)
@@ -340,8 +340,8 @@ config ARCH_AT91
        select IRQ_DOMAIN
        select NEED_MACH_IO_H if PCCARD
        help
-         This enables support for systems based on the Atmel AT91RM9200,
-         AT91SAM9 processors.
+         This enables support for systems based on Atmel
+         AT91RM9200 and AT91SAM9* processors.
 
 config ARCH_BCMRING
        bool "Broadcom BCMRING"
@@ -528,28 +528,6 @@ config ARCH_IOP33X
        help
          Support for Intel's IOP33X (XScale) family of processors.
 
-config ARCH_IXP23XX
-       bool "IXP23XX-based"
-       depends on MMU
-       select CPU_XSC3
-       select PCI
-       select ARCH_USES_GETTIMEOFFSET
-       select NEED_MACH_IO_H
-       select NEED_MACH_MEMORY_H
-       help
-         Support for Intel's IXP23xx (XScale) family of processors.
-
-config ARCH_IXP2000
-       bool "IXP2400/2800-based"
-       depends on MMU
-       select CPU_XSCALE
-       select PCI
-       select ARCH_USES_GETTIMEOFFSET
-       select NEED_MACH_IO_H
-       select NEED_MACH_MEMORY_H
-       help
-         Support for Intel's IXP2400/2800 (XScale) family of processors.
-
 config ARCH_IXP4XX
        bool "IXP4xx-based"
        depends on MMU
@@ -1046,10 +1024,6 @@ source "arch/arm/mach-iop13xx/Kconfig"
 
 source "arch/arm/mach-ixp4xx/Kconfig"
 
-source "arch/arm/mach-ixp2000/Kconfig"
-
-source "arch/arm/mach-ixp23xx/Kconfig"
-
 source "arch/arm/mach-kirkwood/Kconfig"
 
 source "arch/arm/mach-ks8695/Kconfig"
index 047a20780fc15a5b753c3ea80c2178efed29c18c..a0c40a0986cdb1cff2daece4c31eff31c1f3da53 100644 (file)
@@ -149,8 +149,6 @@ machine-$(CONFIG_ARCH_INTEGRATOR)   := integrator
 machine-$(CONFIG_ARCH_IOP13XX)         := iop13xx
 machine-$(CONFIG_ARCH_IOP32X)          := iop32x
 machine-$(CONFIG_ARCH_IOP33X)          := iop33x
-machine-$(CONFIG_ARCH_IXP2000)         := ixp2000
-machine-$(CONFIG_ARCH_IXP23XX)         := ixp23xx
 machine-$(CONFIG_ARCH_IXP4XX)          := ixp4xx
 machine-$(CONFIG_ARCH_KIRKWOOD)                := kirkwood
 machine-$(CONFIG_ARCH_KS8695)          := ks8695
index aa5ee49c5c5ae7c1e37b6ab281a2f09388902f57..6ab0599c02dda7ff89c24ca944b25b56a9f09cf0 100644 (file)
@@ -32,10 +32,3 @@ __XScale_start:
                bic     r0, r0, #0x1000         @ clear Icache
                mcr     p15, 0, r0, c1, c0, 0
 
-#ifdef CONFIG_ARCH_IXP2000
-               mov     r1, #-1
-               mov     r0, #0xd6000000
-               str     r1, [r0, #0x14]
-               str     r1, [r0, #0x18]
-#endif
-
index 215816f1775f5a7a38ed4d5ea5d225aabbad337d..e8a4e58f1b827e26ec0874c2baa53ede8105f70e 100644 (file)
@@ -11,7 +11,5 @@ obj-$(CONFIG_DMABOUNCE)               += dmabounce.o
 obj-$(CONFIG_SHARP_LOCOMO)     += locomo.o
 obj-$(CONFIG_SHARP_PARAM)      += sharpsl_param.o
 obj-$(CONFIG_SHARP_SCOOP)      += scoop.o
-obj-$(CONFIG_ARCH_IXP2000)     += uengine.o
-obj-$(CONFIG_ARCH_IXP23XX)     += uengine.o
 obj-$(CONFIG_PCI_HOST_ITE8152)  += it8152.o
 obj-$(CONFIG_ARM_TIMER_SP804)  += timer-sp.o
diff --git a/arch/arm/common/uengine.c b/arch/arm/common/uengine.c
deleted file mode 100644 (file)
index bef408f..0000000
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * Generic library functions for the microengines found on the Intel
- * IXP2000 series of network processors.
- *
- * Copyright (C) 2004, 2005 Lennert Buytenhek <buytenh@wantstofly.org>
- * Dedicated to Marija Kulikova.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/slab.h>
-#include <linux/module.h>
-#include <linux/string.h>
-#include <linux/io.h>
-#include <mach/hardware.h>
-#include <asm/hardware/uengine.h>
-
-#if defined(CONFIG_ARCH_IXP2000)
-#define IXP_UENGINE_CSR_VIRT_BASE      IXP2000_UENGINE_CSR_VIRT_BASE
-#define IXP_PRODUCT_ID                 IXP2000_PRODUCT_ID
-#define IXP_MISC_CONTROL               IXP2000_MISC_CONTROL
-#define IXP_RESET1                     IXP2000_RESET1
-#else
-#if defined(CONFIG_ARCH_IXP23XX)
-#define IXP_UENGINE_CSR_VIRT_BASE      IXP23XX_UENGINE_CSR_VIRT_BASE
-#define IXP_PRODUCT_ID                 IXP23XX_PRODUCT_ID
-#define IXP_MISC_CONTROL               IXP23XX_MISC_CONTROL
-#define IXP_RESET1                     IXP23XX_RESET1
-#else
-#error unknown platform
-#endif
-#endif
-
-#define USTORE_ADDRESS                 0x000
-#define USTORE_DATA_LOWER              0x004
-#define USTORE_DATA_UPPER              0x008
-#define CTX_ENABLES                    0x018
-#define CC_ENABLE                      0x01c
-#define CSR_CTX_POINTER                        0x020
-#define INDIRECT_CTX_STS               0x040
-#define ACTIVE_CTX_STS                 0x044
-#define INDIRECT_CTX_SIG_EVENTS                0x048
-#define INDIRECT_CTX_WAKEUP_EVENTS     0x050
-#define NN_PUT                         0x080
-#define NN_GET                         0x084
-#define TIMESTAMP_LOW                  0x0c0
-#define TIMESTAMP_HIGH                 0x0c4
-#define T_INDEX_BYTE_INDEX             0x0f4
-#define LOCAL_CSR_STATUS               0x180
-
-u32 ixp2000_uengine_mask;
-
-static void *ixp2000_uengine_csr_area(int uengine)
-{
-       return ((void *)IXP_UENGINE_CSR_VIRT_BASE) + (uengine << 10);
-}
-
-/*
- * LOCAL_CSR_STATUS=1 after a read or write to a microengine's CSR
- * space means that the microengine we tried to access was also trying
- * to access its own CSR space on the same clock cycle as we did.  When
- * this happens, we lose the arbitration process by default, and the
- * read or write we tried to do was not actually performed, so we try
- * again until it succeeds.
- */
-u32 ixp2000_uengine_csr_read(int uengine, int offset)
-{
-       void *uebase;
-       u32 *local_csr_status;
-       u32 *reg;
-       u32 value;
-
-       uebase = ixp2000_uengine_csr_area(uengine);
-
-       local_csr_status = (u32 *)(uebase + LOCAL_CSR_STATUS);
-       reg = (u32 *)(uebase + offset);
-       do {
-               value = ixp2000_reg_read(reg);
-       } while (ixp2000_reg_read(local_csr_status) & 1);
-
-       return value;
-}
-EXPORT_SYMBOL(ixp2000_uengine_csr_read);
-
-void ixp2000_uengine_csr_write(int uengine, int offset, u32 value)
-{
-       void *uebase;
-       u32 *local_csr_status;
-       u32 *reg;
-
-       uebase = ixp2000_uengine_csr_area(uengine);
-
-       local_csr_status = (u32 *)(uebase + LOCAL_CSR_STATUS);
-       reg = (u32 *)(uebase + offset);
-       do {
-               ixp2000_reg_write(reg, value);
-       } while (ixp2000_reg_read(local_csr_status) & 1);
-}
-EXPORT_SYMBOL(ixp2000_uengine_csr_write);
-
-void ixp2000_uengine_reset(u32 uengine_mask)
-{
-       u32 value;
-
-       value = ixp2000_reg_read(IXP_RESET1) & ~ixp2000_uengine_mask;
-
-       uengine_mask &= ixp2000_uengine_mask;
-       ixp2000_reg_wrb(IXP_RESET1, value | uengine_mask);
-       ixp2000_reg_wrb(IXP_RESET1, value);
-}
-EXPORT_SYMBOL(ixp2000_uengine_reset);
-
-void ixp2000_uengine_set_mode(int uengine, u32 mode)
-{
-       /*
-        * CTL_STR_PAR_EN: unconditionally enable parity checking on
-        * control store.
-        */
-       mode |= 0x10000000;
-       ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mode);
-
-       /*
-        * Enable updating of condition codes.
-        */
-       ixp2000_uengine_csr_write(uengine, CC_ENABLE, 0x00002000);
-
-       /*
-        * Initialise other per-microengine registers.
-        */
-       ixp2000_uengine_csr_write(uengine, NN_PUT, 0x00);
-       ixp2000_uengine_csr_write(uengine, NN_GET, 0x00);
-       ixp2000_uengine_csr_write(uengine, T_INDEX_BYTE_INDEX, 0);
-}
-EXPORT_SYMBOL(ixp2000_uengine_set_mode);
-
-static int make_even_parity(u32 x)
-{
-       return hweight32(x) & 1;
-}
-
-static void ustore_write(int uengine, u64 insn)
-{
-       /*
-        * Generate even parity for top and bottom 20 bits.
-        */
-       insn |= (u64)make_even_parity((insn >> 20) & 0x000fffff) << 41;
-       insn |= (u64)make_even_parity(insn & 0x000fffff) << 40;
-
-       /*
-        * Write to microstore.  The second write auto-increments
-        * the USTORE_ADDRESS index register.
-        */
-       ixp2000_uengine_csr_write(uengine, USTORE_DATA_LOWER, (u32)insn);
-       ixp2000_uengine_csr_write(uengine, USTORE_DATA_UPPER, (u32)(insn >> 32));
-}
-
-void ixp2000_uengine_load_microcode(int uengine, u8 *ucode, int insns)
-{
-       int i;
-
-       /*
-        * Start writing to microstore at address 0.
-        */
-       ixp2000_uengine_csr_write(uengine, USTORE_ADDRESS, 0x80000000);
-       for (i = 0; i < insns; i++) {
-               u64 insn;
-
-               insn = (((u64)ucode[0]) << 32) |
-                       (((u64)ucode[1]) << 24) |
-                       (((u64)ucode[2]) << 16) |
-                       (((u64)ucode[3]) << 8) |
-                       ((u64)ucode[4]);
-               ucode += 5;
-
-               ustore_write(uengine, insn);
-       }
-
-       /*
-        * Pad with a few NOPs at the end (to avoid the microengine
-        * aborting as it prefetches beyond the last instruction), unless
-        * we run off the end of the instruction store first, at which
-        * point the address register will wrap back to zero.
-        */
-       for (i = 0; i < 4; i++) {
-               u32 addr;
-
-               addr = ixp2000_uengine_csr_read(uengine, USTORE_ADDRESS);
-               if (addr == 0x80000000)
-                       break;
-               ustore_write(uengine, 0xf0000c0300ULL);
-       }
-
-       /*
-        * End programming.
-        */
-       ixp2000_uengine_csr_write(uengine, USTORE_ADDRESS, 0x00000000);
-}
-EXPORT_SYMBOL(ixp2000_uengine_load_microcode);
-
-void ixp2000_uengine_init_context(int uengine, int context, int pc)
-{
-       /*
-        * Select the right context for indirect access.
-        */
-       ixp2000_uengine_csr_write(uengine, CSR_CTX_POINTER, context);
-
-       /*
-        * Initialise signal masks to immediately go to Ready state.
-        */
-       ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_SIG_EVENTS, 1);
-       ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_WAKEUP_EVENTS, 1);
-
-       /*
-        * Set program counter.
-        */
-       ixp2000_uengine_csr_write(uengine, INDIRECT_CTX_STS, pc);
-}
-EXPORT_SYMBOL(ixp2000_uengine_init_context);
-
-void ixp2000_uengine_start_contexts(int uengine, u8 ctx_mask)
-{
-       u32 mask;
-
-       /*
-        * Enable the specified context to go to Executing state.
-        */
-       mask = ixp2000_uengine_csr_read(uengine, CTX_ENABLES);
-       mask |= ctx_mask << 8;
-       ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mask);
-}
-EXPORT_SYMBOL(ixp2000_uengine_start_contexts);
-
-void ixp2000_uengine_stop_contexts(int uengine, u8 ctx_mask)
-{
-       u32 mask;
-
-       /*
-        * Disable the Ready->Executing transition.  Note that this
-        * does not stop the context until it voluntarily yields.
-        */
-       mask = ixp2000_uengine_csr_read(uengine, CTX_ENABLES);
-       mask &= ~(ctx_mask << 8);
-       ixp2000_uengine_csr_write(uengine, CTX_ENABLES, mask);
-}
-EXPORT_SYMBOL(ixp2000_uengine_stop_contexts);
-
-static int check_ixp_type(struct ixp2000_uengine_code *c)
-{
-       u32 product_id;
-       u32 rev;
-
-       product_id = ixp2000_reg_read(IXP_PRODUCT_ID);
-       if (((product_id >> 16) & 0x1f) != 0)
-               return 0;
-
-       switch ((product_id >> 8) & 0xff) {
-#ifdef CONFIG_ARCH_IXP2000
-       case 0:         /* IXP2800 */
-               if (!(c->cpu_model_bitmask & 4))
-                       return 0;
-               break;
-
-       case 1:         /* IXP2850 */
-               if (!(c->cpu_model_bitmask & 8))
-                       return 0;
-               break;
-
-       case 2:         /* IXP2400 */
-               if (!(c->cpu_model_bitmask & 2))
-                       return 0;
-               break;
-#endif
-
-#ifdef CONFIG_ARCH_IXP23XX
-       case 4:         /* IXP23xx */
-               if (!(c->cpu_model_bitmask & 0x3f0))
-                       return 0;
-               break;
-#endif
-
-       default:
-               return 0;
-       }
-
-       rev = product_id & 0xff;
-       if (rev < c->cpu_min_revision || rev > c->cpu_max_revision)
-               return 0;
-
-       return 1;
-}
-
-static void generate_ucode(u8 *ucode, u32 *gpr_a, u32 *gpr_b)
-{
-       int offset;
-       int i;
-
-       offset = 0;
-
-       for (i = 0; i < 128; i++) {
-               u8 b3;
-               u8 b2;
-               u8 b1;
-               u8 b0;
-
-               b3 = (gpr_a[i] >> 24) & 0xff;
-               b2 = (gpr_a[i] >> 16) & 0xff;
-               b1 = (gpr_a[i] >> 8) & 0xff;
-               b0 = gpr_a[i] & 0xff;
-
-               /* immed[@ai, (b1 << 8) | b0] */
-               /* 11110000 0000VVVV VVVV11VV VVVVVV00 1IIIIIII */
-               ucode[offset++] = 0xf0;
-               ucode[offset++] = (b1 >> 4);
-               ucode[offset++] = (b1 << 4) | 0x0c | (b0 >> 6);
-               ucode[offset++] = (b0 << 2);
-               ucode[offset++] = 0x80 | i;
-
-               /* immed_w1[@ai, (b3 << 8) | b2] */
-               /* 11110100 0100VVVV VVVV11VV VVVVVV00 1IIIIIII */
-               ucode[offset++] = 0xf4;
-               ucode[offset++] = 0x40 | (b3 >> 4);
-               ucode[offset++] = (b3 << 4) | 0x0c | (b2 >> 6);
-               ucode[offset++] = (b2 << 2);
-               ucode[offset++] = 0x80 | i;
-       }
-
-       for (i = 0; i < 128; i++) {
-               u8 b3;
-               u8 b2;
-               u8 b1;
-               u8 b0;
-
-               b3 = (gpr_b[i] >> 24) & 0xff;
-               b2 = (gpr_b[i] >> 16) & 0xff;
-               b1 = (gpr_b[i] >> 8) & 0xff;
-               b0 = gpr_b[i] & 0xff;
-
-               /* immed[@bi, (b1 << 8) | b0] */
-               /* 11110000 0000VVVV VVVV001I IIIIII11 VVVVVVVV */
-               ucode[offset++] = 0xf0;
-               ucode[offset++] = (b1 >> 4);
-               ucode[offset++] = (b1 << 4) | 0x02 | (i >> 6);
-               ucode[offset++] = (i << 2) | 0x03;
-               ucode[offset++] = b0;
-
-               /* immed_w1[@bi, (b3 << 8) | b2] */
-               /* 11110100 0100VVVV VVVV001I IIIIII11 VVVVVVVV */
-               ucode[offset++] = 0xf4;
-               ucode[offset++] = 0x40 | (b3 >> 4);
-               ucode[offset++] = (b3 << 4) | 0x02 | (i >> 6);
-               ucode[offset++] = (i << 2) | 0x03;
-               ucode[offset++] = b2;
-       }
-
-       /* ctx_arb[kill] */
-       ucode[offset++] = 0xe0;
-       ucode[offset++] = 0x00;
-       ucode[offset++] = 0x01;
-       ucode[offset++] = 0x00;
-       ucode[offset++] = 0x00;
-}
-
-static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
-{
-       int per_ctx_regs;
-       u32 *gpr_a;
-       u32 *gpr_b;
-       u8 *ucode;
-       int i;
-
-       gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL);
-       gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL);
-       ucode = kmalloc(513 * 5, GFP_KERNEL);
-       if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) {
-               kfree(ucode);
-               kfree(gpr_b);
-               kfree(gpr_a);
-               return 1;
-       }
-
-       per_ctx_regs = 16;
-       if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS)
-               per_ctx_regs = 32;
-
-       for (i = 0; i < 256; i++) {
-               struct ixp2000_reg_value *r = c->initial_reg_values + i;
-               u32 *bank;
-               int inc;
-               int j;
-
-               if (r->reg == -1)
-                       break;
-
-               bank = (r->reg & 0x400) ? gpr_b : gpr_a;
-               inc = (r->reg & 0x80) ? 128 : per_ctx_regs;
-
-               j = r->reg & 0x7f;
-               while (j < 128) {
-                       bank[j] = r->value;
-                       j += inc;
-               }
-       }
-
-       generate_ucode(ucode, gpr_a, gpr_b);
-       ixp2000_uengine_load_microcode(uengine, ucode, 513);
-       ixp2000_uengine_init_context(uengine, 0, 0);
-       ixp2000_uengine_start_contexts(uengine, 0x01);
-       for (i = 0; i < 100; i++) {
-               u32 status;
-
-               status = ixp2000_uengine_csr_read(uengine, ACTIVE_CTX_STS);
-               if (!(status & 0x80000000))
-                       break;
-       }
-       ixp2000_uengine_stop_contexts(uengine, 0x01);
-
-       kfree(ucode);
-       kfree(gpr_b);
-       kfree(gpr_a);
-
-       return !!(i == 100);
-}
-
-int ixp2000_uengine_load(int uengine, struct ixp2000_uengine_code *c)
-{
-       int ctx;
-
-       if (!check_ixp_type(c))
-               return 1;
-
-       if (!(ixp2000_uengine_mask & (1 << uengine)))
-               return 1;
-
-       ixp2000_uengine_reset(1 << uengine);
-       ixp2000_uengine_set_mode(uengine, c->uengine_parameters);
-       if (set_initial_registers(uengine, c))
-               return 1;
-       ixp2000_uengine_load_microcode(uengine, c->insns, c->num_insns);
-
-       for (ctx = 0; ctx < 8; ctx++)
-               ixp2000_uengine_init_context(uengine, ctx, 0);
-
-       return 0;
-}
-EXPORT_SYMBOL(ixp2000_uengine_load);
-
-
-static int __init ixp2000_uengine_init(void)
-{
-       int uengine;
-       u32 value;
-
-       /*
-        * Determine number of microengines present.
-        */
-       switch ((ixp2000_reg_read(IXP_PRODUCT_ID) >> 8) & 0x1fff) {
-#ifdef CONFIG_ARCH_IXP2000
-       case 0:         /* IXP2800 */
-       case 1:         /* IXP2850 */
-               ixp2000_uengine_mask = 0x00ff00ff;
-               break;
-
-       case 2:         /* IXP2400 */
-               ixp2000_uengine_mask = 0x000f000f;
-               break;
-#endif
-
-#ifdef CONFIG_ARCH_IXP23XX
-       case 4:         /* IXP23xx */
-               ixp2000_uengine_mask = (*IXP23XX_EXP_CFG_FUSE >> 8) & 0xf;
-               break;
-#endif
-
-       default:
-               printk(KERN_INFO "Detected unknown IXP2000 model (%.8x)\n",
-                       (unsigned int)ixp2000_reg_read(IXP_PRODUCT_ID));
-               ixp2000_uengine_mask = 0x00000000;
-               break;
-       }
-
-       /*
-        * Reset microengines.
-        */
-       ixp2000_uengine_reset(ixp2000_uengine_mask);
-
-       /*
-        * Synchronise timestamp counters across all microengines.
-        */
-       value = ixp2000_reg_read(IXP_MISC_CONTROL);
-       ixp2000_reg_wrb(IXP_MISC_CONTROL, value & ~0x80);
-       for (uengine = 0; uengine < 32; uengine++) {
-               if (ixp2000_uengine_mask & (1 << uengine)) {
-                       ixp2000_uengine_csr_write(uengine, TIMESTAMP_LOW, 0);
-                       ixp2000_uengine_csr_write(uengine, TIMESTAMP_HIGH, 0);
-               }
-       }
-       ixp2000_reg_wrb(IXP_MISC_CONTROL, value | 0x80);
-
-       return 0;
-}
-
-subsys_initcall(ixp2000_uengine_init);
diff --git a/arch/arm/configs/at91_dt_defconfig b/arch/arm/configs/at91_dt_defconfig
new file mode 100644 (file)
index 0000000..67bc571
--- /dev/null
@@ -0,0 +1,196 @@
+CONFIG_EXPERIMENTAL=y
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_EMBEDDED=y
+CONFIG_SLAB=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_LBDAF is not set
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+CONFIG_ARCH_AT91=y
+CONFIG_SOC_AT91SAM9260=y
+CONFIG_SOC_AT91SAM9263=y
+CONFIG_SOC_AT91SAM9G45=y
+CONFIG_SOC_AT91SAM9X5=y
+CONFIG_MACH_AT91SAM_DT=y
+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
+CONFIG_AT91_TIMER_HZ=128
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_LEDS=y
+CONFIG_LEDS_CPU=y
+CONFIG_UACCESS_WITH_MEMCPY=y
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
+CONFIG_CMDLINE="mem=128M console=ttyS0,115200 initrd=0x21100000,25165824 root=/dev/ram0 rw"
+CONFIG_KEXEC=y
+CONFIG_AUTO_ZRELADDR=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_PNP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_DIAG is not set
+CONFIG_IPV6=y
+# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET6_XFRM_MODE_BEET is not set
+CONFIG_IPV6_SIT_6RD=y
+# CONFIG_WIRELESS is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+# CONFIG_STANDALONE is not set
+# CONFIG_PREVENT_FIRMWARE_BUILD is not set
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_ATMEL=y
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_GLUEBI=y
+CONFIG_PROC_DEVICETREE=y
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=8192
+CONFIG_ATMEL_PWM=y
+CONFIG_ATMEL_TCLIB=y
+CONFIG_EEPROM_93CX6=m
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_LOWLEVEL is not set
+CONFIG_NETDEVICES=y
+CONFIG_MII=y
+CONFIG_MACB=y
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_VENDOR_CHELSIO is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_DAVICOM_PHY=y
+CONFIG_MICREL_PHY=y
+# CONFIG_WLAN is not set
+CONFIG_INPUT_POLLDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=480
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=272
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_KEYBOARD_ATKBD is not set
+CONFIG_KEYBOARD_GPIO=y
+# CONFIG_INPUT_MOUSE is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+# CONFIG_SERIO is not set
+CONFIG_LEGACY_PTY_COUNT=4
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+CONFIG_HW_RANDOM=y
+CONFIG_I2C=y
+CONFIG_I2C_GPIO=y
+CONFIG_SPI=y
+CONFIG_SPI_ATMEL=y
+# CONFIG_HWMON is not set
+CONFIG_WATCHDOG=y
+CONFIG_AT91SAM9X_WATCHDOG=y
+CONFIG_SSB=m
+CONFIG_FB=y
+CONFIG_FB_MODE_HELPERS=y
+CONFIG_FB_ATMEL=y
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+CONFIG_BACKLIGHT_ATMEL_LCDC=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+CONFIG_FRAMEBUFFER_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_ACORN_8x8=y
+CONFIG_FONT_MINI_4x6=y
+CONFIG_LOGO=y
+# CONFIG_HID_SUPPORT is not set
+CONFIG_USB=y
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_ACM=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_FTDI_SIO=y
+CONFIG_USB_SERIAL_PL2303=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_AT91=m
+CONFIG_USB_ATMEL_USBA=m
+CONFIG_USB_ETH=m
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_CDC_COMPOSITE=m
+CONFIG_USB_G_ACM_MS=m
+CONFIG_USB_G_MULTI=m
+CONFIG_USB_G_MULTI_CDC=y
+CONFIG_MMC=y
+CONFIG_MMC_ATMELMCI=y
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_AT91RM9200=y
+CONFIG_RTC_DRV_AT91SAM9=y
+CONFIG_DMADEVICES=y
+# CONFIG_IOMMU_SUPPORT is not set
+CONFIG_EXT2_FS=y
+CONFIG_FANOTIFY=y
+CONFIG_VFAT_FS=y
+CONFIG_TMPFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_ROOT_NFS=y
+CONFIG_NLS_CODEPAGE_437=y
+CONFIG_NLS_CODEPAGE_850=y
+CONFIG_NLS_ISO8859_1=y
+CONFIG_STRIP_ASM_SYMS=y
+CONFIG_DEBUG_FS=y
+# CONFIG_SCHED_DEBUG is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_FTRACE is not set
+CONFIG_DEBUG_USER=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_USER_API_HASH=m
+CONFIG_CRYPTO_USER_API_SKCIPHER=m
+# CONFIG_CRYPTO_HW is not set
+CONFIG_CRC_CCITT=m
+CONFIG_CRC_ITU_T=m
+CONFIG_CRC7=m
+CONFIG_AVERAGE=y
index bbe4e1a1f5d86f81464e393e2fd2ab228e34542c..d54e2acd3ab16616814feaa1fcdbf9e712be5e9d 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
 # CONFIG_IOSCHED_CFQ is not set
 CONFIG_ARCH_AT91=y
+CONFIG_ARCH_AT91RM9200=y
 CONFIG_MACH_ONEARM=y
 CONFIG_ARCH_AT91RM9200DK=y
 CONFIG_MACH_AT91RM9200EK=y
diff --git a/arch/arm/configs/ixp2000_defconfig b/arch/arm/configs/ixp2000_defconfig
deleted file mode 100644 (file)
index 8405ade..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-CONFIG_EXPERIMENTAL=y
-CONFIG_SYSVIPC=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_EXPERT=y
-# CONFIG_HOTPLUG is not set
-CONFIG_SLAB=y
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_IXP2000=y
-CONFIG_ARCH_ENP2611=y
-CONFIG_ARCH_IXDP2400=y
-CONFIG_ARCH_IXDP2800=y
-CONFIG_ARCH_IXDP2401=y
-CONFIG_ARCH_IXDP2801=y
-# CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO is not set
-# CONFIG_ARM_THUMB is not set
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,57600 root=/dev/nfs ip=bootp mem=64M@0x0"
-CONFIG_FPE_NWFPE=y
-CONFIG_FPE_NWFPE_XP=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_SYN_COOKIES=y
-CONFIG_IPV6=y
-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-CONFIG_MTD=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-CONFIG_MTD_REDBOOT_PARTS_READONLY=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_IXP2000=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_NBD=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_EEPROM_LEGACY=y
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=y
-CONFIG_NET_ETHERNET=y
-CONFIG_NET_PCI=y
-CONFIG_CS89x0=y
-CONFIG_E100=y
-CONFIG_ENP2611_MSF_NET=y
-CONFIG_WAN=y
-CONFIG_HDLC=y
-CONFIG_HDLC_RAW=y
-CONFIG_HDLC_CISCO=y
-CONFIG_HDLC_FR=y
-CONFIG_HDLC_PPP=y
-CONFIG_DLCI=y
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-# CONFIG_VT is not set
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-CONFIG_SERIAL_8250_NR_UARTS=3
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_I2C_IXP2000=y
-CONFIG_WATCHDOG=y
-CONFIG_IXP2000_WATCHDOG=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_INOTIFY=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_ROOT_NFS=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
diff --git a/arch/arm/configs/ixp23xx_defconfig b/arch/arm/configs/ixp23xx_defconfig
deleted file mode 100644 (file)
index 6887176..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-CONFIG_EXPERIMENTAL=y
-CONFIG_SYSVIPC=y
-CONFIG_BSD_PROCESS_ACCT=y
-CONFIG_LOG_BUF_SHIFT=14
-CONFIG_BLK_DEV_INITRD=y
-CONFIG_EXPERT=y
-CONFIG_SLAB=y
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_ARCH_IXP23XX=y
-CONFIG_MACH_ESPRESSO=y
-CONFIG_MACH_IXDP2351=y
-CONFIG_MACH_ROADRUNNER=y
-# CONFIG_ARM_THUMB is not set
-CONFIG_CPU_BIG_ENDIAN=y
-CONFIG_ZBOOT_ROM_TEXT=0x0
-CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE="console=ttyS0,115200 root=/dev/nfs ip=bootp"
-CONFIG_FPE_NWFPE=y
-CONFIG_FPE_NWFPE_XP=y
-CONFIG_NET=y
-CONFIG_PACKET=y
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_DHCP=y
-CONFIG_IP_PNP_BOOTP=y
-CONFIG_SYN_COOKIES=y
-CONFIG_IPV6=y
-# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET6_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET6_XFRM_MODE_BEET is not set
-# CONFIG_IPV6_SIT is not set
-# CONFIG_PREVENT_FIRMWARE_BUILD is not set
-# CONFIG_FW_LOADER is not set
-CONFIG_MTD=y
-CONFIG_MTD_PARTITIONS=y
-CONFIG_MTD_REDBOOT_PARTS=y
-CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED=y
-CONFIG_MTD_REDBOOT_PARTS_READONLY=y
-CONFIG_MTD_CHAR=y
-CONFIG_MTD_BLOCK=y
-CONFIG_MTD_CFI=y
-CONFIG_MTD_CFI_INTELEXT=y
-CONFIG_MTD_COMPLEX_MAPPINGS=y
-CONFIG_MTD_PHYSMAP=y
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_BLK_DEV_NBD=y
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_RAM_SIZE=8192
-CONFIG_EEPROM_LEGACY=y
-CONFIG_IDE=y
-CONFIG_BLK_DEV_SIIMAGE=y
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=y
-CONFIG_NET_ETHERNET=y
-CONFIG_NET_PCI=y
-CONFIG_E100=y
-CONFIG_E1000=y
-CONFIG_WAN=y
-CONFIG_HDLC=y
-CONFIG_HDLC_RAW=y
-CONFIG_HDLC_CISCO=y
-CONFIG_HDLC_FR=y
-CONFIG_HDLC_PPP=y
-CONFIG_DLCI=y
-# CONFIG_INPUT_KEYBOARD is not set
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_SERIO is not set
-# CONFIG_VT is not set
-CONFIG_SERIAL_8250=y
-CONFIG_SERIAL_8250_CONSOLE=y
-# CONFIG_HW_RANDOM is not set
-CONFIG_I2C=y
-CONFIG_I2C_CHARDEV=y
-CONFIG_WATCHDOG=y
-# CONFIG_USB_HID is not set
-CONFIG_USB=y
-CONFIG_USB_MON=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_OHCI_HCD=y
-CONFIG_USB_UHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_EXT2_FS=y
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_INOTIFY=y
-CONFIG_MSDOS_FS=y
-CONFIG_TMPFS=y
-CONFIG_JFFS2_FS=y
-CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
-CONFIG_ROOT_NFS=y
-CONFIG_PARTITION_ADVANCED=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
-CONFIG_DEBUG_MUTEXES=y
-CONFIG_DEBUG_USER=y
-CONFIG_DEBUG_ERRORS=y
-CONFIG_DEBUG_LL=y
diff --git a/arch/arm/include/asm/hardware/uengine.h b/arch/arm/include/asm/hardware/uengine.h
deleted file mode 100644 (file)
index b442d65..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Generic library functions for the microengines found on the Intel
- * IXP2000 series of network processors.
- *
- * Copyright (C) 2004, 2005 Lennert Buytenhek <buytenh@wantstofly.org>
- * Dedicated to Marija Kulikova.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of the
- * License, or (at your option) any later version.
- */
-
-#ifndef __IXP2000_UENGINE_H
-#define __IXP2000_UENGINE_H
-
-extern u32 ixp2000_uengine_mask;
-
-struct ixp2000_uengine_code
-{
-       u32     cpu_model_bitmask;
-       u8      cpu_min_revision;
-       u8      cpu_max_revision;
-
-       u32     uengine_parameters;
-
-       struct ixp2000_reg_value {
-               int     reg;
-               u32     value;
-       } *initial_reg_values;
-
-       int     num_insns;
-       u8      *insns;
-};
-
-u32 ixp2000_uengine_csr_read(int uengine, int offset);
-void ixp2000_uengine_csr_write(int uengine, int offset, u32 value);
-void ixp2000_uengine_reset(u32 uengine_mask);
-void ixp2000_uengine_set_mode(int uengine, u32 mode);
-void ixp2000_uengine_load_microcode(int uengine, u8 *ucode, int insns);
-void ixp2000_uengine_init_context(int uengine, int context, int pc);
-void ixp2000_uengine_start_contexts(int uengine, u8 ctx_mask);
-void ixp2000_uengine_stop_contexts(int uengine, u8 ctx_mask);
-int ixp2000_uengine_load(int uengine, struct ixp2000_uengine_code *c);
-
-#define IXP2000_UENGINE_8_CONTEXTS             0x00000000
-#define IXP2000_UENGINE_4_CONTEXTS             0x80000000
-#define IXP2000_UENGINE_PRN_UPDATE_EVERY       0x40000000
-#define IXP2000_UENGINE_PRN_UPDATE_ON_ACCESS   0x00000000
-#define IXP2000_UENGINE_NN_FROM_SELF           0x00100000
-#define IXP2000_UENGINE_NN_FROM_PREVIOUS       0x00000000
-#define IXP2000_UENGINE_ASSERT_EMPTY_AT_3      0x000c0000
-#define IXP2000_UENGINE_ASSERT_EMPTY_AT_2      0x00080000
-#define IXP2000_UENGINE_ASSERT_EMPTY_AT_1      0x00040000
-#define IXP2000_UENGINE_ASSERT_EMPTY_AT_0      0x00000000
-#define IXP2000_UENGINE_LM_ADDR1_GLOBAL                0x00020000
-#define IXP2000_UENGINE_LM_ADDR1_PER_CONTEXT   0x00000000
-#define IXP2000_UENGINE_LM_ADDR0_GLOBAL                0x00010000
-#define IXP2000_UENGINE_LM_ADDR0_PER_CONTEXT   0x00000000
-
-
-#endif
index 45db05d8d94c017fbd57586c80d306fff495affe..98a42f3472d52670cef9850d50f88b51c173ee95 100644 (file)
@@ -9,15 +9,6 @@ config HAVE_AT91_DBGU0
 config HAVE_AT91_DBGU1
        bool
 
-config HAVE_AT91_USART3
-       bool
-
-config HAVE_AT91_USART4
-       bool
-
-config HAVE_AT91_USART5
-       bool
-
 config AT91_SAM9_ALT_RESET
        bool
        default !ARCH_AT91X40
@@ -26,87 +17,121 @@ config AT91_SAM9G45_RESET
        bool
        default !ARCH_AT91X40
 
+config SOC_AT91SAM9
+       bool
+       select GENERIC_CLOCKEVENTS
+       select CPU_ARM926T
+
 menu "Atmel AT91 System-on-Chip"
 
-choice
-       prompt "Atmel AT91 Processor"
+comment "Atmel AT91 Processor"
 
-config ARCH_AT91RM9200
+config SOC_AT91SAM9
+       bool
+       select CPU_ARM926T
+       select AT91_SAM9_TIME
+       select AT91_SAM9_SMC
+
+config SOC_AT91RM9200
        bool "AT91RM9200"
        select CPU_ARM920T
        select GENERIC_CLOCKEVENTS
        select HAVE_AT91_DBGU0
-       select HAVE_AT91_USART3
 
-config ARCH_AT91SAM9260
-       bool "AT91SAM9260 or AT91SAM9XE"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
+config SOC_AT91SAM9260
+       bool "AT91SAM9260, AT91SAM9XE or AT91SAM9G20"
+       select SOC_AT91SAM9
        select HAVE_AT91_DBGU0
-       select HAVE_AT91_USART3
-       select HAVE_AT91_USART4
-       select HAVE_AT91_USART5
        select HAVE_NET_MACB
+       help
+         Select this if you are using one of Atmel's AT91SAM9260, AT91SAM9XE
+         or AT91SAM9G20 SoC.
 
-config ARCH_AT91SAM9261
-       bool "AT91SAM9261"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
+config SOC_AT91SAM9261
+       bool "AT91SAM9261 or AT91SAM9G10"
+       select SOC_AT91SAM9
+       select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
+       help
+         Select this if you are using one of Atmel's AT91SAM9261 or AT91SAM9G10 SoC.
+
+config SOC_AT91SAM9263
+       bool "AT91SAM9263"
+       select SOC_AT91SAM9
+       select HAVE_AT91_DBGU1
+       select HAVE_FB_ATMEL
+       select HAVE_NET_MACB
+
+config SOC_AT91SAM9RL
+       bool "AT91SAM9RL"
+       select SOC_AT91SAM9
        select HAVE_AT91_DBGU0
+       select HAVE_FB_ATMEL
 
-config ARCH_AT91SAM9G10
-       bool "AT91SAM9G10"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
+config SOC_AT91SAM9G45
+       bool "AT91SAM9G45 or AT91SAM9M10 families"
+       select SOC_AT91SAM9
+       select HAVE_AT91_DBGU1
+       select HAVE_FB_ATMEL
+       select HAVE_NET_MACB
+       help
+         Select this if you are using one of Atmel's AT91SAM9G45 family SoC.
+         This support covers AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
+
+config SOC_AT91SAM9X5
+       bool "AT91SAM9x5 family"
+       select SOC_AT91SAM9
        select HAVE_AT91_DBGU0
        select HAVE_FB_ATMEL
+       select HAVE_NET_MACB
+       help
+         Select this if you are using one of Atmel's AT91SAM9x5 family SoC.
+         This means that your SAM9 name finishes with a '5' (except if it is
+         AT91SAM9G45!).
+         This support covers AT91SAM9G15, AT91SAM9G25, AT91SAM9X25, AT91SAM9G35
+         and AT91SAM9X35.
+
+choice
+       prompt "Atmel AT91 Processor Devices for non DT boards"
+
+config ARCH_AT91_NONE
+       bool "None"
+
+config ARCH_AT91RM9200
+       bool "AT91RM9200"
+       select SOC_AT91RM9200
+
+config ARCH_AT91SAM9260
+       bool "AT91SAM9260 or AT91SAM9XE"
+       select SOC_AT91SAM9260
+
+config ARCH_AT91SAM9261
+       bool "AT91SAM9261"
+       select SOC_AT91SAM9261
+
+config ARCH_AT91SAM9G10
+       bool "AT91SAM9G10"
+       select SOC_AT91SAM9261
 
 config ARCH_AT91SAM9263
        bool "AT91SAM9263"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
-       select HAVE_FB_ATMEL
-       select HAVE_NET_MACB
-       select HAVE_AT91_DBGU1
+       select SOC_AT91SAM9263
 
 config ARCH_AT91SAM9RL
        bool "AT91SAM9RL"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
-       select HAVE_AT91_USART3
-       select HAVE_FB_ATMEL
-       select HAVE_AT91_DBGU0
+       select SOC_AT91SAM9RL
 
 config ARCH_AT91SAM9G20
        bool "AT91SAM9G20"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
-       select HAVE_AT91_DBGU0
-       select HAVE_AT91_USART3
-       select HAVE_AT91_USART4
-       select HAVE_AT91_USART5
-       select HAVE_NET_MACB
+       select SOC_AT91SAM9260
 
 config ARCH_AT91SAM9G45
        bool "AT91SAM9G45"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
-       select HAVE_AT91_USART3
-       select HAVE_FB_ATMEL
-       select HAVE_NET_MACB
-       select HAVE_AT91_DBGU1
-
-config ARCH_AT91SAM9X5
-       bool "AT91SAM9x5 family"
-       select CPU_ARM926T
-       select GENERIC_CLOCKEVENTS
-       select HAVE_FB_ATMEL
-       select HAVE_NET_MACB
-       select HAVE_AT91_DBGU0
+       select SOC_AT91SAM9G45
 
 config ARCH_AT91X40
        bool "AT91x40"
+       depends on !MMU
        select ARCH_USES_GETTIMEOFFSET
 
 endchoice
@@ -364,6 +389,7 @@ config MACH_AT91SAM9G20EK_2MMC
          Select this if you are using an Atmel AT91SAM9G20-EK Evaluation Kit
          with 2 SD/MMC Slots. This is the case for AT91SAM9G20-EK rev. C and
          onwards.
+         <http://www.atmel.com/tools/SAM9G20-EK.aspx>
 
 config MACH_CPU9G20
        bool "Eukrea CPU9G20 board"
@@ -433,9 +459,10 @@ comment "AT91SAM9G45 Board Type"
 config MACH_AT91SAM9M10G45EK
        bool "Atmel AT91SAM9M10G45-EK Evaluation Kits"
        help
-         Select this if you are using Atmel's AT91SAM9G45-EKES Evaluation Kit.
-         "ES" at the end of the name means that this board is an
-         Engineering Sample.
+         Select this if you are using Atmel's AT91SAM9M10G45-EK Evaluation Kit.
+         Those boards can be populated with any SoC of AT91SAM9G45 or AT91SAM9M10
+         families: AT91SAM9G45, AT91SAM9G46, AT91SAM9M10 and AT91SAM9M11.
+         <http://www.atmel.com/tools/SAM9M10-G45-EK.aspx>
 
 endif
 
@@ -515,41 +542,6 @@ config AT91_TIMER_HZ
          system clock (of at least several MHz), rounding is less of a
          problem so it can be safer to use a decimal values like 100.
 
-choice
-       prompt "Select a UART for early kernel messages"
-
-config AT91_EARLY_DBGU0
-       bool "DBGU on rm9200, 9260/9g20, 9261/9g10 and 9rl"
-       depends on HAVE_AT91_DBGU0
-
-config AT91_EARLY_DBGU1
-       bool "DBGU on 9263 and 9g45"
-       depends on HAVE_AT91_DBGU1
-
-config AT91_EARLY_USART0
-       bool "USART0"
-
-config AT91_EARLY_USART1
-       bool "USART1"
-
-config AT91_EARLY_USART2
-       bool "USART2"
-       depends on ! ARCH_AT91X40
-
-config AT91_EARLY_USART3
-       bool "USART3"
-       depends on HAVE_AT91_USART3
-
-config AT91_EARLY_USART4
-       bool "USART4"
-       depends on HAVE_AT91_USART4
-
-config AT91_EARLY_USART5
-       bool "USART5"
-       depends on HAVE_AT91_USART5
-
-endchoice
-
 endmenu
 
 endif
index 8512e53bed9356afb310849b7f976f895c6076d1..79d0f60af0b262652734519884783726fdb4d44f 100644 (file)
@@ -10,17 +10,25 @@ obj-                :=
 obj-$(CONFIG_AT91_PMC_UNIT)    += clock.o
 obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
 obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
+obj-$(CONFIG_SOC_AT91SAM9)     += at91sam926x_time.o sam9_smc.o
 
 # CPU-specific support
-obj-$(CONFIG_ARCH_AT91RM9200)  += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
-obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9RL)  += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
-obj-$(CONFIG_ARCH_AT91SAM9X5)  += at91sam9x5.o at91sam926x_time.o sam9_smc.o
+obj-$(CONFIG_SOC_AT91RM9200)   += at91rm9200.o at91rm9200_time.o
+obj-$(CONFIG_SOC_AT91SAM9260)  += at91sam9260.o
+obj-$(CONFIG_SOC_AT91SAM9261)  += at91sam9261.o
+obj-$(CONFIG_SOC_AT91SAM9263)  += at91sam9263.o
+obj-$(CONFIG_SOC_AT91SAM9G45)  += at91sam9g45.o
+obj-$(CONFIG_SOC_AT91SAM9X5)   += at91sam9x5.o
+obj-$(CONFIG_SOC_AT91SAM9RL)   += at91sam9rl.o
+
+obj-$(CONFIG_ARCH_AT91RM9200)  += at91rm9200_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9RL)  += at91sam9rl_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260_devices.o
+obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45_devices.o
 obj-$(CONFIG_ARCH_AT91X40)     += at91x40.o at91x40_time.o
 
 # AT91RM9200 board-specific support
index 364c19357e608375d58eb9835223aa60c7b9e916..d50da1a9d0bff8b7db40c376f7a31e7a3a4891df 100644 (file)
@@ -258,18 +258,6 @@ static void __init at91rm9200_register_clocks(void)
        clk_register(&pck3);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91rm9200_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index 05774e5b1cbaf32488a142b4060a1adc452c8177..99affb5d0563432a9b2da1c2861abdc099d64f00 100644 (file)
@@ -1152,14 +1152,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91rm9200_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1168,13 +1160,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index 46f7742332988d040dbaf1d49317e4dffcea174f..a27bbec50ca3056fc570604420e934e08dfe2f40 100644 (file)
@@ -268,18 +268,6 @@ static void __init at91sam9260_register_clocks(void)
        clk_register(&pck1);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91sam9260_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index 5652dde4bbe291fd5723481ab9a978eb66bd5ec9..ad00fe91d37d63698589b4cdb6e0e7c5fba6e4ea 100644 (file)
@@ -1229,14 +1229,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91sam9260_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1245,13 +1237,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index 7de81e6222f1fdae6ed8a3618e555d2d56b5d699..c77d503d09d1c2546a8e73a5ddccb246acb4ddcb 100644 (file)
@@ -239,18 +239,6 @@ static void __init at91sam9261_register_clocks(void)
        clk_register(&hck1);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91sam9261_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index 4db961a93085566e80973e241f910223484ccd96..9295e90b08ff523fa93817ca9121eb15d9d5a2bb 100644 (file)
@@ -1051,14 +1051,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91sam9261_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1067,13 +1059,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index ef301be665758763a011d3c4aed827da5dbb6fc2..7fae36502fbbfa336b05c0420da5dce6b3249c8f 100644 (file)
@@ -255,18 +255,6 @@ static void __init at91sam9263_register_clocks(void)
        clk_register(&pck3);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91sam9263_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index fe99206de8802b549dc099b65f3daa62a53f5768..dfe5bc006d5e27e910001cb1cedcd68550e8cffb 100644 (file)
@@ -1461,14 +1461,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91sam9263_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1477,13 +1469,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index d222f8333dab8799920b0ce025ff4e334537eb5c..f2054495a655b3285dd90a77c5dfeb6cf2abb629 100644 (file)
@@ -288,18 +288,6 @@ static void __init at91sam9g45_register_clocks(void)
        clk_register(&pck1);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91sam9g45_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index 6b008aee1dffad648874e6318e397d7d640e2d31..db2f88c246ff8f7e9cbe0a37f841f32a064ffdf5 100644 (file)
@@ -1741,14 +1741,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91sam9g45_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1757,13 +1749,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index d9f2774f385eb68fffc337050602592d7bcd07e9..e420085a57effa34a373b3aeeaca91185f248109 100644 (file)
@@ -232,18 +232,6 @@ static void __init at91sam9rl_register_clocks(void)
        clk_register(&pck1);
 }
 
-static struct clk_lookup console_clock_lookup;
-
-void __init at91sam9rl_set_console_clock(int id)
-{
-       if (id >= ARRAY_SIZE(usart_clocks_lookups))
-               return;
-
-       console_clock_lookup.con_id = "usart";
-       console_clock_lookup.clk = usart_clocks_lookups[id].clk;
-       clkdev_add(&console_clock_lookup);
-}
-
 /* --------------------------------------------------------------------
  *  GPIO
  * -------------------------------------------------------------------- */
index fe4ae22e8561bc9084b9d64870d063cfca88ed9a..9c0b1481a9a70c5d3ac6ebfc199c5d2e77ba1f46 100644 (file)
@@ -1192,14 +1192,6 @@ void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins)
                at91_uarts[portnr] = pdev;
 }
 
-void __init at91_set_serial_console(unsigned portnr)
-{
-       if (portnr < ATMEL_MAX_UART) {
-               atmel_default_console_device = at91_uarts[portnr];
-               at91sam9rl_set_console_clock(at91_uarts[portnr]->id);
-       }
-}
-
 void __init at91_add_device_serial(void)
 {
        int i;
@@ -1208,13 +1200,9 @@ void __init at91_add_device_serial(void)
                if (at91_uarts[i])
                        platform_device_register(at91_uarts[i]);
        }
-
-       if (!atmel_default_console_device)
-               printk(KERN_INFO "AT91: No default serial console defined.\n");
 }
 #else
 void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins) {}
-void __init at91_set_serial_console(unsigned portnr) {}
 void __init at91_add_device_serial(void) {}
 #endif
 
index 2628384aaae1fd034219a258ebfe16892b553955..271f994314a469807f2d328f4c75418534d699dc 100644 (file)
@@ -47,20 +47,6 @@ static void __init onearm_init_early(void)
 
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata onearm_eth_data = {
@@ -82,6 +68,16 @@ static struct at91_udc_data __initdata onearm_udc_data = {
 static void __init onearm_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
+
+       /* USART1 on ttyS2 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&onearm_eth_data);
index 161efbaa10290fe31bb10e7f88692f6842fad231..b7d8aa7b81e64baa60d6ea772a74a52c471d5228 100644 (file)
@@ -52,22 +52,6 @@ static void __init afeb9260_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1,
-                            ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR
-                          | ATMEL_UART_DCD | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2,
-                       ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -183,6 +167,18 @@ static struct at91_cf_data afeb9260_cf_data = {
 static void __init afeb9260_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1,
+                            ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR
+                          | ATMEL_UART_DCD | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2,
+                       ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&afeb9260_usbh_data);
index c6d44ee0c77e7ad053267b4114ed04b1d73d8dfd..29d3ef0a50fb9901ed71d6c27f7dd6de819950e8 100644 (file)
@@ -49,12 +49,6 @@ static void __init cam60_init_early(void)
 {
        /* Initialize processor: 10 MHz crystal */
        at91_initialize(10000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -175,6 +169,8 @@ static void __init cam60_add_device_nand(void)
 static void __init cam60_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* SPI */
        at91_add_device_spi(cam60_spi_devices, ARRAY_SIZE(cam60_spi_devices));
index 59d9cf997537c6b62324d7f34dff1eb7ed45685f..44328a6d46095027b75f903a11b7ec611c9043f5 100644 (file)
@@ -44,17 +44,6 @@ static void __init carmeva_init_early(void)
 {
        /* Initialize processor: 20.000 MHz crystal */
        at91_initialize(20000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata carmeva_eth_data = {
@@ -139,6 +128,13 @@ static struct gpio_led carmeva_leds[] = {
 static void __init carmeva_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&carmeva_eth_data);
index 5f3680e7c883e3a4e50b60ec22a5e283ecd78ed2..69951ec7dbf310dd5a4d800c90d9ae5dcc6adcff 100644 (file)
@@ -52,34 +52,6 @@ static void __init cpu9krea_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DGBU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS |
-               ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
-               ATMEL_UART_DCD | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS |
-               ATMEL_UART_RTS);
-
-       /* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS |
-               ATMEL_UART_RTS);
-
-       /* USART3 on ttyS4. (Rx, Tx) */
-       at91_register_uart(AT91SAM9260_ID_US3, 4, 0);
-
-       /* USART4 on ttyS5. (Rx, Tx) */
-       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
-
-       /* USART5 on ttyS6. (Rx, Tx) */
-       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -352,6 +324,30 @@ static void __init cpu9krea_board_init(void)
        /* NOR */
        cpu9krea_add_device_nor();
        /* Serial */
+       /* DGBU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS |
+               ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
+               ATMEL_UART_DCD | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS |
+               ATMEL_UART_RTS);
+
+       /* USART2 on ttyS3. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS |
+               ATMEL_UART_RTS);
+
+       /* USART3 on ttyS4. (Rx, Tx) */
+       at91_register_uart(AT91SAM9260_ID_US3, 4, 0);
+
+       /* USART4 on ttyS5. (Rx, Tx) */
+       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
+
+       /* USART5 on ttyS6. (Rx, Tx) */
+       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&cpu9krea_usbh_data);
index e094cc81fe251d099fc31ceef5af8d9d2bfe1dd0..895cf2dba612fe3a6c1ec0212ce7d1c45ff127cb 100644 (file)
@@ -59,28 +59,6 @@ static void __init cpuat91_init_early(void)
 
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS |
-               ATMEL_UART_RTS);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS |
-               ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
-               ATMEL_UART_DCD | ATMEL_UART_RI);
-
-       /* USART2 on ttyS3 (Rx, Tx) */
-       at91_register_uart(AT91RM9200_ID_US2, 3, 0);
-
-       /* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS |
-               ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata cpuat91_eth_data = {
@@ -161,6 +139,24 @@ static struct platform_device *platform_devices[] __initdata = {
 static void __init cpuat91_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS |
+               ATMEL_UART_RTS);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS |
+               ATMEL_UART_RTS | ATMEL_UART_DTR | ATMEL_UART_DSR |
+               ATMEL_UART_DCD | ATMEL_UART_RI);
+
+       /* USART2 on ttyS3 (Rx, Tx) */
+       at91_register_uart(AT91RM9200_ID_US2, 3, 0);
+
+       /* USART3 on ttyS4 (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_CTS |
+               ATMEL_UART_RTS);
        at91_add_device_serial();
        /* LEDs. */
        at91_gpio_leds(cpuat91_leds, ARRAY_SIZE(cpuat91_leds));
index 1a1547b1ce4e61182e2cb2e069dd803ef43e9e19..cd813361cd26be2d61a49de0f536f3be0ac1059d 100644 (file)
@@ -47,15 +47,6 @@ static void __init csb337_init_early(void)
 {
        /* Initialize processor: 3.6864 MHz crystal */
        at91_initialize(3686400);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
-
-       /* DBGU on ttyS0 */
-       at91_register_uart(0, 0, 0);
-
-       /* make console=ttyS0 the default */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata csb337_eth_data = {
@@ -228,7 +219,11 @@ static struct gpio_led csb_leds[] = {
 
 static void __init csb337_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
        /* Serial */
+       /* DBGU on ttyS0 */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&csb337_eth_data);
index f650bf39455ddc26070bdcfe96663da074feec73..7c8b05a57d7f5f9460e436f338b23668fe7ec577 100644 (file)
@@ -44,12 +44,6 @@ static void __init csb637_init_early(void)
 {
        /* Initialize processor: 3.6864 MHz crystal */
        at91_initialize(3686400);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* make console=ttyS0 (ie, DBGU) the default */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata csb637_eth_data = {
@@ -118,6 +112,8 @@ static void __init csb637_board_init(void)
        /* LED(s) */
        at91_gpio_leds(csb_leds, ARRAY_SIZE(csb_leds));
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&csb637_eth_data);
index c18d4d3078012d584ec75aa927bcbebe8a1b4a23..a1fce05aa7a5f7b64e8889f348934d3f75e5ee8a 100644 (file)
@@ -1,10 +1,6 @@
 /*
  *  Setup code for AT91SAM Evaluation Kits with Device Tree support
  *
- *  Covers: * AT91SAM9G45-EKES  board
- *          * AT91SAM9M10-EKES  board
- *          * AT91SAM9M10G45-EK board
- *
  *  Copyright (C) 2011 Atmel,
  *                2011 Nicolas Ferre <nicolas.ferre@atmel.com>
  *
@@ -49,9 +45,7 @@ static void __init at91_dt_device_init(void)
 }
 
 static const char *at91_dt_board_compat[] __initdata = {
-       "atmel,at91sam9m10g45ek",
-       "atmel,at91sam9x5ek",
-       "calao,usb-a9g20",
+       "atmel,at91sam9",
        NULL
 };
 
index d302ca3eeb645f73340f4dc157a77c163a62e044..bd10172979891c1aab6b139496b068500eedc30b 100644 (file)
@@ -44,20 +44,6 @@ static void __init eb9200_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                       | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                       | ATMEL_UART_RI);
-
-       /* USART2 on ttyS2. (Rx, Tx) - IRDA */
-       at91_register_uart(AT91RM9200_ID_US2, 2, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata eb9200_eth_data = {
@@ -101,6 +87,16 @@ static struct i2c_board_info __initdata eb9200_i2c_devices[] = {
 static void __init eb9200_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                       | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                       | ATMEL_UART_RI);
+
+       /* USART2 on ttyS2. (Rx, Tx) - IRDA */
+       at91_register_uart(AT91RM9200_ID_US2, 2, 0);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&eb9200_eth_data);
index 69966ce4d776d6f5a62cb1de7d91affb456717bc..89cc3726a9ce1f3b57f5c589b5d495d1a6c5d4db 100644 (file)
@@ -50,18 +50,6 @@ static void __init ecb_at91init_early(void)
 
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx & Tx only) */
-       at91_register_uart(AT91RM9200_ID_US0, 1, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata ecb_at91eth_data = {
@@ -151,7 +139,15 @@ static struct spi_board_info __initdata ecb_at91spi_devices[] = {
 
 static void __init ecb_at91board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PC7, AT91_PIN_PC7);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx & Tx only) */
+       at91_register_uart(AT91RM9200_ID_US0, 1, 0);
        at91_add_device_serial();
 
        /* Ethernet */
index f23aabef8551d69fc395dcf88b5eabdf152fe2f8..558546cf63f492bf46d5b290b389e019f428244a 100644 (file)
@@ -37,15 +37,6 @@ static void __init eco920_init_early(void)
        at91rm9200_set_type(ARCH_REVISON_9200_PQFP);
 
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
-
-       /* DBGU on ttyS0. (Rx & Tx only */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata eco920_eth_data = {
@@ -103,6 +94,10 @@ static struct spi_board_info eco920_spi_devices[] = {
 
 static void __init eco920_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PB0, AT91_PIN_PB1);
+       /* DBGU on ttyS0. (Rx & Tx only */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        at91_add_device_eth(&eco920_eth_data);
        at91_add_device_usbh(&eco920_usbh_data);
index 1815152001f74c62d3d4dd409252a2c81aa197b0..47658f78105db41fad698b7d438444f60c8f6cbf 100644 (file)
@@ -41,12 +41,6 @@ static void __init flexibity_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /* USB Host port */
@@ -143,6 +137,8 @@ static struct gpio_led flexibity_leds[] = {
 static void __init flexibity_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&flexibity_usbh_data);
index caf017f0f4ee3920e56280b9b89c3541bcde4751..33411e6ecb1f1747f7431721003e4b722218bf57 100644 (file)
@@ -61,44 +61,6 @@ static void __init foxg20_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1,
-                               ATMEL_UART_CTS
-                               | ATMEL_UART_RTS
-                               | ATMEL_UART_DTR
-                               | ATMEL_UART_DSR
-                               | ATMEL_UART_DCD
-                               | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2,
-               ATMEL_UART_CTS
-               | ATMEL_UART_RTS);
-
-       /* USART2 on ttyS3. (Rx & Tx only) */
-       at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
-
-       /* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US3, 4,
-               ATMEL_UART_CTS
-               | ATMEL_UART_RTS);
-
-       /* USART4 on ttyS5. (Rx & Tx only) */
-       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
-
-       /* USART5 on ttyS6. (Rx & Tx only) */
-       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
-
-       /* Set the internal pull-up resistor on DRXD */
-       at91_set_A_periph(AT91_PIN_PB14, 1);
-
 }
 
 /*
@@ -241,6 +203,39 @@ static struct i2c_board_info __initdata foxg20_i2c_devices[] = {
 static void __init foxg20_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1,
+                               ATMEL_UART_CTS
+                               | ATMEL_UART_RTS
+                               | ATMEL_UART_DTR
+                               | ATMEL_UART_DSR
+                               | ATMEL_UART_DCD
+                               | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2,
+               ATMEL_UART_CTS
+               | ATMEL_UART_RTS);
+
+       /* USART2 on ttyS3. (Rx & Tx only) */
+       at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
+
+       /* USART3 on ttyS4. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US3, 4,
+               ATMEL_UART_CTS
+               | ATMEL_UART_RTS);
+
+       /* USART4 on ttyS5. (Rx & Tx only) */
+       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
+
+       /* USART5 on ttyS6. (Rx & Tx only) */
+       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
+
+       /* Set the internal pull-up resistor on DRXD */
+       at91_set_A_periph(AT91_PIN_PB14, 1);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&foxg20_usbh_data);
index 230e71969fb76c03f0554f12a3a409d037314589..3e0dfa643a86e1714ad627638667a9df713375a7 100644 (file)
 static void __init gsia18s_init_early(void)
 {
        stamp9g20_init_early();
-
-       /*
-        * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI).
-        * Used for Internal Analog Modem.
-        */
-       at91_register_uart(AT91SAM9260_ID_US0, 1,
-                               ATMEL_UART_CTS | ATMEL_UART_RTS |
-                               ATMEL_UART_DTR | ATMEL_UART_DSR |
-                               ATMEL_UART_DCD | ATMEL_UART_RI);
-       /*
-        * USART1 on ttyS2 (Rx, Tx, CTS, RTS).
-        * Used for GPS or WiFi or Data stream.
-        */
-       at91_register_uart(AT91SAM9260_ID_US1, 2,
-                               ATMEL_UART_CTS | ATMEL_UART_RTS);
-       /*
-        * USART2 on ttyS3 (Rx, Tx, CTS, RTS).
-        * Used for External Modem.
-        */
-       at91_register_uart(AT91SAM9260_ID_US2, 3,
-                               ATMEL_UART_CTS | ATMEL_UART_RTS);
-       /*
-        * USART3 on ttyS4 (Rx, Tx, RTS).
-        * Used for RS-485.
-        */
-       at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS);
-
-       /*
-        * USART4 on ttyS5 (Rx, Tx).
-        * Used for TRX433 Radio Module.
-        */
-       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
 }
 
 /*
@@ -558,6 +526,37 @@ static int __init gsia18s_power_off_init(void)
 
 static void __init gsia18s_board_init(void)
 {
+       /*
+        * USART0 on ttyS1 (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI).
+        * Used for Internal Analog Modem.
+        */
+       at91_register_uart(AT91SAM9260_ID_US0, 1,
+                               ATMEL_UART_CTS | ATMEL_UART_RTS |
+                               ATMEL_UART_DTR | ATMEL_UART_DSR |
+                               ATMEL_UART_DCD | ATMEL_UART_RI);
+       /*
+        * USART1 on ttyS2 (Rx, Tx, CTS, RTS).
+        * Used for GPS or WiFi or Data stream.
+        */
+       at91_register_uart(AT91SAM9260_ID_US1, 2,
+                               ATMEL_UART_CTS | ATMEL_UART_RTS);
+       /*
+        * USART2 on ttyS3 (Rx, Tx, CTS, RTS).
+        * Used for External Modem.
+        */
+       at91_register_uart(AT91SAM9260_ID_US2, 3,
+                               ATMEL_UART_CTS | ATMEL_UART_RTS);
+       /*
+        * USART3 on ttyS4 (Rx, Tx, RTS).
+        * Used for RS-485.
+        */
+       at91_register_uart(AT91SAM9260_ID_US3, 4, ATMEL_UART_RTS);
+
+       /*
+        * USART4 on ttyS5 (Rx, Tx).
+        * Used for TRX433 Radio Module.
+        */
+       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
        stamp9g20_board_init();
        at91_add_device_usbh(&usbh_data);
        at91_add_device_udc(&udc_data);
index efde1b2327c8ab839c518b2cc3a7ce6b0a8517a9..f260657f32bcf5881b3d2aa98fa9d442f992a4df 100644 (file)
@@ -47,18 +47,6 @@ static void __init kafa_init_early(void)
 
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Set up the LEDs */
-       at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata kafa_eth_data = {
@@ -79,7 +67,15 @@ static struct at91_udc_data __initdata kafa_udc_data = {
 
 static void __init kafa_board_init(void)
 {
+       /* Set up the LEDs */
+       at91_init_leds(AT91_PIN_PB4, AT91_PIN_PB4);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1 (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91RM9200_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&kafa_eth_data);
index 59b92aab9bcf8eb94a52d9806716995160f3bbe1..ba39db5482b955617689e7f65adb39e245915738 100644 (file)
@@ -50,24 +50,6 @@ static void __init kb9202_init_early(void)
 
        /* Initialize processor: 10 MHz crystal */
        at91_initialize(10000000);
-
-       /* Set up the LEDs */
-       at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1 (Rx & Tx only) */
-       at91_register_uart(AT91RM9200_ID_US0, 1, 0);
-
-       /* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */
-       at91_register_uart(AT91RM9200_ID_US1, 2, 0);
-
-       /* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */
-       at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata kb9202_eth_data = {
@@ -115,7 +97,21 @@ static struct atmel_nand_data __initdata kb9202_nand_data = {
 
 static void __init kb9202_board_init(void)
 {
+       /* Set up the LEDs */
+       at91_init_leds(AT91_PIN_PC19, AT91_PIN_PC18);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1 (Rx & Tx only) */
+       at91_register_uart(AT91RM9200_ID_US0, 1, 0);
+
+       /* USART1 on ttyS2 (Rx & Tx only) - IRDA (optional) */
+       at91_register_uart(AT91RM9200_ID_US1, 2, 0);
+
+       /* USART3 on ttyS3 (Rx, Tx, CTS, RTS) - RS485 (optional) */
+       at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&kb9202_eth_data);
index 57d5f6a4726a5b38fead2eebd2b567c02b72e3eb..d2f4cc1617669e9d92729c47dde9d6c1bc84a0cf 100644 (file)
@@ -55,15 +55,6 @@ static void __init neocore926_init_early(void)
 {
        /* Initialize processor: 20 MHz crystal */
        at91_initialize(20000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -341,6 +332,11 @@ static struct ac97c_platform_data neocore926_ac97_data = {
 static void __init neocore926_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
 
        /* USB Host */
index b4a12fc184c80078e93877795fffec2a38c19bf3..7fe6383424213a173a9f5553077f3c468aff8945 100644 (file)
 static void __init pcontrol_g20_init_early(void)
 {
        stamp9g20_init_early();
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback  A2 */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS
-                                               | ATMEL_UART_RTS);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485  X5 */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS
-                                               | ATMEL_UART_RTS);
-
-       /* USART2 on ttyS3. (Rx, Tx)  9bit-Bus  Multidrop-mode  X4 */
-       at91_register_uart(AT91SAM9260_ID_US4, 3, 0);
 }
 
 static struct sam9_smc_config __initdata pcontrol_smc_config[2] = { {
@@ -199,6 +188,16 @@ static struct spi_board_info pcontrol_g20_spi_devices[] = {
 
 static void __init pcontrol_g20_board_init(void)
 {
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) piggyback  A2 */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS
+                                               | ATMEL_UART_RTS);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) isolated RS485  X5 */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS
+                                               | ATMEL_UART_RTS);
+
+       /* USART2 on ttyS3. (Rx, Tx)  9bit-Bus  Multidrop-mode  X4 */
+       at91_register_uart(AT91SAM9260_ID_US4, 3, 0);
        stamp9g20_board_init();
        at91_add_device_usbh(&usbh_data);
        at91_add_device_eth(&macb_data);
index 59e35dd1486301b556f20befed659a5bea9525b2..b45c0a5d5ca7649c745d4718a329d0ee65fbdf20 100644 (file)
@@ -48,17 +48,6 @@ static void __init picotux200_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                         | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                         | ATMEL_UART_RI);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata picotux200_eth_data = {
@@ -106,6 +95,13 @@ static struct platform_device picotux200_flash = {
 static void __init picotux200_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                         | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                         | ATMEL_UART_RI);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&picotux200_eth_data);
index b6ed5ed7081ac9d514336a19f3ca668ce8776d5e..0c61bf0d272c3b02215da56a7cfbdf7c2ce6a0fd 100644 (file)
@@ -52,24 +52,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 12.000 MHz crystal */
        at91_initialize(12000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS1 (ie, USART0) */
-       at91_set_serial_console(1);
-
 }
 
 /*
@@ -235,6 +217,19 @@ static struct gpio_led ek_leds[] = {
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
+
+       /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index 01332aa538b2a00cb4a7e38207abd1a387e87ec7..afd7a4713766cec538c1736daf0895f691d6ebf3 100644 (file)
@@ -50,20 +50,6 @@ static void __init dk_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata dk_eth_data = {
@@ -190,7 +176,17 @@ static struct gpio_led dk_leds[] = {
 
 static void __init dk_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PB2, AT91_PIN_PB2);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&dk_eth_data);
index b2e4fe21f346cf6217dfb78b5e8b3f6553e76fe6..2b15b8adec4ccb9c671fab7e2423a59f2860ad89 100644 (file)
@@ -50,20 +50,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 static struct macb_platform_data __initdata ek_eth_data = {
@@ -161,7 +147,17 @@ static struct gpio_led ek_leds[] = {
 
 static void __init ek_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PB1, AT91_PIN_PB2);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&ek_eth_data);
index af0750fafa29cd5ba5dc712ad4e3348f72ee8cb8..24ab9be7510fbe5f6cdd3296be794fd7affa8cdc 100644 (file)
@@ -35,26 +35,6 @@ static void __init rsi_ews_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       /* This one is for debugging */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       /* Dialin/-out modem interface */
-       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* USART3 on ttyS4. (Rx, Tx, RTS) */
-       /* RS485 communication */
-       at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -204,7 +184,23 @@ static struct platform_device rsiews_nor_flash = {
  */
 static void __init rsi_ews_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PB6, AT91_PIN_PB9);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       /* This one is for debugging */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       /* Dialin/-out modem interface */
+       at91_register_uart(AT91RM9200_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
+
+       /* USART3 on ttyS4. (Rx, Tx, RTS) */
+       /* RS485 communication */
+       at91_register_uart(AT91RM9200_ID_US3, 4, ATMEL_UART_RTS);
        at91_add_device_serial();
        at91_set_gpio_output(AT91_PIN_PA21, 0);
        /* Ethernet */
index e8b116b6cba6c3c15dc873d41079c6f2519efdb8..cdd21f2595d2220de8fc828f636d240e0d0b1476 100644 (file)
@@ -48,23 +48,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -184,7 +167,20 @@ static struct at91_mmc_data __initdata ek_mmc_data = {
 
 static void __init ek_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PA9, AT91_PIN_PA6);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index d5aec55b0eb4903a06c6045169cd21af24bb3824..7b3c3913551a53ccc7a08eef94b5a18b7bba428b 100644 (file)
@@ -54,20 +54,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -320,6 +306,16 @@ static void __init ek_add_device_buttons(void) {}
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index 065fed342424902bbe15aa67101fd524397eaa7b..2736453821b0d55e9782d065107c176102ca4c35 100644 (file)
@@ -58,15 +58,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs */
-       at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -577,7 +568,12 @@ static struct gpio_led ek_leds[] = {
 
 static void __init ek_board_init(void)
 {
+       /* Setup the LEDs */
+       at91_init_leds(AT91_PIN_PA13, AT91_PIN_PA14);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index 2ffe50f3a9e9e056a48879dd4c6a755cfa65f622..983cb98d2465c7253b2c9c2900de5379e2636979 100644 (file)
@@ -57,15 +57,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 16.367 MHz crystal */
        at91_initialize(16367660);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -412,6 +403,11 @@ static struct at91_can_data ek_can_data = {
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9263_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index 8923ec9f5831b79ab8efc14b86ff1718f222f1fa..3d615532ae5c6ea9ae5c74757c30b2dce164c6c9 100644 (file)
@@ -65,20 +65,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                          | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -372,6 +358,16 @@ static struct i2c_board_info __initdata ek_i2c_devices[] = {
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                          | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                          | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index c88e908ddd82e9de014b360448a194c568f27154..9a87f0b072f86cadc92b91e7f62aa981133ab56b 100644 (file)
@@ -53,16 +53,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 12.000 MHz crystal */
        at91_initialize(12000000);
-
-       /* DGBU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 not connected on the -EK board */
-       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
-       at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -457,6 +447,12 @@ static struct platform_device *devices[] __initdata = {
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DGBU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 not connected on the -EK board */
+       /* USART1 on ttyS2. (Rx, Tx, RTS, CTS) */
+       at91_register_uart(AT91SAM9G45_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB HS Host */
        at91_add_device_usbh_ohci(&ek_usbh_hs_data);
index b109ce2ba864640f8eee20dfebc3d4813fb58e3d..be3239f13daa64341598d1b5f33041ff44058eab 100644 (file)
@@ -42,15 +42,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 12.000 MHz crystal */
        at91_initialize(12000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -296,6 +287,11 @@ static void __init ek_add_device_buttons(void) {}
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9RL_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS);
        at91_add_device_serial();
        /* USB HS */
        at91_add_device_usba(&ek_usba_udc_data);
index ebc9d01ce742f26bed12f958647934bc378c46c0..9d446f1bb45fe6fcc91d78a35932bb56823e685e 100644 (file)
 static void __init snapper9260_init_early(void)
 {
        at91_initialize(18432000);
-
-       /* Debug on ttyS0 */
-       at91_register_uart(0, 0, 0);
-       at91_set_serial_console(0);
-
-       at91_register_uart(AT91SAM9260_ID_US0, 1,
-                          ATMEL_UART_CTS | ATMEL_UART_RTS);
-       at91_register_uart(AT91SAM9260_ID_US1, 2,
-                          ATMEL_UART_CTS | ATMEL_UART_RTS);
-       at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
 }
 
 static struct at91_usbh_data __initdata snapper9260_usbh_data = {
@@ -168,6 +158,14 @@ static void __init snapper9260_board_init(void)
        snapper9260_i2c_isl1208.irq = gpio_to_irq(AT91_PIN_PA31);
        i2c_register_board_info(0, &snapper9260_i2c_isl1208, 1);
 
+       /* Debug on ttyS0 */
+       at91_register_uart(0, 0, 0);
+
+       at91_register_uart(AT91SAM9260_ID_US0, 1,
+                          ATMEL_UART_CTS | ATMEL_UART_RTS);
+       at91_register_uart(AT91SAM9260_ID_US1, 2,
+                          ATMEL_UART_CTS | ATMEL_UART_RTS);
+       at91_register_uart(AT91SAM9260_ID_US2, 3, 0);
        at91_add_device_serial();
        at91_add_device_usbh(&snapper9260_usbh_data);
        at91_add_device_udc(&snapper9260_udc_data);
index 7640049410a04b505ba7fd9f55d7ebfbb5aa1538..ee86f9d7ee72ed87bf408e273858be3dbe4586e1 100644 (file)
@@ -36,44 +36,6 @@ void __init stamp9g20_init_early(void)
 {
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* DGBU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
-}
-
-static void __init stamp9g20evb_init_early(void)
-{
-       stamp9g20_init_early();
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                                               | ATMEL_UART_DTR | ATMEL_UART_DSR
-                                               | ATMEL_UART_DCD | ATMEL_UART_RI);
-}
-
-static void __init portuxg20_init_early(void)
-{
-       stamp9g20_init_early();
-
-       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                                               | ATMEL_UART_DTR | ATMEL_UART_DSR
-                                               | ATMEL_UART_DCD | ATMEL_UART_RI);
-
-       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
-       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
-
-       /* USART4 on ttyS5. (Rx, Tx only) */
-       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
-
-       /* USART5 on ttyS6. (Rx, Tx only) */
-       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
 }
 
 /*
@@ -254,6 +216,8 @@ void add_w1(void)
 void __init stamp9g20_board_init(void)
 {
        /* Serial */
+       /* DGBU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* NAND */
        add_device_nand();
@@ -269,6 +233,22 @@ void __init stamp9g20_board_init(void)
 
 static void __init portuxg20_board_init(void)
 {
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                                               | ATMEL_UART_DTR | ATMEL_UART_DSR
+                                               | ATMEL_UART_DCD | ATMEL_UART_RI);
+
+       /* USART1 on ttyS2. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9260_ID_US1, 2, ATMEL_UART_CTS | ATMEL_UART_RTS);
+
+       /* USART2 on ttyS3. (Rx, Tx, CTS, RTS) */
+       at91_register_uart(AT91SAM9260_ID_US2, 3, ATMEL_UART_CTS | ATMEL_UART_RTS);
+
+       /* USART4 on ttyS5. (Rx, Tx only) */
+       at91_register_uart(AT91SAM9260_ID_US4, 5, 0);
+
+       /* USART5 on ttyS6. (Rx, Tx only) */
+       at91_register_uart(AT91SAM9260_ID_US5, 6, 0);
        stamp9g20_board_init();
        /* USB Host */
        at91_add_device_usbh(&usbh_data);
@@ -286,6 +266,10 @@ static void __init portuxg20_board_init(void)
 
 static void __init stamp9g20evb_board_init(void)
 {
+       /* USART0 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91SAM9260_ID_US0, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                                               | ATMEL_UART_DTR | ATMEL_UART_DSR
+                                               | ATMEL_UART_DCD | ATMEL_UART_RI);
        stamp9g20_board_init();
        /* USB Host */
        at91_add_device_usbh(&usbh_data);
@@ -303,7 +287,7 @@ MACHINE_START(PORTUXG20, "taskit PortuxG20")
        /* Maintainer: taskit GmbH */
        .timer          = &at91sam926x_timer,
        .map_io         = at91_map_io,
-       .init_early     = portuxg20_init_early,
+       .init_early     = stamp9g20_init_early,
        .init_irq       = at91_init_irq_default,
        .init_machine   = portuxg20_board_init,
 MACHINE_END
@@ -312,7 +296,7 @@ MACHINE_START(STAMP9G20, "taskit Stamp9G20")
        /* Maintainer: taskit GmbH */
        .timer          = &at91sam926x_timer,
        .map_io         = at91_map_io,
-       .init_early     = stamp9g20evb_init_early,
+       .init_early     = stamp9g20_init_early,
        .init_irq       = at91_init_irq_default,
        .init_machine   = stamp9g20evb_board_init,
 MACHINE_END
index b7483a3d09803183e625844140659cc363f652a0..332ecd40bd02b72bc5fd76f28fb8ee570b98f557 100644 (file)
@@ -53,12 +53,6 @@ static void __init ek_init_early(void)
 {
        /* Initialize processor: 12.00 MHz crystal */
        at91_initialize(12000000);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -325,6 +319,8 @@ static void __init ek_add_device_leds(void)
 static void __init ek_board_init(void)
 {
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
        at91_add_device_serial();
        /* USB Host */
        at91_add_device_usbh(&ek_usbh_data);
index 38dd279d30b25657004177bfa488b4906d4c525d..d56665ea4b55d3a8259228d8801fe20a547b9bab 100644 (file)
@@ -58,26 +58,6 @@ static void __init yl9200_init_early(void)
 
        /* Initialize processor: 18.432 MHz crystal */
        at91_initialize(18432000);
-
-       /* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */
-       at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17);
-
-       /* DBGU on ttyS0. (Rx & Tx only) */
-       at91_register_uart(0, 0, 0);
-
-       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
-       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
-                       | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
-                       | ATMEL_UART_RI);
-
-       /* USART0 on ttyS2. (Rx & Tx only to JP3) */
-       at91_register_uart(AT91RM9200_ID_US0, 2, 0);
-
-       /* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */
-       at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS);
-
-       /* set serial console to ttyS0 (ie, DBGU) */
-       at91_set_serial_console(0);
 }
 
 /*
@@ -560,7 +540,23 @@ void __init yl9200_add_device_video(void) {}
 
 static void __init yl9200_board_init(void)
 {
+       /* Setup the LEDs D2=PB17 (timer), D3=PB16 (cpu) */
+       at91_init_leds(AT91_PIN_PB16, AT91_PIN_PB17);
+
        /* Serial */
+       /* DBGU on ttyS0. (Rx & Tx only) */
+       at91_register_uart(0, 0, 0);
+
+       /* USART1 on ttyS1. (Rx, Tx, CTS, RTS, DTR, DSR, DCD, RI) */
+       at91_register_uart(AT91RM9200_ID_US1, 1, ATMEL_UART_CTS | ATMEL_UART_RTS
+                       | ATMEL_UART_DTR | ATMEL_UART_DSR | ATMEL_UART_DCD
+                       | ATMEL_UART_RI);
+
+       /* USART0 on ttyS2. (Rx & Tx only to JP3) */
+       at91_register_uart(AT91RM9200_ID_US0, 2, 0);
+
+       /* USART3 on ttyS3. (Rx, Tx, RTS - RS485 interface) */
+       at91_register_uart(AT91RM9200_ID_US3, 3, ATMEL_UART_RTS);
        at91_add_device_serial();
        /* Ethernet */
        at91_add_device_eth(&yl9200_eth_data);
index ece1f9aefb47a0ff46a0fe0f0bfeedd4d2bac27f..0c6381516a5aac50c0d8752629b2d70f8b554547 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/export.h>
 #include <asm/proc-fns.h>
 #include <asm/cpuidle.h>
+#include <mach/cpu.h>
 
 #include "pm.h"
 
@@ -33,7 +34,12 @@ static int at91_enter_idle(struct cpuidle_device *dev,
                        struct cpuidle_driver *drv,
                               int index)
 {
-       at91_standby();
+       if (cpu_is_at91rm9200())
+               at91rm9200_standby();
+       else if (cpu_is_at91sam9g45())
+               at91sam9g45_standby();
+       else
+               at91sam9_standby();
 
        return index;
 }
index dd9b346c451d2b005b7241a4c04af01376e09f1d..0a60bf837037dd67382163c30f3290ed30acb9ae 100644 (file)
@@ -40,17 +40,6 @@ extern struct sys_timer at91sam926x_timer;
 extern struct sys_timer at91x40_timer;
 
  /* Clocks */
-/*
- * function to specify the clock of the default console. As we do not
- * use the device/driver bus, the dev_name is not intialize. So we need
- * to link the clock to a specific con_id only "usart"
- */
-extern void __init at91rm9200_set_console_clock(int id);
-extern void __init at91sam9260_set_console_clock(int id);
-extern void __init at91sam9261_set_console_clock(int id);
-extern void __init at91sam9263_set_console_clock(int id);
-extern void __init at91sam9rl_set_console_clock(int id);
-extern void __init at91sam9g45_set_console_clock(int id);
 #ifdef CONFIG_AT91_PMC_UNIT
 extern int __init at91_clock_init(unsigned long main_clock);
 extern int __init at91_dt_clock_init(void);
index 603e6aac2a4fb9d9a55c6d37b639ff19649e9e81..e67317c677617bd0374446e4646922eb60792ce6 100644 (file)
 #define AT91RM9200_BASE_RTC    0xfffffe00      /* Real-Time Clock */
 #define AT91RM9200_BASE_MC     0xffffff00      /* Memory Controllers */
 
-#define AT91_USART0    AT91RM9200_BASE_US0
-#define AT91_USART1    AT91RM9200_BASE_US1
-#define AT91_USART2    AT91RM9200_BASE_US2
-#define AT91_USART3    AT91RM9200_BASE_US3
-
 /*
  * Internal Memory.
  */
index 08ae9afd00fed48852fe6c62d851cb96683080cc..416c7b6c56d3af85cf34eef90078de512047dbfa 100644 (file)
 #define AT91SAM9260_BASE_WDT   0xfffffd40
 #define AT91SAM9260_BASE_GPBR  0xfffffd50
 
-#define AT91_USART0    AT91SAM9260_BASE_US0
-#define AT91_USART1    AT91SAM9260_BASE_US1
-#define AT91_USART2    AT91SAM9260_BASE_US2
-#define AT91_USART3    AT91SAM9260_BASE_US3
-#define AT91_USART4    AT91SAM9260_BASE_US4
-#define AT91_USART5    AT91SAM9260_BASE_US5
-
 
 /*
  * Internal Memory.
index 44fbdc12ee6247b4581efc51df0883677fd46cbe..a041406d06ee1e0fba30451f3925ed657ec7f315 100644 (file)
 #define AT91SAM9261_BASE_WDT   0xfffffd40
 #define AT91SAM9261_BASE_GPBR  0xfffffd50
 
-#define AT91_USART0    AT91SAM9261_BASE_US0
-#define AT91_USART1    AT91SAM9261_BASE_US1
-#define AT91_USART2    AT91SAM9261_BASE_US2
-
 
 /*
  * Internal Memory.
index d96cbb2e03c49a88f936a6ebc8105089366288b8..d201029d60b386d9de9cefca0f4b03958aaab36d 100644 (file)
 #define AT91SAM9263_BASE_RTT1  0xfffffd50
 #define AT91SAM9263_BASE_GPBR  0xfffffd60
 
-#define AT91_USART0    AT91SAM9263_BASE_US0
-#define AT91_USART1    AT91SAM9263_BASE_US1
-#define AT91_USART2    AT91SAM9263_BASE_US2
-
 #define AT91_SMC       AT91_SMC0
 
 /*
index d052abcff852134fee95d54defa164f66af8b074..3a4da24d59112209613a6cab1ed132103b4c8772 100644 (file)
 #define AT91SAM9G45_BASE_RTC   0xfffffdb0
 #define AT91SAM9G45_BASE_GPBR  0xfffffd60
 
-#define AT91_USART0    AT91SAM9G45_BASE_US0
-#define AT91_USART1    AT91SAM9G45_BASE_US1
-#define AT91_USART2    AT91SAM9G45_BASE_US2
-#define AT91_USART3    AT91SAM9G45_BASE_US3
-
 /*
  * Internal Memory.
  */
index e0073eb10144d87e754c5e261ded43fb908a51dd..a15db56d33fa86154020a3419db2a468a0f4b10f 100644 (file)
 #define AT91SAM9RL_BASE_GPBR   0xfffffd60
 #define AT91SAM9RL_BASE_RTC    0xfffffe00
 
-#define AT91_USART0    AT91SAM9RL_BASE_US0
-#define AT91_USART1    AT91SAM9RL_BASE_US1
-#define AT91_USART2    AT91SAM9RL_BASE_US2
-#define AT91_USART3    AT91SAM9RL_BASE_US3
-
 
 /*
  * Internal Memory.
index 88e43d534cdfeef7f9df38b7c28a34a0546bc436..c75ee19b58d3de69c79e81e312c416fbd6071ef0 100644 (file)
 #define AT91SAM9X5_BASE_USART1 0xf8020000
 #define AT91SAM9X5_BASE_USART2 0xf8024000
 
-/*
- * Base addresses for early serial code (uncompress.h)
- */
-#define AT91_DBGU      AT91_BASE_DBGU0
-#define AT91_USART0    AT91SAM9X5_BASE_USART0
-#define AT91_USART1    AT91SAM9X5_BASE_USART1
-#define AT91_USART2    AT91SAM9X5_BASE_USART2
-
 /*
  * Internal Memory.
  */
index 49a821192c652c959321b834953d7f3ce2073452..369afc2ffc5b972934872aa9266c8a8b774e9bec 100644 (file)
@@ -121,7 +121,6 @@ extern void __init at91_add_device_spi(struct spi_board_info *devices, int nr_de
 #define ATMEL_UART_RI  0x20
 
 extern void __init at91_register_uart(unsigned id, unsigned portnr, unsigned pins);
-extern void __init at91_set_serial_console(unsigned portnr);
 
 extern struct platform_device *atmel_default_console_device;
 
index 0118c33385525149754c45e453881f69c518af49..73d2fd209ce4701159598c34adcd48d560a81cad 100644 (file)
@@ -54,6 +54,7 @@
 #define ARCH_REVISON_9200_BGA  (0 << 0)
 #define ARCH_REVISON_9200_PQFP (1 << 0)
 
+#ifndef __ASSEMBLY__
 enum at91_soc_type {
        /* 920T */
        AT91_SOC_RM9200,
@@ -106,7 +107,7 @@ static inline int at91_soc_is_detected(void)
        return at91_soc_initdata.type != AT91_SOC_NONE;
 }
 
-#ifdef CONFIG_ARCH_AT91RM9200
+#ifdef CONFIG_SOC_AT91RM9200
 #define cpu_is_at91rm9200()    (at91_soc_initdata.type == AT91_SOC_RM9200)
 #define cpu_is_at91rm9200_bga()        (at91_soc_initdata.subtype == AT91_SOC_RM9200_BGA)
 #define cpu_is_at91rm9200_pqfp() (at91_soc_initdata.subtype == AT91_SOC_RM9200_PQFP)
@@ -116,45 +117,37 @@ static inline int at91_soc_is_detected(void)
 #define cpu_is_at91rm9200_pqfp() (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9260
+#ifdef CONFIG_SOC_AT91SAM9260
 #define cpu_is_at91sam9xe()    (at91_soc_initdata.subtype == AT91_SOC_SAM9XE)
 #define cpu_is_at91sam9260()   (at91_soc_initdata.type == AT91_SOC_SAM9260)
+#define cpu_is_at91sam9g20()   (at91_soc_initdata.type == AT91_SOC_SAM9G20)
 #else
 #define cpu_is_at91sam9xe()    (0)
 #define cpu_is_at91sam9260()   (0)
-#endif
-
-#ifdef CONFIG_ARCH_AT91SAM9G20
-#define cpu_is_at91sam9g20()   (at91_soc_initdata.type == AT91_SOC_SAM9G20)
-#else
 #define cpu_is_at91sam9g20()   (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9261
+#ifdef CONFIG_SOC_AT91SAM9261
 #define cpu_is_at91sam9261()   (at91_soc_initdata.type == AT91_SOC_SAM9261)
-#else
-#define cpu_is_at91sam9261()   (0)
-#endif
-
-#ifdef CONFIG_ARCH_AT91SAM9G10
 #define cpu_is_at91sam9g10()   (at91_soc_initdata.type == AT91_SOC_SAM9G10)
 #else
+#define cpu_is_at91sam9261()   (0)
 #define cpu_is_at91sam9g10()   (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9263
+#ifdef CONFIG_SOC_AT91SAM9263
 #define cpu_is_at91sam9263()   (at91_soc_initdata.type == AT91_SOC_SAM9263)
 #else
 #define cpu_is_at91sam9263()   (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9RL
+#ifdef CONFIG_SOC_AT91SAM9RL
 #define cpu_is_at91sam9rl()    (at91_soc_initdata.type == AT91_SOC_SAM9RL)
 #else
 #define cpu_is_at91sam9rl()    (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9G45
+#ifdef CONFIG_SOC_AT91SAM9G45
 #define cpu_is_at91sam9g45()   (at91_soc_initdata.type == AT91_SOC_SAM9G45)
 #define cpu_is_at91sam9g45es() (at91_soc_initdata.subtype == AT91_SOC_SAM9G45ES)
 #define cpu_is_at91sam9m10()   (at91_soc_initdata.subtype == AT91_SOC_SAM9M10)
@@ -168,7 +161,7 @@ static inline int at91_soc_is_detected(void)
 #define cpu_is_at91sam9m11()   (0)
 #endif
 
-#ifdef CONFIG_ARCH_AT91SAM9X5
+#ifdef CONFIG_SOC_AT91SAM9X5
 #define cpu_is_at91sam9x5()    (at91_soc_initdata.type == AT91_SOC_SAM9X5)
 #define cpu_is_at91sam9g15()   (at91_soc_initdata.subtype == AT91_SOC_SAM9G15)
 #define cpu_is_at91sam9g35()   (at91_soc_initdata.subtype == AT91_SOC_SAM9G35)
@@ -189,5 +182,6 @@ static inline int at91_soc_is_detected(void)
  * definitions may reduce clutter in common drivers.
  */
 #define cpu_is_at32ap7000()    (0)
+#endif /* __ASSEMBLY__ */
 
 #endif /* __MACH_CPU_H__ */
index e9e29a6c3868eb6ea462c8df13073915440ac36e..3a01f8ff7e7421e51c7f9fd108562108d289a751 100644 (file)
 /* 9263, 9g45 */
 #define AT91_BASE_DBGU1        0xffffee00
 
-#if defined(CONFIG_ARCH_AT91RM9200)
+#if defined(CONFIG_ARCH_AT91X40)
+#include <mach/at91x40.h>
+#else
 #include <mach/at91rm9200.h>
-#elif defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20)
 #include <mach/at91sam9260.h>
-#elif defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10)
 #include <mach/at91sam9261.h>
-#elif defined(CONFIG_ARCH_AT91SAM9263)
 #include <mach/at91sam9263.h>
-#elif defined(CONFIG_ARCH_AT91SAM9RL)
 #include <mach/at91sam9rl.h>
-#elif defined(CONFIG_ARCH_AT91SAM9G45)
 #include <mach/at91sam9g45.h>
-#elif defined(CONFIG_ARCH_AT91SAM9X5)
 #include <mach/at91sam9x5.h>
-#elif defined(CONFIG_ARCH_AT91X40)
-#include <mach/at91x40.h>
-#else
-#error "Unsupported AT91 processor"
-#endif
 
-#if !defined(CONFIG_ARCH_AT91X40)
 /*
  * On all at91 except rm9200 and x40 have the System Controller starts
  * at address 0xffffc000 and has a size of 16KiB.
index 4218647c1fcd3279a39bb83b8b38eb7cdb5aa743..6f6118d1576aa8a48189db75e9ad907d1a896e74 100644 (file)
@@ -1,7 +1,8 @@
 /*
  * arch/arm/mach-at91/include/mach/uncompress.h
  *
- *  Copyright (C) 2003 SAN People
+ * Copyright (C) 2003 SAN People
+ * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.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
 #include <linux/atmel_serial.h>
 #include <mach/hardware.h>
 
-#if defined(CONFIG_AT91_EARLY_DBGU0)
-#define UART_OFFSET AT91_BASE_DBGU0
-#elif defined(CONFIG_AT91_EARLY_DBGU1)
-#define UART_OFFSET AT91_BASE_DBGU1
-#elif defined(CONFIG_AT91_EARLY_USART0)
-#define UART_OFFSET AT91_USART0
-#elif defined(CONFIG_AT91_EARLY_USART1)
-#define UART_OFFSET AT91_USART1
-#elif defined(CONFIG_AT91_EARLY_USART2)
-#define UART_OFFSET AT91_USART2
-#elif defined(CONFIG_AT91_EARLY_USART3)
-#define UART_OFFSET AT91_USART3
-#elif defined(CONFIG_AT91_EARLY_USART4)
-#define UART_OFFSET AT91_USART4
-#elif defined(CONFIG_AT91_EARLY_USART5)
-#define UART_OFFSET AT91_USART5
+#include <mach/at91_dbgu.h>
+#include <mach/cpu.h>
+
+void __iomem *at91_uart;
+
+#if !defined(CONFIG_ARCH_AT91X40)
+static const u32 uarts_rm9200[] = {
+       AT91_BASE_DBGU0,
+       AT91RM9200_BASE_US0,
+       AT91RM9200_BASE_US1,
+       AT91RM9200_BASE_US2,
+       AT91RM9200_BASE_US3,
+       0,
+};
+
+static const u32 uarts_sam9260[] = {
+       AT91_BASE_DBGU0,
+       AT91SAM9260_BASE_US0,
+       AT91SAM9260_BASE_US1,
+       AT91SAM9260_BASE_US2,
+       AT91SAM9260_BASE_US3,
+       AT91SAM9260_BASE_US4,
+       AT91SAM9260_BASE_US5,
+       0,
+};
+
+static const u32 uarts_sam9261[] = {
+       AT91_BASE_DBGU0,
+       AT91SAM9261_BASE_US0,
+       AT91SAM9261_BASE_US1,
+       AT91SAM9261_BASE_US2,
+       0,
+};
+
+static const u32 uarts_sam9263[] = {
+       AT91_BASE_DBGU1,
+       AT91SAM9263_BASE_US0,
+       AT91SAM9263_BASE_US1,
+       AT91SAM9263_BASE_US2,
+       0,
+};
+
+static const u32 uarts_sam9g45[] = {
+       AT91_BASE_DBGU1,
+       AT91SAM9G45_BASE_US0,
+       AT91SAM9G45_BASE_US1,
+       AT91SAM9G45_BASE_US2,
+       AT91SAM9G45_BASE_US3,
+       0,
+};
+
+static const u32 uarts_sam9rl[] = {
+       AT91_BASE_DBGU0,
+       AT91SAM9RL_BASE_US0,
+       AT91SAM9RL_BASE_US1,
+       AT91SAM9RL_BASE_US2,
+       AT91SAM9RL_BASE_US3,
+       0,
+};
+
+static const u32 uarts_sam9x5[] = {
+       AT91_BASE_DBGU0,
+       AT91SAM9X5_BASE_USART0,
+       AT91SAM9X5_BASE_USART1,
+       AT91SAM9X5_BASE_USART2,
+       0,
+};
+
+static inline const u32* decomp_soc_detect(u32 dbgu_base)
+{
+       u32 cidr, socid;
+
+       cidr = __raw_readl(dbgu_base + AT91_DBGU_CIDR);
+       socid = cidr & ~AT91_CIDR_VERSION;
+
+       switch (socid) {
+       case ARCH_ID_AT91RM9200:
+               return uarts_rm9200;
+
+       case ARCH_ID_AT91SAM9G20:
+       case ARCH_ID_AT91SAM9260:
+               return uarts_sam9260;
+
+       case ARCH_ID_AT91SAM9261:
+               return uarts_sam9261;
+
+       case ARCH_ID_AT91SAM9263:
+               return uarts_sam9263;
+
+       case ARCH_ID_AT91SAM9G45:
+               return uarts_sam9g45;
+
+       case ARCH_ID_AT91SAM9RL64:
+               return uarts_sam9rl;
+
+       case ARCH_ID_AT91SAM9X5:
+               return uarts_sam9x5;
+       }
+
+       /* at91sam9g10 */
+       if ((cidr & ~AT91_CIDR_EXT) == ARCH_ID_AT91SAM9G10) {
+               return uarts_sam9261;
+       }
+       /* at91sam9xe */
+       else if ((cidr & AT91_CIDR_ARCH) == ARCH_FAMILY_AT91SAM9XE) {
+               return uarts_sam9260;
+       }
+
+       return NULL;
+}
+
+static inline void arch_decomp_setup(void)
+{
+       int i = 0;
+       const u32* usarts;
+
+       usarts = decomp_soc_detect(AT91_BASE_DBGU0);
+
+       if (!usarts)
+               usarts = decomp_soc_detect(AT91_BASE_DBGU1);
+       if (!usarts) {
+               at91_uart = NULL;
+               return;
+       }
+
+       do {
+               /* physical address */
+               at91_uart = (void __iomem *)usarts[i];
+
+               if (__raw_readl(at91_uart + ATMEL_US_BRGR))
+                       return;
+               i++;
+       } while (usarts[i]);
+
+       at91_uart = NULL;
+}
+#else
+static inline void arch_decomp_setup(void)
+{
+       at91_uart = NULL;
+}
 #endif
 
 /*
  */
 static void putc(int c)
 {
-#ifdef UART_OFFSET
-       void __iomem *sys = (void __iomem *) UART_OFFSET;       /* physical address */
+       if (!at91_uart)
+               return;
 
-       while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXRDY))
+       while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXRDY))
                barrier();
-       __raw_writel(c, sys + ATMEL_US_THR);
-#endif
+       __raw_writel(c, at91_uart + ATMEL_US_THR);
 }
 
 static inline void flush(void)
 {
-#ifdef UART_OFFSET
-       void __iomem *sys = (void __iomem *) UART_OFFSET;       /* physical address */
+       if (!at91_uart)
+               return;
 
        /* wait for transmission to complete */
-       while (!(__raw_readl(sys + ATMEL_US_CSR) & ATMEL_US_TXEMPTY))
+       while (!(__raw_readl(at91_uart + ATMEL_US_CSR) & ATMEL_US_TXEMPTY))
                barrier();
-#endif
 }
 
-#define arch_decomp_setup()
-
 #define arch_decomp_wdog()
 
 #endif
index f630250c6b8779d0f0fc528adb1ba7631a42df37..1bfaad628731b262c474bc23217a30f4119eece3 100644 (file)
@@ -261,7 +261,12 @@ static int at91_pm_enter(suspend_state_t state)
                         * For ARM 926 based chips, this requirement is weaker
                         * as at91sam9 can access a RAM in self-refresh mode.
                         */
-                       at91_standby();
+                       if (cpu_is_at91rm9200())
+                               at91rm9200_standby();
+                       else if (cpu_is_at91sam9g45())
+                               at91sam9g45_standby();
+                       else
+                               at91sam9_standby();
                        break;
 
                case PM_SUSPEND_ON:
@@ -307,10 +312,9 @@ static int __init at91_pm_init(void)
 
        pr_info("AT91: Power Management%s\n", (slow_clock ? " (with slow clock mode)" : ""));
 
-#ifdef CONFIG_ARCH_AT91RM9200
        /* AT91RM9200 SDRAM low-power mode cannot be used with self-refresh. */
-       at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0);
-#endif
+       if (cpu_is_at91rm9200())
+               at91_ramc_write(0, AT91RM9200_SDRAMC_LPR, 0);
 
        suspend_set_ops(&at91_pm_ops);
 
index 89f56f3a802e4d0726ae6f60db62bf41881a57f4..38f467c6b710ff11b8cfcf8d98ab6f3d54179570 100644 (file)
@@ -12,7 +12,6 @@
 #define __ARCH_ARM_MACH_AT91_PM
 
 #include <mach/at91_ramc.h>
-#ifdef CONFIG_ARCH_AT91RM9200
 #include <mach/at91rm9200_sdramc.h>
 
 /*
@@ -43,10 +42,6 @@ static inline void at91rm9200_standby(void)
                  "r" (lpr));
 }
 
-#define at91_standby at91rm9200_standby
-
-#elif defined(CONFIG_ARCH_AT91SAM9G45)
-
 /* We manage both DDRAM/SDRAM controllers, we need more than one value to
  * remember.
  */
@@ -75,11 +70,7 @@ static inline void at91sam9g45_standby(void)
        at91_ramc_write(1, AT91_DDRSDRC_LPR, saved_lpr1);
 }
 
-#define at91_standby at91sam9g45_standby
-
-#else
-
-#ifdef CONFIG_ARCH_AT91SAM9263
+#ifdef CONFIG_SOC_AT91SAM9263
 /*
  * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
  * handle those cases both here and in the Suspend-To-RAM support.
@@ -102,8 +93,4 @@ static inline void at91sam9_standby(void)
        at91_ramc_write(0, AT91_SDRAMC_LPR, saved_lpr);
 }
 
-#define at91_standby at91sam9_standby
-
-#endif
-
 #endif
index db5452123f17b5e564f6378db72dd6a75e8931ed..098c28ddf025fb95dfae6530ee547a7aaf76358b 100644 (file)
@@ -18,7 +18,7 @@
 #include <mach/at91_ramc.h>
 
 
-#ifdef CONFIG_ARCH_AT91SAM9263
+#ifdef CONFIG_SOC_AT91SAM9263
 /*
  * FIXME either or both the SDRAM controllers (EB0, EB1) might be in use;
  * handle those cases both here and in the Suspend-To-RAM support.
index 5db4aa45404aaeecca0e4fa11de1cf1bc9260dcb..683dddfd8b133facb24a967aa40ceca51a358010 100644 (file)
@@ -26,30 +26,30 @@ static inline int at91_soc_is_enabled(void)
        return at91_boot_soc.init != NULL;
 }
 
-#if !defined(CONFIG_ARCH_AT91RM9200)
+#if !defined(CONFIG_SOC_AT91RM9200)
 #define at91rm9200_soc at91_boot_soc
 #endif
 
-#if !(defined(CONFIG_ARCH_AT91SAM9260) || defined(CONFIG_ARCH_AT91SAM9G20))
+#if !defined(CONFIG_SOC_AT91SAM9260)
 #define at91sam9260_soc        at91_boot_soc
 #endif
 
-#if !(defined(CONFIG_ARCH_AT91SAM9261) || defined(CONFIG_ARCH_AT91SAM9G10))
+#if !defined(CONFIG_SOC_AT91SAM9261)
 #define at91sam9261_soc        at91_boot_soc
 #endif
 
-#if !defined(CONFIG_ARCH_AT91SAM9263)
+#if !defined(CONFIG_SOC_AT91SAM9263)
 #define at91sam9263_soc        at91_boot_soc
 #endif
 
-#if !defined(CONFIG_ARCH_AT91SAM9G45)
+#if !defined(CONFIG_SOC_AT91SAM9G45)
 #define at91sam9g45_soc        at91_boot_soc
 #endif
 
-#if !defined(CONFIG_ARCH_AT91SAM9RL)
+#if !defined(CONFIG_SOC_AT91SAM9RL)
 #define at91sam9rl_soc at91_boot_soc
 #endif
 
-#if !defined(CONFIG_ARCH_AT91SAM9X5)
+#if !defined(CONFIG_SOC_AT91SAM9X5)
 #define at91sam9x5_soc at91_boot_soc
 #endif
index 7561eca131b0ba989c42afb1a5ec94fbce98f688..f72d399ff3d65f177ee0e91029e2b88ccb2e942b 100644 (file)
@@ -571,8 +571,10 @@ config MACH_MX35_3DS
        select MXC_DEBUG_BOARD
        select IMX_HAVE_PLATFORM_FSL_USB2_UDC
        select IMX_HAVE_PLATFORM_IMX2_WDT
+       select IMX_HAVE_PLATFORM_IMX_FB
        select IMX_HAVE_PLATFORM_IMX_I2C
        select IMX_HAVE_PLATFORM_IMX_UART
+       select IMX_HAVE_PLATFORM_IPU_CORE
        select IMX_HAVE_PLATFORM_MXC_EHCI
        select IMX_HAVE_PLATFORM_MXC_NAND
        select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
index 5f2f91d1798b6470e2ef9ab5fd88ca22deadafcd..b46cab0ced5383976aee183f0a49ac4f283ab83b 100644 (file)
@@ -243,7 +243,7 @@ static const struct imxuart_platform_data uart_pdata __initconst = {
 static void __maybe_unused ads7846_dev_init(void)
 {
        if (gpio_request(ADS7846_PENDOWN, "ADS7846 pendown") < 0) {
-               printk(KERN_ERR "can't get ads746 pen down GPIO\n");
+               printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
                return;
        }
        gpio_direction_input(ADS7846_PENDOWN);
index 8ecc872b2547f57e01298dc9b19bca2e2d2ee90d..c515f8ede1a145a68a0345ae2d503e02949a9d14 100644 (file)
@@ -194,7 +194,7 @@ static void __init eukrea_cpuimx35_timer_init(void)
        mx35_clocks_init();
 }
 
-struct sys_timer eukrea_cpuimx35_timer = {
+static struct sys_timer eukrea_cpuimx35_timer = {
        .init   = eukrea_cpuimx35_timer_init,
 };
 
index 97046088ff1a81c21ef3061b27d859537b0a19fe..7274e7928136a67d366175329830d4146fb7d08b 100644 (file)
@@ -134,7 +134,7 @@ static void __init mx1ads_timer_init(void)
        mx1_clocks_init(32000);
 }
 
-struct sys_timer mx1ads_timer = {
+static struct sys_timer mx1ads_timer = {
        .init   = mx1ads_timer_init,
 };
 
index e432d4acee1fb72711485002f3108c5b33575d99..d14bbe949a4f2575a13227b6a629fd177774492f 100644 (file)
@@ -304,8 +304,7 @@ static void __init mx21ads_board_init(void)
        imx21_add_mxc_nand(&mx21ads_nand_board_info);
 
        platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
-       platform_device_register_full(
-                       (struct platform_device_info *)&mx21ads_cs8900_devinfo);
+       platform_device_register_full(&mx21ads_cs8900_devinfo);
 }
 
 static void __init mx21ads_timer_init(void)
index 0abef5f13df5089798401a91c1d4b3d0b8696844..686c605879800614656aeeac2d60515a4c2d3536 100644 (file)
@@ -283,7 +283,7 @@ static void __init mx31lite_timer_init(void)
        mx31_clocks_init(26000000);
 }
 
-struct sys_timer mx31lite_timer = {
+static struct sys_timer mx31lite_timer = {
        .init   = mx31lite_timer_init,
 };
 
index f17a15f28316519a1dd01f793742ca1293286df2..1dfe3c7a7be16da73314f96d4b9580aac7f7217b 100644 (file)
@@ -580,7 +580,7 @@ static void __init mx31moboard_timer_init(void)
        mx31_clocks_init(26000000);
 }
 
-struct sys_timer mx31moboard_timer = {
+static struct sys_timer mx31moboard_timer = {
        .init   = mx31moboard_timer_init,
 };
 
index 6ae51c6b95b7c02992d27d6f053b9fb289a92b36..c433187988a2372cd56535db8ef0858788d37fb4 100644 (file)
@@ -419,7 +419,7 @@ static void __init mx35pdk_timer_init(void)
        mx35_clocks_init();
 }
 
-struct sys_timer mx35pdk_timer = {
+static struct sys_timer mx35pdk_timer = {
        .init   = mx35pdk_timer_init,
 };
 
index 586e9f82212400555e42dca1b00492bf0c076b16..86e96ef11f9d554ef926b35b344d1d70441bfa55 100644 (file)
@@ -284,8 +284,7 @@ static struct sys_timer mx51_efikamx_timer = {
        .init = mx51_efikamx_timer_init,
 };
 
-MACHINE_START(MX51_EFIKAMX, "Genesi EfikaMX nettop")
-       /* Maintainer: Amit Kucheria <amit.kucheria@linaro.org> */
+MACHINE_START(MX51_EFIKAMX, "Genesi Efika MX (Smarttop)")
        .atag_offset = 0x100,
        .map_io = mx51_map_io,
        .init_early = imx51_init_early,
index 24aded9e109f09cd9d6e9c89304e0fa3c0d4f629..88f837a6cc76d44c841dfcc23de37b735d878953 100644 (file)
@@ -280,7 +280,7 @@ static struct sys_timer mx51_efikasb_timer = {
        .init   = mx51_efikasb_timer_init,
 };
 
-MACHINE_START(MX51_EFIKASB, "Genesi Efika Smartbook")
+MACHINE_START(MX51_EFIKASB, "Genesi Efika MX (Smartbook)")
        .atag_offset = 0x100,
        .map_io = mx51_map_io,
        .init_early = imx51_init_early,
index 5fddf94cc969f29edc0f824437ec19320efcc5d6..10c9795934a3c87673b9c3434dec4d4de40bc3d9 100644 (file)
@@ -683,7 +683,7 @@ static void __init pcm037_timer_init(void)
        mx31_clocks_init(26000000);
 }
 
-struct sys_timer pcm037_timer = {
+static struct sys_timer pcm037_timer = {
        .init   = pcm037_timer_init,
 };
 
index 237474fcca23eb352bacc211d1173fd7f21d0ac7..73585f55cca0c6b804351064511a69b678fc1a63 100644 (file)
@@ -399,7 +399,7 @@ static void __init pcm043_timer_init(void)
        mx35_clocks_init();
 }
 
-struct sys_timer pcm043_timer = {
+static struct sys_timer pcm043_timer = {
        .init   = pcm043_timer_init,
 };
 
index 033257e553ef7177dae5672f40e3d842d26b7d51..add8c69c6c1ade1e8c020d03166d25365cf7e532 100644 (file)
@@ -310,7 +310,7 @@ static void __init vpr200_timer_init(void)
        mx35_clocks_init();
 }
 
-struct sys_timer vpr200_timer = {
+static struct sys_timer vpr200_timer = {
        .init   = vpr200_timer_init,
 };
 
diff --git a/arch/arm/mach-ixp2000/Kconfig b/arch/arm/mach-ixp2000/Kconfig
deleted file mode 100644 (file)
index 08d2707..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-
-if ARCH_IXP2000
-
-config ARCH_SUPPORTS_BIG_ENDIAN
-       bool
-       default y
-
-menu "Intel IXP2400/2800 Implementation Options"
-
-comment "IXP2400/2800 Platforms"
-
-config ARCH_ENP2611
-       bool "Support Radisys ENP-2611"
-       help
-         Say 'Y' here if you want your kernel to support the Radisys
-         ENP2611 PCI network processing card. For more information on
-         this card, see <file:Documentation/arm/IXP2000>.
-
-config ARCH_IXDP2400
-       bool "Support Intel IXDP2400"
-       help
-         Say 'Y' here if you want your kernel to support the Intel
-         IXDP2400 reference platform. For more information on
-         this platform, see <file:Documentation/arm/IXP2000>.
-
-config ARCH_IXDP2800
-       bool "Support Intel IXDP2800"
-       help
-         Say 'Y' here if you want your kernel to support the Intel
-         IXDP2800 reference platform. For more information on
-         this platform, see <file:Documentation/arm/IXP2000>.
-
-config ARCH_IXDP2X00
-       bool
-       depends on ARCH_IXDP2400 || ARCH_IXDP2800
-       default y       
-
-config ARCH_IXDP2401
-       bool "Support Intel IXDP2401"
-       help
-         Say 'Y' here if you want your kernel to support the Intel
-         IXDP2401 reference platform. For more information on
-         this platform, see <file:Documentation/arm/IXP2000>.
-
-config ARCH_IXDP2801
-       bool "Support Intel IXDP2801 and IXDP28x5"
-       help
-         Say 'Y' here if you want your kernel to support the Intel
-         IXDP2801/2805/2855 reference platforms. For more information on
-         this platform, see <file:Documentation/arm/IXP2000>.
-
-config MACH_IXDP28X5
-       bool
-       depends on ARCH_IXDP2801
-       default y
-
-config ARCH_IXDP2X01
-       bool
-       depends on ARCH_IXDP2401 || ARCH_IXDP2801
-       default y       
-
-config IXP2000_SUPPORT_BROKEN_PCI_IO
-       bool "Support broken PCI I/O on older IXP2000s"
-       default y
-       help
-         Say 'N' here if you only intend to run your kernel on an
-         IXP2000 B0 or later model and do not need the PCI I/O
-         byteswap workaround.  Say 'Y' otherwise.
-
-endmenu
-
-endif
diff --git a/arch/arm/mach-ixp2000/Makefile b/arch/arm/mach-ixp2000/Makefile
deleted file mode 100644 (file)
index 1e6139d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# Makefile for the linux kernel.
-#
-obj-y                  := core.o pci.o
-obj-m                  :=
-obj-n                  :=
-obj-                   :=
-
-obj-$(CONFIG_ARCH_ENP2611)     += enp2611.o
-obj-$(CONFIG_ARCH_IXDP2400)    += ixdp2400.o
-obj-$(CONFIG_ARCH_IXDP2800)    += ixdp2800.o
-obj-$(CONFIG_ARCH_IXDP2X00)    += ixdp2x00.o
-obj-$(CONFIG_ARCH_IXDP2X01)    += ixdp2x01.o
-
diff --git a/arch/arm/mach-ixp2000/Makefile.boot b/arch/arm/mach-ixp2000/Makefile.boot
deleted file mode 100644 (file)
index 9c7af91..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-   zreladdr-y  += 0x00008000
-params_phys-y  := 0x00000100
-
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c
deleted file mode 100644 (file)
index f214cdf..0000000
+++ /dev/null
@@ -1,520 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/core.c
- *
- * Common routines used by all IXP2400/2800 based platforms.
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2004 (C) MontaVista Software, Inc. 
- *
- * Based on work Copyright (C) 2002-2003 Intel Corporation
- * 
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any 
- * warranty of any kind, whether express or implied.
- */
-#include <linux/gpio.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/bitops.h>
-#include <linux/serial_8250.h>
-#include <linux/mm.h>
-#include <linux/export.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <mach/hardware.h>
-#include <asm/irq.h>
-#include <asm/tlbflush.h>
-#include <asm/pgtable.h>
-
-#include <asm/mach/map.h>
-#include <asm/mach/time.h>
-#include <asm/mach/irq.h>
-
-#include <mach/gpio-ixp2000.h>
-
-static DEFINE_SPINLOCK(ixp2000_slowport_lock);
-static unsigned long ixp2000_slowport_irq_flags;
-
-/*************************************************************************
- * Slowport access routines
- *************************************************************************/
-void ixp2000_acquire_slowport(struct slowport_cfg *new_cfg, struct slowport_cfg *old_cfg)
-{
-       spin_lock_irqsave(&ixp2000_slowport_lock, ixp2000_slowport_irq_flags);
-
-       old_cfg->CCR = *IXP2000_SLOWPORT_CCR;
-       old_cfg->WTC = *IXP2000_SLOWPORT_WTC2;
-       old_cfg->RTC = *IXP2000_SLOWPORT_RTC2;
-       old_cfg->PCR = *IXP2000_SLOWPORT_PCR;
-       old_cfg->ADC = *IXP2000_SLOWPORT_ADC;
-
-       ixp2000_reg_write(IXP2000_SLOWPORT_CCR, new_cfg->CCR);
-       ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, new_cfg->WTC);
-       ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, new_cfg->RTC);
-       ixp2000_reg_write(IXP2000_SLOWPORT_PCR, new_cfg->PCR);
-       ixp2000_reg_wrb(IXP2000_SLOWPORT_ADC, new_cfg->ADC);
-}
-
-void ixp2000_release_slowport(struct slowport_cfg *old_cfg)
-{
-       ixp2000_reg_write(IXP2000_SLOWPORT_CCR, old_cfg->CCR);
-       ixp2000_reg_write(IXP2000_SLOWPORT_WTC2, old_cfg->WTC);
-       ixp2000_reg_write(IXP2000_SLOWPORT_RTC2, old_cfg->RTC);
-       ixp2000_reg_write(IXP2000_SLOWPORT_PCR, old_cfg->PCR);
-       ixp2000_reg_wrb(IXP2000_SLOWPORT_ADC, old_cfg->ADC);
-
-       spin_unlock_irqrestore(&ixp2000_slowport_lock, 
-                                       ixp2000_slowport_irq_flags);
-}
-
-/*************************************************************************
- * Chip specific mappings shared by all IXP2000 systems
- *************************************************************************/
-static struct map_desc ixp2000_io_desc[] __initdata = {
-       {
-               .virtual        = IXP2000_CAP_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_CAP_PHYS_BASE),
-               .length         = IXP2000_CAP_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_INTCTL_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_INTCTL_PHYS_BASE),
-               .length         = IXP2000_INTCTL_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_PCI_CREG_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_PCI_CREG_PHYS_BASE),
-               .length         = IXP2000_PCI_CREG_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_PCI_CSR_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_PCI_CSR_PHYS_BASE),
-               .length         = IXP2000_PCI_CSR_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_MSF_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_MSF_PHYS_BASE),
-               .length         = IXP2000_MSF_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_SCRATCH_RING_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_SCRATCH_RING_PHYS_BASE),
-               .length         = IXP2000_SCRATCH_RING_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_SRAM0_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_SRAM0_PHYS_BASE),
-               .length         = IXP2000_SRAM0_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_PCI_IO_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_PCI_IO_PHYS_BASE),
-               .length         = IXP2000_PCI_IO_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_PCI_CFG0_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_PCI_CFG0_PHYS_BASE),
-               .length         = IXP2000_PCI_CFG0_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = IXP2000_PCI_CFG1_VIRT_BASE,
-               .pfn            = __phys_to_pfn(IXP2000_PCI_CFG1_PHYS_BASE),
-               .length         = IXP2000_PCI_CFG1_SIZE,
-               .type           = MT_DEVICE,
-       }
-};
-
-void __init ixp2000_map_io(void)
-{
-       iotable_init(ixp2000_io_desc, ARRAY_SIZE(ixp2000_io_desc));
-
-       /* Set slowport to 8-bit mode.  */
-       ixp2000_reg_wrb(IXP2000_SLOWPORT_FRM, 1);
-}
-
-
-/*************************************************************************
- * Serial port support for IXP2000
- *************************************************************************/
-static struct plat_serial8250_port ixp2000_serial_port[] = {
-       {
-               .mapbase        = IXP2000_UART_PHYS_BASE,
-               .membase        = (char *)(IXP2000_UART_VIRT_BASE + 3),
-               .irq            = IRQ_IXP2000_UART,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-               .iotype         = UPIO_MEM,
-               .regshift       = 2,
-               .uartclk        = 50000000,
-       },
-       { },
-};
-
-static struct resource ixp2000_uart_resource = {
-       .start          = IXP2000_UART_PHYS_BASE,
-       .end            = IXP2000_UART_PHYS_BASE + 0x1f,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixp2000_serial_device = {
-       .name           = "serial8250",
-       .id             = PLAT8250_DEV_PLATFORM,
-       .dev            = {
-               .platform_data          = ixp2000_serial_port,
-       },
-       .num_resources  = 1,
-       .resource       = &ixp2000_uart_resource,
-};
-
-void __init ixp2000_uart_init(void)
-{
-       platform_device_register(&ixp2000_serial_device);
-}
-
-
-/*************************************************************************
- * Timer-tick functions for IXP2000
- *************************************************************************/
-static unsigned ticks_per_jiffy;
-static unsigned ticks_per_usec;
-static unsigned next_jiffy_time;
-static volatile unsigned long *missing_jiffy_timer_csr;
-
-unsigned long ixp2000_gettimeoffset (void)
-{
-       unsigned long offset;
-
-       offset = next_jiffy_time - *missing_jiffy_timer_csr;
-
-       return offset / ticks_per_usec;
-}
-
-static irqreturn_t ixp2000_timer_interrupt(int irq, void *dev_id)
-{
-       /* clear timer 1 */
-       ixp2000_reg_wrb(IXP2000_T1_CLR, 1);
-
-       while ((signed long)(next_jiffy_time - *missing_jiffy_timer_csr)
-                                                       >= ticks_per_jiffy) {
-               timer_tick();
-               next_jiffy_time -= ticks_per_jiffy;
-       }
-
-       return IRQ_HANDLED;
-}
-
-static struct irqaction ixp2000_timer_irq = {
-       .name           = "IXP2000 Timer Tick",
-       .flags          = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
-       .handler        = ixp2000_timer_interrupt,
-};
-
-void __init ixp2000_init_time(unsigned long tick_rate)
-{
-       ticks_per_jiffy = (tick_rate + HZ/2) / HZ;
-       ticks_per_usec = tick_rate / 1000000;
-
-       /*
-        * We use timer 1 as our timer interrupt.
-        */
-       ixp2000_reg_write(IXP2000_T1_CLR, 0);
-       ixp2000_reg_write(IXP2000_T1_CLD, ticks_per_jiffy - 1);
-       ixp2000_reg_write(IXP2000_T1_CTL, (1 << 7));
-
-       /*
-        * We use a second timer as a monotonic counter for tracking
-        * missed jiffies.  The IXP2000 has four timers, but if we're
-        * on an A-step IXP2800, timer 2 and 3 don't work, so on those
-        * chips we use timer 4.  Timer 4 is the only timer that can
-        * be used for the watchdog, so we use timer 2 if we're on a
-        * non-buggy chip.
-        */
-       if ((*IXP2000_PRODUCT_ID & 0x001ffef0) == 0x00000000) {
-               printk(KERN_INFO "Enabling IXP2800 erratum #25 workaround\n");
-
-               ixp2000_reg_write(IXP2000_T4_CLR, 0);
-               ixp2000_reg_write(IXP2000_T4_CLD, -1);
-               ixp2000_reg_wrb(IXP2000_T4_CTL, (1 << 7));
-               missing_jiffy_timer_csr = IXP2000_T4_CSR;
-       } else {
-               ixp2000_reg_write(IXP2000_T2_CLR, 0);
-               ixp2000_reg_write(IXP2000_T2_CLD, -1);
-               ixp2000_reg_wrb(IXP2000_T2_CTL, (1 << 7));
-               missing_jiffy_timer_csr = IXP2000_T2_CSR;
-       }
-       next_jiffy_time = 0xffffffff;
-
-       /* register for interrupt */
-       setup_irq(IRQ_IXP2000_TIMER1, &ixp2000_timer_irq);
-}
-
-/*************************************************************************
- * GPIO helpers
- *************************************************************************/
-static unsigned long GPIO_IRQ_falling_edge;
-static unsigned long GPIO_IRQ_rising_edge;
-static unsigned long GPIO_IRQ_level_low;
-static unsigned long GPIO_IRQ_level_high;
-
-static void update_gpio_int_csrs(void)
-{
-       ixp2000_reg_write(IXP2000_GPIO_FEDR, GPIO_IRQ_falling_edge);
-       ixp2000_reg_write(IXP2000_GPIO_REDR, GPIO_IRQ_rising_edge);
-       ixp2000_reg_write(IXP2000_GPIO_LSLR, GPIO_IRQ_level_low);
-       ixp2000_reg_wrb(IXP2000_GPIO_LSHR, GPIO_IRQ_level_high);
-}
-
-void gpio_line_config(int line, int direction)
-{
-       unsigned long flags;
-
-       local_irq_save(flags);
-       if (direction == GPIO_OUT) {
-               /* if it's an output, it ain't an interrupt anymore */
-               GPIO_IRQ_falling_edge &= ~(1 << line);
-               GPIO_IRQ_rising_edge &= ~(1 << line);
-               GPIO_IRQ_level_low &= ~(1 << line);
-               GPIO_IRQ_level_high &= ~(1 << line);
-               update_gpio_int_csrs();
-
-               ixp2000_reg_wrb(IXP2000_GPIO_PDSR, 1 << line);
-       } else if (direction == GPIO_IN) {
-               ixp2000_reg_wrb(IXP2000_GPIO_PDCR, 1 << line);
-       }
-       local_irq_restore(flags);
-}
-EXPORT_SYMBOL(gpio_line_config);
-
-
-/*************************************************************************
- * IRQ handling IXP2000
- *************************************************************************/
-static void ixp2000_GPIO_irq_handler(unsigned int irq, struct irq_desc *desc)
-{                               
-       int i;
-       unsigned long status = *IXP2000_GPIO_INST;
-                  
-       for (i = 0; i <= 7; i++) {
-               if (status & (1<<i)) {
-                       generic_handle_irq(i + IRQ_IXP2000_GPIO0);
-               }
-       }
-}
-
-static int ixp2000_GPIO_irq_type(struct irq_data *d, unsigned int type)
-{
-       int line = d->irq - IRQ_IXP2000_GPIO0;
-
-       /*
-        * First, configure this GPIO line as an input.
-        */
-       ixp2000_reg_write(IXP2000_GPIO_PDCR, 1 << line);
-
-       /*
-        * Then, set the proper trigger type.
-        */
-       if (type & IRQ_TYPE_EDGE_FALLING)
-               GPIO_IRQ_falling_edge |= 1 << line;
-       else
-               GPIO_IRQ_falling_edge &= ~(1 << line);
-       if (type & IRQ_TYPE_EDGE_RISING)
-               GPIO_IRQ_rising_edge |= 1 << line;
-       else
-               GPIO_IRQ_rising_edge &= ~(1 << line);
-       if (type & IRQ_TYPE_LEVEL_LOW)
-               GPIO_IRQ_level_low |= 1 << line;
-       else
-               GPIO_IRQ_level_low &= ~(1 << line);
-       if (type & IRQ_TYPE_LEVEL_HIGH)
-               GPIO_IRQ_level_high |= 1 << line;
-       else
-               GPIO_IRQ_level_high &= ~(1 << line);
-       update_gpio_int_csrs();
-
-       return 0;
-}
-
-static void ixp2000_GPIO_irq_mask_ack(struct irq_data *d)
-{
-       unsigned int irq = d->irq;
-
-       ixp2000_reg_write(IXP2000_GPIO_INCR, (1 << (irq - IRQ_IXP2000_GPIO0)));
-
-       ixp2000_reg_write(IXP2000_GPIO_EDSR, (1 << (irq - IRQ_IXP2000_GPIO0)));
-       ixp2000_reg_write(IXP2000_GPIO_LDSR, (1 << (irq - IRQ_IXP2000_GPIO0)));
-       ixp2000_reg_wrb(IXP2000_GPIO_INST, (1 << (irq - IRQ_IXP2000_GPIO0)));
-}
-
-static void ixp2000_GPIO_irq_mask(struct irq_data *d)
-{
-       unsigned int irq = d->irq;
-
-       ixp2000_reg_wrb(IXP2000_GPIO_INCR, (1 << (irq - IRQ_IXP2000_GPIO0)));
-}
-
-static void ixp2000_GPIO_irq_unmask(struct irq_data *d)
-{
-       unsigned int irq = d->irq;
-
-       ixp2000_reg_write(IXP2000_GPIO_INSR, (1 << (irq - IRQ_IXP2000_GPIO0)));
-}
-
-static struct irq_chip ixp2000_GPIO_irq_chip = {
-       .irq_ack        = ixp2000_GPIO_irq_mask_ack,
-       .irq_mask       = ixp2000_GPIO_irq_mask,
-       .irq_unmask     = ixp2000_GPIO_irq_unmask,
-       .irq_set_type   = ixp2000_GPIO_irq_type,
-};
-
-static void ixp2000_pci_irq_mask(struct irq_data *d)
-{
-       unsigned long temp = *IXP2000_PCI_XSCALE_INT_ENABLE;
-       if (d->irq == IRQ_IXP2000_PCIA)
-               ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 26)));
-       else if (d->irq == IRQ_IXP2000_PCIB)
-               ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, (temp & ~(1 << 27)));
-}
-
-static void ixp2000_pci_irq_unmask(struct irq_data *d)
-{
-       unsigned long temp = *IXP2000_PCI_XSCALE_INT_ENABLE;
-       if (d->irq == IRQ_IXP2000_PCIA)
-               ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp | (1 << 26)));
-       else if (d->irq == IRQ_IXP2000_PCIB)
-               ixp2000_reg_write(IXP2000_PCI_XSCALE_INT_ENABLE, (temp | (1 << 27)));
-}
-
-/*
- * Error interrupts. These are used extensively by the microengine drivers
- */
-static void ixp2000_err_irq_handler(unsigned int irq, struct irq_desc *desc)
-{
-       int i;
-       unsigned long status = *IXP2000_IRQ_ERR_STATUS;
-
-       for(i = 31; i >= 0; i--) {
-               if(status & (1 << i)) {
-                       generic_handle_irq(IRQ_IXP2000_DRAM0_MIN_ERR + i);
-               }
-       }
-}
-
-static void ixp2000_err_irq_mask(struct irq_data *d)
-{
-       ixp2000_reg_write(IXP2000_IRQ_ERR_ENABLE_CLR,
-                       (1 << (d->irq - IRQ_IXP2000_DRAM0_MIN_ERR)));
-}
-
-static void ixp2000_err_irq_unmask(struct irq_data *d)
-{
-       ixp2000_reg_write(IXP2000_IRQ_ERR_ENABLE_SET,
-                       (1 << (d->irq - IRQ_IXP2000_DRAM0_MIN_ERR)));
-}
-
-static struct irq_chip ixp2000_err_irq_chip = {
-       .irq_ack        = ixp2000_err_irq_mask,
-       .irq_mask       = ixp2000_err_irq_mask,
-       .irq_unmask     = ixp2000_err_irq_unmask
-};
-
-static struct irq_chip ixp2000_pci_irq_chip = {
-       .irq_ack        = ixp2000_pci_irq_mask,
-       .irq_mask       = ixp2000_pci_irq_mask,
-       .irq_unmask     = ixp2000_pci_irq_unmask
-};
-
-static void ixp2000_irq_mask(struct irq_data *d)
-{
-       ixp2000_reg_wrb(IXP2000_IRQ_ENABLE_CLR, (1 << d->irq));
-}
-
-static void ixp2000_irq_unmask(struct irq_data *d)
-{
-       ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET, (1 << d->irq));
-}
-
-static struct irq_chip ixp2000_irq_chip = {
-       .irq_ack        = ixp2000_irq_mask,
-       .irq_mask       = ixp2000_irq_mask,
-       .irq_unmask     = ixp2000_irq_unmask
-};
-
-void __init ixp2000_init_irq(void)
-{
-       int irq;
-
-       /*
-        * Mask all sources
-        */
-       ixp2000_reg_write(IXP2000_IRQ_ENABLE_CLR, 0xffffffff);
-       ixp2000_reg_write(IXP2000_FIQ_ENABLE_CLR, 0xffffffff);
-
-       /* clear all GPIO edge/level detects */
-       ixp2000_reg_write(IXP2000_GPIO_REDR, 0);
-       ixp2000_reg_write(IXP2000_GPIO_FEDR, 0);
-       ixp2000_reg_write(IXP2000_GPIO_LSHR, 0);
-       ixp2000_reg_write(IXP2000_GPIO_LSLR, 0);
-       ixp2000_reg_write(IXP2000_GPIO_INCR, -1);
-
-       /* clear PCI interrupt sources */
-       ixp2000_reg_wrb(IXP2000_PCI_XSCALE_INT_ENABLE, 0);
-
-       /*
-        * Certain bits in the IRQ status register of the 
-        * IXP2000 are reserved. Instead of trying to map
-        * things non 1:1 from bit position to IRQ number,
-        * we mark the reserved IRQs as invalid. This makes
-        * our mask/unmask code much simpler.
-        */
-       for (irq = IRQ_IXP2000_SOFT_INT; irq <= IRQ_IXP2000_THDB3; irq++) {
-               if ((1 << irq) & IXP2000_VALID_IRQ_MASK) {
-                       irq_set_chip_and_handler(irq, &ixp2000_irq_chip,
-                                                handle_level_irq);
-                       set_irq_flags(irq, IRQF_VALID);
-               } else set_irq_flags(irq, 0);
-       }
-
-       for (irq = IRQ_IXP2000_DRAM0_MIN_ERR; irq <= IRQ_IXP2000_SP_INT; irq++) {
-               if((1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR)) &
-                               IXP2000_VALID_ERR_IRQ_MASK) {
-                       irq_set_chip_and_handler(irq, &ixp2000_err_irq_chip,
-                                                handle_level_irq);
-                       set_irq_flags(irq, IRQF_VALID);
-               }
-               else
-                       set_irq_flags(irq, 0);
-       }
-       irq_set_chained_handler(IRQ_IXP2000_ERRSUM, ixp2000_err_irq_handler);
-
-       for (irq = IRQ_IXP2000_GPIO0; irq <= IRQ_IXP2000_GPIO7; irq++) {
-               irq_set_chip_and_handler(irq, &ixp2000_GPIO_irq_chip,
-                                        handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID);
-       }
-       irq_set_chained_handler(IRQ_IXP2000_GPIO, ixp2000_GPIO_irq_handler);
-
-       /*
-        * Enable PCI irqs.  The actual PCI[AB] decoding is done in
-        * entry-macro.S, so we don't need a chained handler for the
-        * PCI interrupt source.
-        */
-       ixp2000_reg_write(IXP2000_IRQ_ENABLE_SET, (1 << IRQ_IXP2000_PCI));
-       for (irq = IRQ_IXP2000_PCIA; irq <= IRQ_IXP2000_PCIB; irq++) {
-               irq_set_chip_and_handler(irq, &ixp2000_pci_irq_chip,
-                                        handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID);
-       }
-}
-
-void ixp2000_restart(char mode, const char *cmd)
-{
-       ixp2000_reg_wrb(IXP2000_RESET0, RSTALL);
-}
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c
deleted file mode 100644 (file)
index 4867f40..0000000
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/enp2611.c
- *
- * Radisys ENP-2611 support.
- *
- * Created 2004 by Lennert Buytenhek from the ixdp2x01 code.  The
- * original version carries the following notices:
- *
- * Original Author: Andrzej Mialkowski <andrzej.mialkowski@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002-2003 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/bitops.h>
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/serial_core.h>
-#include <linux/platform_device.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/pci.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-
-/*************************************************************************
- * ENP-2611 timer tick configuration
- *************************************************************************/
-static void __init enp2611_timer_init(void)
-{
-       ixp2000_init_time(50 * 1000 * 1000);
-}
-
-static struct sys_timer enp2611_timer = {
-       .init           = enp2611_timer_init,
-       .offset         = ixp2000_gettimeoffset,
-};
-
-
-/*************************************************************************
- * ENP-2611 I/O
- *************************************************************************/
-static struct map_desc enp2611_io_desc[] __initdata = {
-       {
-               .virtual        = ENP2611_CALEB_VIRT_BASE,
-               .pfn            = __phys_to_pfn(ENP2611_CALEB_PHYS_BASE),
-               .length         = ENP2611_CALEB_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = ENP2611_PM3386_0_VIRT_BASE,
-               .pfn            = __phys_to_pfn(ENP2611_PM3386_0_PHYS_BASE),
-               .length         = ENP2611_PM3386_0_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = ENP2611_PM3386_1_VIRT_BASE,
-               .pfn            = __phys_to_pfn(ENP2611_PM3386_1_PHYS_BASE),
-               .length         = ENP2611_PM3386_1_SIZE,
-               .type           = MT_DEVICE,
-       }
-};
-
-void __init enp2611_map_io(void)
-{
-       ixp2000_map_io();
-       iotable_init(enp2611_io_desc, ARRAY_SIZE(enp2611_io_desc));
-}
-
-
-/*************************************************************************
- * ENP-2611 PCI
- *************************************************************************/
-static int enp2611_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       sys->mem_offset = 0xe0000000;
-       ixp2000_pci_setup(nr, sys);
-       return 1;
-}
-
-static void __init enp2611_pci_preinit(void)
-{
-       ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000);
-       ixp2000_pci_preinit();
-       pcibios_setup("firmware");
-}
-
-static inline int enp2611_pci_valid_device(struct pci_bus *bus,
-                                               unsigned int devfn)
-{
-       /* The 82559 ethernet controller appears at both PCI:1:0:0 and
-        * PCI:1:2:0, so let's pretend the second one isn't there.
-        */
-       if (bus->number == 0x01 && devfn == 0x10)
-               return 0;
-
-       return 1;
-}
-
-static int enp2611_pci_read_config(struct pci_bus *bus, unsigned int devfn,
-                                       int where, int size, u32 *value)
-{
-       if (enp2611_pci_valid_device(bus, devfn))
-               return ixp2000_pci_read_config(bus, devfn, where, size, value);
-
-       return PCIBIOS_DEVICE_NOT_FOUND;
-}
-
-static int enp2611_pci_write_config(struct pci_bus *bus, unsigned int devfn,
-                                       int where, int size, u32 value)
-{
-       if (enp2611_pci_valid_device(bus, devfn))
-               return ixp2000_pci_write_config(bus, devfn, where, size, value);
-
-       return PCIBIOS_DEVICE_NOT_FOUND;
-}
-
-static struct pci_ops enp2611_pci_ops = {
-       .read   = enp2611_pci_read_config,
-       .write  = enp2611_pci_write_config
-};
-
-static struct pci_bus * __init enp2611_pci_scan_bus(int nr,
-                                               struct pci_sys_data *sys)
-{
-       return pci_scan_root_bus(NULL, sys->busnr, &enp2611_pci_ops, sys,
-                                &sys->resources);
-}
-
-static int __init enp2611_pci_map_irq(const struct pci_dev *dev, u8 slot,
-       u8 pin)
-{
-       int irq;
-
-       if (dev->bus->number == 0 && PCI_SLOT(dev->devfn) == 0) {
-               /* IXP2400. */
-               irq = IRQ_IXP2000_PCIA;
-       } else if (dev->bus->number == 0 && PCI_SLOT(dev->devfn) == 1) {
-               /* 21555 non-transparent bridge.  */
-               irq = IRQ_IXP2000_PCIB;
-       } else if (dev->bus->number == 0 && PCI_SLOT(dev->devfn) == 4) {
-               /* PCI2050B transparent bridge.  */
-               irq = -1;
-       } else if (dev->bus->number == 1 && PCI_SLOT(dev->devfn) == 0) {
-               /* 82559 ethernet.  */
-               irq = IRQ_IXP2000_PCIA;
-       } else if (dev->bus->number == 1 && PCI_SLOT(dev->devfn) == 1) {
-               /* SPI-3 option board.  */
-               irq = IRQ_IXP2000_PCIB;
-       } else {
-               printk(KERN_ERR "enp2611_pci_map_irq() called for unknown "
-                               "device PCI:%d:%d:%d\n", dev->bus->number,
-                               PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
-               irq = -1;
-       }
-
-       return irq;
-}
-
-struct hw_pci enp2611_pci __initdata = {
-       .nr_controllers = 1,
-       .setup          = enp2611_pci_setup,
-       .preinit        = enp2611_pci_preinit,
-       .scan           = enp2611_pci_scan_bus,
-       .map_irq        = enp2611_pci_map_irq,
-};
-
-int __init enp2611_pci_init(void)
-{
-       if (machine_is_enp2611())
-               pci_common_init(&enp2611_pci);
-
-       return 0;
-}
-
-subsys_initcall(enp2611_pci_init);
-
-
-/*************************************************************************
- * ENP-2611 Machine Initialization
- *************************************************************************/
-static struct flash_platform_data enp2611_flash_platform_data = {
-       .map_name       = "cfi_probe",
-       .width          = 1,
-};
-
-static struct ixp2000_flash_data enp2611_flash_data = {
-       .platform_data  = &enp2611_flash_platform_data,
-       .nr_banks       = 1
-};
-
-static struct resource enp2611_flash_resource = {
-       .start          = 0xc4000000,
-       .end            = 0xc4000000 + 0x00ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device enp2611_flash = {
-       .name           = "IXP2000-Flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &enp2611_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &enp2611_flash_resource,
-};
-
-static struct ixp2000_i2c_pins enp2611_i2c_gpio_pins = {
-       .sda_pin        = ENP2611_GPIO_SDA,
-       .scl_pin        = ENP2611_GPIO_SCL,
-};
-
-static struct platform_device enp2611_i2c_controller = {
-       .name           = "IXP2000-I2C",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &enp2611_i2c_gpio_pins
-       },
-       .num_resources  = 0
-};
-
-static struct platform_device *enp2611_devices[] __initdata = {
-       &enp2611_flash,
-       &enp2611_i2c_controller
-};
-
-static void __init enp2611_init_machine(void)
-{
-       platform_add_devices(enp2611_devices, ARRAY_SIZE(enp2611_devices));
-       ixp2000_uart_init();
-}
-
-
-MACHINE_START(ENP2611, "Radisys ENP-2611 PCI network processor board")
-       /* Maintainer: Lennert Buytenhek <buytenh@wantstofly.org> */
-       .atag_offset    = 0x100,
-       .map_io         = enp2611_map_io,
-       .init_irq       = ixp2000_init_irq,
-       .timer          = &enp2611_timer,
-       .init_machine   = enp2611_init_machine,
-       .restart        = ixp2000_restart,
-MACHINE_END
-
-
diff --git a/arch/arm/mach-ixp2000/include/mach/debug-macro.S b/arch/arm/mach-ixp2000/include/mach/debug-macro.S
deleted file mode 100644 (file)
index bdd3ccd..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* arch/arm/mach-ixp2000/include/mach/debug-macro.S
- *
- * Debugging macro include header
- *
- *  Copyright (C) 1994-1999 Russell King
- *  Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
-*/
-
-               .macro  addruart, rp, rv, tmp
-               mov     \rp, #0x00030000
-#ifdef __ARMEB__
-               orr     \rp, \rp, #0x00000003
-#endif
-               orr     \rv, \rp, #0xfe000000   @ virtual base
-               orr     \rv, \rv, #0x00f00000
-               orr     \rp, \rp, #0xc0000000   @ Physical base
-               .endm
-
-#define UART_SHIFT     2
-#include <asm/hardware/debug-8250.S>
diff --git a/arch/arm/mach-ixp2000/include/mach/enp2611.h b/arch/arm/mach-ixp2000/include/mach/enp2611.h
deleted file mode 100644 (file)
index 9ce3690..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/enp2611.h
- *
- * Register and other defines for Radisys ENP-2611
- *
- * Created 2004 by Lennert Buytenhek from the ixdp2x01 code.  The
- * original version carries the following notices:
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef __ENP2611_H
-#define __ENP2611_H
-
-#define ENP2611_CALEB_PHYS_BASE                0xc5000000
-#define ENP2611_CALEB_VIRT_BASE                0xfe000000
-#define ENP2611_CALEB_SIZE             0x00100000
-
-#define ENP2611_PM3386_0_PHYS_BASE     0xc6000000
-#define ENP2611_PM3386_0_VIRT_BASE     0xfe100000
-#define ENP2611_PM3386_0_SIZE          0x00100000
-
-#define ENP2611_PM3386_1_PHYS_BASE     0xc6400000
-#define ENP2611_PM3386_1_VIRT_BASE     0xfe200000
-#define ENP2611_PM3386_1_SIZE          0x00100000
-
-#define ENP2611_GPIO_SCL               7
-#define ENP2611_GPIO_SDA               6
-
-#define IRQ_ENP2611_THERMAL            IRQ_IXP2000_GPIO4
-#define IRQ_ENP2611_OPTION_BOARD       IRQ_IXP2000_GPIO3
-#define IRQ_ENP2611_CALEB              IRQ_IXP2000_GPIO2
-#define IRQ_ENP2611_PM3386_1           IRQ_IXP2000_GPIO1
-#define IRQ_ENP2611_PM3386_0           IRQ_IXP2000_GPIO0
-
-
-#endif
diff --git a/arch/arm/mach-ixp2000/include/mach/entry-macro.S b/arch/arm/mach-ixp2000/include/mach/entry-macro.S
deleted file mode 100644 (file)
index c4444df..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/entry-macro.S
- *
- * Low-level IRQ helper macros for IXP2000-based platforms
- *
- * This file is licensed under  the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-#include <mach/irqs.h>
-
-               .macro  get_irqnr_preamble, base, tmp
-               .endm
-
-               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-
-               mov     \irqnr, #0x0              @clear out irqnr as default
-                mov    \base, #0xfe000000
-               orr     \base, \base, #0x00e00000
-               orr     \base, \base, #0x08
-               ldr     \irqstat, [\base]         @ get interrupts
-
-               cmp     \irqstat, #0
-               beq     1001f
-
-               clz     \irqnr, \irqstat
-               mov     \base, #31
-               subs    \irqnr, \base, \irqnr
-
-               /*
-                * We handle PCIA and PCIB here so we don't have an
-                * extra layer of code just to check these two bits.
-                */
-               cmp     \irqnr, #IRQ_IXP2000_PCI
-               bne     1001f
-
-               mov     \base, #0xfe000000
-               orr     \base, \base, #0x00c00000
-               orr     \base, \base, #0x00000100
-               orr     \base, \base, #0x00000058
-               ldr     \irqstat, [\base]
-
-               mov     \tmp, #(1<<26)
-               tst     \irqstat, \tmp
-               movne   \irqnr, #IRQ_IXP2000_PCIA
-               bne     1001f
-
-               mov     \tmp, #(1<<27)
-               tst     \irqstat, \tmp
-               movne   \irqnr, #IRQ_IXP2000_PCIB
-
-1001:
-               .endm
-
diff --git a/arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h b/arch/arm/mach-ixp2000/include/mach/gpio-ixp2000.h
deleted file mode 100644 (file)
index af836c7..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/gpio.h
- *
- * Copyright (C) 2002 Intel Corporation.
- *
- * This program is free software, you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-/*
- * IXP2000 GPIO in/out, edge/level detection for IRQs:
- * IRQs are generated on Falling-edge, Rising-Edge, Level-low, Level-High
- * or both Falling-edge and Rising-edge.
- * This must be called *before* the corresponding IRQ is registerd.
- * Use this instead of directly setting the GPIO registers.
- * GPIOs may also be used as GPIOs (e.g. for emulating i2c/smb)
- */
-#ifndef __ASM_ARCH_GPIO_H
-#define __ASM_ARCH_GPIO_H
-
-#ifndef __ASSEMBLY__
-
-#define GPIO_IN                                0
-#define GPIO_OUT                       1
-
-#define IXP2000_GPIO_LOW               0
-#define IXP2000_GPIO_HIGH              1
-
-extern void gpio_line_config(int line, int direction);
-
-static inline int gpio_line_get(int line)
-{
-       return (((*IXP2000_GPIO_PLR) >> line) & 1);
-}
-
-static inline void gpio_line_set(int line, int value)
-{
-       if (value == IXP2000_GPIO_HIGH) {
-               ixp2000_reg_write(IXP2000_GPIO_POSR, 1 << line);
-       } else if (value == IXP2000_GPIO_LOW) {
-               ixp2000_reg_write(IXP2000_GPIO_POCR, 1 << line);
-       }
-}
-
-#endif /* !__ASSEMBLY__ */
-
-#endif /* ASM_ARCH_IXP2000_GPIO_H_ */
diff --git a/arch/arm/mach-ixp2000/include/mach/hardware.h b/arch/arm/mach-ixp2000/include/mach/hardware.h
deleted file mode 100644 (file)
index cdaf1db..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/hardware.h
- *
- * Hardware definitions for IXP2400/2800 based systems
- *
- * Original Author: Naeem M Afzal <naeem.m.afzal@intel.com>
- *
- * Maintainer: Deepak Saxena <dsaxena@mvista.com>
- *
- * Copyright (C) 2001-2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H__
-#define __ASM_ARCH_HARDWARE_H__
-
-#include "ixp2000-regs.h"      /* Chipset Registers */
-
-/*
- * Platform helper functions
- */
-#include "platform.h"
-
-/*
- * Platform-specific bits
- */
-#include "enp2611.h"           /* ENP-2611 */
-#include "ixdp2x00.h"          /* IXDP2400/2800 */
-#include "ixdp2x01.h"          /* IXDP2401/2801 */
-
-#endif  /* _ASM_ARCH_HARDWARE_H__ */
diff --git a/arch/arm/mach-ixp2000/include/mach/io.h b/arch/arm/mach-ixp2000/include/mach/io.h
deleted file mode 100644 (file)
index f6552d6..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/io.h
- *
- * Original Author: Naeem M Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002  Intel Corp.
- * Copyrgiht (C) 2003-2004 MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARM_ARCH_IO_H
-#define __ASM_ARM_ARCH_IO_H
-
-#include <mach/hardware.h>
-
-#define IO_SPACE_LIMIT         0xffffffff
-
-/*
- * The A? revisions of the IXP2000s assert byte lanes for PCI I/O
- * transactions the other way round (MEM transactions don't have this
- * issue), so if we want to support those models, we need to override
- * the standard I/O functions.
- *
- * B0 and later have a bit that can be set to 1 to get the proper
- * behavior for I/O transactions, which then allows us to use the
- * standard I/O functions.  This is what we do if the user does not
- * explicitly ask for support for pre-B0.
- */
-#ifdef CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO
-#define ___io(p)               ((void __iomem *)((p)+IXP2000_PCI_IO_VIRT_BASE))
-
-#define alignb(addr)           (void __iomem *)((unsigned long)(addr) ^ 3)
-#define alignw(addr)           (void __iomem *)((unsigned long)(addr) ^ 2)
-
-#define outb(v,p)              __raw_writeb((v),alignb(___io(p)))
-#define outw(v,p)              __raw_writew((v),alignw(___io(p)))
-#define outl(v,p)              __raw_writel((v),___io(p))
-
-#define inb(p)         ({ unsigned int __v = __raw_readb(alignb(___io(p))); __v; })
-#define inw(p)         \
-       ({ unsigned int __v = (__raw_readw(alignw(___io(p)))); __v; })
-#define inl(p)         \
-       ({ unsigned int __v = (__raw_readl(___io(p))); __v; })
-
-#define outsb(p,d,l)           __raw_writesb(alignb(___io(p)),d,l)
-#define outsw(p,d,l)           __raw_writesw(alignw(___io(p)),d,l)
-#define outsl(p,d,l)           __raw_writesl(___io(p),d,l)
-
-#define insb(p,d,l)            __raw_readsb(alignb(___io(p)),d,l)
-#define insw(p,d,l)            __raw_readsw(alignw(___io(p)),d,l)
-#define insl(p,d,l)            __raw_readsl(___io(p),d,l)
-
-#define __is_io_address(p)     ((((unsigned long)(p)) & ~(IXP2000_PCI_IO_SIZE - 1)) == IXP2000_PCI_IO_VIRT_BASE)
-
-#define ioread8(p)                                             \
-       ({                                                      \
-               unsigned int __v;                               \
-                                                               \
-               if (__is_io_address(p)) {                       \
-                       __v = __raw_readb(alignb(p));           \
-               } else {                                        \
-                       __v = __raw_readb(p);                   \
-               }                                               \
-                                                               \
-               __v;                                            \
-       })                                                      \
-
-#define ioread16(p)                                            \
-       ({                                                      \
-               unsigned int __v;                               \
-                                                               \
-               if (__is_io_address(p)) {                       \
-                       __v = __raw_readw(alignw(p));           \
-               } else {                                        \
-                       __v = le16_to_cpu(__raw_readw(p));      \
-               }                                               \
-                                                               \
-               __v;                                            \
-       })
-
-#define ioread32(p)                                            \
-       ({                                                      \
-               unsigned int __v;                               \
-                                                               \
-               if (__is_io_address(p)) {                       \
-                       __v = __raw_readl(p);                   \
-               } else {                                        \
-                       __v = le32_to_cpu(__raw_readl(p));      \
-               }                                               \
-                                                               \
-                __v;                                           \
-       })
-
-#define iowrite8(v,p)                                          \
-       ({                                                      \
-               if (__is_io_address(p)) {                       \
-                       __raw_writeb((v), alignb(p));           \
-               } else {                                        \
-                       __raw_writeb((v), p);                   \
-               }                                               \
-       })
-
-#define iowrite16(v,p)                                         \
-       ({                                                      \
-               if (__is_io_address(p)) {                       \
-                       __raw_writew((v), alignw(p));           \
-               } else {                                        \
-                       __raw_writew(cpu_to_le16(v), p);        \
-               }                                               \
-       })
-
-#define iowrite32(v,p)                                         \
-       ({                                                      \
-               if (__is_io_address(p)) {                       \
-                       __raw_writel((v), p);                   \
-               } else {                                        \
-                       __raw_writel(cpu_to_le32(v), p);        \
-               }                                               \
-       })
-
-#define ioport_map(port, nr)   ___io(port)
-
-#define ioport_unmap(addr)
-#else
-#define __io(p)                        ((void __iomem *)((p)+IXP2000_PCI_IO_VIRT_BASE))
-#endif
-
-
-#endif
diff --git a/arch/arm/mach-ixp2000/include/mach/irqs.h b/arch/arm/mach-ixp2000/include/mach/irqs.h
deleted file mode 100644 (file)
index bee96bc..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/irqs.h
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- * 
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef _IRQS_H
-#define _IRQS_H
-
-/*
- * Do NOT add #ifdef MACHINE_FOO in here.
- * Simpy add your machine IRQs here and increase NR_IRQS if needed to
- * hold your machine's IRQ table.
- */
-
-/*
- * Some interrupt numbers go unused b/c the IRQ mask/ummask/status
- * register has those bit reserved. We just mark those interrupts
- * as invalid and this allows us to do mask/unmask with a single
- * shift operation instead of having to map the IRQ number to
- * a HW IRQ number.
- */
-#define        IRQ_IXP2000_SOFT_INT            0 /* soft interrupt */
-#define        IRQ_IXP2000_ERRSUM              1 /* OR of all bits in ErrorStatus reg*/
-#define        IRQ_IXP2000_UART                2
-#define        IRQ_IXP2000_GPIO                3
-#define        IRQ_IXP2000_TIMER1              4
-#define        IRQ_IXP2000_TIMER2              5
-#define        IRQ_IXP2000_TIMER3              6
-#define        IRQ_IXP2000_TIMER4              7
-#define        IRQ_IXP2000_PMU                 8               
-#define        IRQ_IXP2000_SPF                 9  /* Slow port framer IRQ */
-#define        IRQ_IXP2000_DMA1                10
-#define        IRQ_IXP2000_DMA2                11
-#define        IRQ_IXP2000_DMA3                12
-#define        IRQ_IXP2000_PCI_DOORBELL        13
-#define        IRQ_IXP2000_ME_ATTN             14 
-#define        IRQ_IXP2000_PCI                 15 /* PCI INTA or INTB */
-#define        IRQ_IXP2000_THDA0               16 /* thread 0-31A */
-#define        IRQ_IXP2000_THDA1               17 /* thread 32-63A, IXP2800 only */
-#define        IRQ_IXP2000_THDA2               18 /* thread 64-95A */
-#define        IRQ_IXP2000_THDA3               19 /* thread 96-127A, IXP2800 only */
-#define        IRQ_IXP2000_THDB0               24 /* thread 0-31B */
-#define        IRQ_IXP2000_THDB1               25 /* thread 32-63B, IXP2800 only */
-#define        IRQ_IXP2000_THDB2               26 /* thread 64-95B */
-#define        IRQ_IXP2000_THDB3               27 /* thread 96-127B, IXP2800 only */
-
-/* define generic GPIOs */
-#define IRQ_IXP2000_GPIO0              32
-#define IRQ_IXP2000_GPIO1              33
-#define IRQ_IXP2000_GPIO2              34
-#define IRQ_IXP2000_GPIO3              35
-#define IRQ_IXP2000_GPIO4              36
-#define IRQ_IXP2000_GPIO5              37
-#define IRQ_IXP2000_GPIO6              38
-#define IRQ_IXP2000_GPIO7              39
-
-/* split off the 2 PCI sources */
-#define IRQ_IXP2000_PCIA               40
-#define IRQ_IXP2000_PCIB               41
-
-/* Int sources from IRQ_ERROR_STATUS */
-#define IRQ_IXP2000_DRAM0_MIN_ERR      42
-#define IRQ_IXP2000_DRAM0_MAJ_ERR      43
-#define IRQ_IXP2000_DRAM1_MIN_ERR      44
-#define IRQ_IXP2000_DRAM1_MAJ_ERR      45
-#define IRQ_IXP2000_DRAM2_MIN_ERR      46
-#define IRQ_IXP2000_DRAM2_MAJ_ERR      47
-/* 48-57 reserved */
-#define IRQ_IXP2000_SRAM0_ERR          58
-#define IRQ_IXP2000_SRAM1_ERR          59
-#define IRQ_IXP2000_SRAM2_ERR          60
-#define IRQ_IXP2000_SRAM3_ERR          61
-/* 62-65 reserved */
-#define IRQ_IXP2000_MEDIA_ERR          66
-#define IRQ_IXP2000_PCI_ERR                    67
-#define IRQ_IXP2000_SP_INT                     68
-
-#define NR_IXP2000_IRQS                                69
-
-#define        IXP2000_BOARD_IRQ(x)            (NR_IXP2000_IRQS + (x))
-
-#define        IXP2000_BOARD_IRQ_MASK(irq)     (1 << (irq - NR_IXP2000_IRQS))  
-
-#define IXP2000_ERR_IRQ_MASK(irq) ( 1 << (irq - IRQ_IXP2000_DRAM0_MIN_ERR))
-#define IXP2000_VALID_ERR_IRQ_MASK (\
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MIN_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM0_MAJ_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MIN_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM1_MAJ_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MIN_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_DRAM2_MAJ_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM0_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM1_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM2_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SRAM3_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_MEDIA_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_PCI_ERR) | \
-               IXP2000_ERR_IRQ_MASK(IRQ_IXP2000_SP_INT)        )
-
-/*
- * This allows for all the on-chip sources plus up to 32 CPLD based
- * IRQs. Should be more than enough.
- */
-#define        IXP2000_BOARD_IRQS              32
-#define NR_IRQS                                (NR_IXP2000_IRQS + IXP2000_BOARD_IRQS)
-
-
-/* 
- * IXDP2400 specific IRQs
- */
-#define        IRQ_IXDP2400_INGRESS_NPU        IXP2000_BOARD_IRQ(0) 
-#define        IRQ_IXDP2400_ENET               IXP2000_BOARD_IRQ(1) 
-#define        IRQ_IXDP2400_MEDIA_PCI          IXP2000_BOARD_IRQ(2) 
-#define        IRQ_IXDP2400_MEDIA_SP           IXP2000_BOARD_IRQ(3) 
-#define        IRQ_IXDP2400_SF_PCI             IXP2000_BOARD_IRQ(4) 
-#define        IRQ_IXDP2400_SF_SP              IXP2000_BOARD_IRQ(5) 
-#define        IRQ_IXDP2400_PMC                IXP2000_BOARD_IRQ(6) 
-#define        IRQ_IXDP2400_TVM                IXP2000_BOARD_IRQ(7) 
-
-#define        NR_IXDP2400_IRQS                ((IRQ_IXDP2400_TVM)+1)  
-#define        IXDP2400_NR_IRQS                NR_IXDP2400_IRQS - NR_IXP2000_IRQS
-
-/* IXDP2800 specific IRQs */
-#define IRQ_IXDP2800_EGRESS_ENET       IXP2000_BOARD_IRQ(0)
-#define IRQ_IXDP2800_INGRESS_NPU       IXP2000_BOARD_IRQ(1)
-#define IRQ_IXDP2800_PMC               IXP2000_BOARD_IRQ(2)
-#define IRQ_IXDP2800_FABRIC_PCI                IXP2000_BOARD_IRQ(3)
-#define IRQ_IXDP2800_FABRIC            IXP2000_BOARD_IRQ(4)
-#define IRQ_IXDP2800_MEDIA             IXP2000_BOARD_IRQ(5)
-
-#define        NR_IXDP2800_IRQS                ((IRQ_IXDP2800_MEDIA)+1)
-#define        IXDP2800_NR_IRQS                NR_IXDP2800_IRQS - NR_IXP2000_IRQS
-
-/* 
- * IRQs on both IXDP2x01 boards
- */
-#define IRQ_IXDP2X01_SPCI_DB_0         IXP2000_BOARD_IRQ(2)
-#define IRQ_IXDP2X01_SPCI_DB_1         IXP2000_BOARD_IRQ(3)
-#define IRQ_IXDP2X01_SPCI_PMC_INTA     IXP2000_BOARD_IRQ(4)
-#define IRQ_IXDP2X01_SPCI_PMC_INTB     IXP2000_BOARD_IRQ(5)
-#define IRQ_IXDP2X01_SPCI_PMC_INTC     IXP2000_BOARD_IRQ(6)
-#define IRQ_IXDP2X01_SPCI_PMC_INTD     IXP2000_BOARD_IRQ(7)
-#define IRQ_IXDP2X01_SPCI_FIC_INT      IXP2000_BOARD_IRQ(8)
-#define IRQ_IXDP2X01_IPMI_FROM         IXP2000_BOARD_IRQ(16)
-#define IRQ_IXDP2X01_125US             IXP2000_BOARD_IRQ(17)
-#define IRQ_IXDP2X01_DB_0_ADD          IXP2000_BOARD_IRQ(18)
-#define IRQ_IXDP2X01_DB_1_ADD          IXP2000_BOARD_IRQ(19)
-#define IRQ_IXDP2X01_UART1             IXP2000_BOARD_IRQ(21)
-#define IRQ_IXDP2X01_UART2             IXP2000_BOARD_IRQ(22)
-#define IRQ_IXDP2X01_FIC_ADD_INT       IXP2000_BOARD_IRQ(24)
-#define IRQ_IXDP2X01_CS8900            IXP2000_BOARD_IRQ(25)
-#define IRQ_IXDP2X01_BBSRAM            IXP2000_BOARD_IRQ(26)
-
-#define IXDP2X01_VALID_IRQ_MASK ( \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_DB_0) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_DB_1) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTA) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTB) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTC) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_PMC_INTD) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_SPCI_FIC_INT) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_IPMI_FROM) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_125US) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_DB_0_ADD) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_DB_1_ADD) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_UART1) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_UART2) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_FIC_ADD_INT) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_CS8900) | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2X01_BBSRAM) )
-
-/* 
- * IXDP2401 specific IRQs
- */
-#define IRQ_IXDP2401_INTA_82546                IXP2000_BOARD_IRQ(0)
-#define IRQ_IXDP2401_INTB_82546                IXP2000_BOARD_IRQ(1)
-
-#define        IXDP2401_VALID_IRQ_MASK ( \
-               IXDP2X01_VALID_IRQ_MASK | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2401_INTA_82546) |\
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2401_INTB_82546))
-
-/*
- * IXDP2801-specific IRQs
- */
-#define IRQ_IXDP2801_RIV               IXP2000_BOARD_IRQ(0)
-#define IRQ_IXDP2801_CNFG_MEDIA                IXP2000_BOARD_IRQ(27)
-#define IRQ_IXDP2801_CLOCK_REF         IXP2000_BOARD_IRQ(28)
-
-#define        IXDP2801_VALID_IRQ_MASK ( \
-               IXDP2X01_VALID_IRQ_MASK | \
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_RIV) |\
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_CNFG_MEDIA) |\
-               IXP2000_BOARD_IRQ_MASK(IRQ_IXDP2801_CLOCK_REF))
-
-#define        NR_IXDP2X01_IRQS                ((IRQ_IXDP2801_CLOCK_REF) + 1)
-
-#endif /*_IRQS_H*/
diff --git a/arch/arm/mach-ixp2000/include/mach/ixdp2x00.h b/arch/arm/mach-ixp2000/include/mach/ixdp2x00.h
deleted file mode 100644 (file)
index 5df8479..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/ixdp2x00.h
- *
- * Register and other defines for IXDP2[48]00 platforms
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-#ifndef _IXDP2X00_H_
-#define _IXDP2X00_H_
-
-/*
- * On board CPLD memory map
- */
-#define IXDP2X00_PHYS_CPLD_BASE                0xc7000000
-#define IXDP2X00_VIRT_CPLD_BASE                0xfe000000
-#define IXDP2X00_CPLD_SIZE             0x00100000
-
-
-#define IXDP2X00_CPLD_REG(x)   \
-       (volatile unsigned long *)(IXDP2X00_VIRT_CPLD_BASE | x)
-
-/*
- * IXDP2400 CPLD registers
- */
-#define IXDP2400_CPLD_SYSLED           IXDP2X00_CPLD_REG(0x0)  
-#define IXDP2400_CPLD_DISP_DATA                IXDP2X00_CPLD_REG(0x4)
-#define IXDP2400_CPLD_CLOCK_SPEED      IXDP2X00_CPLD_REG(0x8)
-#define IXDP2400_CPLD_INT_STAT         IXDP2X00_CPLD_REG(0xc)
-#define IXDP2400_CPLD_REV              IXDP2X00_CPLD_REG(0x10)
-#define IXDP2400_CPLD_SYS_CLK_M                IXDP2X00_CPLD_REG(0x14)
-#define IXDP2400_CPLD_SYS_CLK_N                IXDP2X00_CPLD_REG(0x18)
-#define IXDP2400_CPLD_INT_MASK         IXDP2X00_CPLD_REG(0x48)
-
-/*
- * IXDP2800 CPLD registers
- */
-#define IXDP2800_CPLD_INT_STAT         IXDP2X00_CPLD_REG(0x0)
-#define IXDP2800_CPLD_INT_MASK         IXDP2X00_CPLD_REG(0x140)
-
-
-#define        IXDP2X00_GPIO_I2C_ENABLE        0x02
-#define        IXDP2X00_GPIO_SCL               0x07
-#define        IXDP2X00_GPIO_SDA               0x06
-
-/*
- * PCI devfns for on-board devices. We need these to be able to
- * properly translate IRQs and for device removal.
- */
-#define        IXDP2400_SLAVE_ENET_DEVFN       0x18    /* Bus 1 */
-#define        IXDP2400_MASTER_ENET_DEVFN      0x20    /* Bus 1 */
-#define        IXDP2400_MEDIA_DEVFN            0x28    /* Bus 1 */
-#define        IXDP2400_SWITCH_FABRIC_DEVFN    0x30    /* Bus 1 */
-
-#define        IXDP2800_SLAVE_ENET_DEVFN       0x20    /* Bus 1 */
-#define        IXDP2800_MASTER_ENET_DEVFN      0x18    /* Bus 1 */
-#define        IXDP2800_SWITCH_FABRIC_DEVFN    0x30    /* Bus 1 */
-
-#define        IXDP2X00_P2P_DEVFN              0x20    /* Bus 0 */
-#define        IXDP2X00_21555_DEVFN            0x30    /* Bus 0 */
-#define IXDP2X00_SLAVE_NPU_DEVFN       0x28    /* Bus 1 */
-#define        IXDP2X00_PMC_DEVFN              0x38    /* Bus 1 */
-#define IXDP2X00_MASTER_NPU_DEVFN      0x38    /* Bus 1 */
-
-#ifndef __ASSEMBLY__
-/*
- * The master NPU is always PCI master.
- */
-static inline unsigned int ixdp2x00_master_npu(void)
-{
-       return !!ixp2000_is_pcimaster();
-}
-
-/*
- * Helper functions used by ixdp2400 and ixdp2800 specific code
- */
-void ixdp2x00_init_irq(volatile unsigned long*, volatile unsigned long *, unsigned long);
-void ixdp2x00_slave_pci_postinit(void);
-void ixdp2x00_init_machine(void);
-void ixdp2x00_map_io(void);
-
-#endif
-
-#endif /*_IXDP2X00_H_ */
diff --git a/arch/arm/mach-ixp2000/include/mach/ixdp2x01.h b/arch/arm/mach-ixp2000/include/mach/ixdp2x01.h
deleted file mode 100644 (file)
index 4c1f040..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/ixdp2x01.h
- *
- * Platform definitions for IXDP2X01 && IXDP2801 systems
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2004 (c) MontaVista Software, Inc. 
- *
- * Based on original code Copyright (c) 2002-2003 Intel Corporation
- * 
- * This file is licensed under  the terms of the GNU General Public 
- * License version 2. This program is licensed "as is" without any 
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __IXDP2X01_H__
-#define __IXDP2X01_H__
-
-#define        IXDP2X01_PHYS_CPLD_BASE         0xc6024000
-#define        IXDP2X01_VIRT_CPLD_BASE         0xfe000000
-#define        IXDP2X01_CPLD_REGION_SIZE       0x00100000
-
-#define IXDP2X01_CPLD_VIRT_REG(reg) (volatile unsigned long*)(IXDP2X01_VIRT_CPLD_BASE | reg)
-#define IXDP2X01_CPLD_PHYS_REG(reg) (IXDP2X01_PHYS_CPLD_BASE | reg)
-
-#define IXDP2X01_UART1_VIRT_BASE       IXDP2X01_CPLD_VIRT_REG(0x40)
-#define IXDP2X01_UART1_PHYS_BASE       IXDP2X01_CPLD_PHYS_REG(0x40)
-
-#define IXDP2X01_UART2_VIRT_BASE       IXDP2X01_CPLD_VIRT_REG(0x60)
-#define IXDP2X01_UART2_PHYS_BASE       IXDP2X01_CPLD_PHYS_REG(0x60)
-
-#define IXDP2X01_CS8900_VIRT_BASE      IXDP2X01_CPLD_VIRT_REG(0x80)
-#define IXDP2X01_CS8900_VIRT_END       (IXDP2X01_CS8900_VIRT_BASE + 16)
-
-#define IXDP2X01_CPLD_RESET_REG         IXDP2X01_CPLD_VIRT_REG(0x00)
-#define IXDP2X01_INT_MASK_SET_REG      IXDP2X01_CPLD_VIRT_REG(0x08)
-#define IXDP2X01_INT_STAT_REG          IXDP2X01_CPLD_VIRT_REG(0x0C)
-#define IXDP2X01_INT_RAW_REG           IXDP2X01_CPLD_VIRT_REG(0x10) 
-#define IXDP2X01_INT_MASK_CLR_REG      IXDP2X01_INT_RAW_REG
-#define IXDP2X01_INT_SIM_REG           IXDP2X01_CPLD_VIRT_REG(0x14)
-
-#define IXDP2X01_CPLD_FLASH_REG                IXDP2X01_CPLD_VIRT_REG(0x20)
-
-#define IXDP2X01_CPLD_FLASH_INTERN     0x8000
-#define IXDP2X01_CPLD_FLASH_BANK_MASK  0xF
-#define IXDP2X01_FLASH_WINDOW_BITS     25
-#define IXDP2X01_FLASH_WINDOW_SIZE     (1 << IXDP2X01_FLASH_WINDOW_BITS)
-#define IXDP2X01_FLASH_WINDOW_MASK     (IXDP2X01_FLASH_WINDOW_SIZE - 1)
-
-#define        IXDP2X01_UART_CLK               1843200
-
-#define        IXDP2X01_GPIO_I2C_ENABLE        0x02
-#define        IXDP2X01_GPIO_SCL               0x07
-#define        IXDP2X01_GPIO_SDA               0x06
-
-#endif /* __IXDP2x01_H__ */
diff --git a/arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h b/arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h
deleted file mode 100644 (file)
index 822f63f..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/ixp2000-regs.h
- *
- * Chipset register definitions for IXP2400/2800 based systems.
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- *
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-#ifndef _IXP2000_REGS_H_
-#define _IXP2000_REGS_H_
-
-/*
- * IXP2000 linux memory map:
- *
- * virt                phys            size
- * fb000000    db000000        16M             PCI CFG1
- * fc000000    da000000        16M             PCI CFG0
- * fd000000    d8000000        16M             PCI I/O
- * fe[0-7]00000                        8M              per-platform mappings
- * fe900000    80000000        1M              SRAM #0 (first MB)
- * fea00000    cb400000        1M              SCRATCH ring get/put
- * feb00000    c8000000        1M              MSF
- * fec00000    df000000        1M              PCI CSRs
- * fed00000    de000000        1M              PCI CREG
- * fee00000    d6000000        1M              INTCTL
- * fef00000    c0000000        1M              CAP
- */
-
-/* 
- * Static I/O regions.
- *
- * Most of the registers are clumped in 4K regions spread throughout
- * the 0xc0000000 -> 0xc0100000 address range, but we just map in
- * the whole range using a single 1 MB section instead of small
- * 4K pages.
- *
- * CAP stands for CSR Access Proxy.
- *
- * If you change the virtual address of this mapping, please propagate
- * the change to arch/arm/kernel/debug.S, which hardcodes the virtual
- * address of the UART located in this region.
- */
-
-#define        IXP2000_CAP_PHYS_BASE           0xc0000000
-#define        IXP2000_CAP_VIRT_BASE           0xfef00000
-#define        IXP2000_CAP_SIZE                0x00100000
-
-/*
- * Addresses for specific on-chip peripherals.
- */
-#define        IXP2000_SLOWPORT_CSR_VIRT_BASE  0xfef80000
-#define        IXP2000_GLOBAL_REG_VIRT_BASE    0xfef04000
-#define        IXP2000_UART_PHYS_BASE          0xc0030000
-#define        IXP2000_UART_VIRT_BASE          0xfef30000
-#define        IXP2000_TIMER_VIRT_BASE         0xfef20000
-#define        IXP2000_UENGINE_CSR_VIRT_BASE   0xfef18000
-#define        IXP2000_GPIO_VIRT_BASE          0xfef10000
-
-/*
- * Devices outside of the 0xc0000000 -> 0xc0100000 range.  The virtual
- * addresses of the INTCTL and PCI_CSR mappings are hardcoded in
- * entry-macro.S, so if you ever change these please propagate
- * the change.
- */
-#define IXP2000_INTCTL_PHYS_BASE       0xd6000000
-#define        IXP2000_INTCTL_VIRT_BASE        0xfee00000
-#define        IXP2000_INTCTL_SIZE             0x00100000
-
-#define IXP2000_PCI_CREG_PHYS_BASE     0xde000000
-#define        IXP2000_PCI_CREG_VIRT_BASE      0xfed00000
-#define        IXP2000_PCI_CREG_SIZE           0x00100000
-
-#define IXP2000_PCI_CSR_PHYS_BASE      0xdf000000
-#define        IXP2000_PCI_CSR_VIRT_BASE       0xfec00000
-#define        IXP2000_PCI_CSR_SIZE            0x00100000
-
-#define IXP2000_MSF_PHYS_BASE          0xc8000000
-#define IXP2000_MSF_VIRT_BASE          0xfeb00000
-#define IXP2000_MSF_SIZE               0x00100000
-
-#define IXP2000_SCRATCH_RING_PHYS_BASE 0xcb400000
-#define IXP2000_SCRATCH_RING_VIRT_BASE 0xfea00000
-#define IXP2000_SCRATCH_RING_SIZE      0x00100000
-
-#define IXP2000_SRAM0_PHYS_BASE                0x80000000
-#define IXP2000_SRAM0_VIRT_BASE                0xfe900000
-#define IXP2000_SRAM0_SIZE             0x00100000
-
-#define IXP2000_PCI_IO_PHYS_BASE       0xd8000000
-#define        IXP2000_PCI_IO_VIRT_BASE        0xfd000000
-#define IXP2000_PCI_IO_SIZE            0x01000000
-
-#define IXP2000_PCI_CFG0_PHYS_BASE     0xda000000
-#define IXP2000_PCI_CFG0_VIRT_BASE     0xfc000000
-#define IXP2000_PCI_CFG0_SIZE          0x01000000
-
-#define IXP2000_PCI_CFG1_PHYS_BASE     0xdb000000
-#define IXP2000_PCI_CFG1_VIRT_BASE     0xfb000000
-#define IXP2000_PCI_CFG1_SIZE          0x01000000
-
-/* 
- * Timers
- */
-#define        IXP2000_TIMER_REG(x)            ((volatile unsigned long*)(IXP2000_TIMER_VIRT_BASE | (x)))
-/* Timer control */
-#define        IXP2000_T1_CTL                  IXP2000_TIMER_REG(0x00)
-#define        IXP2000_T2_CTL                  IXP2000_TIMER_REG(0x04)
-#define        IXP2000_T3_CTL                  IXP2000_TIMER_REG(0x08)
-#define        IXP2000_T4_CTL                  IXP2000_TIMER_REG(0x0c)
-/* Store initial value */
-#define        IXP2000_T1_CLD                  IXP2000_TIMER_REG(0x10)
-#define        IXP2000_T2_CLD                  IXP2000_TIMER_REG(0x14)
-#define        IXP2000_T3_CLD                  IXP2000_TIMER_REG(0x18)
-#define        IXP2000_T4_CLD                  IXP2000_TIMER_REG(0x1c)
-/* Read current value */
-#define        IXP2000_T1_CSR                  IXP2000_TIMER_REG(0x20)
-#define        IXP2000_T2_CSR                  IXP2000_TIMER_REG(0x24)
-#define        IXP2000_T3_CSR                  IXP2000_TIMER_REG(0x28)
-#define        IXP2000_T4_CSR                  IXP2000_TIMER_REG(0x2c)
-/* Clear associated timer interrupt */
-#define        IXP2000_T1_CLR                  IXP2000_TIMER_REG(0x30)
-#define        IXP2000_T2_CLR                  IXP2000_TIMER_REG(0x34)
-#define        IXP2000_T3_CLR                  IXP2000_TIMER_REG(0x38)
-#define        IXP2000_T4_CLR                  IXP2000_TIMER_REG(0x3c)
-/* Timer watchdog enable for T4 */
-#define        IXP2000_TWDE                    IXP2000_TIMER_REG(0x40)
-
-#define        WDT_ENABLE                      0x00000001
-#define        TIMER_DIVIDER_256               0x00000008
-#define        TIMER_ENABLE                    0x00000080
-#define        IRQ_MASK_TIMER1                 (1 << 4)
-
-/*
- * Interrupt controller registers
- */
-#define IXP2000_INTCTL_REG(x)          (volatile unsigned long*)(IXP2000_INTCTL_VIRT_BASE | (x))
-#define IXP2000_IRQ_STATUS             IXP2000_INTCTL_REG(0x08)
-#define IXP2000_IRQ_ENABLE             IXP2000_INTCTL_REG(0x10)
-#define IXP2000_IRQ_ENABLE_SET         IXP2000_INTCTL_REG(0x10)
-#define IXP2000_IRQ_ENABLE_CLR         IXP2000_INTCTL_REG(0x18)
-#define IXP2000_FIQ_ENABLE_CLR         IXP2000_INTCTL_REG(0x14)
-#define IXP2000_IRQ_ERR_STATUS         IXP2000_INTCTL_REG(0x24)
-#define IXP2000_IRQ_ERR_ENABLE_SET     IXP2000_INTCTL_REG(0x2c)
-#define IXP2000_FIQ_ERR_ENABLE_CLR     IXP2000_INTCTL_REG(0x30)
-#define IXP2000_IRQ_ERR_ENABLE_CLR     IXP2000_INTCTL_REG(0x34)
-#define IXP2000_IRQ_THD_RAW_STATUS_A_0 IXP2000_INTCTL_REG(0x60)
-#define IXP2000_IRQ_THD_RAW_STATUS_A_1 IXP2000_INTCTL_REG(0x64)
-#define IXP2000_IRQ_THD_RAW_STATUS_A_2 IXP2000_INTCTL_REG(0x68)
-#define IXP2000_IRQ_THD_RAW_STATUS_A_3 IXP2000_INTCTL_REG(0x6c)
-#define IXP2000_IRQ_THD_RAW_STATUS_B_0 IXP2000_INTCTL_REG(0x80)
-#define IXP2000_IRQ_THD_RAW_STATUS_B_1 IXP2000_INTCTL_REG(0x84)
-#define IXP2000_IRQ_THD_RAW_STATUS_B_2 IXP2000_INTCTL_REG(0x88)
-#define IXP2000_IRQ_THD_RAW_STATUS_B_3 IXP2000_INTCTL_REG(0x8c)
-#define IXP2000_IRQ_THD_STATUS_A_0     IXP2000_INTCTL_REG(0xe0)
-#define IXP2000_IRQ_THD_STATUS_A_1     IXP2000_INTCTL_REG(0xe4)
-#define IXP2000_IRQ_THD_STATUS_A_2     IXP2000_INTCTL_REG(0xe8)
-#define IXP2000_IRQ_THD_STATUS_A_3     IXP2000_INTCTL_REG(0xec)
-#define IXP2000_IRQ_THD_STATUS_B_0     IXP2000_INTCTL_REG(0x100)
-#define IXP2000_IRQ_THD_STATUS_B_1     IXP2000_INTCTL_REG(0x104)
-#define IXP2000_IRQ_THD_STATUS_B_2     IXP2000_INTCTL_REG(0x108)
-#define IXP2000_IRQ_THD_STATUS_B_3     IXP2000_INTCTL_REG(0x10c)
-#define IXP2000_IRQ_THD_ENABLE_SET_A_0 IXP2000_INTCTL_REG(0x160)
-#define IXP2000_IRQ_THD_ENABLE_SET_A_1 IXP2000_INTCTL_REG(0x164)
-#define IXP2000_IRQ_THD_ENABLE_SET_A_2 IXP2000_INTCTL_REG(0x168)
-#define IXP2000_IRQ_THD_ENABLE_SET_A_3 IXP2000_INTCTL_REG(0x16c)
-#define IXP2000_IRQ_THD_ENABLE_SET_B_0 IXP2000_INTCTL_REG(0x180)
-#define IXP2000_IRQ_THD_ENABLE_SET_B_1 IXP2000_INTCTL_REG(0x184)
-#define IXP2000_IRQ_THD_ENABLE_SET_B_2 IXP2000_INTCTL_REG(0x188)
-#define IXP2000_IRQ_THD_ENABLE_SET_B_3 IXP2000_INTCTL_REG(0x18c)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_A_0       IXP2000_INTCTL_REG(0x1e0)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_A_1       IXP2000_INTCTL_REG(0x1e4)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_A_2       IXP2000_INTCTL_REG(0x1e8)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_A_3       IXP2000_INTCTL_REG(0x1ec)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_B_0       IXP2000_INTCTL_REG(0x200)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_B_1       IXP2000_INTCTL_REG(0x204)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_B_2       IXP2000_INTCTL_REG(0x208)
-#define IXP2000_IRQ_THD_ENABLE_CLEAR_B_3       IXP2000_INTCTL_REG(0x20c)
-
-/*
- * Mask of valid IRQs in the 32-bit IRQ register. We use
- * this to mark certain IRQs as being invalid.
- */
-#define        IXP2000_VALID_IRQ_MASK  0x0f0fffff
-
-/*
- * PCI config register access from core
- */
-#define IXP2000_PCI_CREG(x)            (volatile unsigned long*)(IXP2000_PCI_CREG_VIRT_BASE | (x))
-#define IXP2000_PCI_CMDSTAT            IXP2000_PCI_CREG(0x04)
-#define IXP2000_PCI_CSR_BAR            IXP2000_PCI_CREG(0x10)
-#define IXP2000_PCI_SRAM_BAR           IXP2000_PCI_CREG(0x14)
-#define IXP2000_PCI_SDRAM_BAR          IXP2000_PCI_CREG(0x18)
-
-/*
- * PCI CSRs
- */
-#define IXP2000_PCI_CSR(x)             (volatile unsigned long*)(IXP2000_PCI_CSR_VIRT_BASE | (x))
-
-/*
- * PCI outbound interrupts
- */
-#define IXP2000_PCI_OUT_INT_STATUS     IXP2000_PCI_CSR(0x30)
-#define IXP2000_PCI_OUT_INT_MASK       IXP2000_PCI_CSR(0x34)
-/*
- * PCI communications
- */
-#define IXP2000_PCI_MAILBOX0           IXP2000_PCI_CSR(0x50)
-#define IXP2000_PCI_MAILBOX1           IXP2000_PCI_CSR(0x54)
-#define IXP2000_PCI_MAILBOX2           IXP2000_PCI_CSR(0x58)
-#define IXP2000_PCI_MAILBOX3           IXP2000_PCI_CSR(0x5C)
-#define IXP2000_XSCALE_DOORBELL                IXP2000_PCI_CSR(0x60)
-#define IXP2000_XSCALE_DOORBELL_SETUP  IXP2000_PCI_CSR(0x64)
-#define IXP2000_PCI_DOORBELL           IXP2000_PCI_CSR(0x70)
-#define IXP2000_PCI_DOORBELL_SETUP     IXP2000_PCI_CSR(0x74)
-
-/*
- * DMA engines
- */
-#define IXP2000_PCI_CH1_BYTE_CNT       IXP2000_PCI_CSR(0x80)
-#define IXP2000_PCI_CH1_ADDR           IXP2000_PCI_CSR(0x84)
-#define IXP2000_PCI_CH1_DRAM_ADDR      IXP2000_PCI_CSR(0x88)
-#define IXP2000_PCI_CH1_DESC_PTR       IXP2000_PCI_CSR(0x8C)
-#define IXP2000_PCI_CH1_CNTRL          IXP2000_PCI_CSR(0x90)
-#define IXP2000_PCI_CH1_ME_PARAM       IXP2000_PCI_CSR(0x94)
-#define IXP2000_PCI_CH2_BYTE_CNT       IXP2000_PCI_CSR(0xA0)
-#define IXP2000_PCI_CH2_ADDR           IXP2000_PCI_CSR(0xA4)
-#define IXP2000_PCI_CH2_DRAM_ADDR      IXP2000_PCI_CSR(0xA8)
-#define IXP2000_PCI_CH2_DESC_PTR       IXP2000_PCI_CSR(0xAC)
-#define IXP2000_PCI_CH2_CNTRL          IXP2000_PCI_CSR(0xB0)
-#define IXP2000_PCI_CH2_ME_PARAM       IXP2000_PCI_CSR(0xB4)
-#define IXP2000_PCI_CH3_BYTE_CNT       IXP2000_PCI_CSR(0xC0)
-#define IXP2000_PCI_CH3_ADDR           IXP2000_PCI_CSR(0xC4)
-#define IXP2000_PCI_CH3_DRAM_ADDR      IXP2000_PCI_CSR(0xC8)
-#define IXP2000_PCI_CH3_DESC_PTR       IXP2000_PCI_CSR(0xCC)
-#define IXP2000_PCI_CH3_CNTRL          IXP2000_PCI_CSR(0xD0)
-#define IXP2000_PCI_CH3_ME_PARAM       IXP2000_PCI_CSR(0xD4)
-#define IXP2000_DMA_INF_MODE           IXP2000_PCI_CSR(0xE0)
-/*
- * Size masks for BARs
- */
-#define IXP2000_PCI_SRAM_BASE_ADDR_MASK        IXP2000_PCI_CSR(0xFC)
-#define IXP2000_PCI_DRAM_BASE_ADDR_MASK        IXP2000_PCI_CSR(0x100)
-/*
- * Control and uEngine related
- */
-#define IXP2000_PCI_CONTROL            IXP2000_PCI_CSR(0x13C)
-#define IXP2000_PCI_ADDR_EXT           IXP2000_PCI_CSR(0x140)
-#define IXP2000_PCI_ME_PUSH_STATUS     IXP2000_PCI_CSR(0x148)
-#define IXP2000_PCI_ME_PUSH_EN         IXP2000_PCI_CSR(0x14C)
-#define IXP2000_PCI_ERR_STATUS         IXP2000_PCI_CSR(0x150)
-#define IXP2000_PCI_ERR_ENABLE         IXP2000_PCI_CSR(0x154)
-/*
- * Inbound PCI interrupt control
- */
-#define IXP2000_PCI_XSCALE_INT_STATUS  IXP2000_PCI_CSR(0x158)
-#define IXP2000_PCI_XSCALE_INT_ENABLE  IXP2000_PCI_CSR(0x15C)
-
-#define IXP2000_PCICNTL_PNR            (1<<17) /* PCI not Reset bit of PCI_CONTROL */
-#define IXP2000_PCICNTL_PCF            (1<<28) /* PCI Central function bit */
-#define IXP2000_XSCALE_INT             (1<<1)  /* Interrupt from XScale to PCI */
-
-/* These are from the IRQ register in the PCI ISR register */
-#define PCI_CONTROL_BE_DEO             (1 << 22)       /* Big Endian Data Enable Out */
-#define PCI_CONTROL_BE_DEI             (1 << 21)       /* Big Endian Data Enable In  */
-#define PCI_CONTROL_BE_BEO             (1 << 20)       /* Big Endian Byte Enable Out */
-#define PCI_CONTROL_BE_BEI             (1 << 19)       /* Big Endian Byte Enable In  */
-#define PCI_CONTROL_IEE                        (1 << 17)       /* I/O cycle Endian swap Enable */
-
-#define IXP2000_PCI_RST_REL            (1 << 2)
-#define CFG_RST_DIR                    (*IXP2000_PCI_CONTROL & IXP2000_PCICNTL_PCF)
-#define CFG_PCI_BOOT_HOST              (1 << 2)
-#define CFG_BOOT_PROM                  (1 << 1)
-
-/*
- * SlowPort CSRs
- *
- * The slowport is used to access things like flash, SONET framer control
- * ports, slave microprocessors, CPLDs, and others of chip memory mapped
- * peripherals.
- */
-#define        SLOWPORT_CSR(x)         (volatile unsigned long*)(IXP2000_SLOWPORT_CSR_VIRT_BASE | (x))
-
-#define        IXP2000_SLOWPORT_CCR            SLOWPORT_CSR(0x00)
-#define        IXP2000_SLOWPORT_WTC1           SLOWPORT_CSR(0x04)
-#define        IXP2000_SLOWPORT_WTC2           SLOWPORT_CSR(0x08)
-#define        IXP2000_SLOWPORT_RTC1           SLOWPORT_CSR(0x0c)
-#define        IXP2000_SLOWPORT_RTC2           SLOWPORT_CSR(0x10)
-#define        IXP2000_SLOWPORT_FSR            SLOWPORT_CSR(0x14)
-#define        IXP2000_SLOWPORT_PCR            SLOWPORT_CSR(0x18)
-#define        IXP2000_SLOWPORT_ADC            SLOWPORT_CSR(0x1C)
-#define        IXP2000_SLOWPORT_FAC            SLOWPORT_CSR(0x20)
-#define        IXP2000_SLOWPORT_FRM            SLOWPORT_CSR(0x24)
-#define        IXP2000_SLOWPORT_FIN            SLOWPORT_CSR(0x28)
-
-/*
- * CCR values.  
- * The CCR configures the clock division for the slowport interface.
- */
-#define        SLOWPORT_CCR_DIV_1              0x00
-#define        SLOWPORT_CCR_DIV_2              0x01
-#define        SLOWPORT_CCR_DIV_4              0x02
-#define        SLOWPORT_CCR_DIV_6              0x03
-#define        SLOWPORT_CCR_DIV_8              0x04
-#define        SLOWPORT_CCR_DIV_10             0x05
-#define        SLOWPORT_CCR_DIV_12             0x06
-#define        SLOWPORT_CCR_DIV_14             0x07
-#define        SLOWPORT_CCR_DIV_16             0x08
-#define        SLOWPORT_CCR_DIV_18             0x09
-#define        SLOWPORT_CCR_DIV_20             0x0a
-#define        SLOWPORT_CCR_DIV_22             0x0b
-#define        SLOWPORT_CCR_DIV_24             0x0c
-#define        SLOWPORT_CCR_DIV_26             0x0d
-#define        SLOWPORT_CCR_DIV_28             0x0e
-#define        SLOWPORT_CCR_DIV_30             0x0f
-
-/*
- * PCR values.  PCR configure the mode of the interface.
- */
-#define        SLOWPORT_MODE_FLASH             0x00
-#define        SLOWPORT_MODE_LUCENT            0x01
-#define        SLOWPORT_MODE_PMC_SIERRA        0x02
-#define        SLOWPORT_MODE_INTEL_UP          0x03
-#define        SLOWPORT_MODE_MOTOROLA_UP       0x04
-
-/*
- * ADC values.  Defines data and address bus widths.
- */
-#define        SLOWPORT_ADDR_WIDTH_8           0x00
-#define        SLOWPORT_ADDR_WIDTH_16          0x01
-#define        SLOWPORT_ADDR_WIDTH_24          0x02
-#define        SLOWPORT_ADDR_WIDTH_32          0x03
-#define        SLOWPORT_DATA_WIDTH_8           0x00
-#define        SLOWPORT_DATA_WIDTH_16          0x10
-#define        SLOWPORT_DATA_WIDTH_24          0x20
-#define        SLOWPORT_DATA_WIDTH_32          0x30
-
-/*
- * Masks and shifts for various fields in the WTC and RTC registers.
- */
-#define        SLOWPORT_WRTC_MASK_HD           0x0003
-#define        SLOWPORT_WRTC_MASK_PW           0x003c
-#define        SLOWPORT_WRTC_MASK_SU           0x03c0
-
-#define        SLOWPORT_WRTC_SHIFT_HD          0x00
-#define        SLOWPORT_WRTC_SHIFT_SU          0x02
-#define        SLOWPORT_WRTC_SHFIT_PW          0x06
-
-
-/*
- * GPIO registers & GPIO interface.
- */
-#define IXP2000_GPIO_REG(x)            ((volatile unsigned long*)(IXP2000_GPIO_VIRT_BASE+(x)))
-#define IXP2000_GPIO_PLR               IXP2000_GPIO_REG(0x00)
-#define IXP2000_GPIO_PDPR              IXP2000_GPIO_REG(0x04)
-#define IXP2000_GPIO_PDSR              IXP2000_GPIO_REG(0x08)
-#define IXP2000_GPIO_PDCR              IXP2000_GPIO_REG(0x0c)
-#define IXP2000_GPIO_POPR              IXP2000_GPIO_REG(0x10)
-#define IXP2000_GPIO_POSR              IXP2000_GPIO_REG(0x14)
-#define IXP2000_GPIO_POCR              IXP2000_GPIO_REG(0x18)
-#define IXP2000_GPIO_REDR              IXP2000_GPIO_REG(0x1c)
-#define IXP2000_GPIO_FEDR              IXP2000_GPIO_REG(0x20)
-#define IXP2000_GPIO_EDSR              IXP2000_GPIO_REG(0x24)
-#define IXP2000_GPIO_LSHR              IXP2000_GPIO_REG(0x28)
-#define IXP2000_GPIO_LSLR              IXP2000_GPIO_REG(0x2c)
-#define IXP2000_GPIO_LDSR              IXP2000_GPIO_REG(0x30)
-#define IXP2000_GPIO_INER              IXP2000_GPIO_REG(0x34)
-#define IXP2000_GPIO_INSR              IXP2000_GPIO_REG(0x38)
-#define IXP2000_GPIO_INCR              IXP2000_GPIO_REG(0x3c)
-#define IXP2000_GPIO_INST              IXP2000_GPIO_REG(0x40)
-
-/*
- * "Global" registers...whatever that's supposed to mean.
- */
-#define GLOBAL_REG_BASE                        (IXP2000_GLOBAL_REG_VIRT_BASE + 0x0a00)
-#define GLOBAL_REG(x)                  (volatile unsigned long*)(GLOBAL_REG_BASE | (x))
-
-#define IXP2000_MAJ_PROD_TYPE_MASK     0x001F0000
-#define IXP2000_MAJ_PROD_TYPE_IXP2000  0x00000000
-#define IXP2000_MIN_PROD_TYPE_MASK     0x0000FF00
-#define IXP2000_MIN_PROD_TYPE_IXP2400  0x00000200
-#define IXP2000_MIN_PROD_TYPE_IXP2850  0x00000100
-#define IXP2000_MIN_PROD_TYPE_IXP2800  0x00000000
-#define IXP2000_MAJ_REV_MASK           0x000000F0
-#define IXP2000_MIN_REV_MASK           0x0000000F
-#define IXP2000_PROD_ID_MASK           0xFFFFFFFF
-
-#define IXP2000_PRODUCT_ID             GLOBAL_REG(0x00)
-#define IXP2000_MISC_CONTROL           GLOBAL_REG(0x04)
-#define IXP2000_MSF_CLK_CNTRL                  GLOBAL_REG(0x08)
-#define IXP2000_RESET0                 GLOBAL_REG(0x0c)
-#define IXP2000_RESET1                 GLOBAL_REG(0x10)
-#define IXP2000_CCR                            GLOBAL_REG(0x14)
-#define        IXP2000_STRAP_OPTIONS           GLOBAL_REG(0x18)
-
-#define        RSTALL                          (1 << 16)
-#define        WDT_RESET_ENABLE                0x01000000
-
-
-/*
- * MSF registers.  The IXP2400 and IXP2800 have somewhat different MSF
- * units, but the registers that differ between the two don't overlap,
- * so we can have one register list for both.
- */
-#define IXP2000_MSF_REG(x)                     ((volatile unsigned long*)(IXP2000_MSF_VIRT_BASE + (x)))
-#define IXP2000_MSF_RX_CONTROL                 IXP2000_MSF_REG(0x0000)
-#define IXP2000_MSF_TX_CONTROL                 IXP2000_MSF_REG(0x0004)
-#define IXP2000_MSF_INTERRUPT_STATUS           IXP2000_MSF_REG(0x0008)
-#define IXP2000_MSF_INTERRUPT_ENABLE           IXP2000_MSF_REG(0x000c)
-#define IXP2000_MSF_CSIX_TYPE_MAP              IXP2000_MSF_REG(0x0010)
-#define IXP2000_MSF_FC_EGRESS_STATUS           IXP2000_MSF_REG(0x0014)
-#define IXP2000_MSF_FC_INGRESS_STATUS          IXP2000_MSF_REG(0x0018)
-#define IXP2000_MSF_HWM_CONTROL                        IXP2000_MSF_REG(0x0024)
-#define IXP2000_MSF_FC_STATUS_OVERRIDE         IXP2000_MSF_REG(0x0028)
-#define IXP2000_MSF_CLOCK_CONTROL              IXP2000_MSF_REG(0x002c)
-#define IXP2000_MSF_RX_PORT_MAP                        IXP2000_MSF_REG(0x0040)
-#define IXP2000_MSF_RBUF_ELEMENT_DONE          IXP2000_MSF_REG(0x0044)
-#define IXP2000_MSF_RX_MPHY_POLL_LIMIT         IXP2000_MSF_REG(0x0048)
-#define IXP2000_MSF_RX_CALENDAR_LENGTH         IXP2000_MSF_REG(0x0048)
-#define IXP2000_MSF_RX_THREAD_FREELIST_TIMEOUT_0       IXP2000_MSF_REG(0x0050)
-#define IXP2000_MSF_RX_THREAD_FREELIST_TIMEOUT_1       IXP2000_MSF_REG(0x0054)
-#define IXP2000_MSF_RX_THREAD_FREELIST_TIMEOUT_2       IXP2000_MSF_REG(0x0058)
-#define IXP2000_MSF_TX_SEQUENCE_0              IXP2000_MSF_REG(0x0060)
-#define IXP2000_MSF_TX_SEQUENCE_1              IXP2000_MSF_REG(0x0064)
-#define IXP2000_MSF_TX_SEQUENCE_2              IXP2000_MSF_REG(0x0068)
-#define IXP2000_MSF_TX_MPHY_POLL_LIMIT         IXP2000_MSF_REG(0x0070)
-#define IXP2000_MSF_TX_CALENDAR_LENGTH         IXP2000_MSF_REG(0x0070)
-#define IXP2000_MSF_RX_UP_CONTROL_0            IXP2000_MSF_REG(0x0080)
-#define IXP2000_MSF_RX_UP_CONTROL_1            IXP2000_MSF_REG(0x0084)
-#define IXP2000_MSF_RX_UP_CONTROL_2            IXP2000_MSF_REG(0x0088)
-#define IXP2000_MSF_RX_UP_CONTROL_3            IXP2000_MSF_REG(0x008c)
-#define IXP2000_MSF_TX_UP_CONTROL_0            IXP2000_MSF_REG(0x0090)
-#define IXP2000_MSF_TX_UP_CONTROL_1            IXP2000_MSF_REG(0x0094)
-#define IXP2000_MSF_TX_UP_CONTROL_2            IXP2000_MSF_REG(0x0098)
-#define IXP2000_MSF_TX_UP_CONTROL_3            IXP2000_MSF_REG(0x009c)
-#define IXP2000_MSF_TRAIN_DATA                 IXP2000_MSF_REG(0x00a0)
-#define IXP2000_MSF_TRAIN_CALENDAR             IXP2000_MSF_REG(0x00a4)
-#define IXP2000_MSF_TRAIN_FLOW_CONTROL         IXP2000_MSF_REG(0x00a8)
-#define IXP2000_MSF_TX_CALENDAR_0              IXP2000_MSF_REG(0x1000)
-#define IXP2000_MSF_RX_PORT_CALENDAR_STATUS    IXP2000_MSF_REG(0x1400)
-
-
-#endif                         /* _IXP2000_H_ */
diff --git a/arch/arm/mach-ixp2000/include/mach/memory.h b/arch/arm/mach-ixp2000/include/mach/memory.h
deleted file mode 100644 (file)
index 5f0c4fd..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/memory.h
- *
- * Copyright (c) 2002 Intel Corp.
- * Copyright (c) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#ifndef __ASM_ARCH_MEMORY_H
-#define __ASM_ARCH_MEMORY_H
-
-#define PLAT_PHYS_OFFSET       UL(0x00000000)
-
-#include <mach/ixp2000-regs.h>
-
-#define IXP2000_PCI_SDRAM_OFFSET       (*IXP2000_PCI_SDRAM_BAR & 0xfffffff0)
-
-#define __phys_to_bus(x)       ((x) + (IXP2000_PCI_SDRAM_OFFSET - PHYS_OFFSET))
-#define __bus_to_phys(x)       ((x) - (IXP2000_PCI_SDRAM_OFFSET - PHYS_OFFSET))
-
-#define __virt_to_bus(v)       __phys_to_bus(__virt_to_phys(v))
-#define __bus_to_virt(b)       __phys_to_virt(__bus_to_phys(b))
-#define __pfn_to_bus(p)                __phys_to_bus(__pfn_to_phys(p))
-#define __bus_to_pfn(b)                __phys_to_pfn(__bus_to_phys(b))
-
-#endif
-
diff --git a/arch/arm/mach-ixp2000/include/mach/platform.h b/arch/arm/mach-ixp2000/include/mach/platform.h
deleted file mode 100644 (file)
index bb0f8dc..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/platform.h
- *
- * Various bits of code used by platform-level code.
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2004 (c) MontaVista Software, Inc. 
- * 
- * This file is licensed under  the terms of the GNU General Public 
- * License version 2. This program is licensed "as is" without any 
- * warranty of any kind, whether express or implied.
- */
-
-
-#ifndef __ASSEMBLY__
-
-static inline unsigned long ixp2000_reg_read(volatile void *reg)
-{
-       return *((volatile unsigned long *)reg);
-}
-
-static inline void ixp2000_reg_write(volatile void *reg, unsigned long val)
-{
-       *((volatile unsigned long *)reg) = val;
-}
-
-/*
- * On the IXP2400, we can't use XCB=000 due to chip bugs.  We use
- * XCB=101 instead, but that makes all I/O accesses bufferable.  This
- * is not a problem in general, but we do have to be slightly more
- * careful because I/O writes are no longer automatically flushed out
- * of the write buffer.
- *
- * In cases where we want to make sure that a write has been flushed
- * out of the write buffer before we proceed, for example when masking
- * a device interrupt before re-enabling IRQs in CPSR, we can use this
- * function, ixp2000_reg_wrb, which performs a write, a readback, and
- * issues a dummy instruction dependent on the value of the readback
- * (mov rX, rX) to make sure that the readback has completed before we
- * continue.
- */
-static inline void ixp2000_reg_wrb(volatile void *reg, unsigned long val)
-{
-       unsigned long dummy;
-
-       *((volatile unsigned long *)reg) = val;
-
-       dummy = *((volatile unsigned long *)reg);
-       __asm__ __volatile__("mov %0, %0" : "+r" (dummy));
-}
-
-/*
- * Boards may multiplex different devices on the 2nd channel of 
- * the slowport interface that each need different configuration 
- * settings.  For example, the IXDP2400 uses channel 2 on the interface 
- * to access the CPLD, the switch fabric card, and the media card.  Each
- * one needs a different mode so drivers must save/restore the mode 
- * before and after each operation.  
- *
- * acquire_slowport(&your_config);
- * ...
- * do slowport operations
- * ...
- * release_slowport();
- *
- * Note that while you have the slowport, you are holding a spinlock,
- * so your code should be written as if you explicitly acquired a lock.
- *
- * The configuration only affects device 2 on the slowport, so the
- * MTD map driver does not acquire/release the slowport.  
- */
-struct slowport_cfg {
-       unsigned long CCR;      /* Clock divide */
-       unsigned long WTC;      /* Write Timing Control */
-       unsigned long RTC;      /* Read Timing Control */
-       unsigned long PCR;      /* Protocol Control Register */
-       unsigned long ADC;      /* Address/Data Width Control */
-};
-
-
-void ixp2000_acquire_slowport(struct slowport_cfg *, struct slowport_cfg *);
-void ixp2000_release_slowport(struct slowport_cfg *);
-
-/*
- * IXP2400 A0/A1 and  IXP2800 A0/A1/A2 have broken slowport that requires
- * tweaking of addresses in the MTD driver.
- */
-static inline unsigned ixp2000_has_broken_slowport(void)
-{
-       unsigned long id = *IXP2000_PRODUCT_ID;
-       unsigned long id_prod = id & (IXP2000_MAJ_PROD_TYPE_MASK |
-                                     IXP2000_MIN_PROD_TYPE_MASK);
-       return (((id_prod ==
-                 /* fixed in IXP2400-B0 */
-                 (IXP2000_MAJ_PROD_TYPE_IXP2000 |
-                  IXP2000_MIN_PROD_TYPE_IXP2400)) &&
-                ((id & IXP2000_MAJ_REV_MASK) == 0)) ||
-               ((id_prod ==
-                 /* fixed in IXP2800-B0 */
-                 (IXP2000_MAJ_PROD_TYPE_IXP2000 |
-                  IXP2000_MIN_PROD_TYPE_IXP2800)) &&
-                ((id & IXP2000_MAJ_REV_MASK) == 0)) ||
-               ((id_prod ==
-                 /* fixed in IXP2850-B0 */
-                 (IXP2000_MAJ_PROD_TYPE_IXP2000 |
-                  IXP2000_MIN_PROD_TYPE_IXP2850)) &&
-                ((id & IXP2000_MAJ_REV_MASK) == 0)));
-}
-
-static inline unsigned int ixp2000_has_flash(void)
-{
-       return ((*IXP2000_STRAP_OPTIONS) & (CFG_BOOT_PROM));
-}
-
-static inline unsigned int ixp2000_is_pcimaster(void)
-{
-       return ((*IXP2000_STRAP_OPTIONS) & (CFG_PCI_BOOT_HOST));
-}
-
-void ixp2000_map_io(void);
-void ixp2000_uart_init(void);
-void ixp2000_init_irq(void);
-void ixp2000_init_time(unsigned long);
-void ixp2000_restart(char, const char *);
-unsigned long ixp2000_gettimeoffset(void);
-
-struct pci_sys_data;
-
-u32 *ixp2000_pci_config_addr(unsigned int bus, unsigned int devfn, int where);
-void ixp2000_pci_preinit(void);
-int ixp2000_pci_setup(int, struct pci_sys_data*);
-struct pci_bus* ixp2000_pci_scan_bus(int, struct pci_sys_data*);
-int ixp2000_pci_read_config(struct pci_bus*, unsigned int, int, int, u32 *);
-int ixp2000_pci_write_config(struct pci_bus*, unsigned int, int, int, u32);
-
-/*
- * Several of the IXP2000 systems have banked flash so we need to extend the
- * flash_platform_data structure with some private pointers
- */
-struct ixp2000_flash_data {
-       struct flash_platform_data *platform_data;
-       int nr_banks;
-       unsigned long (*bank_setup)(unsigned long);
-};
-
-struct ixp2000_i2c_pins {
-       unsigned long sda_pin;
-       unsigned long scl_pin;
-};
-
-
-#endif /*  !__ASSEMBLY__ */
diff --git a/arch/arm/mach-ixp2000/include/mach/timex.h b/arch/arm/mach-ixp2000/include/mach/timex.h
deleted file mode 100644 (file)
index 835e659..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/timex.h
- *
- * IXP2000 architecture timex specifications
- */
-
-
-/*
- * Default clock is 50MHz APB, but platform code can override this
- */
-#define CLOCK_TICK_RATE        50000000
-
-
diff --git a/arch/arm/mach-ixp2000/include/mach/uncompress.h b/arch/arm/mach-ixp2000/include/mach/uncompress.h
deleted file mode 100644 (file)
index ce36308..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/include/mach/uncompress.h
- *
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2002 Intel Corp.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- *
- */
-
-#include <linux/serial_reg.h>
-
-#define UART_BASE      0xc0030000
-
-#define PHYS(x)          ((volatile unsigned long *)(UART_BASE + x))
-
-#define UARTDR          PHYS(0x00)      /* Transmit reg dlab=0 */
-#define UARTDLL         PHYS(0x00)      /* Divisor Latch reg dlab=1*/
-#define UARTDLM         PHYS(0x04)      /* Divisor Latch reg dlab=1*/
-#define UARTIER         PHYS(0x04)      /* Interrupt enable reg */
-#define UARTFCR         PHYS(0x08)      /* FIFO control reg dlab =0*/
-#define UARTLCR         PHYS(0x0c)      /* Control reg */
-#define UARTSR          PHYS(0x14)      /* Status reg */
-
-
-static inline void putc(int c)
-{
-       int j = 0x1000;
-
-       while (--j && !(*UARTSR & UART_LSR_THRE))
-               barrier();
-
-       *UARTDR = c;
-}
-
-static inline void flush(void)
-{
-}
-
-#define arch_decomp_setup()
-#define arch_decomp_wdog()
diff --git a/arch/arm/mach-ixp2000/ixdp2400.c b/arch/arm/mach-ixp2000/ixdp2400.c
deleted file mode 100644 (file)
index 915ad49..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/ixdp2400.c
- *
- * IXDP2400 platform support
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/device.h>
-#include <linux/bitops.h>
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/pci.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/arch.h>
-
-/*************************************************************************
- * IXDP2400 timer tick
- *************************************************************************/
-static void __init ixdp2400_timer_init(void)
-{
-       int numerator, denominator;
-       int denom_array[] = {2, 4, 8, 16, 1, 2, 4, 8};
-
-       numerator = (*(IXDP2400_CPLD_SYS_CLK_M) & 0xFF) *2;
-       denominator = denom_array[(*(IXDP2400_CPLD_SYS_CLK_N) & 0x7)];
-
-       ixp2000_init_time(((3125000 * numerator) / (denominator)) / 2);
-}
-
-static struct sys_timer ixdp2400_timer = {
-       .init           = ixdp2400_timer_init,
-       .offset         = ixp2000_gettimeoffset,
-};
-
-/*************************************************************************
- * IXDP2400 PCI
- *************************************************************************/
-void __init ixdp2400_pci_preinit(void)
-{
-       ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00100000);
-       ixp2000_pci_preinit();
-       pcibios_setup("firmware");
-}
-
-int ixdp2400_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       sys->mem_offset = 0xe0000000;
-
-       ixp2000_pci_setup(nr, sys);
-
-       return 1;
-}
-
-static int __init ixdp2400_pci_map_irq(const struct pci_dev *dev, u8 slot,
-       u8 pin)
-{
-       if (ixdp2x00_master_npu()) {
-
-               /*
-                * Root bus devices.  Slave NPU is only one with interrupt.
-                * Everything else, we just return -1 b/c nothing else
-                * on the root bus has interrupts.
-                */
-               if(!dev->bus->self) {
-                       if(dev->devfn == IXDP2X00_SLAVE_NPU_DEVFN )
-                               return IRQ_IXDP2400_INGRESS_NPU;
-
-                       return -1;
-               }
-
-               /*
-                * Bridge behind the PMC slot.
-                * NOTE: Only INTA from the PMC slot is routed. VERY BAD.
-                */
-               if(dev->bus->self->devfn == IXDP2X00_PMC_DEVFN &&
-                       dev->bus->parent->self->devfn == IXDP2X00_P2P_DEVFN &&
-                       !dev->bus->parent->self->bus->parent)
-                                 return IRQ_IXDP2400_PMC;
-
-               /*
-                * Device behind the first bridge
-                */
-               if(dev->bus->self->devfn == IXDP2X00_P2P_DEVFN) {
-                       switch(dev->devfn) {
-                               case IXDP2400_MASTER_ENET_DEVFN:        
-                                       return IRQ_IXDP2400_ENET;       
-                       
-                               case IXDP2400_MEDIA_DEVFN:
-                                       return IRQ_IXDP2400_MEDIA_PCI;
-
-                               case IXDP2400_SWITCH_FABRIC_DEVFN:
-                                       return IRQ_IXDP2400_SF_PCI;
-
-                               case IXDP2X00_PMC_DEVFN:
-                                       return IRQ_IXDP2400_PMC;
-                       }
-               }
-
-               return -1;
-       } else return IRQ_IXP2000_PCIB; /* Slave NIC interrupt */
-}
-
-
-static void ixdp2400_pci_postinit(void)
-{
-       struct pci_dev *dev;
-
-       if (ixdp2x00_master_npu()) {
-               dev = pci_get_bus_and_slot(1, IXDP2400_SLAVE_ENET_DEVFN);
-               pci_stop_and_remove_bus_device(dev);
-               pci_dev_put(dev);
-       } else {
-               dev = pci_get_bus_and_slot(1, IXDP2400_MASTER_ENET_DEVFN);
-               pci_stop_and_remove_bus_device(dev);
-               pci_dev_put(dev);
-
-               ixdp2x00_slave_pci_postinit();
-       }
-}
-
-static struct hw_pci ixdp2400_pci __initdata = {
-       .nr_controllers = 1,
-       .setup          = ixdp2400_pci_setup,
-       .preinit        = ixdp2400_pci_preinit,
-       .postinit       = ixdp2400_pci_postinit,
-       .scan           = ixp2000_pci_scan_bus,
-       .map_irq        = ixdp2400_pci_map_irq,
-};
-
-int __init ixdp2400_pci_init(void)
-{
-       if (machine_is_ixdp2400())
-               pci_common_init(&ixdp2400_pci);
-
-       return 0;
-}
-
-subsys_initcall(ixdp2400_pci_init);
-
-void __init ixdp2400_init_irq(void)
-{
-       ixdp2x00_init_irq(IXDP2400_CPLD_INT_STAT, IXDP2400_CPLD_INT_MASK, IXDP2400_NR_IRQS);
-}
-
-MACHINE_START(IXDP2400, "Intel IXDP2400 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .atag_offset    = 0x100,
-       .map_io         = ixdp2x00_map_io,
-       .init_irq       = ixdp2400_init_irq,
-       .timer          = &ixdp2400_timer,
-       .init_machine   = ixdp2x00_init_machine,
-       .restart        = ixp2000_restart,
-MACHINE_END
-
diff --git a/arch/arm/mach-ixp2000/ixdp2800.c b/arch/arm/mach-ixp2000/ixdp2800.c
deleted file mode 100644 (file)
index a9f1819..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/ixdp2800.c
- *
- * IXDP2800 platform support
- *
- * Original Author: Jeffrey Daly <jeffrey.daly@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/device.h>
-#include <linux/bitops.h>
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/pci.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/arch.h>
-
-/*************************************************************************
- * IXDP2800 timer tick
- *************************************************************************/
-
-static void __init ixdp2800_timer_init(void)
-{
-       ixp2000_init_time(50000000);
-}
-
-static struct sys_timer ixdp2800_timer = {
-       .init           = ixdp2800_timer_init,
-       .offset         = ixp2000_gettimeoffset,
-};
-
-/*************************************************************************
- * IXDP2800 PCI
- *************************************************************************/
-static void __init ixdp2800_slave_disable_pci_master(void)
-{
-       *IXP2000_PCI_CMDSTAT &= ~(PCI_COMMAND_MASTER | PCI_COMMAND_MEMORY);
-}
-
-static void __init ixdp2800_master_wait_for_slave(void)
-{
-       volatile u32 *addr;
-
-       printk(KERN_INFO "IXDP2800: waiting for slave NPU to configure "
-                        "its BAR sizes\n");
-
-       addr = ixp2000_pci_config_addr(0, IXDP2X00_SLAVE_NPU_DEVFN,
-                                       PCI_BASE_ADDRESS_1);
-       do {
-               *addr = 0xffffffff;
-               cpu_relax();
-       } while (*addr != 0xfe000008);
-
-       addr = ixp2000_pci_config_addr(0, IXDP2X00_SLAVE_NPU_DEVFN,
-                                       PCI_BASE_ADDRESS_2);
-       do {
-               *addr = 0xffffffff;
-               cpu_relax();
-       } while (*addr != 0xc0000008);
-
-       /*
-        * Configure the slave's SDRAM BAR by hand.
-        */
-       *addr = 0x40000008;
-}
-
-static void __init ixdp2800_slave_wait_for_master_enable(void)
-{
-       printk(KERN_INFO "IXDP2800: waiting for master NPU to enable us\n");
-
-       while ((*IXP2000_PCI_CMDSTAT & PCI_COMMAND_MASTER) == 0)
-               cpu_relax();
-}
-
-void __init ixdp2800_pci_preinit(void)
-{
-       printk("ixdp2x00_pci_preinit called\n");
-
-       *IXP2000_PCI_ADDR_EXT = 0x0001e000;
-
-       if (!ixdp2x00_master_npu())
-               ixdp2800_slave_disable_pci_master();
-
-       *IXP2000_PCI_SRAM_BASE_ADDR_MASK = (0x2000000 - 1) & ~0x3ffff;
-       *IXP2000_PCI_DRAM_BASE_ADDR_MASK = (0x40000000 - 1) & ~0xfffff;
-
-       ixp2000_pci_preinit();
-
-       if (ixdp2x00_master_npu()) {
-               /*
-                * Wait until the slave set its SRAM/SDRAM BAR sizes
-                * correctly before we proceed to scan and enumerate
-                * the bus.
-                */
-               ixdp2800_master_wait_for_slave();
-
-               /*
-                * We configure the SDRAM BARs by hand because they
-                * are 1G and fall outside of the regular allocated
-                * PCI address space.
-                */
-               *IXP2000_PCI_SDRAM_BAR = 0x00000008;
-       } else {
-               /*
-                * Wait for the master to complete scanning the bus
-                * and assigning resources before we proceed to scan
-                * the bus ourselves.  Set pci=firmware to honor the
-                * master's resource assignment.
-                */
-               ixdp2800_slave_wait_for_master_enable();
-               pcibios_setup("firmware");
-       }
-}
-
-/*
- * We assign the SDRAM BARs for the two IXP2800 CPUs by hand, outside
- * of the regular PCI window, because there's only 512M of outbound PCI
- * memory window on each IXP, while we need 1G for each of the BARs.
- */
-static void __devinit ixp2800_pci_fixup(struct pci_dev *dev)
-{
-       if (machine_is_ixdp2800()) {
-               dev->resource[2].start = 0;
-               dev->resource[2].end   = 0;
-               dev->resource[2].flags = 0;
-       }
-}
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IXP2800, ixp2800_pci_fixup);
-
-static int __init ixdp2800_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       sys->mem_offset = 0x00000000;
-
-       ixp2000_pci_setup(nr, sys);
-
-       return 1;
-}
-
-static int __init ixdp2800_pci_map_irq(const struct pci_dev *dev, u8 slot,
-       u8 pin)
-{
-       if (ixdp2x00_master_npu()) {
-
-               /*
-                * Root bus devices.  Slave NPU is only one with interrupt.
-                * Everything else, we just return -1 which is invalid.
-                */
-               if(!dev->bus->self) {
-                       if(dev->devfn == IXDP2X00_SLAVE_NPU_DEVFN )
-                               return IRQ_IXDP2800_INGRESS_NPU;
-
-                       return -1;
-               }
-
-               /*
-                * Bridge behind the PMC slot.
-                */
-               if(dev->bus->self->devfn == IXDP2X00_PMC_DEVFN &&
-                       dev->bus->parent->self->devfn == IXDP2X00_P2P_DEVFN &&
-                       !dev->bus->parent->self->bus->parent)
-                                 return IRQ_IXDP2800_PMC;
-
-               /*
-                * Device behind the first bridge
-                */
-               if(dev->bus->self->devfn == IXDP2X00_P2P_DEVFN) {
-                       switch(dev->devfn) {
-                               case IXDP2X00_PMC_DEVFN:
-                                       return IRQ_IXDP2800_PMC;        
-                       
-                               case IXDP2800_MASTER_ENET_DEVFN:
-                                       return IRQ_IXDP2800_EGRESS_ENET;
-
-                               case IXDP2800_SWITCH_FABRIC_DEVFN:
-                                       return IRQ_IXDP2800_FABRIC;
-                       }
-               }
-
-               return -1;
-       } else return IRQ_IXP2000_PCIB; /* Slave NIC interrupt */
-}
-
-static void __init ixdp2800_master_enable_slave(void)
-{
-       volatile u32 *addr;
-
-       printk(KERN_INFO "IXDP2800: enabling slave NPU\n");
-
-       addr = (volatile u32 *)ixp2000_pci_config_addr(0,
-                                       IXDP2X00_SLAVE_NPU_DEVFN,
-                                       PCI_COMMAND);
-
-       *addr |= PCI_COMMAND_MASTER;
-}
-
-static void __init ixdp2800_master_wait_for_slave_bus_scan(void)
-{
-       volatile u32 *addr;
-
-       printk(KERN_INFO "IXDP2800: waiting for slave to finish bus scan\n");
-
-       addr = (volatile u32 *)ixp2000_pci_config_addr(0,
-                                       IXDP2X00_SLAVE_NPU_DEVFN,
-                                       PCI_COMMAND);
-       while ((*addr & PCI_COMMAND_MEMORY) == 0)
-               cpu_relax();
-}
-
-static void __init ixdp2800_slave_signal_bus_scan_completion(void)
-{
-       printk(KERN_INFO "IXDP2800: bus scan done, signaling master\n");
-       *IXP2000_PCI_CMDSTAT |= PCI_COMMAND_MEMORY;
-}
-
-static void __init ixdp2800_pci_postinit(void)
-{
-       if (!ixdp2x00_master_npu()) {
-               ixdp2x00_slave_pci_postinit();
-               ixdp2800_slave_signal_bus_scan_completion();
-       }
-}
-
-struct __initdata hw_pci ixdp2800_pci __initdata = {
-       .nr_controllers = 1,
-       .setup          = ixdp2800_pci_setup,
-       .preinit        = ixdp2800_pci_preinit,
-       .postinit       = ixdp2800_pci_postinit,
-       .scan           = ixp2000_pci_scan_bus,
-       .map_irq        = ixdp2800_pci_map_irq,
-};
-
-int __init ixdp2800_pci_init(void)
-{
-       if (machine_is_ixdp2800()) {
-               struct pci_dev *dev;
-
-               pci_common_init(&ixdp2800_pci);
-               if (ixdp2x00_master_npu()) {
-                       dev = pci_get_bus_and_slot(1, IXDP2800_SLAVE_ENET_DEVFN);
-                       pci_stop_and_remove_bus_device(dev);
-                       pci_dev_put(dev);
-
-                       ixdp2800_master_enable_slave();
-                       ixdp2800_master_wait_for_slave_bus_scan();
-               } else {
-                       dev = pci_get_bus_and_slot(1, IXDP2800_MASTER_ENET_DEVFN);
-                       pci_stop_and_remove_bus_device(dev);
-                       pci_dev_put(dev);
-               }
-       }
-
-       return 0;
-}
-
-subsys_initcall(ixdp2800_pci_init);
-
-void __init ixdp2800_init_irq(void)
-{
-       ixdp2x00_init_irq(IXDP2800_CPLD_INT_STAT, IXDP2800_CPLD_INT_MASK, IXDP2800_NR_IRQS);
-}
-
-MACHINE_START(IXDP2800, "Intel IXDP2800 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .atag_offset    = 0x100,
-       .map_io         = ixdp2x00_map_io,
-       .init_irq       = ixdp2800_init_irq,
-       .timer          = &ixdp2800_timer,
-       .init_machine   = ixdp2x00_init_machine,
-       .restart        = ixp2000_restart,
-MACHINE_END
-
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c
deleted file mode 100644 (file)
index 421e38d..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/ixdp2x00.c
- *
- * Code common to IXDP2400 and IXDP2800 platforms.
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-#include <linux/gpio.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/platform_device.h>
-#include <linux/bitops.h>
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/pci.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <asm/mach/flash.h>
-#include <asm/mach/arch.h>
-
-#include <mach/gpio-ixp2000.h>
-
-/*************************************************************************
- * IXDP2x00 IRQ Initialization
- *************************************************************************/
-static volatile unsigned long *board_irq_mask;
-static volatile unsigned long *board_irq_stat;
-static unsigned long board_irq_count;
-
-#ifdef CONFIG_ARCH_IXDP2400
-/*
- * Slowport configuration for accessing CPLD registers on IXDP2x00
- */
-static struct slowport_cfg slowport_cpld_cfg = {
-       .CCR =  SLOWPORT_CCR_DIV_2,
-       .WTC = 0x00000070,
-       .RTC = 0x00000070,
-       .PCR = SLOWPORT_MODE_FLASH,
-       .ADC = SLOWPORT_ADDR_WIDTH_24 | SLOWPORT_DATA_WIDTH_8
-};
-#endif
-
-static void ixdp2x00_irq_mask(struct irq_data *d)
-{
-       unsigned long dummy;
-       static struct slowport_cfg old_cfg;
-
-       /*
-        * This is ugly in common code but really don't know
-        * of a better way to handle it. :(
-        */
-#ifdef CONFIG_ARCH_IXDP2400
-       if (machine_is_ixdp2400())
-               ixp2000_acquire_slowport(&slowport_cpld_cfg, &old_cfg);
-#endif
-
-       dummy = *board_irq_mask;
-       dummy |=  IXP2000_BOARD_IRQ_MASK(d->irq);
-       ixp2000_reg_wrb(board_irq_mask, dummy);
-
-#ifdef CONFIG_ARCH_IXDP2400
-       if (machine_is_ixdp2400())
-               ixp2000_release_slowport(&old_cfg);
-#endif
-}
-
-static void ixdp2x00_irq_unmask(struct irq_data *d)
-{
-       unsigned long dummy;
-       static struct slowport_cfg old_cfg;
-
-#ifdef CONFIG_ARCH_IXDP2400
-       if (machine_is_ixdp2400())
-               ixp2000_acquire_slowport(&slowport_cpld_cfg, &old_cfg);
-#endif
-
-       dummy = *board_irq_mask;
-       dummy &=  ~IXP2000_BOARD_IRQ_MASK(d->irq);
-       ixp2000_reg_wrb(board_irq_mask, dummy);
-
-       if (machine_is_ixdp2400()) 
-               ixp2000_release_slowport(&old_cfg);
-}
-
-static void ixdp2x00_irq_handler(unsigned int irq, struct irq_desc *desc)
-{
-        volatile u32 ex_interrupt = 0;
-       static struct slowport_cfg old_cfg;
-       int i;
-
-       desc->irq_data.chip->irq_mask(&desc->irq_data);
-
-#ifdef CONFIG_ARCH_IXDP2400
-       if (machine_is_ixdp2400())
-               ixp2000_acquire_slowport(&slowport_cpld_cfg, &old_cfg);
-#endif
-        ex_interrupt = *board_irq_stat & 0xff;
-       if (machine_is_ixdp2400())
-               ixp2000_release_slowport(&old_cfg);
-
-       if(!ex_interrupt) {
-               printk(KERN_ERR "Spurious IXDP2x00 CPLD interrupt!\n");
-               return;
-       }
-
-       for(i = 0; i < board_irq_count; i++) {
-               if(ex_interrupt & (1 << i))  {
-                       int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
-                       generic_handle_irq(cpld_irq);
-               }
-       }
-
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static struct irq_chip ixdp2x00_cpld_irq_chip = {
-       .irq_ack        = ixdp2x00_irq_mask,
-       .irq_mask       = ixdp2x00_irq_mask,
-       .irq_unmask     = ixdp2x00_irq_unmask
-};
-
-void __init ixdp2x00_init_irq(volatile unsigned long *stat_reg, volatile unsigned long *mask_reg, unsigned long nr_of_irqs)
-{
-       unsigned int irq;
-
-       ixp2000_init_irq();
-       
-       if (!ixdp2x00_master_npu())
-               return;
-
-       board_irq_stat = stat_reg;
-       board_irq_mask = mask_reg;
-       board_irq_count = nr_of_irqs;
-
-       *board_irq_mask = 0xffffffff;
-
-       for(irq = IXP2000_BOARD_IRQ(0); irq < IXP2000_BOARD_IRQ(board_irq_count); irq++) {
-               irq_set_chip_and_handler(irq, &ixdp2x00_cpld_irq_chip,
-                                        handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID);
-       }
-
-       /* Hook into PCI interrupt */
-       irq_set_chained_handler(IRQ_IXP2000_PCIB, ixdp2x00_irq_handler);
-}
-
-/*************************************************************************
- * IXDP2x00 memory map
- *************************************************************************/
-static struct map_desc ixdp2x00_io_desc __initdata = {
-       .virtual        = IXDP2X00_VIRT_CPLD_BASE, 
-       .pfn            = __phys_to_pfn(IXDP2X00_PHYS_CPLD_BASE),
-       .length         = IXDP2X00_CPLD_SIZE,
-       .type           = MT_DEVICE
-};
-
-void __init ixdp2x00_map_io(void)
-{
-       ixp2000_map_io();       
-
-       iotable_init(&ixdp2x00_io_desc, 1);
-}
-
-/*************************************************************************
- * IXDP2x00-common PCI init
- *
- * The IXDP2[48]00 has a horrid PCI bus layout. Basically the board 
- * contains two NPUs (ingress and egress) connected over PCI,  both running 
- * instances  of the kernel. So far so good. Peers on the PCI bus running 
- * Linux is a common design in telecom systems. The problem is that instead 
- * of all the devices being controlled by a single host, different
- * devices are controlled by different NPUs on the same bus, leading to
- * multiple hosts on the bus. The exact bus layout looks like:
- *
- *                   Bus 0
- *    Master NPU <-------------------+-------------------> Slave NPU
- *                                   |
- *                                   |
- *                                  P2P 
- *                                   |
- *
- *                  Bus 1            |
- *               <--+------+---------+---------+------+-->
- *                  |      |         |         |      |
- *                  |      |         |         |      |
- *             ... Dev    PMC       Media     Eth0   Eth1 ...
- *
- * The master controls all but Eth1, which is controlled by the
- * slave. What this means is that the both the master and the slave
- * have to scan the bus, but only one of them can enumerate the bus.
- * In addition, after the bus is scanned, each kernel must remove
- * the device(s) it does not control from the PCI dev list otherwise
- * a driver on each NPU will try to manage it and we will have horrible
- * conflicts. Oh..and the slave NPU needs to see the master NPU
- * for Intel's drivers to work properly. Closed source drivers...
- *
- * The way we deal with this is fairly simple but ugly:
- *
- * 1) Let master scan and enumerate the bus completely.
- * 2) Master deletes Eth1 from device list.
- * 3) Slave scans bus and then deletes all but Eth1 (Eth0 on slave)
- *    from device list.
- * 4) Find HW designers and LART them.
- *
- * The boards also do not do normal PCI IRQ routing, or any sort of 
- * sensical  swizzling, so we just need to check where on the  bus a
- * device sits and figure out to which CPLD pin the interrupt is routed.
- * See ixdp2[48]00.c files.
- *
- *************************************************************************/
-void ixdp2x00_slave_pci_postinit(void)
-{
-       struct pci_dev *dev;
-
-       /*
-        * Remove PMC device is there is one
-        */
-       if((dev = pci_get_bus_and_slot(1, IXDP2X00_PMC_DEVFN))) {
-               pci_stop_and_remove_bus_device(dev);
-               pci_dev_put(dev);
-       }
-
-       dev = pci_get_bus_and_slot(0, IXDP2X00_21555_DEVFN);
-       pci_stop_and_remove_bus_device(dev);
-       pci_dev_put(dev);
-}
-
-/**************************************************************************
- * IXDP2x00 Machine Setup
- *************************************************************************/
-static struct flash_platform_data ixdp2x00_platform_data = {
-       .map_name       = "cfi_probe",
-       .width          = 1,
-};
-
-static struct ixp2000_flash_data ixdp2x00_flash_data = {
-       .platform_data  = &ixdp2x00_platform_data,
-       .nr_banks       = 1
-};
-
-static struct resource ixdp2x00_flash_resource = {
-       .start          = 0xc4000000,
-       .end            = 0xc4000000 + 0x00ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2x00_flash = {
-       .name           = "IXP2000-Flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &ixdp2x00_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x00_flash_resource,
-};
-
-static struct ixp2000_i2c_pins ixdp2x00_i2c_gpio_pins = {
-       .sda_pin        = IXDP2X00_GPIO_SDA,
-       .scl_pin        = IXDP2X00_GPIO_SCL,
-};
-
-static struct platform_device ixdp2x00_i2c_controller = {
-       .name           = "IXP2000-I2C",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &ixdp2x00_i2c_gpio_pins,
-       },
-       .num_resources  = 0
-};
-
-static struct platform_device *ixdp2x00_devices[] __initdata = {
-       &ixdp2x00_flash,
-       &ixdp2x00_i2c_controller
-};
-
-void __init ixdp2x00_init_machine(void)
-{
-       gpio_line_set(IXDP2X00_GPIO_I2C_ENABLE, 1);
-       gpio_line_config(IXDP2X00_GPIO_I2C_ENABLE, GPIO_OUT);
-
-       platform_add_devices(ixdp2x00_devices, ARRAY_SIZE(ixdp2x00_devices));
-       ixp2000_uart_init();
-}
-
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c
deleted file mode 100644 (file)
index 5196c39..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/ixdp2x01.c
- *
- * Code common to Intel IXDP2401 and IXDP2801 platforms
- *
- * Original Author: Andrzej Mialkowski <andrzej.mialkowski@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2002-2003 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mm.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/bitops.h>
-#include <linux/pci.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/serial_core.h>
-#include <linux/platform_device.h>
-#include <linux/serial_8250.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/pgtable.h>
-#include <asm/page.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-
-#include <asm/mach/pci.h>
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/time.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/flash.h>
-
-/*************************************************************************
- * IXDP2x01 IRQ Handling
- *************************************************************************/
-static void ixdp2x01_irq_mask(struct irq_data *d)
-{
-       ixp2000_reg_wrb(IXDP2X01_INT_MASK_SET_REG,
-                               IXP2000_BOARD_IRQ_MASK(d->irq));
-}
-
-static void ixdp2x01_irq_unmask(struct irq_data *d)
-{
-       ixp2000_reg_write(IXDP2X01_INT_MASK_CLR_REG,
-                               IXP2000_BOARD_IRQ_MASK(d->irq));
-}
-
-static u32 valid_irq_mask;
-
-static void ixdp2x01_irq_handler(unsigned int irq, struct irq_desc *desc)
-{
-       u32 ex_interrupt;
-       int i;
-
-       desc->irq_data.chip->irq_mask(&desc->irq_data);
-
-       ex_interrupt = *IXDP2X01_INT_STAT_REG & valid_irq_mask;
-
-       if (!ex_interrupt) {
-               printk(KERN_ERR "Spurious IXDP2X01 CPLD interrupt!\n");
-               return;
-       }
-
-       for (i = 0; i < IXP2000_BOARD_IRQS; i++) {
-               if (ex_interrupt & (1 << i)) {
-                       int cpld_irq = IXP2000_BOARD_IRQ(0) + i;
-                       generic_handle_irq(cpld_irq);
-               }
-       }
-
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static struct irq_chip ixdp2x01_irq_chip = {
-       .irq_mask       = ixdp2x01_irq_mask,
-       .irq_ack        = ixdp2x01_irq_mask,
-       .irq_unmask     = ixdp2x01_irq_unmask
-};
-
-/*
- * We only do anything if we are the master NPU on the board.
- * The slave NPU only has the ethernet chip going directly to
- * the PCIB interrupt input.
- */
-void __init ixdp2x01_init_irq(void)
-{
-       int irq = 0;
-
-       /* initialize chip specific interrupts */
-       ixp2000_init_irq();
-
-       if (machine_is_ixdp2401())
-               valid_irq_mask = IXDP2401_VALID_IRQ_MASK;
-       else
-               valid_irq_mask = IXDP2801_VALID_IRQ_MASK;
-
-       /* Mask all interrupts from CPLD, disable simulation */
-       ixp2000_reg_write(IXDP2X01_INT_MASK_SET_REG, 0xffffffff);
-       ixp2000_reg_wrb(IXDP2X01_INT_SIM_REG, 0);
-
-       for (irq = NR_IXP2000_IRQS; irq < NR_IXDP2X01_IRQS; irq++) {
-               if (irq & valid_irq_mask) {
-                       irq_set_chip_and_handler(irq, &ixdp2x01_irq_chip,
-                                                handle_level_irq);
-                       set_irq_flags(irq, IRQF_VALID);
-               } else {
-                       set_irq_flags(irq, 0);
-               }
-       }
-
-       /* Hook into PCI interrupts */
-       irq_set_chained_handler(IRQ_IXP2000_PCIB, ixdp2x01_irq_handler);
-}
-
-
-/*************************************************************************
- * IXDP2x01 memory map
- *************************************************************************/
-static struct map_desc ixdp2x01_io_desc __initdata = {
-       .virtual        = IXDP2X01_VIRT_CPLD_BASE, 
-       .pfn            = __phys_to_pfn(IXDP2X01_PHYS_CPLD_BASE),
-       .length         = IXDP2X01_CPLD_REGION_SIZE,
-       .type           = MT_DEVICE
-};
-
-static void __init ixdp2x01_map_io(void)
-{
-       ixp2000_map_io();
-       iotable_init(&ixdp2x01_io_desc, 1);
-}
-
-
-/*************************************************************************
- * IXDP2x01 serial ports
- *************************************************************************/
-static struct plat_serial8250_port ixdp2x01_serial_port1[] = {
-       {
-               .mapbase        = (unsigned long)IXDP2X01_UART1_PHYS_BASE,
-               .membase        = (char *)IXDP2X01_UART1_VIRT_BASE,
-               .irq            = IRQ_IXDP2X01_UART1,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-               .iotype         = UPIO_MEM32,
-               .regshift       = 2,
-               .uartclk        = IXDP2X01_UART_CLK,
-       },
-       { }
-};
-
-static struct resource ixdp2x01_uart_resource1 = {
-       .start          = IXDP2X01_UART1_PHYS_BASE,
-       .end            = IXDP2X01_UART1_PHYS_BASE + 0xffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2x01_serial_device1 = {
-       .name           = "serial8250",
-       .id             = PLAT8250_DEV_PLATFORM1,
-       .dev            = {
-               .platform_data          = ixdp2x01_serial_port1,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x01_uart_resource1,
-};
-
-static struct plat_serial8250_port ixdp2x01_serial_port2[] = {
-       {
-               .mapbase        = (unsigned long)IXDP2X01_UART2_PHYS_BASE,
-               .membase        = (char *)IXDP2X01_UART2_VIRT_BASE,
-               .irq            = IRQ_IXDP2X01_UART2,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-               .iotype         = UPIO_MEM32,
-               .regshift       = 2,
-               .uartclk        = IXDP2X01_UART_CLK,
-       }, 
-       { }
-};
-
-static struct resource ixdp2x01_uart_resource2 = {
-       .start          = IXDP2X01_UART2_PHYS_BASE,
-       .end            = IXDP2X01_UART2_PHYS_BASE + 0xffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2x01_serial_device2 = {
-       .name           = "serial8250",
-       .id             = PLAT8250_DEV_PLATFORM2,
-       .dev            = {
-               .platform_data          = ixdp2x01_serial_port2,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x01_uart_resource2,
-};
-
-static void ixdp2x01_uart_init(void)
-{
-       platform_device_register(&ixdp2x01_serial_device1);
-       platform_device_register(&ixdp2x01_serial_device2);
-}
-
-
-/*************************************************************************
- * IXDP2x01 timer tick configuration
- *************************************************************************/
-static unsigned int ixdp2x01_clock;
-
-static int __init ixdp2x01_clock_setup(char *str)
-{
-       ixdp2x01_clock = simple_strtoul(str, NULL, 10);
-
-       return 1;
-}
-
-__setup("ixdp2x01_clock=", ixdp2x01_clock_setup);
-
-static void __init ixdp2x01_timer_init(void)
-{
-       if (!ixdp2x01_clock)
-               ixdp2x01_clock = 50000000;
-
-       ixp2000_init_time(ixdp2x01_clock);
-}
-
-static struct sys_timer ixdp2x01_timer = {
-       .init           = ixdp2x01_timer_init,
-       .offset         = ixp2000_gettimeoffset,
-};
-
-/*************************************************************************
- * IXDP2x01 PCI
- *************************************************************************/
-void __init ixdp2x01_pci_preinit(void)
-{
-       ixp2000_reg_write(IXP2000_PCI_ADDR_EXT, 0x00000000);
-       ixp2000_pci_preinit();
-       pcibios_setup("firmware");
-}
-
-#define DEVPIN(dev, pin) ((pin) | ((dev) << 3))
-
-static int __init ixdp2x01_pci_map_irq(const struct pci_dev *dev, u8 slot,
-       u8 pin)
-{
-       u8 bus = dev->bus->number;
-       u32 devpin = DEVPIN(PCI_SLOT(dev->devfn), pin);
-       struct pci_bus *tmp_bus = dev->bus;
-
-       /* Primary bus, no interrupts here */
-       if (bus == 0) {
-               return -1;
-       }
-
-       /* Lookup first leaf in bus tree */
-       while ((tmp_bus->parent != NULL) && (tmp_bus->parent->parent != NULL)) {
-               tmp_bus = tmp_bus->parent;
-       }
-
-       /* Select between known bridges */
-       switch (tmp_bus->self->devfn | (tmp_bus->self->bus->number << 8)) {
-       /* Device is located after first MB bridge */
-       case 0x0008:
-               if (tmp_bus == dev->bus) {
-                       /* Device is located directly after first MB bridge */
-                       switch (devpin) {
-                       case DEVPIN(1, 1):      /* Onboard 82546 ch 0 */
-                               if (machine_is_ixdp2401())
-                                       return IRQ_IXDP2401_INTA_82546;
-                               return -1;
-                       case DEVPIN(1, 2):      /* Onboard 82546 ch 1 */
-                               if (machine_is_ixdp2401())
-                                       return IRQ_IXDP2401_INTB_82546;
-                               return -1;
-                       case DEVPIN(0, 1):      /* PMC INTA# */
-                               return IRQ_IXDP2X01_SPCI_PMC_INTA;
-                       case DEVPIN(0, 2):      /* PMC INTB# */
-                               return IRQ_IXDP2X01_SPCI_PMC_INTB;
-                       case DEVPIN(0, 3):      /* PMC INTC# */
-                               return IRQ_IXDP2X01_SPCI_PMC_INTC;
-                       case DEVPIN(0, 4):      /* PMC INTD# */
-                               return IRQ_IXDP2X01_SPCI_PMC_INTD;
-                       }
-               }
-               break;
-       case 0x0010:
-               if (tmp_bus == dev->bus) {
-                       /* Device is located directly after second MB bridge */
-                       /* Secondary bus of second bridge */
-                       switch (devpin) {
-                       case DEVPIN(0, 1):      /* DB#0 */
-                               return IRQ_IXDP2X01_SPCI_DB_0;
-                       case DEVPIN(1, 1):      /* DB#1 */
-                               return IRQ_IXDP2X01_SPCI_DB_1;
-                       }
-               } else {
-                       /* Device is located indirectly after second MB bridge */
-                       /* Not supported now */
-               }
-               break;
-       }
-
-       return -1;
-}
-
-
-static int ixdp2x01_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       sys->mem_offset = 0xe0000000;
-
-       if (machine_is_ixdp2801() || machine_is_ixdp28x5())
-               sys->mem_offset -= ((*IXP2000_PCI_ADDR_EXT & 0xE000) << 16);
-
-       return ixp2000_pci_setup(nr, sys);
-}
-
-struct hw_pci ixdp2x01_pci __initdata = {
-       .nr_controllers = 1,
-       .setup          = ixdp2x01_pci_setup,
-       .preinit        = ixdp2x01_pci_preinit,
-       .scan           = ixp2000_pci_scan_bus,
-       .map_irq        = ixdp2x01_pci_map_irq,
-};
-
-int __init ixdp2x01_pci_init(void)
-{
-       if (machine_is_ixdp2401() || machine_is_ixdp2801() ||\
-               machine_is_ixdp28x5())
-               pci_common_init(&ixdp2x01_pci);
-
-       return 0;
-}
-
-subsys_initcall(ixdp2x01_pci_init);
-
-/*************************************************************************
- * IXDP2x01 Machine Initialization
- *************************************************************************/
-static struct flash_platform_data ixdp2x01_flash_platform_data = {
-       .map_name       = "cfi_probe",
-       .width          = 1,
-};
-
-static unsigned long ixdp2x01_flash_bank_setup(unsigned long ofs)
-{
-       ixp2000_reg_wrb(IXDP2X01_CPLD_FLASH_REG,
-               ((ofs >> IXDP2X01_FLASH_WINDOW_BITS) | IXDP2X01_CPLD_FLASH_INTERN));
-       return (ofs & IXDP2X01_FLASH_WINDOW_MASK);
-}
-
-static struct ixp2000_flash_data ixdp2x01_flash_data = {
-       .platform_data  = &ixdp2x01_flash_platform_data,
-       .bank_setup     = ixdp2x01_flash_bank_setup
-};
-
-static struct resource ixdp2x01_flash_resource = {
-       .start          = 0xc4000000,
-       .end            = 0xc4000000 + 0x01ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2x01_flash = {
-       .name           = "IXP2000-Flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &ixdp2x01_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2x01_flash_resource,
-};
-
-static struct ixp2000_i2c_pins ixdp2x01_i2c_gpio_pins = {
-       .sda_pin        = IXDP2X01_GPIO_SDA,
-       .scl_pin        = IXDP2X01_GPIO_SCL,
-};
-
-static struct platform_device ixdp2x01_i2c_controller = {
-       .name           = "IXP2000-I2C",
-       .id             = 0,
-       .dev            = {
-               .platform_data = &ixdp2x01_i2c_gpio_pins,
-       },
-       .num_resources  = 0
-};
-
-static struct platform_device *ixdp2x01_devices[] __initdata = {
-       &ixdp2x01_flash,
-       &ixdp2x01_i2c_controller
-};
-
-static void __init ixdp2x01_init_machine(void)
-{
-       ixp2000_reg_wrb(IXDP2X01_CPLD_FLASH_REG,
-               (IXDP2X01_CPLD_FLASH_BANK_MASK | IXDP2X01_CPLD_FLASH_INTERN));
-       
-       ixdp2x01_flash_data.nr_banks =
-               ((*IXDP2X01_CPLD_FLASH_REG & IXDP2X01_CPLD_FLASH_BANK_MASK) + 1);
-
-       platform_add_devices(ixdp2x01_devices, ARRAY_SIZE(ixdp2x01_devices));
-       ixp2000_uart_init();
-       ixdp2x01_uart_init();
-}
-
-static void ixdp2401_restart(char mode, const char *cmd)
-{
-       /*
-        * Reset flash banking register so that we are pointing at
-        * RedBoot bank.
-        */
-       ixp2000_reg_write(IXDP2X01_CPLD_FLASH_REG,
-                               ((0 >> IXDP2X01_FLASH_WINDOW_BITS)
-                                       | IXDP2X01_CPLD_FLASH_INTERN));
-       ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0xffffffff);
-
-       ixp2000_restart(mode, cmd);
-}
-
-static void ixdp280x_restart(char mode, const char *cmd)
-{
-       /*
-        * On IXDP2801 we need to write this magic sequence to the CPLD
-        * to cause a complete reset of the CPU and all external devices
-        * and move the flash bank register back to 0.
-        */
-       unsigned long reset_reg = *IXDP2X01_CPLD_RESET_REG;
-
-       reset_reg = 0x55AA0000 | (reset_reg & 0x0000FFFF);
-       ixp2000_reg_write(IXDP2X01_CPLD_RESET_REG, reset_reg);
-       ixp2000_reg_wrb(IXDP2X01_CPLD_RESET_REG, 0x80000000);
-
-       ixp2000_restart(mode, cmd);
-}
-
-#ifdef CONFIG_ARCH_IXDP2401
-MACHINE_START(IXDP2401, "Intel IXDP2401 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .atag_offset    = 0x100,
-       .map_io         = ixdp2x01_map_io,
-       .init_irq       = ixdp2x01_init_irq,
-       .timer          = &ixdp2x01_timer,
-       .init_machine   = ixdp2x01_init_machine,
-       .restart        = ixdp2401_restart,
-MACHINE_END
-#endif
-
-#ifdef CONFIG_ARCH_IXDP2801
-MACHINE_START(IXDP2801, "Intel IXDP2801 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .atag_offset    = 0x100,
-       .map_io         = ixdp2x01_map_io,
-       .init_irq       = ixdp2x01_init_irq,
-       .timer          = &ixdp2x01_timer,
-       .init_machine   = ixdp2x01_init_machine,
-       .restart        = ixdp280x_restart,
-MACHINE_END
-
-/*
- * IXDP28x5 is basically an IXDP2801 with a different CPU but Intel
- * changed the machine ID in the bootloader
- */
-MACHINE_START(IXDP28X5, "Intel IXDP2805/2855 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .atag_offset    = 0x100,
-       .map_io         = ixdp2x01_map_io,
-       .init_irq       = ixdp2x01_init_irq,
-       .timer          = &ixdp2x01_timer,
-       .init_machine   = ixdp2x01_init_machine,
-       .restart        = ixdp280x_restart,
-MACHINE_END
-#endif
-
-
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c
deleted file mode 100644 (file)
index 9c02de9..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * arch/arm/mach-ixp2000/pci.c
- *
- * PCI routines for IXDP2400/IXDP2800 boards
- *
- * Original Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Maintained by: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2002 Intel Corp.
- * Copyright (C) 2003-2004 MontaVista Software, Inc.
- *
- *  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 the
- *  Free Software Foundation;  either version 2 of the  License, or (at your
- *  option) any later version.
- */
-
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/interrupt.h>
-#include <linux/mm.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <mach/hardware.h>
-
-#include <asm/mach/pci.h>
-
-static volatile int pci_master_aborts = 0;
-
-static int clear_master_aborts(void);
-
-u32 *
-ixp2000_pci_config_addr(unsigned int bus_nr, unsigned int devfn, int where)
-{
-       u32 *paddress;
-
-       if (PCI_SLOT(devfn) > 7)
-               return 0;
-
-       /* Must be dword aligned */
-       where &= ~3;
-
-       /*
-        * For top bus, generate type 0, else type 1
-        */
-       if (!bus_nr) {
-               /* only bits[23:16] are used for IDSEL */
-               paddress = (u32 *) (IXP2000_PCI_CFG0_VIRT_BASE
-                                   | (1 << (PCI_SLOT(devfn) + 16))
-                                   | (PCI_FUNC(devfn) << 8) | where);
-       } else {
-               paddress = (u32 *) (IXP2000_PCI_CFG1_VIRT_BASE 
-                                   | (bus_nr << 16)
-                                   | (PCI_SLOT(devfn) << 11)
-                                   | (PCI_FUNC(devfn) << 8) | where);
-       }
-
-       return paddress;
-}
-
-/*
- * Mask table, bits to mask for quantity of size 1, 2 or 4 bytes.
- * 0 and 3 are not valid indexes...
- */
-static u32 bytemask[] = {
-       /*0*/   0,
-       /*1*/   0xff,
-       /*2*/   0xffff,
-       /*3*/   0,
-       /*4*/   0xffffffff,
-};
-
-
-int ixp2000_pci_read_config(struct pci_bus *bus, unsigned int devfn, int where,
-                               int size, u32 *value)
-{
-       u32 n;
-       u32 *addr;
-
-       n = where % 4;
-
-       addr = ixp2000_pci_config_addr(bus->number, devfn, where);
-       if (!addr)
-               return PCIBIOS_DEVICE_NOT_FOUND;
-
-       pci_master_aborts = 0;
-       *value = (*addr >> (8*n)) & bytemask[size];
-       if (pci_master_aborts) {
-               pci_master_aborts = 0;
-               *value = 0xffffffff;
-               return PCIBIOS_DEVICE_NOT_FOUND;
-       }
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-/*
- * We don't do error checks by calling clear_master_aborts() b/c the
- * assumption is that the caller did a read first to make sure a device
- * exists.
- */
-int ixp2000_pci_write_config(struct pci_bus *bus, unsigned int devfn, int where,
-                               int size, u32 value)
-{
-       u32 mask;
-       u32 *addr;
-       u32 temp;
-
-       mask = ~(bytemask[size] << ((where % 0x4) * 8));
-       addr = ixp2000_pci_config_addr(bus->number, devfn, where);
-       if (!addr)
-               return PCIBIOS_DEVICE_NOT_FOUND;
-       temp = (u32) (value) << ((where % 0x4) * 8);
-       *addr = (*addr & mask) | temp;
-
-       clear_master_aborts();
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-
-static struct pci_ops ixp2000_pci_ops = {
-       .read   = ixp2000_pci_read_config,
-       .write  = ixp2000_pci_write_config
-};
-
-struct pci_bus *ixp2000_pci_scan_bus(int nr, struct pci_sys_data *sysdata)
-{
-       return pci_scan_root_bus(NULL, sysdata->busnr, &ixp2000_pci_ops,
-                                sysdata, &sysdata->resources);
-}
-
-
-int ixp2000_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
-{
-
-       volatile u32 temp;
-       unsigned long flags;
-
-       pci_master_aborts = 1;
-
-       local_irq_save(flags);
-       temp = *(IXP2000_PCI_CONTROL);
-       if (temp & ((1 << 8) | (1 << 5))) {
-               ixp2000_reg_wrb(IXP2000_PCI_CONTROL, temp);
-       }
-
-       temp = *(IXP2000_PCI_CMDSTAT);
-       if (temp & (1 << 29)) {
-               while (temp & (1 << 29)) {      
-                       ixp2000_reg_write(IXP2000_PCI_CMDSTAT, temp);
-                       temp = *(IXP2000_PCI_CMDSTAT);
-               }
-       }
-       local_irq_restore(flags);
-
-       /*
-        * If it was an imprecise abort, then we need to correct the
-        * return address to be _after_ the instruction.
-        */
-       if (fsr & (1 << 10))
-               regs->ARM_pc += 4;
-
-       return 0;
-}
-
-int
-clear_master_aborts(void)
-{
-       volatile u32 temp;
-       unsigned long flags;
-
-       local_irq_save(flags);
-       temp = *(IXP2000_PCI_CONTROL);
-       if (temp & ((1 << 8) | (1 << 5))) {
-               ixp2000_reg_wrb(IXP2000_PCI_CONTROL, temp);
-       }
-
-       temp = *(IXP2000_PCI_CMDSTAT);
-       if (temp & (1 << 29)) {
-               while (temp & (1 << 29)) {
-                       ixp2000_reg_write(IXP2000_PCI_CMDSTAT, temp);
-                       temp = *(IXP2000_PCI_CMDSTAT);
-               }
-       }
-       local_irq_restore(flags);
-
-       return 0;
-}
-
-void __init
-ixp2000_pci_preinit(void)
-{
-       pci_set_flags(0);
-
-       pcibios_min_io = 0;
-       pcibios_min_mem = 0;
-
-#ifndef CONFIG_IXP2000_SUPPORT_BROKEN_PCI_IO
-       /*
-        * Configure the PCI unit to properly byteswap I/O transactions,
-        * and verify that it worked.
-        */
-       ixp2000_reg_write(IXP2000_PCI_CONTROL,
-                         (*IXP2000_PCI_CONTROL | PCI_CONTROL_IEE));
-
-       if ((*IXP2000_PCI_CONTROL & PCI_CONTROL_IEE) == 0)
-               panic("IXP2000: PCI I/O is broken on this ixp model, and "
-                       "the needed workaround has not been configured in");
-#endif
-
-       hook_fault_code(16+6, ixp2000_pci_abort_handler, SIGBUS, 0,
-                               "PCI config cycle to non-existent device");
-}
-
-
-/*
- * IXP2000 systems often have large resource requirements, so we just
- * use our own resource space.
- */
-static struct resource ixp2000_pci_mem_space = {
-       .start  = 0xe0000000,
-       .end    = 0xffffffff,
-       .flags  = IORESOURCE_MEM,
-       .name   = "PCI Mem Space"
-};
-
-static struct resource ixp2000_pci_io_space = {
-       .start  = 0x00010000,
-       .end    = 0x0001ffff,
-       .flags  = IORESOURCE_IO,
-       .name   = "PCI I/O Space"
-};
-
-int ixp2000_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       if (nr >= 1)
-               return 0;
-
-       pci_add_resource_offset(&sys->resources,
-                               &ixp2000_pci_io_space, sys->io_offset);
-       pci_add_resource_offset(&sys->resources,
-                               &ixp2000_pci_mem_space, sys->mem_offset);
-
-       return 1;
-}
-
diff --git a/arch/arm/mach-ixp23xx/Kconfig b/arch/arm/mach-ixp23xx/Kconfig
deleted file mode 100644 (file)
index 982670e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-if ARCH_IXP23XX
-
-config ARCH_SUPPORTS_BIG_ENDIAN
-       bool
-       default y
-
-menu "Intel IXP23xx Implementation Options"
-
-comment "IXP23xx Platforms"
-
-config MACH_ESPRESSO
-       bool "Support IP Fabrics Double Espresso platform"
-       help
-
-config MACH_IXDP2351
-       bool "Support Intel IXDP2351 platform"
-       help
-
-config MACH_ROADRUNNER
-       bool "Support ADI RoadRunner platform"
-       help
-
-endmenu
-
-endif
diff --git a/arch/arm/mach-ixp23xx/Makefile b/arch/arm/mach-ixp23xx/Makefile
deleted file mode 100644 (file)
index 288b371..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Makefile for the linux kernel.
-#
-obj-y                  := core.o pci.o
-obj-m                  :=
-obj-n                  :=
-obj-                   :=
-
-obj-$(CONFIG_MACH_ESPRESSO)    += espresso.o
-obj-$(CONFIG_MACH_IXDP2351)    += ixdp2351.o
-obj-$(CONFIG_MACH_ROADRUNNER)  += roadrunner.o
diff --git a/arch/arm/mach-ixp23xx/Makefile.boot b/arch/arm/mach-ixp23xx/Makefile.boot
deleted file mode 100644 (file)
index 44fb4a7..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-   zreladdr-y  += 0x00008000
-params_phys-y  := 0x00000100
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c
deleted file mode 100644 (file)
index d345424..0000000
+++ /dev/null
@@ -1,455 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/core.c
- *
- * Core routines for IXP23xx chips
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2005 (c) MontaVista Software, Inc.
- *
- * Based on 2.4 code Copyright 2004 (c) Intel Corporation
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/bitops.h>
-#include <linux/serial_8250.h>
-#include <linux/serial_core.h>
-#include <linux/device.h>
-#include <linux/mm.h>
-#include <linux/time.h>
-#include <linux/timex.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <mach/hardware.h>
-#include <asm/irq.h>
-#include <asm/tlbflush.h>
-#include <asm/pgtable.h>
-#include <asm/system_misc.h>
-
-#include <asm/mach/map.h>
-#include <asm/mach/time.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/arch.h>
-
-
-/*************************************************************************
- * Chip specific mappings shared by all IXP23xx systems
- *************************************************************************/
-static struct map_desc ixp23xx_io_desc[] __initdata = {
-       { /* XSI-CPP CSRs */
-               .virtual        = IXP23XX_XSI2CPP_CSR_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_XSI2CPP_CSR_PHYS),
-               .length         = IXP23XX_XSI2CPP_CSR_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* Expansion Bus Config */
-               .virtual        = IXP23XX_EXP_CFG_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_EXP_CFG_PHYS),
-               .length         = IXP23XX_EXP_CFG_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* UART, Interrupt ctrl, GPIO, timers, NPEs, MACS,.... */
-               .virtual        = IXP23XX_PERIPHERAL_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_PERIPHERAL_PHYS),
-               .length         = IXP23XX_PERIPHERAL_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* CAP CSRs */
-               .virtual        = IXP23XX_CAP_CSR_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_CAP_CSR_PHYS),
-               .length         = IXP23XX_CAP_CSR_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* MSF CSRs */
-               .virtual        = IXP23XX_MSF_CSR_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_MSF_CSR_PHYS),
-               .length         = IXP23XX_MSF_CSR_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* PCI I/O Space */
-               .virtual        = IXP23XX_PCI_IO_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_PCI_IO_PHYS),
-               .length         = IXP23XX_PCI_IO_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* PCI Config Space */
-               .virtual        = IXP23XX_PCI_CFG_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_PCI_CFG_PHYS),
-               .length         = IXP23XX_PCI_CFG_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* PCI local CFG CSRs */
-               .virtual        = IXP23XX_PCI_CREG_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_PCI_CREG_PHYS),
-               .length         = IXP23XX_PCI_CREG_SIZE,
-               .type           = MT_DEVICE,
-       }, { /* PCI MEM Space */
-               .virtual        = IXP23XX_PCI_MEM_VIRT,
-               .pfn            = __phys_to_pfn(IXP23XX_PCI_MEM_PHYS),
-               .length         = IXP23XX_PCI_MEM_SIZE,
-               .type           = MT_DEVICE,
-       }
-};
-
-void __init ixp23xx_map_io(void)
-{
-       iotable_init(ixp23xx_io_desc, ARRAY_SIZE(ixp23xx_io_desc));
-}
-
-
-/***************************************************************************
- * IXP23xx Interrupt Handling
- ***************************************************************************/
-enum ixp23xx_irq_type {
-       IXP23XX_IRQ_LEVEL, IXP23XX_IRQ_EDGE
-};
-
-static void ixp23xx_config_irq(unsigned int, enum ixp23xx_irq_type);
-
-static int ixp23xx_irq_set_type(struct irq_data *d, unsigned int type)
-{
-       int line = d->irq - IRQ_IXP23XX_GPIO6 + 6;
-       u32 int_style;
-       enum ixp23xx_irq_type irq_type;
-       volatile u32 *int_reg;
-
-       /*
-        * Only GPIOs 6-15 are wired to interrupts on IXP23xx
-        */
-       if (line < 6 || line > 15)
-               return -EINVAL;
-
-       switch (type) {
-       case IRQ_TYPE_EDGE_BOTH:
-               int_style = IXP23XX_GPIO_STYLE_TRANSITIONAL;
-               irq_type = IXP23XX_IRQ_EDGE;
-               break;
-       case IRQ_TYPE_EDGE_RISING:
-               int_style = IXP23XX_GPIO_STYLE_RISING_EDGE;
-               irq_type = IXP23XX_IRQ_EDGE;
-               break;
-       case IRQ_TYPE_EDGE_FALLING:
-               int_style = IXP23XX_GPIO_STYLE_FALLING_EDGE;
-               irq_type = IXP23XX_IRQ_EDGE;
-               break;
-       case IRQ_TYPE_LEVEL_HIGH:
-               int_style = IXP23XX_GPIO_STYLE_ACTIVE_HIGH;
-               irq_type = IXP23XX_IRQ_LEVEL;
-               break;
-       case IRQ_TYPE_LEVEL_LOW:
-               int_style = IXP23XX_GPIO_STYLE_ACTIVE_LOW;
-               irq_type = IXP23XX_IRQ_LEVEL;
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       ixp23xx_config_irq(d->irq, irq_type);
-
-       if (line >= 8) {        /* pins 8-15 */
-               line -= 8;
-               int_reg = (volatile u32 *)IXP23XX_GPIO_GPIT2R;
-       } else {                /* pins 0-7 */
-               int_reg = (volatile u32 *)IXP23XX_GPIO_GPIT1R;
-       }
-
-       /*
-        * Clear pending interrupts
-        */
-       *IXP23XX_GPIO_GPISR = (1 << line);
-
-       /* Clear the style for the appropriate pin */
-       *int_reg &= ~(IXP23XX_GPIO_STYLE_MASK <<
-                       (line * IXP23XX_GPIO_STYLE_SIZE));
-
-       /* Set the new style */
-       *int_reg |= (int_style << (line * IXP23XX_GPIO_STYLE_SIZE));
-
-       return 0;
-}
-
-static void ixp23xx_irq_mask(struct irq_data *d)
-{
-       volatile unsigned long *intr_reg;
-       unsigned int irq = d->irq;
-
-       if (irq >= 56)
-               irq += 8;
-
-       intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
-       *intr_reg &= ~(1 << (irq % 32));
-}
-
-static void ixp23xx_irq_ack(struct irq_data *d)
-{
-       int line = d->irq - IRQ_IXP23XX_GPIO6 + 6;
-
-       if ((line < 6) || (line > 15))
-               return;
-
-       *IXP23XX_GPIO_GPISR = (1 << line);
-}
-
-/*
- * Level triggered interrupts on GPIO lines can only be cleared when the
- * interrupt condition disappears.
- */
-static void ixp23xx_irq_level_unmask(struct irq_data *d)
-{
-       volatile unsigned long *intr_reg;
-       unsigned int irq = d->irq;
-
-       ixp23xx_irq_ack(d);
-
-       if (irq >= 56)
-               irq += 8;
-
-       intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
-       *intr_reg |= (1 << (irq % 32));
-}
-
-static void ixp23xx_irq_edge_unmask(struct irq_data *d)
-{
-       volatile unsigned long *intr_reg;
-       unsigned int irq = d->irq;
-
-       if (irq >= 56)
-               irq += 8;
-
-       intr_reg = IXP23XX_INTR_EN1 + (irq / 32);
-       *intr_reg |= (1 << (irq % 32));
-}
-
-static struct irq_chip ixp23xx_irq_level_chip = {
-       .irq_ack        = ixp23xx_irq_mask,
-       .irq_mask       = ixp23xx_irq_mask,
-       .irq_unmask     = ixp23xx_irq_level_unmask,
-       .irq_set_type   = ixp23xx_irq_set_type
-};
-
-static struct irq_chip ixp23xx_irq_edge_chip = {
-       .irq_ack        = ixp23xx_irq_ack,
-       .irq_mask       = ixp23xx_irq_mask,
-       .irq_unmask     = ixp23xx_irq_edge_unmask,
-       .irq_set_type   = ixp23xx_irq_set_type
-};
-
-static void ixp23xx_pci_irq_mask(struct irq_data *d)
-{
-       unsigned int irq = d->irq;
-
-       *IXP23XX_PCI_XSCALE_INT_ENABLE &= ~(1 << (IRQ_IXP23XX_INTA + 27 - irq));
-}
-
-static void ixp23xx_pci_irq_unmask(struct irq_data *d)
-{
-       unsigned int irq = d->irq;
-
-       *IXP23XX_PCI_XSCALE_INT_ENABLE |= (1 << (IRQ_IXP23XX_INTA + 27 - irq));
-}
-
-/*
- * TODO: Should this just be done at ASM level?
- */
-static void pci_handler(unsigned int irq, struct irq_desc *desc)
-{
-       u32 pci_interrupt;
-       unsigned int irqno;
-
-       pci_interrupt = *IXP23XX_PCI_XSCALE_INT_STATUS;
-
-       desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-       /* See which PCI_INTA, or PCI_INTB interrupted */
-       if (pci_interrupt & (1 << 26)) {
-               irqno = IRQ_IXP23XX_INTB;
-       } else if (pci_interrupt & (1 << 27)) {
-               irqno = IRQ_IXP23XX_INTA;
-       } else {
-               BUG();
-       }
-
-       generic_handle_irq(irqno);
-
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static struct irq_chip ixp23xx_pci_irq_chip = {
-       .irq_ack        = ixp23xx_pci_irq_mask,
-       .irq_mask       = ixp23xx_pci_irq_mask,
-       .irq_unmask     = ixp23xx_pci_irq_unmask
-};
-
-static void ixp23xx_config_irq(unsigned int irq, enum ixp23xx_irq_type type)
-{
-       switch (type) {
-       case IXP23XX_IRQ_LEVEL:
-               irq_set_chip_and_handler(irq, &ixp23xx_irq_level_chip,
-                                        handle_level_irq);
-               break;
-       case IXP23XX_IRQ_EDGE:
-               irq_set_chip_and_handler(irq, &ixp23xx_irq_edge_chip,
-                                        handle_edge_irq);
-               break;
-       }
-       set_irq_flags(irq, IRQF_VALID);
-}
-
-void __init ixp23xx_init_irq(void)
-{
-       int irq;
-
-       /* Route everything to IRQ */
-       *IXP23XX_INTR_SEL1 = 0x0;
-       *IXP23XX_INTR_SEL2 = 0x0;
-       *IXP23XX_INTR_SEL3 = 0x0;
-       *IXP23XX_INTR_SEL4 = 0x0;
-
-       /* Mask all sources */
-       *IXP23XX_INTR_EN1 = 0x0;
-       *IXP23XX_INTR_EN2 = 0x0;
-       *IXP23XX_INTR_EN3 = 0x0;
-       *IXP23XX_INTR_EN4 = 0x0;
-
-       /*
-        * Configure all IRQs for level-sensitive operation
-        */
-       for (irq = 0; irq <= NUM_IXP23XX_RAW_IRQS; irq++) {
-               ixp23xx_config_irq(irq, IXP23XX_IRQ_LEVEL);
-       }
-
-       for (irq = IRQ_IXP23XX_INTA; irq <= IRQ_IXP23XX_INTB; irq++) {
-               irq_set_chip_and_handler(irq, &ixp23xx_pci_irq_chip,
-                                        handle_level_irq);
-               set_irq_flags(irq, IRQF_VALID);
-       }
-
-       irq_set_chained_handler(IRQ_IXP23XX_PCI_INT_RPH, pci_handler);
-}
-
-
-/*************************************************************************
- * Timer-tick functions for IXP23xx
- *************************************************************************/
-#define CLOCK_TICKS_PER_USEC   (CLOCK_TICK_RATE / USEC_PER_SEC)
-
-static unsigned long next_jiffy_time;
-
-static unsigned long
-ixp23xx_gettimeoffset(void)
-{
-       unsigned long elapsed;
-
-       elapsed = *IXP23XX_TIMER_CONT - (next_jiffy_time - LATCH);
-
-       return elapsed / CLOCK_TICKS_PER_USEC;
-}
-
-static irqreturn_t
-ixp23xx_timer_interrupt(int irq, void *dev_id)
-{
-       /* Clear Pending Interrupt by writing '1' to it */
-       *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
-       while ((signed long)(*IXP23XX_TIMER_CONT - next_jiffy_time) >= LATCH) {
-               timer_tick();
-               next_jiffy_time += LATCH;
-       }
-
-       return IRQ_HANDLED;
-}
-
-static struct irqaction ixp23xx_timer_irq = {
-       .name           = "IXP23xx Timer Tick",
-       .handler        = ixp23xx_timer_interrupt,
-       .flags          = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
-};
-
-void __init ixp23xx_init_timer(void)
-{
-       /* Clear Pending Interrupt by writing '1' to it */
-       *IXP23XX_TIMER_STATUS = IXP23XX_TIMER1_INT_PEND;
-
-       /* Setup the Timer counter value */
-       *IXP23XX_TIMER1_RELOAD =
-               (LATCH & ~IXP23XX_TIMER_RELOAD_MASK) | IXP23XX_TIMER_ENABLE;
-
-       *IXP23XX_TIMER_CONT = 0;
-       next_jiffy_time = LATCH;
-
-       /* Connect the interrupt handler and enable the interrupt */
-       setup_irq(IRQ_IXP23XX_TIMER1, &ixp23xx_timer_irq);
-}
-
-struct sys_timer ixp23xx_timer = {
-       .init           = ixp23xx_init_timer,
-       .offset         = ixp23xx_gettimeoffset,
-};
-
-
-/*************************************************************************
- * IXP23xx Platform Initialization
- *************************************************************************/
-static struct resource ixp23xx_uart_resources[] = {
-       {
-               .start          = IXP23XX_UART1_PHYS,
-               .end            = IXP23XX_UART1_PHYS + 0x0fff,
-               .flags          = IORESOURCE_MEM
-       }, {
-               .start          = IXP23XX_UART2_PHYS,
-               .end            = IXP23XX_UART2_PHYS + 0x0fff,
-               .flags          = IORESOURCE_MEM
-       }
-};
-
-static struct plat_serial8250_port ixp23xx_uart_data[] = {
-       {
-               .mapbase        = IXP23XX_UART1_PHYS,
-               .membase        = (char *)(IXP23XX_UART1_VIRT + 3),
-               .irq            = IRQ_IXP23XX_UART1,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-               .iotype         = UPIO_MEM,
-               .regshift       = 2,
-               .uartclk        = IXP23XX_UART_XTAL,
-       }, {
-               .mapbase        = IXP23XX_UART2_PHYS,
-               .membase        = (char *)(IXP23XX_UART2_VIRT + 3),
-               .irq            = IRQ_IXP23XX_UART2,
-               .flags          = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
-               .iotype         = UPIO_MEM,
-               .regshift       = 2,
-               .uartclk        = IXP23XX_UART_XTAL,
-       },
-       { },
-};
-
-static struct platform_device ixp23xx_uart = {
-       .name                   = "serial8250",
-       .id                     = 0,
-       .dev.platform_data      = ixp23xx_uart_data,
-       .num_resources          = 2,
-       .resource               = ixp23xx_uart_resources,
-};
-
-static struct platform_device *ixp23xx_devices[] __initdata = {
-       &ixp23xx_uart,
-};
-
-void __init ixp23xx_sys_init(void)
-{
-       /* by default, the idle code is disabled */
-       disable_hlt();
-
-       *IXP23XX_EXP_UNIT_FUSE |= 0xf;
-       platform_add_devices(ixp23xx_devices, ARRAY_SIZE(ixp23xx_devices));
-}
-
-void ixp23xx_restart(char mode, const char *cmd)
-{
-       /* Use on-chip reset capability */
-       *IXP23XX_RESET0 |= IXP23XX_RST_ALL;
-}
diff --git a/arch/arm/mach-ixp23xx/espresso.c b/arch/arm/mach-ixp23xx/espresso.c
deleted file mode 100644 (file)
index d142d45..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/espresso.c
- *
- * Double Espresso-specific routines
- *
- * Author: Lennert Buytenhek <buytenh@wantstofly.org>
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/bitops.h>
-#include <linux/ioport.h>
-#include <linux/serial_8250.h>
-#include <linux/serial_core.h>
-#include <linux/device.h>
-#include <linux/mm.h>
-#include <linux/pci.h>
-#include <linux/mtd/physmap.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-#include <asm/tlbflush.h>
-#include <asm/pgtable.h>
-
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-
-static int __init espresso_pci_init(void)
-{
-       if (machine_is_espresso())
-               ixp23xx_pci_slave_init();
-
-       return 0;
-};
-subsys_initcall(espresso_pci_init);
-
-static struct physmap_flash_data espresso_flash_data = {
-       .width          = 2,
-};
-
-static struct resource espresso_flash_resource = {
-       .start          = 0x90000000,
-       .end            = 0x91ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device espresso_flash = {
-       .name           = "physmap-flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &espresso_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &espresso_flash_resource,
-};
-
-static void __init espresso_init(void)
-{
-       platform_device_register(&espresso_flash);
-
-       /*
-        * Mark flash as writeable.
-        */
-       IXP23XX_EXP_CS0[0] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[1] |= IXP23XX_FLASH_WRITABLE;
-
-       ixp23xx_sys_init();
-}
-
-MACHINE_START(ESPRESSO, "IP Fabrics Double Espresso")
-       /* Maintainer: Lennert Buytenhek */
-       .map_io         = ixp23xx_map_io,
-       .init_irq       = ixp23xx_init_irq,
-       .timer          = &ixp23xx_timer,
-       .atag_offset    = 0x100,
-       .init_machine   = espresso_init,
-       .restart        = ixp23xx_restart,
-MACHINE_END
diff --git a/arch/arm/mach-ixp23xx/include/mach/debug-macro.S b/arch/arm/mach-ixp23xx/include/mach/debug-macro.S
deleted file mode 100644 (file)
index 5ff524c..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/debug-macro.S
- *
- * Debugging macro include header
- *
- * Copyright (C) 1994-1999 Russell King
- * Moved from linux/arch/arm/kernel/debug.S by Ben Dooks
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-#include <mach/ixp23xx.h>
-
-               .macro  addruart, rp, rv, tmp
-               ldr     \rp, =IXP23XX_PERIPHERAL_PHYS   @ physical
-               ldr     \rv, =IXP23XX_PERIPHERAL_VIRT   @ virtual
-#ifdef __ARMEB__
-               orr     \rp, \rp, #0x00000003
-               orr     \rv, \rv, #0x00000003
-#endif
-               .endm
-
-#define UART_SHIFT     2
-#include <asm/hardware/debug-8250.S>
diff --git a/arch/arm/mach-ixp23xx/include/mach/entry-macro.S b/arch/arm/mach-ixp23xx/include/mach/entry-macro.S
deleted file mode 100644 (file)
index 3fd2cb9..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/entry-macro.S
- */
-
-               .macro  get_irqnr_preamble, base, tmp
-               .endm
-
-               .macro  get_irqnr_and_base, irqnr, irqstat, base, tmp
-               ldr     \irqnr, =(IXP23XX_INTC_VIRT + IXP23XX_INTR_IRQ_ENC_ST_OFFSET)
-               ldr     \irqnr, [\irqnr]        @ get interrupt number
-               cmp     \irqnr, #0x0            @ spurious interrupt ?
-               movne   \irqnr, \irqnr, lsr #2  @ skip unwanted low order bits
-               subne   \irqnr, \irqnr, #1      @ convert to 0 based
-
-#if 0
-               cmp     \irqnr, #IRQ_IXP23XX_PCI_INT_RPH
-               bne     1001f
-               mov     \irqnr, #IRQ_IXP23XX_INTA
-
-               ldr     \irqnr, =0xf5000030
-
-               mov     \tmp, #(1<<26)
-               tst     \irqnr, \tmp
-               movne   \irqnr, #IRQ_IXP23XX_INTB
-
-               mov     \tmp, #(1<<27)
-               tst     \irqnr, \tmp
-               movne   \irqnr, #IRQ_IXP23XX_INTA
-1001:
-#endif
-               .endm
diff --git a/arch/arm/mach-ixp23xx/include/mach/hardware.h b/arch/arm/mach-ixp23xx/include/mach/hardware.h
deleted file mode 100644 (file)
index 60e55fa..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/hardware.h
- *
- * Copyright (C) 2002-2004 Intel Corporation.
- * Copyricht (C) 2005 MontaVista Software, Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * Hardware definitions for IXP23XX based systems
- */
-
-#ifndef __ASM_ARCH_HARDWARE_H
-#define __ASM_ARCH_HARDWARE_H
-
-/* PCI IO info */
-
-#include "ixp23xx.h"
-
-/*
- * Platform helper functions
- */
-#include "platform.h"
-
-/*
- * Platform-specific headers
- */
-#include "ixdp2351.h"
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/io.h b/arch/arm/mach-ixp23xx/include/mach/io.h
deleted file mode 100644 (file)
index a7aceb5..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/io.h
- *
- * Original Author: Naeem M Afzal <naeem.m.afzal@intel.com>
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright (C) 2003-2005 Intel Corp.
- * Copyright (C) 2005 MontaVista Software, Inc
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARCH_IO_H
-#define __ASM_ARCH_IO_H
-
-#define IO_SPACE_LIMIT 0xffffffff
-
-#define __io(p)                ((void __iomem*)((p) + IXP23XX_PCI_IO_VIRT))
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/irqs.h b/arch/arm/mach-ixp23xx/include/mach/irqs.h
deleted file mode 100644 (file)
index 3af33a0..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/irqs.h
- *
- * IRQ definitions for IXP23XX based systems
- *
- * Author: Naeem Afzal <naeem.m.afzal@intel.com>
- *
- * Copyright (C) 2003-2004 Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARCH_IRQS_H
-#define __ASM_ARCH_IRQS_H
-
-#define NR_IXP23XX_IRQS                        IRQ_IXP23XX_INTB+1
-#define IRQ_IXP23XX_EXTIRQS            NR_IXP23XX_IRQS
-
-
-#define IRQ_IXP23XX_DBG0               0       /* Debug/Execution/MBox */
-#define IRQ_IXP23XX_DBG1               1       /* Debug/Execution/MBox */
-#define IRQ_IXP23XX_NPE_TRG            2       /* npe_trigger */
-#define IRQ_IXP23XX_TIMER1             3       /* Timer[0] */
-#define IRQ_IXP23XX_TIMER2             4       /* Timer[1] */
-#define IRQ_IXP23XX_TIMESTAMP          5       /* Timer[2], Time-stamp */
-#define IRQ_IXP23XX_WDOG               6       /* Time[3], Watchdog Timer */
-#define IRQ_IXP23XX_PCI_DBELL          7       /* PCI Doorbell */
-#define IRQ_IXP23XX_PCI_DMA1           8       /* PCI DMA Channel 1 */
-#define IRQ_IXP23XX_PCI_DMA2           9       /* PCI DMA Channel 2 */
-#define IRQ_IXP23XX_PCI_DMA3           10      /* PCI DMA Channel 3 */
-#define IRQ_IXP23XX_PCI_INT_RPH                11      /* pcxg_pci_int_rph */
-#define IRQ_IXP23XX_CPP_PMU            12      /* xpxg_pm_int_rpl */
-#define IRQ_IXP23XX_SWINT0             13      /* S/W Interrupt0 */
-#define IRQ_IXP23XX_SWINT1             14      /* S/W Interrupt1 */
-#define IRQ_IXP23XX_UART2              15      /* UART1 Interrupt */
-#define IRQ_IXP23XX_UART1              16      /* UART0 Interrupt */
-#define IRQ_IXP23XX_XSI_PMU_ROLLOVER   17      /* AHB Performance M. Unit counter rollover */
-#define IRQ_IXP23XX_XSI_AHB_PM0                18      /* intr_pm_o */
-#define IRQ_IXP23XX_XSI_AHB_ECE0       19      /* intr_ece_o */
-#define IRQ_IXP23XX_XSI_AHB_GASKET     20      /* gas_intr_o */
-#define IRQ_IXP23XX_XSI_CPP            21      /* xsi2cpp_int */
-#define IRQ_IXP23XX_CPP_XSI            22      /* cpp2xsi_int */
-#define IRQ_IXP23XX_ME_ATTN0           23      /* ME_ATTN */
-#define IRQ_IXP23XX_ME_ATTN1           24      /* ME_ATTN */
-#define IRQ_IXP23XX_ME_ATTN2           25      /* ME_ATTN */
-#define IRQ_IXP23XX_ME_ATTN3           26      /* ME_ATTN */
-#define IRQ_IXP23XX_PCI_ERR_RPH                27      /* PCXG_PCI_ERR_RPH */
-#define IRQ_IXP23XX_D0XG_ECC_CORR      28      /* D0XG_DRAM_ECC_CORR */
-#define IRQ_IXP23XX_D0XG_ECC_UNCORR    29      /* D0XG_DRAM_ECC_UNCORR */
-#define IRQ_IXP23XX_SRAM_ERR1          30      /* SRAM1_ERR */
-#define IRQ_IXP23XX_SRAM_ERR0          31      /* SRAM0_ERR */
-#define IRQ_IXP23XX_MEDIA_ERR          32      /* MEDIA_ERR */
-#define IRQ_IXP23XX_STH_DRAM_ECC_MAJ   33      /* STH_DRAM0_ECC_MAJ */
-#define IRQ_IXP23XX_GPIO6              34      /* GPIO0 interrupts */
-#define IRQ_IXP23XX_GPIO7              35      /* GPIO1 interrupts */
-#define IRQ_IXP23XX_GPIO8              36      /* GPIO2 interrupts */
-#define IRQ_IXP23XX_GPIO9              37      /* GPIO3 interrupts */
-#define IRQ_IXP23XX_GPIO10             38      /* GPIO4 interrupts */
-#define IRQ_IXP23XX_GPIO11             39      /* GPIO5 interrupts */
-#define IRQ_IXP23XX_GPIO12             40      /* GPIO6 interrupts */
-#define IRQ_IXP23XX_GPIO13             41      /* GPIO7 interrupts */
-#define IRQ_IXP23XX_GPIO14             42      /* GPIO8 interrupts */
-#define IRQ_IXP23XX_GPIO15             43      /* GPIO9 interrupts */
-#define IRQ_IXP23XX_SHAC_RING0         44      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING1         45      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING2         46      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING3         47      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING4         48      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING5         49      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING6         50      /* SHAC RING Full */
-#define IRQ_IXP23XX_SHAC_RING7         51      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING8         52      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING9         53      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING10                54      /* SHAC Ring Full */
-#define IRQ_IXP23XX_SHAC_RING11                55      /* SHAC Ring Full */
-#define IRQ_IXP23XX_ME_THREAD_A0_ME0   56      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A1_ME0   57      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A2_ME0   58      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A3_ME0   59      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A4_ME0   60      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A5_ME0   61      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A6_ME0   62      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A7_ME0   63      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A8_ME1   64      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A9_ME1   65      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A10_ME1  66      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A11_ME1  67      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A12_ME1  68      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A13_ME1  69      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A14_ME1  70      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A15_ME1  71      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A16_ME2  72      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A17_ME2  73      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A18_ME2  74      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A19_ME2  75      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A20_ME2  76      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A21_ME2  77      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A22_ME2  78      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A23_ME2  79      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A24_ME3  80      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A25_ME3  81      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A26_ME3  82      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A27_ME3  83      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A28_ME3  84      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A29_ME3  85      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A30_ME3  86      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_A31_ME3  87      /* ME_THREAD_A */
-#define IRQ_IXP23XX_ME_THREAD_B0_ME0   88      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B1_ME0   89      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B2_ME0   90      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B3_ME0   91      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B4_ME0   92      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B5_ME0   93      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B6_ME0   94      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B7_ME0   95      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B8_ME1   96      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B9_ME1   97      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B10_ME1  98      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B11_ME1  99      /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B12_ME1  100     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B13_ME1  101     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B14_ME1  102     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B15_ME1  103     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B16_ME2  104     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B17_ME2  105     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B18_ME2  106     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B19_ME2  107     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B20_ME2  108     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B21_ME2  109     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B22_ME2  110     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B23_ME2  111     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B24_ME3  112     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B25_ME3  113     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B26_ME3  114     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B27_ME3  115     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B28_ME3  116     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B29_ME3  117     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B30_ME3  118     /* ME_THREAD_B */
-#define IRQ_IXP23XX_ME_THREAD_B31_ME3  119     /* ME_THREAD_B */
-
-#define NUM_IXP23XX_RAW_IRQS           120
-
-#define IRQ_IXP23XX_INTA               120     /* Indirect pcxg_pci_int_rph */
-#define IRQ_IXP23XX_INTB               121     /* Indirect pcxg_pci_int_rph */
-
-#define NR_IXP23XX_IRQ                 (IRQ_IXP23XX_INTB + 1)
-
-/*
- * We default to 32 per-board IRQs. Increase this number if you need
- * more, but keep it realistic.
- */
-#define NR_IXP23XX_MACH_IRQS           32
-
-#define NR_IRQS                                (NR_IXP23XX_IRQS + NR_IXP23XX_MACH_IRQS)
-
-#define IXP23XX_MACH_IRQ(irq)          (NR_IXP23XX_IRQ + (irq))
-
-
-/*
- * IXDP2351-specific interrupts
- */
-
-/*
- * External PCI interrupts signaled through INTB
- *
- */
-#define IXDP2351_INTB_IRQ_BASE                 0
-#define IRQ_IXDP2351_INTA_82546                IXP23XX_MACH_IRQ(0)
-#define IRQ_IXDP2351_INTB_82546                IXP23XX_MACH_IRQ(1)
-#define IRQ_IXDP2351_SPCI_DB_0         IXP23XX_MACH_IRQ(2)
-#define IRQ_IXDP2351_SPCI_DB_1         IXP23XX_MACH_IRQ(3)
-#define IRQ_IXDP2351_SPCI_PMC_INTA     IXP23XX_MACH_IRQ(4)
-#define IRQ_IXDP2351_SPCI_PMC_INTB     IXP23XX_MACH_IRQ(5)
-#define IRQ_IXDP2351_SPCI_PMC_INTC     IXP23XX_MACH_IRQ(6)
-#define IRQ_IXDP2351_SPCI_PMC_INTD     IXP23XX_MACH_IRQ(7)
-#define IRQ_IXDP2351_SPCI_FIC          IXP23XX_MACH_IRQ(8)
-
-#define IXDP2351_INTB_IRQ_BIT(irq)     (irq - IXP23XX_MACH_IRQ(0))
-#define IXDP2351_INTB_IRQ_MASK(irq)    (1 << IXDP2351_INTB_IRQ_BIT(irq))
-#define IXDP2351_INTB_IRQ_VALID                0x01FF
-#define IXDP2351_INTB_IRQ_NUM          16
-
-/*
- * Other external interrupts signaled through INTA
- */
-#define IXDP2351_INTA_IRQ_BASE                 16
-#define IRQ_IXDP2351_IPMI_FROM         IXP23XX_MACH_IRQ(16)
-#define IRQ_IXDP2351_125US             IXP23XX_MACH_IRQ(17)
-#define IRQ_IXDP2351_DB_0_ADD          IXP23XX_MACH_IRQ(18)
-#define IRQ_IXDP2351_DB_1_ADD          IXP23XX_MACH_IRQ(19)
-#define IRQ_IXDP2351_DEBUG1            IXP23XX_MACH_IRQ(20)
-#define IRQ_IXDP2351_ADD_UART          IXP23XX_MACH_IRQ(21)
-#define IRQ_IXDP2351_FIC_ADD           IXP23XX_MACH_IRQ(24)
-#define IRQ_IXDP2351_CS8900            IXP23XX_MACH_IRQ(25)
-#define IRQ_IXDP2351_BBSRAM            IXP23XX_MACH_IRQ(26)
-#define IRQ_IXDP2351_CONFIG_MEDIA      IXP23XX_MACH_IRQ(27)
-#define IRQ_IXDP2351_CLOCK_REF         IXP23XX_MACH_IRQ(28)
-#define IRQ_IXDP2351_A10_NP            IXP23XX_MACH_IRQ(29)
-#define IRQ_IXDP2351_A11_NP            IXP23XX_MACH_IRQ(30)
-#define IRQ_IXDP2351_DEBUG_NP          IXP23XX_MACH_IRQ(31)
-
-#define IXDP2351_INTA_IRQ_BIT(irq)     (irq - IXP23XX_MACH_IRQ(16))
-#define IXDP2351_INTA_IRQ_MASK(irq)    (1 << IXDP2351_INTA_IRQ_BIT(irq))
-#define IXDP2351_INTA_IRQ_VALID        0xFF3F
-#define IXDP2351_INTA_IRQ_NUM          16
-
-
-/*
- * ADI RoadRunner IRQs
- */
-#define IRQ_ROADRUNNER_PCI_INTA        IRQ_IXP23XX_INTA
-#define IRQ_ROADRUNNER_PCI_INTB        IRQ_IXP23XX_INTB
-#define IRQ_ROADRUNNER_PCI_INTC        IRQ_IXP23XX_GPIO11
-#define IRQ_ROADRUNNER_PCI_INTD        IRQ_IXP23XX_GPIO12
-
-/*
- * Put new board definitions here
- */
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/ixdp2351.h b/arch/arm/mach-ixp23xx/include/mach/ixdp2351.h
deleted file mode 100644 (file)
index 6639510..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/ixdp2351.h
- *
- * Register and other defines for IXDP2351
- *
- * Copyright (c) 2002-2004 Intel Corp.
- * Copytight (c) 2005 MontaVista Software, Inc.
- *
- * 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 the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#ifndef __ASM_ARCH_IXDP2351_H
-#define __ASM_ARCH_IXDP2351_H
-
-/*
- * NP module memory map
- */
-#define IXDP2351_NP_PHYS_BASE          (IXP23XX_EXP_BUS_CS4_BASE)
-#define IXDP2351_NP_PHYS_SIZE          0x00100000
-#define IXDP2351_NP_VIRT_BASE          0xeff00000
-
-#define IXDP2351_VIRT_CS8900_BASE      (IXDP2351_NP_VIRT_BASE)
-#define IXDP2351_VIRT_CS8900_END       (IXDP2351_VIRT_CS8900_BASE + 16)
-
-#define IXDP2351_VIRT_NP_CPLD_BASE     (IXP23XX_EXP_BUS_CS4_BASE_VIRT + 0x00010000)
-
-#define IXDP2351_NP_CPLD_REG(reg) ((volatile u16 *)(IXDP2351_VIRT_NP_CPLD_BASE + reg))
-
-#define IXDP2351_NP_CPLD_RESET1_REG    IXDP2351_NP_CPLD_REG(0x00)
-#define IXDP2351_NP_CPLD_LED_REG       IXDP2351_NP_CPLD_REG(0x02)
-#define IXDP2351_NP_CPLD_VERSION_REG   IXDP2351_NP_CPLD_REG(0x04)
-
-/*
- * Base board module memory map
- */
-
-#define IXDP2351_BB_BASE_PHYS          (IXP23XX_EXP_BUS_CS5_BASE)
-#define IXDP2351_BB_SIZE               0x01000000
-#define IXDP2351_BB_BASE_VIRT          (0xee000000)
-
-#define IXDP2351_BB_AREA_BASE(offset)  (IXDP2351_BB_BASE_VIRT + offset)
-
-#define IXDP2351_VIRT_NVRAM_BASE       IXDP2351_BB_AREA_BASE(0x0)
-#define IXDP2351_NVRAM_SIZE            (0x20000)
-
-#define IXDP2351_VIRT_MB_IXF1104_BASE  IXDP2351_BB_AREA_BASE(0x00020000)
-#define IXDP2351_VIRT_ADD_UART_BASE    IXDP2351_BB_AREA_BASE(0x000240C0)
-#define IXDP2351_VIRT_FIC_BASE         IXDP2351_BB_AREA_BASE(0x00200000)
-#define IXDP2351_VIRT_DB0_BASE         IXDP2351_BB_AREA_BASE(0x00400000)
-#define IXDP2351_VIRT_DB1_BASE         IXDP2351_BB_AREA_BASE(0x00600000)
-#define IXDP2351_VIRT_CPLD_BASE                IXDP2351_BB_AREA_BASE(0x00024000)
-
-/*
- * On board CPLD registers
- */
-#define IXDP2351_CPLD_BB_REG(reg) ((volatile u16 *)(IXDP2351_VIRT_CPLD_BASE + reg))
-
-#define IXDP2351_CPLD_RESET0_REG       IXDP2351_CPLD_BB_REG(0x00)
-#define IXDP2351_CPLD_RESET1_REG       IXDP2351_CPLD_BB_REG(0x04)
-
-#define IXDP2351_CPLD_RESET1_MAGIC     0x55AA
-#define IXDP2351_CPLD_RESET1_ENABLE    0x8000
-
-#define IXDP2351_CPLD_FPGA_CONFIG_REG  IXDP2351_CPLD_BB_REG(0x08)
-#define IXDP2351_CPLD_INTB_MASK_SET_REG        IXDP2351_CPLD_BB_REG(0x10)
-#define IXDP2351_CPLD_INTA_MASK_SET_REG        IXDP2351_CPLD_BB_REG(0x14)
-#define IXDP2351_CPLD_INTB_STAT_REG    IXDP2351_CPLD_BB_REG(0x18)
-#define IXDP2351_CPLD_INTA_STAT_REG    IXDP2351_CPLD_BB_REG(0x1C)
-#define IXDP2351_CPLD_INTB_RAW_REG     IXDP2351_CPLD_BB_REG(0x20)      /* read */
-#define IXDP2351_CPLD_INTA_RAW_REG     IXDP2351_CPLD_BB_REG(0x24)      /* read */
-#define IXDP2351_CPLD_INTB_MASK_CLR_REG        IXDP2351_CPLD_INTB_RAW_REG      /* write */
-#define IXDP2351_CPLD_INTA_MASK_CLR_REG        IXDP2351_CPLD_INTA_RAW_REG      /* write */
-#define IXDP2351_CPLD_INTB_SIM_REG     IXDP2351_CPLD_BB_REG(0x28)
-#define IXDP2351_CPLD_INTA_SIM_REG     IXDP2351_CPLD_BB_REG(0x2C)
-       /* Interrupt bits are defined in irqs.h */
-#define IXDP2351_CPLD_BB_GBE0_REG      IXDP2351_CPLD_BB_REG(0x30)
-#define IXDP2351_CPLD_BB_GBE1_REG      IXDP2351_CPLD_BB_REG(0x34)
-
-/* #define IXDP2351_CPLD_BB_MISC_REG   IXDP2351_CPLD_REG(0x1C) */
-/* #define IXDP2351_CPLD_BB_MISC_REV_MASK      0xFF            */
-/* #define IXDP2351_CPLD_BB_GDXCS0_REG IXDP2351_CPLD_REG(0x24) */
-/* #define IXDP2351_CPLD_BB_GDXCS1_REG IXDP2351_CPLD_REG(0x28) */
-/* #define IXDP2351_CPLD_BB_CLOCK_REG  IXDP2351_CPLD_REG(0x04) */
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/ixp23xx.h b/arch/arm/mach-ixp23xx/include/mach/ixp23xx.h
deleted file mode 100644 (file)
index 6d02481..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/ixp23xx.h
- *
- * Register definitions for IXP23XX
- *
- * Copyright (C) 2003-2005 Intel Corporation.
- * Copyright (C) 2005 MontaVista Software, Inc.
- *
- * Maintainer: Deepak Saxena <dsaxena@plexity.net>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARCH_IXP23XX_H
-#define __ASM_ARCH_IXP23XX_H
-
-/*
- * IXP2300 linux memory map:
- *
- * virt                phys            size
- * fffd0000    a0000000        64K             XSI2CPP_CSR
- * fffc0000    c4000000        4K              EXP_CFG
- * fff00000    c8000000        64K             PERIPHERAL
- * fe000000    1c0000000       16M             CAP_CSR
- * fd000000    1c8000000       16M             MSF_CSR
- * fb000000                    16M             ---
- * fa000000    1d8000000       32M             PCI_IO
- * f8000000    1da000000       32M             PCI_CFG
- * f6000000    1de000000       32M             PCI_CREG
- * f4000000                    32M             ---
- * f0000000    1e0000000       64M             PCI_MEM
- * e[c-f]000000                                        per-platform mappings
- */
-
-
-/****************************************************************************
- * Static mappings.
- ****************************************************************************/
-#define IXP23XX_XSI2CPP_CSR_PHYS       0xa0000000
-#define IXP23XX_XSI2CPP_CSR_VIRT       0xfffd0000
-#define IXP23XX_XSI2CPP_CSR_SIZE       0x00010000
-
-#define IXP23XX_EXP_CFG_PHYS           0xc4000000
-#define IXP23XX_EXP_CFG_VIRT           0xfffc0000
-#define IXP23XX_EXP_CFG_SIZE           0x00001000
-
-#define IXP23XX_PERIPHERAL_PHYS                0xc8000000
-#define IXP23XX_PERIPHERAL_VIRT                0xfff00000
-#define IXP23XX_PERIPHERAL_SIZE                0x00010000
-
-#define IXP23XX_CAP_CSR_PHYS           0x1c0000000ULL
-#define IXP23XX_CAP_CSR_VIRT           0xfe000000
-#define IXP23XX_CAP_CSR_SIZE           0x01000000
-
-#define IXP23XX_MSF_CSR_PHYS           0x1c8000000ULL
-#define IXP23XX_MSF_CSR_VIRT           0xfd000000
-#define IXP23XX_MSF_CSR_SIZE           0x01000000
-
-#define IXP23XX_PCI_IO_PHYS            0x1d8000000ULL
-#define IXP23XX_PCI_IO_VIRT            0xfa000000
-#define IXP23XX_PCI_IO_SIZE            0x02000000
-
-#define IXP23XX_PCI_CFG_PHYS           0x1da000000ULL
-#define IXP23XX_PCI_CFG_VIRT           0xf8000000
-#define IXP23XX_PCI_CFG_SIZE           0x02000000
-#define IXP23XX_PCI_CFG0_VIRT          IXP23XX_PCI_CFG_VIRT
-#define IXP23XX_PCI_CFG1_VIRT          (IXP23XX_PCI_CFG_VIRT + 0x01000000)
-
-#define IXP23XX_PCI_CREG_PHYS          0x1de000000ULL
-#define IXP23XX_PCI_CREG_VIRT          0xf6000000
-#define IXP23XX_PCI_CREG_SIZE          0x02000000
-#define IXP23XX_PCI_CSR_VIRT           (IXP23XX_PCI_CREG_VIRT + 0x01000000)
-
-#define IXP23XX_PCI_MEM_START          0xe0000000
-#define IXP23XX_PCI_MEM_PHYS           0x1e0000000ULL
-#define IXP23XX_PCI_MEM_VIRT           0xf0000000
-#define IXP23XX_PCI_MEM_SIZE           0x04000000
-
-
-/****************************************************************************
- * XSI2CPP CSRs.
- ****************************************************************************/
-#define IXP23XX_XSI2CPP_REG(x)         ((volatile unsigned long *)(IXP23XX_XSI2CPP_CSR_VIRT + (x)))
-#define IXP23XX_CPP2XSI_CURR_XFER_REG3 IXP23XX_XSI2CPP_REG(0xf8)
-#define IXP23XX_CPP2XSI_ADDR_31                (1 << 19)
-#define IXP23XX_CPP2XSI_PSH_OFF                (1 << 20)
-#define IXP23XX_CPP2XSI_COH_OFF                (1 << 21)
-
-
-/****************************************************************************
- * Expansion Bus Config.
- ****************************************************************************/
-#define IXP23XX_EXP_CFG_REG(x)         ((volatile unsigned long *)(IXP23XX_EXP_CFG_VIRT + (x)))
-#define IXP23XX_EXP_CS0                        IXP23XX_EXP_CFG_REG(0x00)
-#define IXP23XX_EXP_CS1                        IXP23XX_EXP_CFG_REG(0x04)
-#define IXP23XX_EXP_CS2                        IXP23XX_EXP_CFG_REG(0x08)
-#define IXP23XX_EXP_CS3                        IXP23XX_EXP_CFG_REG(0x0c)
-#define IXP23XX_EXP_CS4                        IXP23XX_EXP_CFG_REG(0x10)
-#define IXP23XX_EXP_CS5                        IXP23XX_EXP_CFG_REG(0x14)
-#define IXP23XX_EXP_CS6                        IXP23XX_EXP_CFG_REG(0x18)
-#define IXP23XX_EXP_CS7                        IXP23XX_EXP_CFG_REG(0x1c)
-#define IXP23XX_FLASH_WRITABLE         (0x2)
-#define IXP23XX_FLASH_BUS8             (0x1)
-
-#define IXP23XX_EXP_CFG0               IXP23XX_EXP_CFG_REG(0x20)
-#define IXP23XX_EXP_CFG1               IXP23XX_EXP_CFG_REG(0x24)
-#define IXP23XX_EXP_CFG0_MEM_MAP               (1 << 31)
-#define IXP23XX_EXP_CFG0_XSCALE_SPEED_SEL      (3 << 22)
-#define IXP23XX_EXP_CFG0_XSCALE_SPEED_EN       (1 << 21)
-#define IXP23XX_EXP_CFG0_CPP_SPEED_SEL         (3 << 19)
-#define IXP23XX_EXP_CFG0_CPP_SPEED_EN          (1 << 18)
-#define IXP23XX_EXP_CFG0_PCI_SWIN              (3 << 16)
-#define IXP23XX_EXP_CFG0_PCI_DWIN              (3 << 14)
-#define IXP23XX_EXP_CFG0_PCI33_MODE            (1 << 13)
-#define IXP23XX_EXP_CFG0_QDR_SPEED_SEL         (1 << 12)
-#define IXP23XX_EXP_CFG0_CPP_DIV_SEL           (1 << 5)
-#define IXP23XX_EXP_CFG0_XSI_NOT_PRES          (1 << 4)
-#define IXP23XX_EXP_CFG0_PROM_BOOT             (1 << 3)
-#define IXP23XX_EXP_CFG0_PCI_ARB               (1 << 2)
-#define IXP23XX_EXP_CFG0_PCI_HOST              (1 << 1)
-#define IXP23XX_EXP_CFG0_FLASH_WIDTH           (1 << 0)
-
-#define IXP23XX_EXP_UNIT_FUSE          IXP23XX_EXP_CFG_REG(0x28)
-#define IXP23XX_EXP_MSF_MUX            IXP23XX_EXP_CFG_REG(0x30)
-#define IXP23XX_EXP_CFG_FUSE           IXP23XX_EXP_CFG_REG(0x34)
-
-#define IXP23XX_EXP_BUS_PHYS           0x90000000
-#define IXP23XX_EXP_BUS_WINDOW_SIZE    0x01000000
-
-#define IXP23XX_EXP_BUS_CS0_BASE       (IXP23XX_EXP_BUS_PHYS + 0x00000000)
-#define IXP23XX_EXP_BUS_CS1_BASE       (IXP23XX_EXP_BUS_PHYS + 0x01000000)
-#define IXP23XX_EXP_BUS_CS2_BASE       (IXP23XX_EXP_BUS_PHYS + 0x02000000)
-#define IXP23XX_EXP_BUS_CS3_BASE       (IXP23XX_EXP_BUS_PHYS + 0x03000000)
-#define IXP23XX_EXP_BUS_CS4_BASE       (IXP23XX_EXP_BUS_PHYS + 0x04000000)
-#define IXP23XX_EXP_BUS_CS5_BASE       (IXP23XX_EXP_BUS_PHYS + 0x05000000)
-#define IXP23XX_EXP_BUS_CS6_BASE       (IXP23XX_EXP_BUS_PHYS + 0x06000000)
-#define IXP23XX_EXP_BUS_CS7_BASE       (IXP23XX_EXP_BUS_PHYS + 0x07000000)
-
-
-/****************************************************************************
- * Peripherals.
- ****************************************************************************/
-#define IXP23XX_UART1_VIRT             (IXP23XX_PERIPHERAL_VIRT + 0x0000)
-#define IXP23XX_UART2_VIRT             (IXP23XX_PERIPHERAL_VIRT + 0x1000)
-#define IXP23XX_PMU_VIRT               (IXP23XX_PERIPHERAL_VIRT + 0x2000)
-#define IXP23XX_INTC_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0x3000)
-#define IXP23XX_GPIO_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0x4000)
-#define IXP23XX_TIMER_VIRT             (IXP23XX_PERIPHERAL_VIRT + 0x5000)
-#define IXP23XX_NPE0_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0x6000)
-#define IXP23XX_DSR_VIRT               (IXP23XX_PERIPHERAL_VIRT + 0x7000)
-#define IXP23XX_NPE1_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0x8000)
-#define IXP23XX_ETH0_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0x9000)
-#define IXP23XX_ETH1_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0xA000)
-#define IXP23XX_GIG0_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0xB000)
-#define IXP23XX_GIG1_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0xC000)
-#define IXP23XX_DDRS_VIRT              (IXP23XX_PERIPHERAL_VIRT + 0xD000)
-
-#define IXP23XX_UART1_PHYS             (IXP23XX_PERIPHERAL_PHYS + 0x0000)
-#define IXP23XX_UART2_PHYS             (IXP23XX_PERIPHERAL_PHYS + 0x1000)
-#define IXP23XX_PMU_PHYS               (IXP23XX_PERIPHERAL_PHYS + 0x2000)
-#define IXP23XX_INTC_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0x3000)
-#define IXP23XX_GPIO_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0x4000)
-#define IXP23XX_TIMER_PHYS             (IXP23XX_PERIPHERAL_PHYS + 0x5000)
-#define IXP23XX_NPE0_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0x6000)
-#define IXP23XX_DSR_PHYS               (IXP23XX_PERIPHERAL_PHYS + 0x7000)
-#define IXP23XX_NPE1_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0x8000)
-#define IXP23XX_ETH0_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0x9000)
-#define IXP23XX_ETH1_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0xA000)
-#define IXP23XX_GIG0_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0xB000)
-#define IXP23XX_GIG1_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0xC000)
-#define IXP23XX_DDRS_PHYS              (IXP23XX_PERIPHERAL_PHYS + 0xD000)
-
-
-/****************************************************************************
- * Interrupt controller.
- ****************************************************************************/
-#define IXP23XX_INTC_REG(x)             ((volatile unsigned long *)(IXP23XX_INTC_VIRT + (x)))
-#define IXP23XX_INTR_ST1               IXP23XX_INTC_REG(0x00)
-#define IXP23XX_INTR_ST2               IXP23XX_INTC_REG(0x04)
-#define IXP23XX_INTR_ST3               IXP23XX_INTC_REG(0x08)
-#define IXP23XX_INTR_ST4               IXP23XX_INTC_REG(0x0c)
-#define IXP23XX_INTR_EN1               IXP23XX_INTC_REG(0x10)
-#define IXP23XX_INTR_EN2               IXP23XX_INTC_REG(0x14)
-#define IXP23XX_INTR_EN3               IXP23XX_INTC_REG(0x18)
-#define IXP23XX_INTR_EN4               IXP23XX_INTC_REG(0x1c)
-#define IXP23XX_INTR_SEL1              IXP23XX_INTC_REG(0x20)
-#define IXP23XX_INTR_SEL2              IXP23XX_INTC_REG(0x24)
-#define IXP23XX_INTR_SEL3              IXP23XX_INTC_REG(0x28)
-#define IXP23XX_INTR_SEL4              IXP23XX_INTC_REG(0x2c)
-#define IXP23XX_INTR_IRQ_ST1           IXP23XX_INTC_REG(0x30)
-#define IXP23XX_INTR_IRQ_ST2           IXP23XX_INTC_REG(0x34)
-#define IXP23XX_INTR_IRQ_ST3           IXP23XX_INTC_REG(0x38)
-#define IXP23XX_INTR_IRQ_ST4           IXP23XX_INTC_REG(0x3c)
-#define IXP23XX_INTR_IRQ_ENC_ST_OFFSET 0x54
-
-
-/****************************************************************************
- * GPIO.
- ****************************************************************************/
-#define IXP23XX_GPIO_REG(x)            ((volatile unsigned long *)(IXP23XX_GPIO_VIRT + (x)))
-#define IXP23XX_GPIO_GPOUTR            IXP23XX_GPIO_REG(0x00)
-#define IXP23XX_GPIO_GPOER             IXP23XX_GPIO_REG(0x04)
-#define IXP23XX_GPIO_GPINR             IXP23XX_GPIO_REG(0x08)
-#define IXP23XX_GPIO_GPISR             IXP23XX_GPIO_REG(0x0c)
-#define IXP23XX_GPIO_GPIT1R            IXP23XX_GPIO_REG(0x10)
-#define IXP23XX_GPIO_GPIT2R            IXP23XX_GPIO_REG(0x14)
-#define IXP23XX_GPIO_GPCLKR            IXP23XX_GPIO_REG(0x18)
-#define IXP23XX_GPIO_GPDBSELR          IXP23XX_GPIO_REG(0x1c)
-
-#define IXP23XX_GPIO_STYLE_MASK                0x7
-#define IXP23XX_GPIO_STYLE_ACTIVE_HIGH 0x0
-#define IXP23XX_GPIO_STYLE_ACTIVE_LOW  0x1
-#define IXP23XX_GPIO_STYLE_RISING_EDGE 0x2
-#define IXP23XX_GPIO_STYLE_FALLING_EDGE        0x3
-#define IXP23XX_GPIO_STYLE_TRANSITIONAL        0x4
-
-#define IXP23XX_GPIO_STYLE_SIZE                3
-
-
-/****************************************************************************
- * Timer.
- ****************************************************************************/
-#define IXP23XX_TIMER_REG(x)           ((volatile unsigned long *)(IXP23XX_TIMER_VIRT + (x)))
-#define IXP23XX_TIMER_CONT             IXP23XX_TIMER_REG(0x00)
-#define IXP23XX_TIMER1_TIMESTAMP       IXP23XX_TIMER_REG(0x04)
-#define IXP23XX_TIMER1_RELOAD          IXP23XX_TIMER_REG(0x08)
-#define IXP23XX_TIMER2_TIMESTAMP       IXP23XX_TIMER_REG(0x0c)
-#define IXP23XX_TIMER2_RELOAD          IXP23XX_TIMER_REG(0x10)
-#define IXP23XX_TIMER_WDOG             IXP23XX_TIMER_REG(0x14)
-#define IXP23XX_TIMER_WDOG_EN          IXP23XX_TIMER_REG(0x18)
-#define IXP23XX_TIMER_WDOG_KEY         IXP23XX_TIMER_REG(0x1c)
-#define IXP23XX_TIMER_WDOG_KEY_MAGIC   0x482e
-#define IXP23XX_TIMER_STATUS           IXP23XX_TIMER_REG(0x20)
-#define IXP23XX_TIMER_SOFT_RESET       IXP23XX_TIMER_REG(0x24)
-#define IXP23XX_TIMER_SOFT_RESET_EN    IXP23XX_TIMER_REG(0x28)
-
-#define IXP23XX_TIMER_ENABLE           (1 << 0)
-#define IXP23XX_TIMER_ONE_SHOT         (1 << 1)
-/* Low order bits of reload value ignored */
-#define IXP23XX_TIMER_RELOAD_MASK      (0x3)
-#define IXP23XX_TIMER_DISABLED         (0x0)
-#define IXP23XX_TIMER1_INT_PEND                (1 << 0)
-#define IXP23XX_TIMER2_INT_PEND                (1 << 1)
-#define IXP23XX_TIMER_STATUS_TS_PEND   (1 << 2)
-#define IXP23XX_TIMER_STATUS_WDOG_PEND (1 << 3)
-#define IXP23XX_TIMER_STATUS_WARM_RESET        (1 << 4)
-
-
-/****************************************************************************
- * CAP CSRs.
- ****************************************************************************/
-#define IXP23XX_GLOBAL_REG(x)          ((volatile unsigned long *)(IXP23XX_CAP_CSR_VIRT + 0x4a00 + (x)))
-#define IXP23XX_PRODUCT_ID             IXP23XX_GLOBAL_REG(0x00)
-#define IXP23XX_MISC_CONTROL           IXP23XX_GLOBAL_REG(0x04)
-#define IXP23XX_MSF_CLK_CNTRL          IXP23XX_GLOBAL_REG(0x08)
-#define IXP23XX_RESET0                 IXP23XX_GLOBAL_REG(0x0c)
-#define IXP23XX_RESET1                 IXP23XX_GLOBAL_REG(0x10)
-#define IXP23XX_STRAP_OPTIONS          IXP23XX_GLOBAL_REG(0x18)
-
-#define IXP23XX_ENABLE_WATCHDOG                (1 << 24)
-#define IXP23XX_SHPC_INIT_COMP         (1 << 21)
-#define IXP23XX_RST_ALL                        (1 << 16)
-#define IXP23XX_RESET_PCI              (1 << 2)
-#define IXP23XX_PCI_UNIT_RESET         (1 << 1)
-#define IXP23XX_XSCALE_RESET           (1 << 0)
-
-#define IXP23XX_UENGINE_CSR_VIRT_BASE  (IXP23XX_CAP_CSR_VIRT + 0x18000)
-
-
-/****************************************************************************
- * PCI CSRs.
- ****************************************************************************/
-#define IXP23XX_PCI_CREG(x)            ((volatile unsigned long *)(IXP23XX_PCI_CREG_VIRT + (x)))
-#define IXP23XX_PCI_CMDSTAT            IXP23XX_PCI_CREG(0x04)
-#define IXP23XX_PCI_SRAM_BAR           IXP23XX_PCI_CREG(0x14)
-#define IXP23XX_PCI_SDRAM_BAR          IXP23XX_PCI_CREG(0x18)
-
-
-#define IXP23XX_PCI_CSR(x)             ((volatile unsigned long *)(IXP23XX_PCI_CREG_VIRT + 0x01000000 + (x)))
-#define IXP23XX_PCI_OUT_INT_STATUS     IXP23XX_PCI_CSR(0x0030)
-#define IXP23XX_PCI_OUT_INT_MASK       IXP23XX_PCI_CSR(0x0034)
-#define IXP23XX_PCI_SRAM_BASE_ADDR_MASK IXP23XX_PCI_CSR(0x00fc)
-#define IXP23XX_PCI_DRAM_BASE_ADDR_MASK IXP23XX_PCI_CSR(0x0100)
-#define IXP23XX_PCI_CONTROL            IXP23XX_PCI_CSR(0x013c)
-#define IXP23XX_PCI_ADDR_EXT           IXP23XX_PCI_CSR(0x0140)
-#define IXP23XX_PCI_ME_PUSH_STATUS     IXP23XX_PCI_CSR(0x0148)
-#define IXP23XX_PCI_ME_PUSH_EN         IXP23XX_PCI_CSR(0x014c)
-#define IXP23XX_PCI_ERR_STATUS         IXP23XX_PCI_CSR(0x0150)
-#define IXP23XX_PCI_ERROR_STATUS       IXP23XX_PCI_CSR(0x0150)
-#define IXP23XX_PCI_ERR_ENABLE         IXP23XX_PCI_CSR(0x0154)
-#define IXP23XX_PCI_XSCALE_INT_STATUS  IXP23XX_PCI_CSR(0x0158)
-#define IXP23XX_PCI_XSCALE_INT_ENABLE  IXP23XX_PCI_CSR(0x015c)
-#define IXP23XX_PCI_CPP_ADDR_BITS      IXP23XX_PCI_CSR(0x0160)
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/memory.h b/arch/arm/mach-ixp23xx/include/mach/memory.h
deleted file mode 100644 (file)
index 6cf0704..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/memory.h
- *
- * Copyright (c) 2003-2004 Intel Corp.
- *
- * 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 the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#ifndef __ASM_ARCH_MEMORY_H
-#define __ASM_ARCH_MEMORY_H
-
-#include <mach/hardware.h>
-
-/*
- * Physical DRAM offset.
- */
-#define PLAT_PHYS_OFFSET               (0x00000000)
-
-#define IXP23XX_PCI_SDRAM_OFFSET (*((volatile int *)IXP23XX_PCI_SDRAM_BAR) & 0xfffffff0)
-
-#define __phys_to_bus(x)       ((x) + (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
-#define __bus_to_phys(x)       ((x) - (IXP23XX_PCI_SDRAM_OFFSET - PHYS_OFFSET))
-
-#define __virt_to_bus(v)       __phys_to_bus(__virt_to_phys(v))
-#define __bus_to_virt(b)       __phys_to_virt(__bus_to_phys(b))
-#define __pfn_to_bus(p)                __phys_to_bus(__pfn_to_phys(p))
-#define __bus_to_pfn(b)                __phys_to_pfn(__bus_to_phys(b))
-
-#define arch_is_coherent()     1
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/platform.h b/arch/arm/mach-ixp23xx/include/mach/platform.h
deleted file mode 100644 (file)
index 50de558..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/platform.h
- *
- * Various bits of code used by platform-level code.
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2005 (c) MontaVista Software, Inc.
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#ifndef __ASSEMBLY__
-
-static inline unsigned long ixp2000_reg_read(volatile void *reg)
-{
-       return *((volatile unsigned long *)reg);
-}
-
-static inline void ixp2000_reg_write(volatile void *reg, unsigned long val)
-{
-       *((volatile unsigned long *)reg) = val;
-}
-
-static inline void ixp2000_reg_wrb(volatile void *reg, unsigned long val)
-{
-       *((volatile unsigned long *)reg) = val;
-}
-
-struct pci_sys_data;
-
-void ixp23xx_map_io(void);
-void ixp23xx_init_irq(void);
-void ixp23xx_sys_init(void);
-void ixp23xx_restart(char, const char *);
-int ixp23xx_pci_setup(int, struct pci_sys_data *);
-void ixp23xx_pci_preinit(void);
-struct pci_bus *ixp23xx_pci_scan_bus(int, struct pci_sys_data*);
-void ixp23xx_pci_slave_init(void);
-
-extern struct sys_timer ixp23xx_timer;
-
-#define IXP23XX_UART_XTAL              14745600
-
-#ifndef __ASSEMBLY__
-/*
- * Is system memory on the XSI or CPP bus?
- */
-static inline unsigned ixp23xx_cpp_boot(void)
-{
-       return (*IXP23XX_EXP_CFG0 & IXP23XX_EXP_CFG0_XSI_NOT_PRES);
-}
-#endif
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/include/mach/time.h b/arch/arm/mach-ixp23xx/include/mach/time.h
deleted file mode 100644 (file)
index b61dafc..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/time.h
- */
diff --git a/arch/arm/mach-ixp23xx/include/mach/timex.h b/arch/arm/mach-ixp23xx/include/mach/timex.h
deleted file mode 100644 (file)
index e341e9c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/timex.h
- *
- * XScale architecture timex specifications
- */
-
-#define CLOCK_TICK_RATE 75000000
diff --git a/arch/arm/mach-ixp23xx/include/mach/uncompress.h b/arch/arm/mach-ixp23xx/include/mach/uncompress.h
deleted file mode 100644 (file)
index 8b4c358..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/include/mach/uncompress.h
- *
- * Copyright (C) 2002-2004 Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#ifndef __ASM_ARCH_UNCOMPRESS_H
-#define __ASM_ARCH_UNCOMPRESS_H
-
-#include <mach/ixp23xx.h>
-#include <linux/serial_reg.h>
-
-#define UART_BASE      ((volatile u32 *)IXP23XX_UART1_PHYS)
-
-static inline void putc(char c)
-{
-       int j;
-
-       for (j = 0; j < 0x1000; j++) {
-               if (UART_BASE[UART_LSR] & UART_LSR_THRE)
-                       break;
-               barrier();
-       }
-
-       UART_BASE[UART_TX] = c;
-}
-
-static inline void flush(void)
-{
-}
-
-#define arch_decomp_setup()
-#define arch_decomp_wdog()
-
-
-#endif
diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c
deleted file mode 100644 (file)
index b0e07db..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/ixdp2351.c
- *
- * IXDP2351 board-specific routines
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2005 (c) MontaVista Software, Inc.
- *
- * Based on 2.4 code Copyright 2004 (c) Intel Corporation
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/irq.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/bitops.h>
-#include <linux/ioport.h>
-#include <linux/serial_8250.h>
-#include <linux/serial_core.h>
-#include <linux/device.h>
-#include <linux/mm.h>
-#include <linux/pci.h>
-#include <linux/mtd/physmap.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/tlbflush.h>
-#include <asm/pgtable.h>
-
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-
-/*
- * IXDP2351 Interrupt Handling
- */
-static void ixdp2351_inta_mask(struct irq_data *d)
-{
-       *IXDP2351_CPLD_INTA_MASK_SET_REG = IXDP2351_INTA_IRQ_MASK(d->irq);
-}
-
-static void ixdp2351_inta_unmask(struct irq_data *d)
-{
-       *IXDP2351_CPLD_INTA_MASK_CLR_REG = IXDP2351_INTA_IRQ_MASK(d->irq);
-}
-
-static void ixdp2351_inta_handler(unsigned int irq, struct irq_desc *desc)
-{
-       u16 ex_interrupt =
-               *IXDP2351_CPLD_INTA_STAT_REG & IXDP2351_INTA_IRQ_VALID;
-       int i;
-
-       desc->irq_data.chip->irq_mask(&desc->irq_data);
-
-       for (i = 0; i < IXDP2351_INTA_IRQ_NUM; i++) {
-               if (ex_interrupt & (1 << i)) {
-                       int cpld_irq =
-                               IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + i);
-                       generic_handle_irq(cpld_irq);
-               }
-       }
-
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static struct irq_chip ixdp2351_inta_chip = {
-       .irq_ack        = ixdp2351_inta_mask,
-       .irq_mask       = ixdp2351_inta_mask,
-       .irq_unmask     = ixdp2351_inta_unmask
-};
-
-static void ixdp2351_intb_mask(struct irq_data *d)
-{
-       *IXDP2351_CPLD_INTB_MASK_SET_REG = IXDP2351_INTB_IRQ_MASK(d->irq);
-}
-
-static void ixdp2351_intb_unmask(struct irq_data *d)
-{
-       *IXDP2351_CPLD_INTB_MASK_CLR_REG = IXDP2351_INTB_IRQ_MASK(d->irq);
-}
-
-static void ixdp2351_intb_handler(unsigned int irq, struct irq_desc *desc)
-{
-       u16 ex_interrupt =
-               *IXDP2351_CPLD_INTB_STAT_REG & IXDP2351_INTB_IRQ_VALID;
-       int i;
-
-       desc->irq_data.chip->irq_ack(&desc->irq_data);
-
-       for (i = 0; i < IXDP2351_INTB_IRQ_NUM; i++) {
-               if (ex_interrupt & (1 << i)) {
-                       int cpld_irq =
-                               IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + i);
-                       generic_handle_irq(cpld_irq);
-               }
-       }
-
-       desc->irq_data.chip->irq_unmask(&desc->irq_data);
-}
-
-static struct irq_chip ixdp2351_intb_chip = {
-       .irq_ack        = ixdp2351_intb_mask,
-       .irq_mask       = ixdp2351_intb_mask,
-       .irq_unmask     = ixdp2351_intb_unmask
-};
-
-void __init ixdp2351_init_irq(void)
-{
-       int irq;
-
-       /* Mask all interrupts from CPLD, disable simulation */
-       *IXDP2351_CPLD_INTA_MASK_SET_REG = (u16) -1;
-       *IXDP2351_CPLD_INTB_MASK_SET_REG = (u16) -1;
-       *IXDP2351_CPLD_INTA_SIM_REG = 0;
-       *IXDP2351_CPLD_INTB_SIM_REG = 0;
-
-       ixp23xx_init_irq();
-
-       for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE);
-            irq <
-            IXP23XX_MACH_IRQ(IXDP2351_INTA_IRQ_BASE + IXDP2351_INTA_IRQ_NUM);
-            irq++) {
-               if (IXDP2351_INTA_IRQ_MASK(irq) & IXDP2351_INTA_IRQ_VALID) {
-                       set_irq_flags(irq, IRQF_VALID);
-                       irq_set_chip_and_handler(irq, &ixdp2351_inta_chip,
-                                                handle_level_irq);
-               }
-       }
-
-       for (irq = IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE);
-            irq <
-            IXP23XX_MACH_IRQ(IXDP2351_INTB_IRQ_BASE + IXDP2351_INTB_IRQ_NUM);
-            irq++) {
-               if (IXDP2351_INTB_IRQ_MASK(irq) & IXDP2351_INTB_IRQ_VALID) {
-                       set_irq_flags(irq, IRQF_VALID);
-                       irq_set_chip_and_handler(irq, &ixdp2351_intb_chip,
-                                                handle_level_irq);
-               }
-       }
-
-       irq_set_chained_handler(IRQ_IXP23XX_INTA, ixdp2351_inta_handler);
-       irq_set_chained_handler(IRQ_IXP23XX_INTB, ixdp2351_intb_handler);
-}
-
-/*
- * IXDP2351 PCI
- */
-
-/*
- * This board does not do normal PCI IRQ routing, or any
- * sort of swizzling, so we just need to check where on the
- * bus the device is and figure out what CPLD pin it is
- * being routed to.
- */
-#define DEVPIN(dev, pin) ((pin) | ((dev) << 3))
-
-static int __init ixdp2351_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
-{
-       u8 bus = dev->bus->number;
-       u32 devpin = DEVPIN(PCI_SLOT(dev->devfn), pin);
-       struct pci_bus *tmp_bus = dev->bus;
-
-       /* Primary bus, no interrupts here */
-       if (!bus)
-               return -1;
-
-       /* Lookup first leaf in bus tree */
-       while ((tmp_bus->parent != NULL) && (tmp_bus->parent->parent != NULL))
-               tmp_bus = tmp_bus->parent;
-
-       /* Select between known bridges */
-       switch (tmp_bus->self->devfn | (tmp_bus->self->bus->number << 8)) {
-               /* Device is located after first bridge */
-       case 0x0008:
-               if (tmp_bus == dev->bus) {
-                       /* Device is located directy after first bridge */
-                       switch (devpin) {
-                               /* Onboard 82546 */
-                       case DEVPIN(1, 1):      /* Onboard 82546 ch 0 */
-                               return IRQ_IXDP2351_INTA_82546;
-                       case DEVPIN(1, 2):      /* Onboard 82546 ch 1 */
-                               return IRQ_IXDP2351_INTB_82546;
-                               /* PMC SLOT */
-                       case DEVPIN(0, 1):      /* PMCP INTA# */
-                       case DEVPIN(2, 4):      /* PMCS INTD# */
-                               return IRQ_IXDP2351_SPCI_PMC_INTA;
-                       case DEVPIN(0, 2):      /* PMCP INTB# */
-                       case DEVPIN(2, 1):      /* PMCS INTA# */
-                               return IRQ_IXDP2351_SPCI_PMC_INTB;
-                       case DEVPIN(0, 3):      /* PMCP INTC# */
-                       case DEVPIN(2, 2):      /* PMCS INTB# */
-                               return IRQ_IXDP2351_SPCI_PMC_INTC;
-                       case DEVPIN(0, 4):      /* PMCP INTD# */
-                       case DEVPIN(2, 3):      /* PMCS INTC# */
-                               return IRQ_IXDP2351_SPCI_PMC_INTD;
-                       }
-               } else {
-                       /* Device is located indirectly after first bridge */
-                       /* Not supported now */
-                       return -1;
-               }
-               break;
-       case 0x0010:
-               if (tmp_bus == dev->bus) {
-                       /* Device is located directy after second bridge */
-                       /* Secondary bus of second bridge */
-                       switch (devpin) {
-                       case DEVPIN(0, 1):      /* DB#0 */
-                       case DEVPIN(0, 2):
-                       case DEVPIN(0, 3):
-                       case DEVPIN(0, 4):
-                               return IRQ_IXDP2351_SPCI_DB_0;
-                       case DEVPIN(1, 1):      /* DB#1 */
-                       case DEVPIN(1, 2):
-                       case DEVPIN(1, 3):
-                       case DEVPIN(1, 4):
-                               return IRQ_IXDP2351_SPCI_DB_1;
-                       case DEVPIN(2, 1):      /* FIC1 */
-                       case DEVPIN(2, 2):
-                       case DEVPIN(2, 3):
-                       case DEVPIN(2, 4):
-                       case DEVPIN(3, 1):      /* FIC2 */
-                       case DEVPIN(3, 2):
-                       case DEVPIN(3, 3):
-                       case DEVPIN(3, 4):
-                               return IRQ_IXDP2351_SPCI_FIC;
-                       }
-               } else {
-                       /* Device is located indirectly after second bridge */
-                       /* Not supported now */
-                       return -1;
-               }
-               break;
-       }
-
-       return -1;
-}
-
-struct hw_pci ixdp2351_pci __initdata = {
-       .nr_controllers = 1,
-       .preinit        = ixp23xx_pci_preinit,
-       .setup          = ixp23xx_pci_setup,
-       .scan           = ixp23xx_pci_scan_bus,
-       .map_irq        = ixdp2351_map_irq,
-};
-
-int __init ixdp2351_pci_init(void)
-{
-       if (machine_is_ixdp2351())
-               pci_common_init(&ixdp2351_pci);
-
-       return 0;
-}
-
-subsys_initcall(ixdp2351_pci_init);
-
-/*
- * IXDP2351 Static Mapped I/O
- */
-static struct map_desc ixdp2351_io_desc[] __initdata = {
-       {
-               .virtual        = IXDP2351_NP_VIRT_BASE,
-               .pfn            = __phys_to_pfn((u64)IXDP2351_NP_PHYS_BASE),
-               .length         = IXDP2351_NP_PHYS_SIZE,
-               .type           = MT_DEVICE
-       }, {
-               .virtual        = IXDP2351_BB_BASE_VIRT,
-               .pfn            = __phys_to_pfn((u64)IXDP2351_BB_BASE_PHYS),
-               .length         = IXDP2351_BB_SIZE,
-               .type           = MT_DEVICE
-       }
-};
-
-static void __init ixdp2351_map_io(void)
-{
-       ixp23xx_map_io();
-       iotable_init(ixdp2351_io_desc, ARRAY_SIZE(ixdp2351_io_desc));
-}
-
-static struct physmap_flash_data ixdp2351_flash_data = {
-       .width          = 1,
-};
-
-static struct resource ixdp2351_flash_resource = {
-       .start          = 0x90000000,
-       .end            = 0x93ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device ixdp2351_flash = {
-       .name           = "physmap-flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &ixdp2351_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &ixdp2351_flash_resource,
-};
-
-static void __init ixdp2351_init(void)
-{
-       platform_device_register(&ixdp2351_flash);
-
-       /*
-        * Mark flash as writeable
-        */
-       IXP23XX_EXP_CS0[0] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[1] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[2] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[3] |= IXP23XX_FLASH_WRITABLE;
-
-       ixp23xx_sys_init();
-}
-
-static void ixdp2351_restart(char mode, const char *cmd)
-{
-       /* First try machine specific support */
-
-       *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_MAGIC;
-       (void) *IXDP2351_CPLD_RESET1_REG;
-       *IXDP2351_CPLD_RESET1_REG = IXDP2351_CPLD_RESET1_ENABLE;
-
-       ixp23xx_restart(mode, cmd);
-}
-
-MACHINE_START(IXDP2351, "Intel IXDP2351 Development Platform")
-       /* Maintainer: MontaVista Software, Inc. */
-       .map_io         = ixdp2351_map_io,
-       .init_irq       = ixdp2351_init_irq,
-       .timer          = &ixp23xx_timer,
-       .atag_offset    = 0x100,
-       .init_machine   = ixdp2351_init,
-       .restart        = ixdp2351_restart,
-MACHINE_END
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c
deleted file mode 100644 (file)
index 911f5a5..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/pci.c
- *
- * PCI routines for IXP23XX based systems
- *
- * Copyright (c) 2005 MontaVista Software, Inc.
- *
- * based on original code:
- *
- * Author: Naeem Afzal <naeem.m.afzal@intel.com>
- * Copyright 2002-2005 Intel Corp.
- *
- * 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 the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
- */
-
-#include <linux/sched.h>
-#include <linux/kernel.h>
-#include <linux/pci.h>
-#include <linux/interrupt.h>
-#include <linux/mm.h>
-#include <linux/init.h>
-#include <linux/ioport.h>
-#include <linux/delay.h>
-#include <linux/io.h>
-
-#include <asm/irq.h>
-#include <asm/sizes.h>
-#include <asm/mach/pci.h>
-#include <mach/hardware.h>
-
-extern int (*external_fault) (unsigned long, struct pt_regs *);
-
-static volatile int pci_master_aborts = 0;
-
-#ifdef DEBUG
-#define DBG(x...)      printk(x)
-#else
-#define DBG(x...)
-#endif
-
-int clear_master_aborts(void);
-
-static u32
-*ixp23xx_pci_config_addr(unsigned int bus_nr, unsigned int devfn, int where)
-{
-       u32 *paddress;
-
-       /*
-        * Must be dword aligned
-        */
-       where &= ~3;
-
-       /*
-        * For top bus, generate type 0, else type 1
-        */
-       if (!bus_nr) {
-               if (PCI_SLOT(devfn) >= 8)
-                       return 0;
-
-               paddress = (u32 *) (IXP23XX_PCI_CFG0_VIRT
-                                   | (1 << (PCI_SLOT(devfn) + 16))
-                                   | (PCI_FUNC(devfn) << 8) | where);
-       } else {
-               paddress = (u32 *) (IXP23XX_PCI_CFG1_VIRT
-                                   | (bus_nr << 16)
-                                   | (PCI_SLOT(devfn) << 11)
-                                   | (PCI_FUNC(devfn) << 8) | where);
-       }
-
-       return paddress;
-}
-
-/*
- * Mask table, bits to mask for quantity of size 1, 2 or 4 bytes.
- * 0 and 3 are not valid indexes...
- */
-static u32 bytemask[] = {
-       /*0*/   0,
-       /*1*/   0xff,
-       /*2*/   0xffff,
-       /*3*/   0,
-       /*4*/   0xffffffff,
-};
-
-static int ixp23xx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
-                               int where, int size, u32 *value)
-{
-       u32 n;
-       u32 *addr;
-
-       n = where % 4;
-
-       DBG("In config_read(%d) %d from dev %d:%d:%d\n", size, where,
-               bus->number, PCI_SLOT(devfn), PCI_FUNC(devfn));
-
-       addr = ixp23xx_pci_config_addr(bus->number, devfn, where);
-       if (!addr)
-               return PCIBIOS_DEVICE_NOT_FOUND;
-
-       pci_master_aborts = 0;
-       *value = (*addr >> (8*n)) & bytemask[size];
-       if (pci_master_aborts) {
-                       pci_master_aborts = 0;
-                       *value = 0xffffffff;
-                       return PCIBIOS_DEVICE_NOT_FOUND;
-               }
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-/*
- * We don't do error checking on the address for writes.
- * It's assumed that the user checked for the device existing first
- * by doing a read first.
- */
-static int ixp23xx_pci_write_config(struct pci_bus *bus, unsigned int devfn,
-                                       int where, int size, u32 value)
-{
-       u32 mask;
-       u32 *addr;
-       u32 temp;
-
-       mask = ~(bytemask[size] << ((where % 0x4) * 8));
-       addr = ixp23xx_pci_config_addr(bus->number, devfn, where);
-       if (!addr)
-               return PCIBIOS_DEVICE_NOT_FOUND;
-       temp = (u32) (value) << ((where % 0x4) * 8);
-       *addr = (*addr & mask) | temp;
-
-       clear_master_aborts();
-
-       return PCIBIOS_SUCCESSFUL;
-}
-
-struct pci_ops ixp23xx_pci_ops = {
-       .read   = ixp23xx_pci_read_config,
-       .write  = ixp23xx_pci_write_config,
-};
-
-struct pci_bus *ixp23xx_pci_scan_bus(int nr, struct pci_sys_data *sysdata)
-{
-       return pci_scan_root_bus(NULL, sysdata->busnr, &ixp23xx_pci_ops,
-                                sysdata, &sysdata->resources);
-}
-
-int ixp23xx_pci_abort_handler(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
-{
-       volatile unsigned long temp;
-       unsigned long flags;
-
-       pci_master_aborts = 1;
-
-       local_irq_save(flags);
-       temp = *IXP23XX_PCI_CONTROL;
-
-       /*
-        * master abort and cmd tgt err
-        */
-       if (temp & ((1 << 8) | (1 << 5)))
-               *IXP23XX_PCI_CONTROL = temp;
-
-       temp = *IXP23XX_PCI_CMDSTAT;
-
-       if (temp & (1 << 29))
-               *IXP23XX_PCI_CMDSTAT = temp;
-       local_irq_restore(flags);
-
-       /*
-        * If it was an imprecise abort, then we need to correct the
-        * return address to be _after_ the instruction.
-        */
-       if (fsr & (1 << 10))
-               regs->ARM_pc += 4;
-
-       return 0;
-}
-
-int clear_master_aborts(void)
-{
-       volatile u32 temp;
-
-       temp = *IXP23XX_PCI_CONTROL;
-
-       /*
-        * master abort and cmd tgt err
-        */
-       if (temp & ((1 << 8) | (1 << 5)))
-               *IXP23XX_PCI_CONTROL = temp;
-
-       temp = *IXP23XX_PCI_CMDSTAT;
-
-       if (temp & (1 << 29))
-               *IXP23XX_PCI_CMDSTAT = temp;
-
-       return 0;
-}
-
-static void __init ixp23xx_pci_common_init(void)
-{
-#ifdef __ARMEB__
-       *IXP23XX_PCI_CONTROL |= 0x20000;        /* set I/O swapping */
-#endif
-       /*
-        * ADDR_31 needs to be clear for PCI memory access to CPP memory
-        */
-       *IXP23XX_CPP2XSI_CURR_XFER_REG3 &= ~IXP23XX_CPP2XSI_ADDR_31;
-       *IXP23XX_CPP2XSI_CURR_XFER_REG3 |= IXP23XX_CPP2XSI_PSH_OFF;
-
-       /*
-        * Select correct memory for PCI inbound transactions
-        */
-       if (ixp23xx_cpp_boot()) {
-               *IXP23XX_PCI_CPP_ADDR_BITS &= ~(1 << 1);
-       } else {
-               *IXP23XX_PCI_CPP_ADDR_BITS |= (1 << 1);
-
-               /*
-                * Enable coherency on A2 silicon.
-                */
-               if (arch_is_coherent())
-                       *IXP23XX_CPP2XSI_CURR_XFER_REG3 &= ~IXP23XX_CPP2XSI_COH_OFF;
-       }
-}
-
-void __init ixp23xx_pci_preinit(void)
-{
-       pcibios_min_io = 0;
-       pcibios_min_mem = 0xe0000000;
-
-       pci_set_flags(0);
-
-       ixp23xx_pci_common_init();
-
-       hook_fault_code(16+6, ixp23xx_pci_abort_handler, SIGBUS, 0,
-                       "PCI config cycle to non-existent device");
-
-       *IXP23XX_PCI_ADDR_EXT = 0x0000e000;
-}
-
-/*
- * Prevent PCI layer from seeing the inbound host-bridge resources
- */
-static void __devinit pci_fixup_ixp23xx(struct pci_dev *dev)
-{
-       int i;
-
-       dev->class &= 0xff;
-       dev->class |= PCI_CLASS_BRIDGE_HOST << 8;
-       for (i = 0; i < PCI_NUM_RESOURCES; i++) {
-               dev->resource[i].start = 0;
-               dev->resource[i].end   = 0;
-               dev->resource[i].flags = 0;
-       }
-}
-DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x9002, pci_fixup_ixp23xx);
-
-/*
- * IXP2300 systems often have large resource requirements, so we just
- * use our own resource space.
- */
-static struct resource ixp23xx_pci_mem_space = {
-       .start  = IXP23XX_PCI_MEM_START,
-       .end    = IXP23XX_PCI_MEM_START + IXP23XX_PCI_MEM_SIZE - 1,
-       .flags  = IORESOURCE_MEM,
-       .name   = "PCI Mem Space"
-};
-
-static struct resource ixp23xx_pci_io_space = {
-       .start  = 0x00000100,
-       .end    = 0x01ffffff,
-       .flags  = IORESOURCE_IO,
-       .name   = "PCI I/O Space"
-};
-
-int ixp23xx_pci_setup(int nr, struct pci_sys_data *sys)
-{
-       if (nr >= 1)
-               return 0;
-
-       pci_add_resource_offset(&sys->resources,
-                               &ixp23xx_pci_io_space, sys->io_offset);
-       pci_add_resource_offset(&sys->resources,
-                               &ixp23xx_pci_mem_space, sys->mem_offset);
-
-       return 1;
-}
-
-void __init ixp23xx_pci_slave_init(void)
-{
-       ixp23xx_pci_common_init();
-}
diff --git a/arch/arm/mach-ixp23xx/roadrunner.c b/arch/arm/mach-ixp23xx/roadrunner.c
deleted file mode 100644 (file)
index eaaa3fa..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * arch/arm/mach-ixp23xx/roadrunner.c
- *
- * RoadRunner board-specific routines
- *
- * Author: Deepak Saxena <dsaxena@plexity.net>
- *
- * Copyright 2005 (c) MontaVista Software, Inc.
- *
- * Based on 2.4 code Copyright 2005 (c) ADI Engineering Corporation
- *
- * This file is licensed under the terms of the GNU General Public
- * License version 2. This program is licensed "as is" without any
- * warranty of any kind, whether express or implied.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/sched.h>
-#include <linux/interrupt.h>
-#include <linux/serial.h>
-#include <linux/tty.h>
-#include <linux/bitops.h>
-#include <linux/ioport.h>
-#include <linux/serial_8250.h>
-#include <linux/serial_core.h>
-#include <linux/device.h>
-#include <linux/mm.h>
-#include <linux/pci.h>
-#include <linux/mtd/physmap.h>
-
-#include <asm/types.h>
-#include <asm/setup.h>
-#include <asm/memory.h>
-#include <mach/hardware.h>
-#include <asm/mach-types.h>
-#include <asm/irq.h>
-#include <asm/tlbflush.h>
-#include <asm/pgtable.h>
-
-#include <asm/mach/map.h>
-#include <asm/mach/irq.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/pci.h>
-
-/*
- * Interrupt mapping
- */
-#define INTA           IRQ_ROADRUNNER_PCI_INTA
-#define INTB           IRQ_ROADRUNNER_PCI_INTB
-#define INTC           IRQ_ROADRUNNER_PCI_INTC
-#define INTD           IRQ_ROADRUNNER_PCI_INTD
-
-#define INTC_PIN       IXP23XX_GPIO_PIN_11
-#define INTD_PIN       IXP23XX_GPIO_PIN_12
-
-static int __init roadrunner_map_irq(const struct pci_dev *dev, u8 idsel,
-       u8 pin)
-{
-       static int pci_card_slot_irq[] = {INTB, INTC, INTD, INTA};
-       static int pmc_card_slot_irq[] = {INTA, INTB, INTC, INTD};
-       static int usb_irq[] = {INTB, INTC, INTD, -1};
-       static int mini_pci_1_irq[] = {INTB, INTC, -1, -1};
-       static int mini_pci_2_irq[] = {INTC, INTD, -1, -1};
-
-       switch(dev->bus->number) {
-               case 0:
-                       switch(dev->devfn) {
-                       case 0x0: // PCI-PCI bridge
-                               break;
-                       case 0x8: // PCI Card Slot
-                               return pci_card_slot_irq[pin - 1];
-                       case 0x10: // PMC Slot
-                               return pmc_card_slot_irq[pin - 1];
-                       case 0x18: // PMC Slot Secondary Agent
-                               break;
-                       case 0x20: // IXP Processor
-                               break;
-                       default:
-                               return NO_IRQ;
-                       }
-                       break;
-
-               case 1:
-                       switch(dev->devfn) {
-                       case 0x0: // IDE Controller
-                               return (pin == 1) ? INTC : -1;
-                       case 0x8: // USB fun 0
-                       case 0x9: // USB fun 1
-                       case 0xa: // USB fun 2
-                               return usb_irq[pin - 1];
-                       case 0x10: // Mini PCI 1
-                               return mini_pci_1_irq[pin-1];
-                       case 0x18: // Mini PCI 2
-                               return mini_pci_2_irq[pin-1];
-                       case 0x20: // MEM slot
-                               return (pin == 1) ? INTA : -1;
-                       default:
-                               return NO_IRQ;
-                       }
-                       break;
-
-               default:
-                       return NO_IRQ;
-       }
-
-       return NO_IRQ;
-}
-
-static void __init roadrunner_pci_preinit(void)
-{
-       irq_set_irq_type(IRQ_ROADRUNNER_PCI_INTC, IRQ_TYPE_LEVEL_LOW);
-       irq_set_irq_type(IRQ_ROADRUNNER_PCI_INTD, IRQ_TYPE_LEVEL_LOW);
-
-       ixp23xx_pci_preinit();
-}
-
-static struct hw_pci roadrunner_pci __initdata = {
-       .nr_controllers = 1,
-       .preinit        = roadrunner_pci_preinit,
-       .setup          = ixp23xx_pci_setup,
-       .scan           = ixp23xx_pci_scan_bus,
-       .map_irq        = roadrunner_map_irq,
-};
-
-static int __init roadrunner_pci_init(void)
-{
-       if (machine_is_roadrunner())
-               pci_common_init(&roadrunner_pci);
-
-       return 0;
-};
-
-subsys_initcall(roadrunner_pci_init);
-
-static struct physmap_flash_data roadrunner_flash_data = {
-       .width          = 2,
-};
-
-static struct resource roadrunner_flash_resource = {
-       .start          = 0x90000000,
-       .end            = 0x93ffffff,
-       .flags          = IORESOURCE_MEM,
-};
-
-static struct platform_device roadrunner_flash = {
-       .name           = "physmap-flash",
-       .id             = 0,
-       .dev            = {
-               .platform_data  = &roadrunner_flash_data,
-       },
-       .num_resources  = 1,
-       .resource       = &roadrunner_flash_resource,
-};
-
-static void __init roadrunner_init(void)
-{
-       platform_device_register(&roadrunner_flash);
-
-       /*
-        * Mark flash as writeable
-        */
-       IXP23XX_EXP_CS0[0] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[1] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[2] |= IXP23XX_FLASH_WRITABLE;
-       IXP23XX_EXP_CS0[3] |= IXP23XX_FLASH_WRITABLE;
-
-       ixp23xx_sys_init();
-}
-
-MACHINE_START(ROADRUNNER, "ADI Engineering RoadRunner Development Platform")
-       /* Maintainer: Deepak Saxena */
-       .map_io         = ixp23xx_map_io,
-       .init_irq       = ixp23xx_init_irq,
-       .timer          = &ixp23xx_timer,
-       .atag_offset    = 0x100,
-       .init_machine   = roadrunner_init,
-       .restart        = ixp23xx_restart,
-MACHINE_END
index 9923f92b5450e4f74701d560a31c9ba04782748f..398e9e53e1891afcbf8ade3a6dc3d1a6d5890c56 100644 (file)
@@ -12,6 +12,9 @@ endif
 
 obj-$(CONFIG_OMAP_32K_TIMER)   += timer32k.o
 
+# OCPI interconnect support for 1710, 1610 and 5912
+obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
+
 # Power Management
 obj-$(CONFIG_PM) += pm.o sleep.o
 
@@ -28,13 +31,15 @@ usb-fs-$(CONFIG_USB)                        := usb.o
 obj-y                                  += $(usb-fs-m) $(usb-fs-y)
 
 # Specific board support
-obj-$(CONFIG_MACH_OMAP_H2)             += board-h2.o board-h2-mmc.o
+obj-$(CONFIG_MACH_OMAP_H2)             += board-h2.o board-h2-mmc.o \
+                                          board-nand.o
 obj-$(CONFIG_MACH_OMAP_INNOVATOR)      += board-innovator.o
 obj-$(CONFIG_MACH_OMAP_GENERIC)                += board-generic.o
-obj-$(CONFIG_MACH_OMAP_PERSEUS2)       += board-perseus2.o
-obj-$(CONFIG_MACH_OMAP_FSAMPLE)                += board-fsample.o
+obj-$(CONFIG_MACH_OMAP_PERSEUS2)       += board-perseus2.o board-nand.o
+obj-$(CONFIG_MACH_OMAP_FSAMPLE)                += board-fsample.o board-nand.o
 obj-$(CONFIG_MACH_OMAP_OSK)            += board-osk.o
-obj-$(CONFIG_MACH_OMAP_H3)             += board-h3.o board-h3-mmc.o
+obj-$(CONFIG_MACH_OMAP_H3)             += board-h3.o board-h3-mmc.o \
+                                          board-nand.o
 obj-$(CONFIG_MACH_VOICEBLUE)           += board-voiceblue.o
 obj-$(CONFIG_MACH_OMAP_PALMTE)         += board-palmte.o
 obj-$(CONFIG_MACH_OMAP_PALMZ71)                += board-palmz71.o
index fcce7ff3763052204587f43cdf8f9345c8cb1763..31197bd2dedca014e895092019d99a6d39248833 100644 (file)
@@ -102,7 +102,7 @@ void __init ams_delta_init_fiq(void)
        }
 
        retval = request_irq(INT_DEFERRED_FIQ, deferred_fiq,
-                       IRQ_TYPE_EDGE_RISING, "deferred_fiq", 0);
+                       IRQ_TYPE_EDGE_RISING, "deferred_fiq", NULL);
        if (retval < 0) {
                pr_err("Failed to get deferred_fiq IRQ, ret=%d\n", retval);
                release_fiq(&fh);
index 80bd43c7f4ec9563b3599f84ca9f51d614170cb8..4a4afb371022e0898d78a1cc673f02d392b5b957 100644 (file)
@@ -185,20 +185,6 @@ static struct platform_device nor_device = {
        .resource       = &nor_resource,
 };
 
-static void nand_cmd_ctl(struct mtd_info *mtd, int cmd,        unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       unsigned long mask;
-
-       if (cmd == NAND_CMD_NONE)
-               return;
-
-       mask = (ctrl & NAND_CLE) ? 0x02 : 0;
-       if (ctrl & NAND_ALE)
-               mask |= 0x04;
-       writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
-}
-
 #define FSAMPLE_NAND_RB_GPIO_PIN       62
 
 static int nand_dev_ready(struct mtd_info *mtd)
@@ -216,7 +202,7 @@ static struct platform_nand_data nand_data = {
                .part_probe_types       = part_probes,
        },
        .ctrl   = {
-               .cmd_ctrl       = nand_cmd_ctl,
+               .cmd_ctrl       = omap1_nand_cmd_ctl,
                .dev_ready      = nand_dev_ready,
        },
 };
index 553a2e535764b54b83635ba7161e5f67fd1c0c1d..057ec13f06490bfbdcc5c425fd36f54aa8b1863b 100644 (file)
@@ -179,20 +179,6 @@ static struct mtd_partition h2_nand_partitions[] = {
        },
 };
 
-static void h2_nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       unsigned long mask;
-
-       if (cmd == NAND_CMD_NONE)
-               return;
-
-       mask = (ctrl & NAND_CLE) ? 0x02 : 0;
-       if (ctrl & NAND_ALE)
-               mask |= 0x04;
-       writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
-}
-
 #define H2_NAND_RB_GPIO_PIN    62
 
 static int h2_nand_dev_ready(struct mtd_info *mtd)
@@ -212,9 +198,8 @@ static struct platform_nand_data h2_nand_platdata = {
                .part_probe_types       = h2_part_probes,
        },
        .ctrl   = {
-               .cmd_ctrl       = h2_nand_cmd_ctl,
+               .cmd_ctrl       = omap1_nand_cmd_ctl,
                .dev_ready      = h2_nand_dev_ready,
-
        },
 };
 
index 4c19f4c06851ff2c15c41a93807f33d73364fbe3..f6ddf875965712ebcf05698e589b2ddc3fddae5c 100644 (file)
@@ -181,20 +181,6 @@ static struct mtd_partition nand_partitions[] = {
        },
 };
 
-static void nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       unsigned long mask;
-
-       if (cmd == NAND_CMD_NONE)
-               return;
-
-       mask = (ctrl & NAND_CLE) ? 0x02 : 0;
-       if (ctrl & NAND_ALE)
-               mask |= 0x04;
-       writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
-}
-
 #define H3_NAND_RB_GPIO_PIN    10
 
 static int nand_dev_ready(struct mtd_info *mtd)
@@ -214,7 +200,7 @@ static struct platform_nand_data nand_platdata = {
                .part_probe_types       = part_probes,
        },
        .ctrl   = {
-               .cmd_ctrl       = nand_cmd_ctl,
+               .cmd_ctrl       = omap1_nand_cmd_ctl,
                .dev_ready      = nand_dev_ready,
 
        },
diff --git a/arch/arm/mach-omap1/board-nand.c b/arch/arm/mach-omap1/board-nand.c
new file mode 100644 (file)
index 0000000..4d08353
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * linux/arch/arm/mach-omap1/board-nand.c
+ *
+ * Common OMAP1 board NAND code
+ *
+ * Copyright (C) 2004, 2012 Texas Instruments, Inc.
+ * Copyright (C) 2002 MontaVista Software, Inc.
+ * Copyright (C) 2001 RidgeRun, Inc.
+ * Author: RidgeRun, Inc.
+ *         Greg Lonnon (glonnon@ridgerun.com) or info@ridgerun.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/kernel.h>
+#include <linux/io.h>
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/nand.h>
+
+#include "common.h"
+
+void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd, unsigned int ctrl)
+{
+       struct nand_chip *this = mtd->priv;
+       unsigned long mask;
+
+       if (cmd == NAND_CMD_NONE)
+               return;
+
+       mask = (ctrl & NAND_CLE) ? 0x02 : 0;
+       if (ctrl & NAND_ALE)
+               mask |= 0x04;
+
+       writeb(cmd, this->IO_ADDR_W + mask);
+}
+
index a2c5abcd7c84e56d53c441059cf526294883c294..61ed4f0247ce37567e8fb0046f4d1cf503e4181b 100644 (file)
@@ -289,10 +289,10 @@ palmz71_gpio_setup(int early)
                gpio_direction_input(PALMZ71_USBDETECT_GPIO);
                if (request_irq(gpio_to_irq(PALMZ71_USBDETECT_GPIO),
                                palmz71_powercable, IRQF_SAMPLE_RANDOM,
-                               "palmz71-cable", 0))
+                               "palmz71-cable", NULL))
                        printk(KERN_ERR
                                        "IRQ request for power cable failed!\n");
-               palmz71_powercable(gpio_to_irq(PALMZ71_USBDETECT_GPIO), 0);
+               palmz71_powercable(gpio_to_irq(PALMZ71_USBDETECT_GPIO), NULL);
        }
 }
 
index 76d4ee05a814783c9b12ecfb47bcfe9e5d43dc05..a2c88890e767e369488c4b5eb16f87f524e0f51a 100644 (file)
@@ -143,20 +143,6 @@ static struct platform_device nor_device = {
        .resource       = &nor_resource,
 };
 
-static void nand_cmd_ctl(struct mtd_info *mtd, int cmd,        unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       unsigned long mask;
-
-       if (cmd == NAND_CMD_NONE)
-               return;
-
-       mask = (ctrl & NAND_CLE) ? 0x02 : 0;
-       if (ctrl & NAND_ALE)
-               mask |= 0x04;
-       writeb(cmd, (unsigned long)this->IO_ADDR_W | mask);
-}
-
 #define P2_NAND_RB_GPIO_PIN    62
 
 static int nand_dev_ready(struct mtd_info *mtd)
@@ -174,7 +160,7 @@ static struct platform_nand_data nand_data = {
                .part_probe_types       = part_probes,
        },
        .ctrl   = {
-               .cmd_ctrl       = nand_cmd_ctl,
+               .cmd_ctrl       = omap1_nand_cmd_ctl,
                .dev_ready      = nand_dev_ready,
        },
 };
index 67382ddd8c83fe7a4464a2c36d1a2d22979e437a..a9ee06b6cb42a72b262d92434eaf31f87b4abdea 100644 (file)
@@ -194,9 +194,8 @@ int omap1_select_table_rate(struct clk *clk, unsigned long rate)
 {
        /* Find the highest supported frequency <= rate and switch to it */
        struct mpu_rate * ptr;
-       unsigned long dpll1_rate, ref_rate;
+       unsigned long ref_rate;
 
-       dpll1_rate = ck_dpll1_p->rate;
        ref_rate = ck_ref_p->rate;
 
        for (ptr = omap1_rate_table; ptr->rate; ptr++) {
index af658ad338ec8d253f3da5b649a3a6a27ae7df59..8cc616e6f54a2ef596200d513f07a81c1b7c3598 100644 (file)
@@ -27,6 +27,7 @@
 #define __ARCH_ARM_MACH_OMAP1_COMMON_H
 
 #include <plat/common.h>
+#include <linux/mtd/mtd.h>
 
 #if defined(CONFIG_ARCH_OMAP730) || defined(CONFIG_ARCH_OMAP850)
 void omap7xx_map_io(void);
@@ -56,8 +57,16 @@ void omap1_init_early(void);
 void omap1_init_irq(void);
 void omap1_restart(char, const char *);
 
+extern void __init omap_check_revision(void);
+
+extern void omap1_nand_cmd_ctl(struct mtd_info *mtd, int cmd,
+                              unsigned int ctrl);
+
 extern struct sys_timer omap1_timer;
 extern bool omap_32k_timer_init(void);
-extern void __init omap_init_consistent_dma_size(void);
+
+extern u32 omap_irq_flags;
+
+extern int ocpi_enable(void);
 
 #endif /* __ARCH_ARM_MACH_OMAP1_COMMON_H */
index 76c67b3f9f61b9c4f00ffe12a5045195b58776a2..29ec50fc688dcedc44af04b40d8dd998c8d8e088 100644 (file)
@@ -87,7 +87,7 @@ static void fpga_mask_ack_irq(struct irq_data *d)
        fpga_ack_irq(d);
 }
 
-void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
+static void innovator_fpga_IRQ_demux(unsigned int irq, struct irq_desc *desc)
 {
        u32 stat;
        int fpga_irq;
index 2b28e1da14b09fa6c4e4d089b4895c36dee1606f..a1b846aacdaf15419d6ce45a55953fadf10c2967 100644 (file)
@@ -21,6 +21,8 @@
 
 #include <mach/hardware.h>
 
+#include "common.h"
+
 #define OMAP_DIE_ID_0          0xfffe1800
 #define OMAP_DIE_ID_1          0xfffe1804
 #define OMAP_PRODUCTION_ID_0   0xfffe2000
index d969a7203d14ad1e0387e034c2b025d517ba46df..71ce017bf5d8a895c9ddb8f2b4c1a12dba4ef7d4 100644 (file)
 
 #include <plat/mux.h>
 #include <plat/tc.h>
+#include <plat/dma.h>
 
 #include "iomap.h"
 #include "common.h"
 #include "clock.h"
 
-extern void omap_check_revision(void);
-
 /*
  * The machine specific code may provide the extra mapping besides the
  * default mapping provided here.
index 4448114fab722979bbe915e0341c06f62d8c912a..6995fb6a33454d17f1f05d967f4c75ed2bb4d1e6 100644 (file)
@@ -49,6 +49,8 @@
 
 #include <mach/hardware.h>
 
+#include "common.h"
+
 #define IRQ_BANK(irq) ((irq) >> 5)
 #define IRQ_BIT(irq)  ((irq) & 0x1f)
 
index 86ace9aaa6631374dc527ed758e600d251f328e8..5769c71815b2e3a6b8324ab17764824791723de5 100644 (file)
@@ -57,7 +57,7 @@ static struct lcd_dma_info {
        void *cb_data;
 
        int active;
-       unsigned long addr, size;
+       unsigned long addr;
        int rotate, data_type, xres, yres;
        int vxres;
        int mirror;
@@ -77,11 +77,6 @@ void omap_set_lcd_dma_b1(unsigned long addr, u16 fb_xres, u16 fb_yres,
 }
 EXPORT_SYMBOL(omap_set_lcd_dma_b1);
 
-void omap_set_lcd_dma_src_port(int port)
-{
-       lcd_dma.src_port = port;
-}
-
 void omap_set_lcd_dma_ext_controller(int external)
 {
        lcd_dma.ext_ctrl = external;
diff --git a/arch/arm/mach-omap1/ocpi.c b/arch/arm/mach-omap1/ocpi.c
new file mode 100644 (file)
index 0000000..238170c
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * linux/arch/arm/plat-omap/ocpi.c
+ *
+ * Minimal OCP bus support for omap16xx
+ *
+ * Copyright (C) 2003 - 2005 Nokia Corporation
+ * Copyright (C) 2012 Texas Instruments, Inc.
+ * Written by Tony Lindgren <tony@atomide.com>
+ *
+ * Modified for clock framework by Paul Mundt <paul.mundt@nokia.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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <linux/module.h>
+#include <linux/types.h>
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/spinlock.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+
+#include <mach/hardware.h>
+
+#include "common.h"
+
+#define OCPI_BASE              0xfffec320
+#define OCPI_FAULT             (OCPI_BASE + 0x00)
+#define OCPI_CMD_FAULT         (OCPI_BASE + 0x04)
+#define OCPI_SINT0             (OCPI_BASE + 0x08)
+#define OCPI_TABORT            (OCPI_BASE + 0x0c)
+#define OCPI_SINT1             (OCPI_BASE + 0x10)
+#define OCPI_PROT              (OCPI_BASE + 0x14)
+#define OCPI_SEC               (OCPI_BASE + 0x18)
+
+/* USB OHCI OCPI access error registers */
+#define HOSTUEADDR     0xfffba0e0
+#define HOSTUESTATUS   0xfffba0e4
+
+static struct clk *ocpi_ck;
+
+/*
+ * Enables device access to OMAP buses via the OCPI bridge
+ * FIXME: Add locking
+ */
+int ocpi_enable(void)
+{
+       unsigned int val;
+
+       if (!cpu_is_omap16xx())
+               return -ENODEV;
+
+       /* Enable access for OHCI in OCPI */
+       val = omap_readl(OCPI_PROT);
+       val &= ~0xff;
+       /* val &= (1 << 0);      Allow access only to EMIFS */
+       omap_writel(val, OCPI_PROT);
+
+       val = omap_readl(OCPI_SEC);
+       val &= ~0xff;
+       omap_writel(val, OCPI_SEC);
+
+       return 0;
+}
+EXPORT_SYMBOL(ocpi_enable);
+
+static int __init omap_ocpi_init(void)
+{
+       if (!cpu_is_omap16xx())
+               return -ENODEV;
+
+       ocpi_ck = clk_get(NULL, "l3_ocpi_ck");
+       if (IS_ERR(ocpi_ck))
+               return PTR_ERR(ocpi_ck);
+
+       clk_enable(ocpi_ck);
+       ocpi_enable();
+       pr_info("OMAP OCPI interconnect driver loaded\n");
+
+       return 0;
+}
+
+static void __exit omap_ocpi_exit(void)
+{
+       /* REVISIT: Disable OCPI */
+
+       if (!cpu_is_omap16xx())
+               return;
+
+       clk_disable(ocpi_ck);
+       clk_put(ocpi_ck);
+}
+
+MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>");
+MODULE_DESCRIPTION("OMAP OCPI bus controller module");
+MODULE_LICENSE("GPL");
+module_init(omap_ocpi_init);
+module_exit(omap_ocpi_exit);
index f66c32912b22d5bef0c4ca7d590ef5e5657c34ac..b2560d32b3a01d455079d43d937124e278c599f8 100644 (file)
@@ -569,11 +569,10 @@ static int omap_pm_read_proc(
 
 static void omap_pm_init_proc(void)
 {
-       struct proc_dir_entry *entry;
-
-       entry = create_proc_read_entry("driver/omap_pm",
-                                      S_IWUSR | S_IRUGO, NULL,
-                                      omap_pm_read_proc, NULL);
+       /* XXX Appears to leak memory */
+       create_proc_read_entry("driver/omap_pm",
+                              S_IWUSR | S_IRUGO, NULL,
+                              omap_pm_read_proc, NULL);
 }
 
 #endif /* DEBUG && CONFIG_PROC_FS */
index f255b153b863ca3c371582974d7a44a04b1837f2..b17709103866aeeb16394d760b3e6af33396a5c9 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <mach/hardware.h>
 
+#include "common.h"
+
 void omap1_restart(char mode, const char *cmd)
 {
        /*
index fb202af01d0dc2fbb1f9622d220b90335e939de8..64c65bcb2d67574af11b0af2c64e8374317b7419 100644 (file)
@@ -54,8 +54,7 @@ static int omap1_dm_timer_set_src(struct platform_device *pdev,
        return 0;
 }
 
-
-int __init omap1_dm_timer_init(void)
+static int __init omap1_dm_timer_init(void)
 {
        int i;
        int ret;
index 19de03b074e38ee9ceef523b27474708ae1ec3a4..e61afd9227662f123620a3243ed0a92d89cbe30b 100644 (file)
@@ -29,6 +29,8 @@
 #include <plat/mux.h>
 #include <plat/usb.h>
 
+#include "common.h"
+
 /* These routines should handle the standard chip-specific modes
  * for usb0/1/2 ports, covering basic mux and transceiver setup.
  *
@@ -138,6 +140,7 @@ static inline void ohci_device_init(struct omap_usb_config *pdata)
        if (cpu_is_omap7xx())
                ohci_resources[1].start = INT_7XX_USB_HHC_1;
        pdata->ohci_device = &ohci_device;
+       pdata->ocpi_enable = &ocpi_enable;
 }
 
 #else
index 1f97e747520612e80d11c64a6e0d1ebc89cf27ac..447682c4e11cccad255241f2f32240d41c1f1423 100644 (file)
@@ -39,26 +39,23 @@ static struct platform_device am35xx_emac_mdio_device = {
 
 static void am35xx_enable_emac_int(void)
 {
-       u32 regval;
-
-       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
-       regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
-                 AM35XX_CPGMAC_C0_TX_PULSE_CLR |
-                 AM35XX_CPGMAC_C0_MISC_PULSE_CLR |
-                 AM35XX_CPGMAC_C0_RX_THRESH_CLR);
-       omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
-       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       u32 v;
+
+       v = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR | AM35XX_CPGMAC_C0_TX_PULSE_CLR |
+             AM35XX_CPGMAC_C0_MISC_PULSE_CLR | AM35XX_CPGMAC_C0_RX_THRESH_CLR);
+       omap_ctrl_writel(v, AM35XX_CONTROL_LVL_INTR_CLEAR);
+       omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); /* OCP barrier */
 }
 
 static void am35xx_disable_emac_int(void)
 {
-       u32 regval;
+       u32 v;
 
-       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
-       regval = (regval | AM35XX_CPGMAC_C0_RX_PULSE_CLR |
-                 AM35XX_CPGMAC_C0_TX_PULSE_CLR);
-       omap_ctrl_writel(regval, AM35XX_CONTROL_LVL_INTR_CLEAR);
-       regval = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       v = omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR);
+       v |= (AM35XX_CPGMAC_C0_RX_PULSE_CLR | AM35XX_CPGMAC_C0_TX_PULSE_CLR);
+       omap_ctrl_writel(v, AM35XX_CONTROL_LVL_INTR_CLEAR);
+       omap_ctrl_readl(AM35XX_CONTROL_LVL_INTR_CLEAR); /* OCP barrier */
 }
 
 static struct emac_platform_data am35xx_emac_pdata = {
@@ -92,7 +89,7 @@ static struct platform_device am35xx_emac_device = {
 
 void __init am35xx_emac_init(unsigned long mdio_bus_freq, u8 rmii_en)
 {
-       unsigned int regval;
+       u32 v;
        int err;
 
        am35xx_emac_pdata.rmii_en = rmii_en;
@@ -110,8 +107,8 @@ void __init am35xx_emac_init(unsigned long mdio_bus_freq, u8 rmii_en)
                return;
        }
 
-       regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
-       regval = regval & (~(AM35XX_CPGMACSS_SW_RST));
-       omap_ctrl_writel(regval, AM35XX_CONTROL_IP_SW_RESET);
-       regval = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+       v = omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET);
+       v &= ~AM35XX_CPGMACSS_SW_RST;
+       omap_ctrl_writel(v, AM35XX_CONTROL_IP_SW_RESET);
+       omap_ctrl_readl(AM35XX_CONTROL_IP_SW_RESET); /* OCP barrier */
 }
index 49df12735b41916db3a9d222880ddb4dcd89015d..fd1b481c762c97576f1c9cb5503e9bd470a4a528 100644 (file)
@@ -630,13 +630,13 @@ static struct regulator_consumer_supply dummy_supplies[] = {
 
 static void __init omap3_evm_init(void)
 {
+       struct omap_board_mux *obm;
+
        omap3_evm_get_revision();
        regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
 
-       if (cpu_is_omap3630())
-               omap3_mux_init(omap36x_board_mux, OMAP_PACKAGE_CBB);
-       else
-               omap3_mux_init(omap35x_board_mux, OMAP_PACKAGE_CBB);
+       obm = (cpu_is_omap3630()) ? omap36x_board_mux : omap35x_board_mux;
+       omap3_mux_init(obm, OMAP_PACKAGE_CBB);
 
        omap_board_config = omap3_evm_config;
        omap_board_config_size = ARRAY_SIZE(omap3_evm_config);
index 1b782ba534336f6f3d3236e10316733f0f1b2abc..8216e5f64a6a854d8378327b5171df4ceee3d635 100644 (file)
@@ -231,7 +231,7 @@ static struct platform_device omap_vwlan_device = {
        },
 };
 
-struct wl12xx_platform_data omap_panda_wlan_data  __initdata = {
+static struct wl12xx_platform_data omap_panda_wlan_data  __initdata = {
        /* PANDA ref clock is 38.4 MHz */
        .board_ref_clock = 2,
 };
@@ -438,7 +438,7 @@ static struct panel_dvi_platform_data omap4_dvi_panel = {
        .i2c_bus_num = 3,
 };
 
-struct omap_dss_device omap4_panda_dvi_device = {
+static struct omap_dss_device omap4_panda_dvi_device = {
        .type                   = OMAP_DISPLAY_TYPE_DPI,
        .name                   = "dvi",
        .driver_name            = "dvi",
@@ -448,7 +448,7 @@ struct omap_dss_device omap4_panda_dvi_device = {
        .channel                = OMAP_DSS_CHANNEL_LCD2,
 };
 
-int __init omap4_panda_dvi_init(void)
+static int __init omap4_panda_dvi_init(void)
 {
        int r;
 
@@ -509,7 +509,7 @@ static struct omap_dss_board_info omap4_panda_dss_data = {
        .default_device = &omap4_panda_dvi_device,
 };
 
-void __init omap4_panda_display_init(void)
+static void __init omap4_panda_display_init(void)
 {
        int r;
 
index d87ee0612098fb82ba350d591adb9281e588097a..ae957c92081b83aa7ab69fd7b4b5116e42532c3b 100644 (file)
@@ -872,11 +872,11 @@ static struct twl4030_power_data rx51_t2scripts_data __initdata = {
        .resource_config = twl4030_rconfig,
 };
 
-struct twl4030_vibra_data rx51_vibra_data __initdata = {
+static struct twl4030_vibra_data rx51_vibra_data __initdata = {
        .coexist        = 0,
 };
 
-struct twl4030_audio_data rx51_audio_data __initdata = {
+static struct twl4030_audio_data rx51_audio_data __initdata = {
        .audio_mclk     = 26000000,
        .vibra          = &rx51_vibra_data,
 };
index a43a765dd0921d1d1fee5fb5d195f0dfdfd68f60..28187f134fffdc319c9f662a4d198f9284b5f23c 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/spi/spi.h>
 #include <plat/mcspi.h>
 #include <video/omapdss.h>
+#include <mach/board-zoom.h>
 
 #define LCD_PANEL_RESET_GPIO_PROD      96
 #define LCD_PANEL_RESET_GPIO_PILOT     55
index 57da7f406e28c9cca72cbfb397db288704a019de..0e95efccd2d707b0f07b474d48fc318da94bff6e 100644 (file)
@@ -134,8 +134,6 @@ void omap4_map_io(void);
 void ti81xx_map_io(void);
 void omap_barriers_init(void);
 
-extern void __init omap_init_consistent_dma_size(void);
-
 /**
  * omap_test_timeout - busy-loop, testing a condition
  * @cond: condition to test until it evaluates to true
index e4336035c0ea85f94ce4e9d4e6b1cd0752e1f5e4..f3953a4992869966e457dbd91968feed1cb4cf47 100644 (file)
@@ -42,7 +42,6 @@
 
 static int __init omap3_l3_init(void)
 {
-       int l;
        struct omap_hwmod *oh;
        struct platform_device *pdev;
        char oh_name[L3_MODULES_MAX_LEN];
@@ -54,7 +53,7 @@ static int __init omap3_l3_init(void)
        if (!(cpu_is_omap34xx()))
                return -ENODEV;
 
-       l = snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main");
+       snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main");
 
        oh = omap_hwmod_lookup(oh_name);
 
@@ -72,7 +71,7 @@ postcore_initcall(omap3_l3_init);
 
 static int __init omap4_l3_init(void)
 {
-       int l, i;
+       int i;
        struct omap_hwmod *oh[3];
        struct platform_device *pdev;
        char oh_name[L3_MODULES_MAX_LEN];
@@ -89,7 +88,7 @@ static int __init omap4_l3_init(void)
                return -ENODEV;
 
        for (i = 0; i < L3_MODULES; i++) {
-               l = snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main_%d", i+1);
+               snprintf(oh_name, L3_MODULES_MAX_LEN, "l3_main_%d", i+1);
 
                oh[i] = omap_hwmod_lookup(oh_name);
                if (!(oh[i]))
index 2f994e5194e85c932836421f79b90fe7efe0ce4c..064cab03d2bd4f606fe85af3ef0a4753a60bdc73 100644 (file)
@@ -58,7 +58,7 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused)
        pdata->virtual_irq_start = IH_GPIO_BASE + 32 * (id - 1);
        pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count;
        pdata->regs = kzalloc(sizeof(struct omap_gpio_reg_offs), GFP_KERNEL);
-       if (!pdata) {
+       if (!pdata->regs) {
                pr_err("gpio%d: Memory allocation failed\n", id);
                return -ENOMEM;
        }
index 385b3e02c4a696b0a28a218b54027daf98def1b4..a0fa9bb2bda5bed7e952cd7639374c040d858fbc 100644 (file)
@@ -176,7 +176,7 @@ static int omap2_onenand_set_sync_mode(struct omap_onenand_platform_data *cfg,
        const int t_wpl  = 40;
        const int t_wph  = 30;
        int min_gpmc_clk_period, t_ces, t_avds, t_avdh, t_ach, t_aavdh, t_rdyo;
-       int tick_ns, div, fclk_offset_ns, fclk_offset, gpmc_clk_ns, latency;
+       int div, fclk_offset_ns, fclk_offset, gpmc_clk_ns, latency;
        int first_time = 0, hf = 0, vhf = 0, sync_read = 0, sync_write = 0;
        int err, ticks_cez;
        int cs = cfg->cs, freq = *freq_ptr;
@@ -240,7 +240,6 @@ static int omap2_onenand_set_sync_mode(struct omap_onenand_platform_data *cfg,
                break;
        }
 
-       tick_ns = gpmc_ticks_to_ns(1);
        div = gpmc_cs_calc_divider(cs, min_gpmc_clk_period);
        gpmc_clk_ns = gpmc_ticks_to_ns(div);
        if (gpmc_clk_ns < 15) /* >66Mhz */
index 00d510858e287fa41c2f3a893553e59dc205a7a8..580e684e8825f43b9b081133c579d4ac1d1bc9dc 100644 (file)
@@ -755,8 +755,7 @@ static int __init gpmc_init(void)
                irq++;
        }
 
-       ret = request_irq(gpmc_irq,
-                       gpmc_handle_irq, IRQF_SHARED, "gpmc", gpmc_base);
+       ret = request_irq(gpmc_irq, gpmc_handle_irq, IRQF_SHARED, "gpmc", NULL);
        if (ret)
                pr_err("gpmc: irq-%d could not claim: err %d\n",
                                                gpmc_irq, ret);
index 454dfce125ca3e31337b2f2eb3c760ded2c51c60..8763c8520dc2135030dc3a51cce0e5567fe4ca27 100644 (file)
@@ -28,7 +28,7 @@ static struct hwspinlock_pdata omap_hwspinlock_pdata __initdata = {
        .base_id = 0,
 };
 
-int __init hwspinlocks_init(void)
+static int __init hwspinlocks_init(void)
 {
        int retval = 0;
        struct omap_hwmod *oh;
index 065bd768987cfbc9dabd513f4dc41cef54d7dc9d..2d5a57669a7945c156abe85778a962626ab51af4 100644 (file)
@@ -31,6 +31,7 @@
 #include <plat/omap-pm.h>
 #include <plat/omap_hwmod.h>
 #include <plat/multi.h>
+#include <plat/dma.h>
 
 #include "iomap.h"
 #include "voltage.h"
index 65f0d2571c9a2c88aa0d84327d4498b113272d8d..80f3ced0bd1a05d7f5d6ca8a37b36b32be3ce00c 100644 (file)
@@ -25,6 +25,7 @@
 #include <mach/hardware.h>
 
 #include "iomap.h"
+#include "common.h"
 
 /* selected INTC register offsets */
 
@@ -334,7 +335,7 @@ void omap_intc_restore_context(void)
 void omap3_intc_suspend(void)
 {
        /* A pending interrupt would prevent OMAP from entering suspend */
-       omap_ack_irq(0);
+       omap_ack_irq(NULL);
 }
 
 void omap3_intc_prepare_idle(void)
index 65c33911341fcf589b1e4372e9f5adbbada62d21..3268ee24eada87ee74d24ce90bc9ea918260bfd2 100644 (file)
@@ -247,7 +247,7 @@ int __init omap_mux_init_signal(const char *muxname, int val)
        int mux_mode;
 
        mux_mode = omap_mux_get_by_name(muxname, &partition, &mux);
-       if (mux_mode < 0)
+       if (mux_mode < 0 || !mux)
                return mux_mode;
 
        old_mode = omap_mux_read(partition, mux->reg_offset);
index d8f8ef40290f4dc4c803e69ce87fe5111baed499..d9ae4a53d818fe9749f9303ef60382ce791165d5 100644 (file)
@@ -18,6 +18,7 @@
 #include <asm/cacheflush.h>
 #include <asm/memblock.h>
 
+#include <plat/omap-secure.h>
 #include <mach/omap-secure.h>
 
 static phys_addr_t omap_secure_memblock_base;
index 42cd7fb52414b961ad0535004a9f1f83333130ea..d811c7790350d9deded0e7ed53636e3a74430219 100644 (file)
@@ -259,7 +259,7 @@ static void irq_save_context(void)
 /*
  * Clear WakeupGen SAR backup status.
  */
-void irq_sar_clear(void)
+static void irq_sar_clear(void)
 {
        u32 val;
        val = __raw_readl(sar_base + SAR_BACKUP_STATUS_OFFSET);
index 7144ae651d3defcb6e74f9f59ce7f38207691bf4..bf86f7e8f91f5837869cb1b799f2b59ab4a81395 100644 (file)
@@ -2,7 +2,7 @@
  * omap_hwmod implementation for OMAP2/3/4
  *
  * Copyright (C) 2009-2011 Nokia Corporation
- * Copyright (C) 2011 Texas Instruments, Inc.
+ * Copyright (C) 2011-2012 Texas Instruments, Inc.
  *
  * Paul Walmsley, Benoît Cousson, Kevin Hilman
  *
 #include <linux/mutex.h>
 #include <linux/spinlock.h>
 #include <linux/slab.h>
+#include <linux/bootmem.h>
 
 #include "common.h"
 #include <plat/cpu.h>
 /* Name of the OMAP hwmod for the MPU */
 #define MPU_INITIATOR_NAME             "mpu"
 
+/*
+ * Number of struct omap_hwmod_link records per struct
+ * omap_hwmod_ocp_if record (master->slave and slave->master)
+ */
+#define LINKS_PER_OCP_IF               2
+
 /* omap_hwmod_list contains all registered struct omap_hwmods */
 static LIST_HEAD(omap_hwmod_list);
 
 /* mpu_oh: used to add/remove MPU initiator from sleepdep list */
 static struct omap_hwmod *mpu_oh;
 
+/*
+ * linkspace: ptr to a buffer that struct omap_hwmod_link records are
+ * allocated from - used to reduce the number of small memory
+ * allocations, which has a significant impact on performance
+ */
+static struct omap_hwmod_link *linkspace;
+
+/*
+ * free_ls, max_ls: array indexes into linkspace; representing the
+ * next free struct omap_hwmod_link index, and the maximum number of
+ * struct omap_hwmod_link records allocated (respectively)
+ */
+static unsigned short free_ls, max_ls, ls_supp;
 
 /* Private functions */
 
+/**
+ * _fetch_next_ocp_if - return the next OCP interface in a list
+ * @p: ptr to a ptr to the list_head inside the ocp_if to return
+ * @i: pointer to the index of the element pointed to by @p in the list
+ *
+ * Return a pointer to the struct omap_hwmod_ocp_if record
+ * containing the struct list_head pointed to by @p, and increment
+ * @p such that a future call to this routine will return the next
+ * record.
+ */
+static struct omap_hwmod_ocp_if *_fetch_next_ocp_if(struct list_head **p,
+                                                   int *i)
+{
+       struct omap_hwmod_ocp_if *oi;
+
+       oi = list_entry(*p, struct omap_hwmod_link, node)->ocp_if;
+       *p = (*p)->next;
+
+       *i = *i + 1;
+
+       return oi;
+}
+
 /**
  * _update_sysc_cache - return the module OCP_SYSCONFIG register, keep copy
  * @oh: struct omap_hwmod *
@@ -582,16 +625,16 @@ static int _init_main_clk(struct omap_hwmod *oh)
  */
 static int _init_interface_clks(struct omap_hwmod *oh)
 {
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
        struct clk *c;
-       int i;
+       int i = 0;
        int ret = 0;
 
-       if (oh->slaves_cnt == 0)
-               return 0;
-
-       for (i = 0; i < oh->slaves_cnt; i++) {
-               struct omap_hwmod_ocp_if *os = oh->slaves[i];
+       p = oh->slave_ports.next;
 
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
                if (!os->clk)
                        continue;
 
@@ -643,21 +686,22 @@ static int _init_opt_clks(struct omap_hwmod *oh)
  */
 static int _enable_clocks(struct omap_hwmod *oh)
 {
-       int i;
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
+       int i = 0;
 
        pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);
 
        if (oh->_clk)
                clk_enable(oh->_clk);
 
-       if (oh->slaves_cnt > 0) {
-               for (i = 0; i < oh->slaves_cnt; i++) {
-                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
-                       struct clk *c = os->_clk;
+       p = oh->slave_ports.next;
 
-                       if (c && (os->flags & OCPIF_SWSUP_IDLE))
-                               clk_enable(c);
-               }
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+
+               if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE))
+                       clk_enable(os->_clk);
        }
 
        /* The opt clocks are controlled by the device driver. */
@@ -673,21 +717,22 @@ static int _enable_clocks(struct omap_hwmod *oh)
  */
 static int _disable_clocks(struct omap_hwmod *oh)
 {
-       int i;
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
+       int i = 0;
 
        pr_debug("omap_hwmod: %s: disabling clocks\n", oh->name);
 
        if (oh->_clk)
                clk_disable(oh->_clk);
 
-       if (oh->slaves_cnt > 0) {
-               for (i = 0; i < oh->slaves_cnt; i++) {
-                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
-                       struct clk *c = os->_clk;
+       p = oh->slave_ports.next;
 
-                       if (c && (os->flags & OCPIF_SWSUP_IDLE))
-                               clk_disable(c);
-               }
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+
+               if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE))
+                       clk_disable(os->_clk);
        }
 
        /* The opt clocks are controlled by the device driver. */
@@ -780,39 +825,6 @@ static int _omap4_wait_target_disable(struct omap_hwmod *oh)
                                             oh->prcm.omap4.clkctrl_offs);
 }
 
-/**
- * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
- * @oh: struct omap_hwmod *
- *
- * Disable the PRCM module mode related to the hwmod @oh.
- * Return EINVAL if the modulemode is not supported and 0 in case of success.
- */
-static int _omap4_disable_module(struct omap_hwmod *oh)
-{
-       int v;
-
-       /* The module mode does not exist prior OMAP4 */
-       if (!cpu_is_omap44xx())
-               return -EINVAL;
-
-       if (!oh->clkdm || !oh->prcm.omap4.modulemode)
-               return -EINVAL;
-
-       pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
-
-       omap4_cminst_module_disable(oh->clkdm->prcm_partition,
-                                   oh->clkdm->cm_inst,
-                                   oh->clkdm->clkdm_offs,
-                                   oh->prcm.omap4.clkctrl_offs);
-
-       v = _omap4_wait_target_disable(oh);
-       if (v)
-               pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
-                       oh->name);
-
-       return 0;
-}
-
 /**
  * _count_mpu_irqs - count the number of MPU IRQ lines associated with @oh
  * @oh: struct omap_hwmod *oh
@@ -883,59 +895,220 @@ static int _count_ocp_if_addr_spaces(struct omap_hwmod_ocp_if *os)
 }
 
 /**
- * _find_mpu_port_index - find hwmod OCP slave port ID intended for MPU use
- * @oh: struct omap_hwmod *
+ * _get_mpu_irq_by_name - fetch MPU interrupt line number by name
+ * @oh: struct omap_hwmod * to operate on
+ * @name: pointer to the name of the MPU interrupt number to fetch (optional)
+ * @irq: pointer to an unsigned int to store the MPU IRQ number to
  *
- * Returns the array index of the OCP slave port that the MPU
- * addresses the device on, or -EINVAL upon error or not found.
+ * Retrieve a MPU hardware IRQ line number named by @name associated
+ * with the IP block pointed to by @oh.  The IRQ number will be filled
+ * into the address pointed to by @dma.  When @name is non-null, the
+ * IRQ line number associated with the named entry will be returned.
+ * If @name is null, the first matching entry will be returned.  Data
+ * order is not meaningful in hwmod data, so callers are strongly
+ * encouraged to use a non-null @name whenever possible to avoid
+ * unpredictable effects if hwmod data is later added that causes data
+ * ordering to change.  Returns 0 upon success or a negative error
+ * code upon error.
  */
-static int __init _find_mpu_port_index(struct omap_hwmod *oh)
+static int _get_mpu_irq_by_name(struct omap_hwmod *oh, const char *name,
+                               unsigned int *irq)
 {
        int i;
-       int found = 0;
+       bool found = false;
 
-       if (!oh || oh->slaves_cnt == 0)
-               return -EINVAL;
+       if (!oh->mpu_irqs)
+               return -ENOENT;
 
-       for (i = 0; i < oh->slaves_cnt; i++) {
-               struct omap_hwmod_ocp_if *os = oh->slaves[i];
+       i = 0;
+       while (oh->mpu_irqs[i].irq != -1) {
+               if (name == oh->mpu_irqs[i].name ||
+                   !strcmp(name, oh->mpu_irqs[i].name)) {
+                       found = true;
+                       break;
+               }
+               i++;
+       }
 
-               if (os->user & OCP_USER_MPU) {
-                       found = 1;
+       if (!found)
+               return -ENOENT;
+
+       *irq = oh->mpu_irqs[i].irq;
+
+       return 0;
+}
+
+/**
+ * _get_sdma_req_by_name - fetch SDMA request line ID by name
+ * @oh: struct omap_hwmod * to operate on
+ * @name: pointer to the name of the SDMA request line to fetch (optional)
+ * @dma: pointer to an unsigned int to store the request line ID to
+ *
+ * Retrieve an SDMA request line ID named by @name on the IP block
+ * pointed to by @oh.  The ID will be filled into the address pointed
+ * to by @dma.  When @name is non-null, the request line ID associated
+ * with the named entry will be returned.  If @name is null, the first
+ * matching entry will be returned.  Data order is not meaningful in
+ * hwmod data, so callers are strongly encouraged to use a non-null
+ * @name whenever possible to avoid unpredictable effects if hwmod
+ * data is later added that causes data ordering to change.  Returns 0
+ * upon success or a negative error code upon error.
+ */
+static int _get_sdma_req_by_name(struct omap_hwmod *oh, const char *name,
+                                unsigned int *dma)
+{
+       int i;
+       bool found = false;
+
+       if (!oh->sdma_reqs)
+               return -ENOENT;
+
+       i = 0;
+       while (oh->sdma_reqs[i].dma_req != -1) {
+               if (name == oh->sdma_reqs[i].name ||
+                   !strcmp(name, oh->sdma_reqs[i].name)) {
+                       found = true;
                        break;
                }
+               i++;
        }
 
-       if (found)
-               pr_debug("omap_hwmod: %s: MPU OCP slave port ID  %d\n",
-                        oh->name, i);
-       else
-               pr_debug("omap_hwmod: %s: no MPU OCP slave port found\n",
-                        oh->name);
+       if (!found)
+               return -ENOENT;
+
+       *dma = oh->sdma_reqs[i].dma_req;
 
-       return (found) ? i : -EINVAL;
+       return 0;
 }
 
 /**
- * _find_mpu_rt_base - find hwmod register target base addr accessible by MPU
- * @oh: struct omap_hwmod *
+ * _get_addr_space_by_name - fetch address space start & end by name
+ * @oh: struct omap_hwmod * to operate on
+ * @name: pointer to the name of the address space to fetch (optional)
+ * @pa_start: pointer to a u32 to store the starting address to
+ * @pa_end: pointer to a u32 to store the ending address to
  *
- * Return the virtual address of the base of the register target of
- * device @oh, or NULL on error.
+ * Retrieve address space start and end addresses for the IP block
+ * pointed to by @oh.  The data will be filled into the addresses
+ * pointed to by @pa_start and @pa_end.  When @name is non-null, the
+ * address space data associated with the named entry will be
+ * returned.  If @name is null, the first matching entry will be
+ * returned.  Data order is not meaningful in hwmod data, so callers
+ * are strongly encouraged to use a non-null @name whenever possible
+ * to avoid unpredictable effects if hwmod data is later added that
+ * causes data ordering to change.  Returns 0 upon success or a
+ * negative error code upon error.
  */
-static void __iomem * __init _find_mpu_rt_base(struct omap_hwmod *oh, u8 index)
+static int _get_addr_space_by_name(struct omap_hwmod *oh, const char *name,
+                                  u32 *pa_start, u32 *pa_end)
 {
+       int i, j;
        struct omap_hwmod_ocp_if *os;
-       struct omap_hwmod_addr_space *mem;
-       int i = 0, found = 0;
-       void __iomem *va_start;
+       struct list_head *p = NULL;
+       bool found = false;
+
+       p = oh->slave_ports.next;
+
+       i = 0;
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+
+               if (!os->addr)
+                       return -ENOENT;
+
+               j = 0;
+               while (os->addr[j].pa_start != os->addr[j].pa_end) {
+                       if (name == os->addr[j].name ||
+                           !strcmp(name, os->addr[j].name)) {
+                               found = true;
+                               break;
+                       }
+                       j++;
+               }
+
+               if (found)
+                       break;
+       }
+
+       if (!found)
+               return -ENOENT;
+
+       *pa_start = os->addr[j].pa_start;
+       *pa_end = os->addr[j].pa_end;
+
+       return 0;
+}
+
+/**
+ * _save_mpu_port_index - find and save the index to @oh's MPU port
+ * @oh: struct omap_hwmod *
+ *
+ * Determines the array index of the OCP slave port that the MPU uses
+ * to address the device, and saves it into the struct omap_hwmod.
+ * Intended to be called during hwmod registration only. No return
+ * value.
+ */
+static void __init _save_mpu_port_index(struct omap_hwmod *oh)
+{
+       struct omap_hwmod_ocp_if *os = NULL;
+       struct list_head *p;
+       int i = 0;
+
+       if (!oh)
+               return;
 
-       if (!oh || oh->slaves_cnt == 0)
+       oh->_int_flags |= _HWMOD_NO_MPU_PORT;
+
+       p = oh->slave_ports.next;
+
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+               if (os->user & OCP_USER_MPU) {
+                       oh->_mpu_port = os;
+                       oh->_int_flags &= ~_HWMOD_NO_MPU_PORT;
+                       break;
+               }
+       }
+
+       return;
+}
+
+/**
+ * _find_mpu_rt_port - return omap_hwmod_ocp_if accessible by the MPU
+ * @oh: struct omap_hwmod *
+ *
+ * Given a pointer to a struct omap_hwmod record @oh, return a pointer
+ * to the struct omap_hwmod_ocp_if record that is used by the MPU to
+ * communicate with the IP block.  This interface need not be directly
+ * connected to the MPU (and almost certainly is not), but is directly
+ * connected to the IP block represented by @oh.  Returns a pointer
+ * to the struct omap_hwmod_ocp_if * upon success, or returns NULL upon
+ * error or if there does not appear to be a path from the MPU to this
+ * IP block.
+ */
+static struct omap_hwmod_ocp_if *_find_mpu_rt_port(struct omap_hwmod *oh)
+{
+       if (!oh || oh->_int_flags & _HWMOD_NO_MPU_PORT || oh->slaves_cnt == 0)
                return NULL;
 
-       os = oh->slaves[index];
+       return oh->_mpu_port;
+};
+
+/**
+ * _find_mpu_rt_addr_space - return MPU register target address space for @oh
+ * @oh: struct omap_hwmod *
+ *
+ * Returns a pointer to the struct omap_hwmod_addr_space record representing
+ * the register target MPU address space; or returns NULL upon error.
+ */
+static struct omap_hwmod_addr_space * __init _find_mpu_rt_addr_space(struct omap_hwmod *oh)
+{
+       struct omap_hwmod_ocp_if *os;
+       struct omap_hwmod_addr_space *mem;
+       int found = 0, i = 0;
 
-       if (!os->addr)
+       os = _find_mpu_rt_port(oh);
+       if (!os || !os->addr)
                return NULL;
 
        do {
@@ -944,20 +1117,7 @@ static void __iomem * __init _find_mpu_rt_base(struct omap_hwmod *oh, u8 index)
                        found = 1;
        } while (!found && mem->pa_start != mem->pa_end);
 
-       if (found) {
-               va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
-               if (!va_start) {
-                       pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
-                       return NULL;
-               }
-               pr_debug("omap_hwmod: %s: MPU register target at va %p\n",
-                        oh->name, va_start);
-       } else {
-               pr_debug("omap_hwmod: %s: no MPU register target found\n",
-                        oh->name);
-       }
-
-       return (found) ? va_start : NULL;
+       return (found) ? mem : NULL;
 }
 
 /**
@@ -1205,12 +1365,11 @@ static int _wait_target_ready(struct omap_hwmod *oh)
        if (!oh)
                return -EINVAL;
 
-       if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
+       if (oh->flags & HWMOD_NO_IDLEST)
                return 0;
 
-       os = oh->slaves[oh->_mpu_port_index];
-
-       if (oh->flags & HWMOD_NO_IDLEST)
+       os = _find_mpu_rt_port(oh);
+       if (!os)
                return 0;
 
        /* XXX check module SIDLEMODE */
@@ -1377,14 +1536,74 @@ static int _read_hardreset(struct omap_hwmod *oh, const char *name)
        }
 }
 
+/**
+ * _are_any_hardreset_lines_asserted - return true if part of @oh is hard-reset
+ * @oh: struct omap_hwmod *
+ *
+ * If any hardreset line associated with @oh is asserted, then return true.
+ * Otherwise, if @oh has no hardreset lines associated with it, or if
+ * no hardreset lines associated with @oh are asserted, then return false.
+ * This function is used to avoid executing some parts of the IP block
+ * enable/disable sequence if a hardreset line is set.
+ */
+static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
+{
+       int i;
+
+       if (oh->rst_lines_cnt == 0)
+               return false;
+
+       for (i = 0; i < oh->rst_lines_cnt; i++)
+               if (_read_hardreset(oh, oh->rst_lines[i].name) > 0)
+                       return true;
+
+       return false;
+}
+
+/**
+ * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
+ * @oh: struct omap_hwmod *
+ *
+ * Disable the PRCM module mode related to the hwmod @oh.
+ * Return EINVAL if the modulemode is not supported and 0 in case of success.
+ */
+static int _omap4_disable_module(struct omap_hwmod *oh)
+{
+       int v;
+
+       /* The module mode does not exist prior OMAP4 */
+       if (!cpu_is_omap44xx())
+               return -EINVAL;
+
+       if (!oh->clkdm || !oh->prcm.omap4.modulemode)
+               return -EINVAL;
+
+       pr_debug("omap_hwmod: %s: %s\n", oh->name, __func__);
+
+       omap4_cminst_module_disable(oh->clkdm->prcm_partition,
+                                   oh->clkdm->cm_inst,
+                                   oh->clkdm->clkdm_offs,
+                                   oh->prcm.omap4.clkctrl_offs);
+
+       if (_are_any_hardreset_lines_asserted(oh))
+               return 0;
+
+       v = _omap4_wait_target_disable(oh);
+       if (v)
+               pr_warn("omap_hwmod: %s: _wait_target_disable failed\n",
+                       oh->name);
+
+       return 0;
+}
+
 /**
  * _ocp_softreset - reset an omap_hwmod via the OCP_SYSCONFIG bit
  * @oh: struct omap_hwmod *
  *
  * Resets an omap_hwmod @oh via the OCP_SYSCONFIG bit.  hwmod must be
- * enabled for this to work.  Returns -EINVAL if the hwmod cannot be
- * reset this way or if the hwmod is in the wrong state, -ETIMEDOUT if
- * the module did not reset in time, or 0 upon success.
+ * enabled for this to work.  Returns -ENOENT if the hwmod cannot be
+ * reset this way, -EINVAL if the hwmod is in the wrong state,
+ * -ETIMEDOUT if the module did not reset in time, or 0 upon success.
  *
  * In OMAP3 a specific SYSSTATUS register is used to get the reset status.
  * Starting in OMAP4, some IPs do not have SYSSTATUS registers and instead
@@ -1401,7 +1620,7 @@ static int _ocp_softreset(struct omap_hwmod *oh)
 
        if (!oh->class->sysc ||
            !(oh->class->sysc->sysc_flags & SYSC_HAS_SOFTRESET))
-               return -EINVAL;
+               return -ENOENT;
 
        /* clocks must be on for this operation */
        if (oh->_state != _HWMOD_STATE_ENABLED) {
@@ -1462,32 +1681,60 @@ dis_opt_clks:
  * _reset - reset an omap_hwmod
  * @oh: struct omap_hwmod *
  *
- * Resets an omap_hwmod @oh.  The default software reset mechanism for
- * most OMAP IP blocks is triggered via the OCP_SYSCONFIG.SOFTRESET
- * bit.  However, some hwmods cannot be reset via this method: some
- * are not targets and therefore have no OCP header registers to
- * access; others (like the IVA) have idiosyncratic reset sequences.
- * So for these relatively rare cases, custom reset code can be
- * supplied in the struct omap_hwmod_class .reset function pointer.
- * Passes along the return value from either _reset() or the custom
- * reset function - these must return -EINVAL if the hwmod cannot be
- * reset this way or if the hwmod is in the wrong state, -ETIMEDOUT if
- * the module did not reset in time, or 0 upon success.
+ * Resets an omap_hwmod @oh.  If the module has a custom reset
+ * function pointer defined, then call it to reset the IP block, and
+ * pass along its return value to the caller.  Otherwise, if the IP
+ * block has an OCP_SYSCONFIG register with a SOFTRESET bitfield
+ * associated with it, call a function to reset the IP block via that
+ * method, and pass along the return value to the caller.  Finally, if
+ * the IP block has some hardreset lines associated with it, assert
+ * all of those, but do _not_ deassert them. (This is because driver
+ * authors have expressed an apparent requirement to control the
+ * deassertion of the hardreset lines themselves.)
+ *
+ * The default software reset mechanism for most OMAP IP blocks is
+ * triggered via the OCP_SYSCONFIG.SOFTRESET bit.  However, some
+ * hwmods cannot be reset via this method.  Some are not targets and
+ * therefore have no OCP header registers to access.  Others (like the
+ * IVA) have idiosyncratic reset sequences.  So for these relatively
+ * rare cases, custom reset code can be supplied in the struct
+ * omap_hwmod_class .reset function pointer.  Passes along the return
+ * value from either _ocp_softreset() or the custom reset function -
+ * these must return -EINVAL if the hwmod cannot be reset this way or
+ * if the hwmod is in the wrong state, -ETIMEDOUT if the module did
+ * not reset in time, or 0 upon success.
  */
 static int _reset(struct omap_hwmod *oh)
 {
-       int ret;
+       int i, r;
 
        pr_debug("omap_hwmod: %s: resetting\n", oh->name);
 
-       ret = (oh->class->reset) ? oh->class->reset(oh) : _ocp_softreset(oh);
+       if (oh->class->reset) {
+               r = oh->class->reset(oh);
+       } else {
+               if (oh->rst_lines_cnt > 0) {
+                       for (i = 0; i < oh->rst_lines_cnt; i++)
+                               _assert_hardreset(oh, oh->rst_lines[i].name);
+                       return 0;
+               } else {
+                       r = _ocp_softreset(oh);
+                       if (r == -ENOENT)
+                               r = 0;
+               }
+       }
 
+       /*
+        * OCP_SYSCONFIG bits need to be reprogrammed after a
+        * softreset.  The _enable() function should be split to avoid
+        * the rewrite of the OCP_SYSCONFIG register.
+        */
        if (oh->class->sysc) {
                _update_sysc_cache(oh);
                _enable_sysc(oh);
        }
 
-       return ret;
+       return r;
 }
 
 /**
@@ -1506,10 +1753,9 @@ static int _enable(struct omap_hwmod *oh)
        pr_debug("omap_hwmod: %s: enabling\n", oh->name);
 
        /*
-        * hwmods with HWMOD_INIT_NO_IDLE flag set are left
-        * in enabled state at init.
-        * Now that someone is really trying to enable them,
-        * just ensure that the hwmod mux is set.
+        * hwmods with HWMOD_INIT_NO_IDLE flag set are left in enabled
+        * state at init.  Now that someone is really trying to enable
+        * them, just ensure that the hwmod mux is set.
         */
        if (oh->_int_flags & _HWMOD_SKIP_ENABLE) {
                /*
@@ -1532,15 +1778,17 @@ static int _enable(struct omap_hwmod *oh)
                return -EINVAL;
        }
 
-
        /*
-        * If an IP contains only one HW reset line, then de-assert it in order
-        * to allow the module state transition. Otherwise the PRCM will return
-        * Intransition status, and the init will failed.
+        * If an IP block contains HW reset lines and any of them are
+        * asserted, we let integration code associated with that
+        * block handle the enable.  We've received very little
+        * information on what those driver authors need, and until
+        * detailed information is provided and the driver code is
+        * posted to the public lists, this is probably the best we
+        * can do.
         */
-       if ((oh->_state == _HWMOD_STATE_INITIALIZED ||
-            oh->_state == _HWMOD_STATE_DISABLED) && oh->rst_lines_cnt == 1)
-               _deassert_hardreset(oh, oh->rst_lines[0].name);
+       if (_are_any_hardreset_lines_asserted(oh))
+               return 0;
 
        /* Mux pins for device runtime if populated */
        if (oh->mux && (!oh->mux->enabled ||
@@ -1615,6 +1863,9 @@ static int _idle(struct omap_hwmod *oh)
                return -EINVAL;
        }
 
+       if (_are_any_hardreset_lines_asserted(oh))
+               return 0;
+
        if (oh->class->sysc)
                _idle_sysc(oh);
        _del_initiator_dep(oh, mpu_oh);
@@ -1687,7 +1938,7 @@ int omap_hwmod_set_ocp_autoidle(struct omap_hwmod *oh, u8 autoidle)
  */
 static int _shutdown(struct omap_hwmod *oh)
 {
-       int ret;
+       int ret, i;
        u8 prev_state;
 
        if (oh->_state != _HWMOD_STATE_IDLE &&
@@ -1697,6 +1948,9 @@ static int _shutdown(struct omap_hwmod *oh)
                return -EINVAL;
        }
 
+       if (_are_any_hardreset_lines_asserted(oh))
+               return 0;
+
        pr_debug("omap_hwmod: %s: disabling\n", oh->name);
 
        if (oh->class->pre_shutdown) {
@@ -1728,12 +1982,8 @@ static int _shutdown(struct omap_hwmod *oh)
        }
        /* XXX Should this code also force-disable the optional clocks? */
 
-       /*
-        * If an IP contains only one HW reset line, then assert it
-        * after disabling the clocks and before shutting down the IP.
-        */
-       if (oh->rst_lines_cnt == 1)
-               _assert_hardreset(oh, oh->rst_lines[0].name);
+       for (i = 0; i < oh->rst_lines_cnt; i++)
+               _assert_hardreset(oh, oh->rst_lines[i].name);
 
        /* Mux pins to safe mode or use populated off mode values */
        if (oh->mux)
@@ -1745,59 +1995,186 @@ static int _shutdown(struct omap_hwmod *oh)
 }
 
 /**
- * _setup - do initial configuration of omap_hwmod
- * @oh: struct omap_hwmod *
+ * _init_mpu_rt_base - populate the virtual address for a hwmod
+ * @oh: struct omap_hwmod * to locate the virtual address
  *
- * Writes the CLOCKACTIVITY bits @clockact to the hwmod @oh
- * OCP_SYSCONFIG register.  Returns 0.
+ * Cache the virtual address used by the MPU to access this IP block's
+ * registers.  This address is needed early so the OCP registers that
+ * are part of the device's address space can be ioremapped properly.
+ * No return value.
  */
-static int _setup(struct omap_hwmod *oh, void *data)
+static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
 {
-       int i, r;
-       u8 postsetup_state;
+       struct omap_hwmod_addr_space *mem;
+       void __iomem *va_start;
+
+       if (!oh)
+               return;
+
+       _save_mpu_port_index(oh);
 
-       if (oh->_state != _HWMOD_STATE_CLKS_INITED)
+       if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
+               return;
+
+       mem = _find_mpu_rt_addr_space(oh);
+       if (!mem) {
+               pr_debug("omap_hwmod: %s: no MPU register target found\n",
+                        oh->name);
+               return;
+       }
+
+       va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
+       if (!va_start) {
+               pr_err("omap_hwmod: %s: Could not ioremap\n", oh->name);
+               return;
+       }
+
+       pr_debug("omap_hwmod: %s: MPU register target at va %p\n",
+                oh->name, va_start);
+
+       oh->_mpu_rt_va = va_start;
+}
+
+/**
+ * _init - initialize internal data for the hwmod @oh
+ * @oh: struct omap_hwmod *
+ * @n: (unused)
+ *
+ * Look up the clocks and the address space used by the MPU to access
+ * registers belonging to the hwmod @oh.  @oh must already be
+ * registered at this point.  This is the first of two phases for
+ * hwmod initialization.  Code called here does not touch any hardware
+ * registers, it simply prepares internal data structures.  Returns 0
+ * upon success or if the hwmod isn't registered, or -EINVAL upon
+ * failure.
+ */
+static int __init _init(struct omap_hwmod *oh, void *data)
+{
+       int r;
+
+       if (oh->_state != _HWMOD_STATE_REGISTERED)
                return 0;
 
-       /* Set iclk autoidle mode */
-       if (oh->slaves_cnt > 0) {
-               for (i = 0; i < oh->slaves_cnt; i++) {
-                       struct omap_hwmod_ocp_if *os = oh->slaves[i];
-                       struct clk *c = os->_clk;
+       _init_mpu_rt_base(oh, NULL);
 
-                       if (!c)
-                               continue;
+       r = _init_clocks(oh, NULL);
+       if (IS_ERR_VALUE(r)) {
+               WARN(1, "omap_hwmod: %s: couldn't init clocks\n", oh->name);
+               return -EINVAL;
+       }
 
-                       if (os->flags & OCPIF_SWSUP_IDLE) {
-                               /* XXX omap_iclk_deny_idle(c); */
-                       } else {
-                               /* XXX omap_iclk_allow_idle(c); */
-                               clk_enable(c);
-                       }
+       oh->_state = _HWMOD_STATE_INITIALIZED;
+
+       return 0;
+}
+
+/**
+ * _setup_iclk_autoidle - configure an IP block's interface clocks
+ * @oh: struct omap_hwmod *
+ *
+ * Set up the module's interface clocks.  XXX This function is still mostly
+ * a stub; implementing this properly requires iclk autoidle usecounting in
+ * the clock code.   No return value.
+ */
+static void __init _setup_iclk_autoidle(struct omap_hwmod *oh)
+{
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
+       int i = 0;
+       if (oh->_state != _HWMOD_STATE_INITIALIZED)
+               return;
+
+       p = oh->slave_ports.next;
+
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+               if (!os->_clk)
+                       continue;
+
+               if (os->flags & OCPIF_SWSUP_IDLE) {
+                       /* XXX omap_iclk_deny_idle(c); */
+               } else {
+                       /* XXX omap_iclk_allow_idle(c); */
+                       clk_enable(os->_clk);
                }
        }
 
-       oh->_state = _HWMOD_STATE_INITIALIZED;
+       return;
+}
 
-       /*
-        * In the case of hwmod with hardreset that should not be
-        * de-assert at boot time, we have to keep the module
-        * initialized, because we cannot enable it properly with the
-        * reset asserted. Exit without warning because that behavior is
-        * expected.
-        */
-       if ((oh->flags & HWMOD_INIT_NO_RESET) && oh->rst_lines_cnt == 1)
-               return 0;
+/**
+ * _setup_reset - reset an IP block during the setup process
+ * @oh: struct omap_hwmod *
+ *
+ * Reset the IP block corresponding to the hwmod @oh during the setup
+ * process.  The IP block is first enabled so it can be successfully
+ * reset.  Returns 0 upon success or a negative error code upon
+ * failure.
+ */
+static int __init _setup_reset(struct omap_hwmod *oh)
+{
+       int r;
 
-       r = _enable(oh);
-       if (r) {
-               pr_warning("omap_hwmod: %s: cannot be enabled (%d)\n",
-                          oh->name, oh->_state);
-               return 0;
+       if (oh->_state != _HWMOD_STATE_INITIALIZED)
+               return -EINVAL;
+
+       if (oh->rst_lines_cnt == 0) {
+               r = _enable(oh);
+               if (r) {
+                       pr_warning("omap_hwmod: %s: cannot be enabled for reset (%d)\n",
+                                  oh->name, oh->_state);
+                       return -EINVAL;
+               }
        }
 
        if (!(oh->flags & HWMOD_INIT_NO_RESET))
-               _reset(oh);
+               r = _reset(oh);
+
+       return r;
+}
+
+/**
+ * _setup_postsetup - transition to the appropriate state after _setup
+ * @oh: struct omap_hwmod *
+ *
+ * Place an IP block represented by @oh into a "post-setup" state --
+ * either IDLE, ENABLED, or DISABLED.  ("post-setup" simply means that
+ * this function is called at the end of _setup().)  The postsetup
+ * state for an IP block can be changed by calling
+ * omap_hwmod_enter_postsetup_state() early in the boot process,
+ * before one of the omap_hwmod_setup*() functions are called for the
+ * IP block.
+ *
+ * The IP block stays in this state until a PM runtime-based driver is
+ * loaded for that IP block.  A post-setup state of IDLE is
+ * appropriate for almost all IP blocks with runtime PM-enabled
+ * drivers, since those drivers are able to enable the IP block.  A
+ * post-setup state of ENABLED is appropriate for kernels with PM
+ * runtime disabled.  The DISABLED state is appropriate for unusual IP
+ * blocks such as the MPU WDTIMER on kernels without WDTIMER drivers
+ * included, since the WDTIMER starts running on reset and will reset
+ * the MPU if left active.
+ *
+ * This post-setup mechanism is deprecated.  Once all of the OMAP
+ * drivers have been converted to use PM runtime, and all of the IP
+ * block data and interconnect data is available to the hwmod code, it
+ * should be possible to replace this mechanism with a "lazy reset"
+ * arrangement.  In a "lazy reset" setup, each IP block is enabled
+ * when the driver first probes, then all remaining IP blocks without
+ * drivers are either shut down or enabled after the drivers have
+ * loaded.  However, this cannot take place until the above
+ * preconditions have been met, since otherwise the late reset code
+ * has no way of knowing which IP blocks are in use by drivers, and
+ * which ones are unused.
+ *
+ * No return value.
+ */
+static void __init _setup_postsetup(struct omap_hwmod *oh)
+{
+       u8 postsetup_state;
+
+       if (oh->rst_lines_cnt > 0)
+               return;
 
        postsetup_state = oh->_postsetup_state;
        if (postsetup_state == _HWMOD_STATE_UNKNOWN)
@@ -1821,6 +2198,35 @@ static int _setup(struct omap_hwmod *oh, void *data)
                WARN(1, "hwmod: %s: unknown postsetup state %d! defaulting to enabled\n",
                     oh->name, postsetup_state);
 
+       return;
+}
+
+/**
+ * _setup - prepare IP block hardware for use
+ * @oh: struct omap_hwmod *
+ * @n: (unused, pass NULL)
+ *
+ * Configure the IP block represented by @oh.  This may include
+ * enabling the IP block, resetting it, and placing it into a
+ * post-setup state, depending on the type of IP block and applicable
+ * flags.  IP blocks are reset to prevent any previous configuration
+ * by the bootloader or previous operating system from interfering
+ * with power management or other parts of the system.  The reset can
+ * be avoided; see omap_hwmod_no_setup_reset().  This is the second of
+ * two phases for hwmod initialization.  Code called here generally
+ * affects the IP block hardware, or system integration hardware
+ * associated with the IP block.  Returns 0.
+ */
+static int __init _setup(struct omap_hwmod *oh, void *data)
+{
+       if (oh->_state != _HWMOD_STATE_INITIALIZED)
+               return 0;
+
+       _setup_iclk_autoidle(oh);
+
+       if (!_setup_reset(oh))
+               _setup_postsetup(oh);
+
        return 0;
 }
 
@@ -1843,8 +2249,6 @@ static int _setup(struct omap_hwmod *oh, void *data)
  */
 static int __init _register(struct omap_hwmod *oh)
 {
-       int ms_id;
-
        if (!oh || !oh->name || !oh->class || !oh->class->name ||
            (oh->_state != _HWMOD_STATE_UNKNOWN))
                return -EINVAL;
@@ -1854,14 +2258,10 @@ static int __init _register(struct omap_hwmod *oh)
        if (_lookup(oh->name))
                return -EEXIST;
 
-       ms_id = _find_mpu_port_index(oh);
-       if (!IS_ERR_VALUE(ms_id))
-               oh->_mpu_port_index = ms_id;
-       else
-               oh->_int_flags |= _HWMOD_NO_MPU_PORT;
-
        list_add_tail(&oh->node, &omap_hwmod_list);
 
+       INIT_LIST_HEAD(&oh->master_ports);
+       INIT_LIST_HEAD(&oh->slave_ports);
        spin_lock_init(&oh->_lock);
 
        oh->_state = _HWMOD_STATE_REGISTERED;
@@ -1876,6 +2276,160 @@ static int __init _register(struct omap_hwmod *oh)
        return 0;
 }
 
+/**
+ * _alloc_links - return allocated memory for hwmod links
+ * @ml: pointer to a struct omap_hwmod_link * for the master link
+ * @sl: pointer to a struct omap_hwmod_link * for the slave link
+ *
+ * Return pointers to two struct omap_hwmod_link records, via the
+ * addresses pointed to by @ml and @sl.  Will first attempt to return
+ * memory allocated as part of a large initial block, but if that has
+ * been exhausted, will allocate memory itself.  Since ideally this
+ * second allocation path will never occur, the number of these
+ * 'supplemental' allocations will be logged when debugging is
+ * enabled.  Returns 0.
+ */
+static int __init _alloc_links(struct omap_hwmod_link **ml,
+                              struct omap_hwmod_link **sl)
+{
+       unsigned int sz;
+
+       if ((free_ls + LINKS_PER_OCP_IF) <= max_ls) {
+               *ml = &linkspace[free_ls++];
+               *sl = &linkspace[free_ls++];
+               return 0;
+       }
+
+       sz = sizeof(struct omap_hwmod_link) * LINKS_PER_OCP_IF;
+
+       *sl = NULL;
+       *ml = alloc_bootmem(sz);
+
+       memset(*ml, 0, sz);
+
+       *sl = (void *)(*ml) + sizeof(struct omap_hwmod_link);
+
+       ls_supp++;
+       pr_debug("omap_hwmod: supplemental link allocations needed: %d\n",
+                ls_supp * LINKS_PER_OCP_IF);
+
+       return 0;
+};
+
+/**
+ * _add_link - add an interconnect between two IP blocks
+ * @oi: pointer to a struct omap_hwmod_ocp_if record
+ *
+ * Add struct omap_hwmod_link records connecting the master IP block
+ * specified in @oi->master to @oi, and connecting the slave IP block
+ * specified in @oi->slave to @oi.  This code is assumed to run before
+ * preemption or SMP has been enabled, thus avoiding the need for
+ * locking in this code.  Changes to this assumption will require
+ * additional locking.  Returns 0.
+ */
+static int __init _add_link(struct omap_hwmod_ocp_if *oi)
+{
+       struct omap_hwmod_link *ml, *sl;
+
+       pr_debug("omap_hwmod: %s -> %s: adding link\n", oi->master->name,
+                oi->slave->name);
+
+       _alloc_links(&ml, &sl);
+
+       ml->ocp_if = oi;
+       INIT_LIST_HEAD(&ml->node);
+       list_add(&ml->node, &oi->master->master_ports);
+       oi->master->masters_cnt++;
+
+       sl->ocp_if = oi;
+       INIT_LIST_HEAD(&sl->node);
+       list_add(&sl->node, &oi->slave->slave_ports);
+       oi->slave->slaves_cnt++;
+
+       return 0;
+}
+
+/**
+ * _register_link - register a struct omap_hwmod_ocp_if
+ * @oi: struct omap_hwmod_ocp_if *
+ *
+ * Registers the omap_hwmod_ocp_if record @oi.  Returns -EEXIST if it
+ * has already been registered; -EINVAL if @oi is NULL or if the
+ * record pointed to by @oi is missing required fields; or 0 upon
+ * success.
+ *
+ * XXX The data should be copied into bootmem, so the original data
+ * should be marked __initdata and freed after init.  This would allow
+ * unneeded omap_hwmods to be freed on multi-OMAP configurations.
+ */
+static int __init _register_link(struct omap_hwmod_ocp_if *oi)
+{
+       if (!oi || !oi->master || !oi->slave || !oi->user)
+               return -EINVAL;
+
+       if (oi->_int_flags & _OCPIF_INT_FLAGS_REGISTERED)
+               return -EEXIST;
+
+       pr_debug("omap_hwmod: registering link from %s to %s\n",
+                oi->master->name, oi->slave->name);
+
+       /*
+        * Register the connected hwmods, if they haven't been
+        * registered already
+        */
+       if (oi->master->_state != _HWMOD_STATE_REGISTERED)
+               _register(oi->master);
+
+       if (oi->slave->_state != _HWMOD_STATE_REGISTERED)
+               _register(oi->slave);
+
+       _add_link(oi);
+
+       oi->_int_flags |= _OCPIF_INT_FLAGS_REGISTERED;
+
+       return 0;
+}
+
+/**
+ * _alloc_linkspace - allocate large block of hwmod links
+ * @ois: pointer to an array of struct omap_hwmod_ocp_if records to count
+ *
+ * Allocate a large block of struct omap_hwmod_link records.  This
+ * improves boot time significantly by avoiding the need to allocate
+ * individual records one by one.  If the number of records to
+ * allocate in the block hasn't been manually specified, this function
+ * will count the number of struct omap_hwmod_ocp_if records in @ois
+ * and use that to determine the allocation size.  For SoC families
+ * that require multiple list registrations, such as OMAP3xxx, this
+ * estimation process isn't optimal, so manual estimation is advised
+ * in those cases.  Returns -EEXIST if the allocation has already occurred
+ * or 0 upon success.
+ */
+static int __init _alloc_linkspace(struct omap_hwmod_ocp_if **ois)
+{
+       unsigned int i = 0;
+       unsigned int sz;
+
+       if (linkspace) {
+               WARN(1, "linkspace already allocated\n");
+               return -EEXIST;
+       }
+
+       if (max_ls == 0)
+               while (ois[i++])
+                       max_ls += LINKS_PER_OCP_IF;
+
+       sz = sizeof(struct omap_hwmod_link) * max_ls;
+
+       pr_debug("omap_hwmod: %s: allocating %d byte linkspace (%d links)\n",
+                __func__, sz, max_ls);
+
+       linkspace = alloc_bootmem(sz);
+
+       memset(linkspace, 0, sz);
+
+       return 0;
+}
 
 /* Public functions */
 
@@ -2004,120 +2558,101 @@ int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data),
 }
 
 /**
- * omap_hwmod_register - register an array of hwmods
- * @ohs: pointer to an array of omap_hwmods to register
+ * omap_hwmod_register_links - register an array of hwmod links
+ * @ois: pointer to an array of omap_hwmod_ocp_if to register
  *
  * Intended to be called early in boot before the clock framework is
- * initialized.  If @ohs is not null, will register all omap_hwmods
- * listed in @ohs that are valid for this chip.  Returns 0.
+ * initialized.  If @ois is not null, will register all omap_hwmods
+ * listed in @ois that are valid for this chip.  Returns 0.
  */
-int __init omap_hwmod_register(struct omap_hwmod **ohs)
+int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois)
 {
        int r, i;
 
-       if (!ohs)
+       if (!ois)
                return 0;
 
+       if (!linkspace) {
+               if (_alloc_linkspace(ois)) {
+                       pr_err("omap_hwmod: could not allocate link space\n");
+                       return -ENOMEM;
+               }
+       }
+
        i = 0;
        do {
-               r = _register(ohs[i]);
-               WARN(r, "omap_hwmod: %s: _register returned %d\n", ohs[i]->name,
-                    r);
-       } while (ohs[++i]);
+               r = _register_link(ois[i]);
+               WARN(r && r != -EEXIST,
+                    "omap_hwmod: _register_link(%s -> %s) returned %d\n",
+                    ois[i]->master->name, ois[i]->slave->name, r);
+       } while (ois[++i]);
 
        return 0;
 }
 
-/*
- * _populate_mpu_rt_base - populate the virtual address for a hwmod
+/**
+ * _ensure_mpu_hwmod_is_setup - ensure the MPU SS hwmod is init'ed and set up
+ * @oh: pointer to the hwmod currently being set up (usually not the MPU)
  *
- * Must be called only from omap_hwmod_setup_*() so ioremap works properly.
- * Assumes the caller takes care of locking if needed.
+ * If the hwmod data corresponding to the MPU subsystem IP block
+ * hasn't been initialized and set up yet, do so now.  This must be
+ * done first since sleep dependencies may be added from other hwmods
+ * to the MPU.  Intended to be called only by omap_hwmod_setup*().  No
+ * return value.
  */
-static int __init _populate_mpu_rt_base(struct omap_hwmod *oh, void *data)
+static void __init _ensure_mpu_hwmod_is_setup(struct omap_hwmod *oh)
 {
-       if (oh->_state != _HWMOD_STATE_REGISTERED)
-               return 0;
-
-       if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
-               return 0;
-
-       oh->_mpu_rt_va = _find_mpu_rt_base(oh, oh->_mpu_port_index);
-
-       return 0;
+       if (!mpu_oh || mpu_oh->_state == _HWMOD_STATE_UNKNOWN)
+               pr_err("omap_hwmod: %s: MPU initiator hwmod %s not yet registered\n",
+                      __func__, MPU_INITIATOR_NAME);
+       else if (mpu_oh->_state == _HWMOD_STATE_REGISTERED && oh != mpu_oh)
+               omap_hwmod_setup_one(MPU_INITIATOR_NAME);
 }
 
 /**
  * omap_hwmod_setup_one - set up a single hwmod
  * @oh_name: const char * name of the already-registered hwmod to set up
  *
- * Must be called after omap2_clk_init().  Resolves the struct clk
- * names to struct clk pointers for each registered omap_hwmod.  Also
- * calls _setup() on each hwmod.  Returns -EINVAL upon error or 0 upon
- * success.
+ * Initialize and set up a single hwmod.  Intended to be used for a
+ * small number of early devices, such as the timer IP blocks used for
+ * the scheduler clock.  Must be called after omap2_clk_init().
+ * Resolves the struct clk names to struct clk pointers for each
+ * registered omap_hwmod.  Also calls _setup() on each hwmod.  Returns
+ * -EINVAL upon error or 0 upon success.
  */
 int __init omap_hwmod_setup_one(const char *oh_name)
 {
        struct omap_hwmod *oh;
-       int r;
 
        pr_debug("omap_hwmod: %s: %s\n", oh_name, __func__);
 
-       if (!mpu_oh) {
-               pr_err("omap_hwmod: %s: cannot setup_one: MPU initiator hwmod %s not yet registered\n",
-                      oh_name, MPU_INITIATOR_NAME);
-               return -EINVAL;
-       }
-
        oh = _lookup(oh_name);
        if (!oh) {
                WARN(1, "omap_hwmod: %s: hwmod not yet registered\n", oh_name);
                return -EINVAL;
        }
 
-       if (mpu_oh->_state == _HWMOD_STATE_REGISTERED && oh != mpu_oh)
-               omap_hwmod_setup_one(MPU_INITIATOR_NAME);
-
-       r = _populate_mpu_rt_base(oh, NULL);
-       if (IS_ERR_VALUE(r)) {
-               WARN(1, "omap_hwmod: %s: couldn't set mpu_rt_base\n", oh_name);
-               return -EINVAL;
-       }
-
-       r = _init_clocks(oh, NULL);
-       if (IS_ERR_VALUE(r)) {
-               WARN(1, "omap_hwmod: %s: couldn't init clocks\n", oh_name);
-               return -EINVAL;
-       }
+       _ensure_mpu_hwmod_is_setup(oh);
 
+       _init(oh, NULL);
        _setup(oh, NULL);
 
        return 0;
 }
 
 /**
- * omap_hwmod_setup - do some post-clock framework initialization
+ * omap_hwmod_setup_all - set up all registered IP blocks
  *
- * Must be called after omap2_clk_init().  Resolves the struct clk names
- * to struct clk pointers for each registered omap_hwmod.  Also calls
- * _setup() on each hwmod.  Returns 0 upon success.
+ * Initialize and set up all IP blocks registered with the hwmod code.
+ * Must be called after omap2_clk_init().  Resolves the struct clk
+ * names to struct clk pointers for each registered omap_hwmod.  Also
+ * calls _setup() on each hwmod.  Returns 0 upon success.
  */
 static int __init omap_hwmod_setup_all(void)
 {
-       int r;
-
-       if (!mpu_oh) {
-               pr_err("omap_hwmod: %s: MPU initiator hwmod %s not yet registered\n",
-                      __func__, MPU_INITIATOR_NAME);
-               return -EINVAL;
-       }
-
-       r = omap_hwmod_for_each(_populate_mpu_rt_base, NULL);
-
-       r = omap_hwmod_for_each(_init_clocks, NULL);
-       WARN(IS_ERR_VALUE(r),
-            "omap_hwmod: %s: _init_clocks failed\n", __func__);
+       _ensure_mpu_hwmod_is_setup(NULL);
 
+       omap_hwmod_for_each(_init, NULL);
        omap_hwmod_for_each(_setup, NULL);
 
        return 0;
@@ -2274,6 +2809,10 @@ int omap_hwmod_reset(struct omap_hwmod *oh)
        return r;
 }
 
+/*
+ * IP block data retrieval functions
+ */
+
 /**
  * omap_hwmod_count_resources - count number of struct resources needed by hwmod
  * @oh: struct omap_hwmod *
@@ -2292,12 +2831,19 @@ int omap_hwmod_reset(struct omap_hwmod *oh)
  */
 int omap_hwmod_count_resources(struct omap_hwmod *oh)
 {
-       int ret, i;
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
+       int ret;
+       int i = 0;
 
        ret = _count_mpu_irqs(oh) + _count_sdma_reqs(oh);
 
-       for (i = 0; i < oh->slaves_cnt; i++)
-               ret += _count_ocp_if_addr_spaces(oh->slaves[i]);
+       p = oh->slave_ports.next;
+
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
+               ret += _count_ocp_if_addr_spaces(os);
+       }
 
        return ret;
 }
@@ -2314,7 +2860,9 @@ int omap_hwmod_count_resources(struct omap_hwmod *oh)
  */
 int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
 {
-       int i, j, mpu_irqs_cnt, sdma_reqs_cnt;
+       struct omap_hwmod_ocp_if *os;
+       struct list_head *p;
+       int i, j, mpu_irqs_cnt, sdma_reqs_cnt, addr_cnt;
        int r = 0;
 
        /* For each IRQ, DMA, memory area, fill in array.*/
@@ -2337,11 +2885,11 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
                r++;
        }
 
-       for (i = 0; i < oh->slaves_cnt; i++) {
-               struct omap_hwmod_ocp_if *os;
-               int addr_cnt;
+       p = oh->slave_ports.next;
 
-               os = oh->slaves[i];
+       i = 0;
+       while (i < oh->slaves_cnt) {
+               os = _fetch_next_ocp_if(&p, &i);
                addr_cnt = _count_ocp_if_addr_spaces(os);
 
                for (j = 0; j < addr_cnt; j++) {
@@ -2356,6 +2904,69 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
        return r;
 }
 
+/**
+ * omap_hwmod_get_resource_byname - fetch IP block integration data by name
+ * @oh: struct omap_hwmod * to operate on
+ * @type: one of the IORESOURCE_* constants from include/linux/ioport.h
+ * @name: pointer to the name of the data to fetch (optional)
+ * @rsrc: pointer to a struct resource, allocated by the caller
+ *
+ * Retrieve MPU IRQ, SDMA request line, or address space start/end
+ * data for the IP block pointed to by @oh.  The data will be filled
+ * into a struct resource record pointed to by @rsrc.  The struct
+ * resource must be allocated by the caller.  When @name is non-null,
+ * the data associated with the matching entry in the IRQ/SDMA/address
+ * space hwmod data arrays will be returned.  If @name is null, the
+ * first array entry will be returned.  Data order is not meaningful
+ * in hwmod data, so callers are strongly encouraged to use a non-null
+ * @name whenever possible to avoid unpredictable effects if hwmod
+ * data is later added that causes data ordering to change.  This
+ * function is only intended for use by OMAP core code.  Device
+ * drivers should not call this function - the appropriate bus-related
+ * data accessor functions should be used instead.  Returns 0 upon
+ * success or a negative error code upon error.
+ */
+int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
+                                  const char *name, struct resource *rsrc)
+{
+       int r;
+       unsigned int irq, dma;
+       u32 pa_start, pa_end;
+
+       if (!oh || !rsrc)
+               return -EINVAL;
+
+       if (type == IORESOURCE_IRQ) {
+               r = _get_mpu_irq_by_name(oh, name, &irq);
+               if (r)
+                       return r;
+
+               rsrc->start = irq;
+               rsrc->end = irq;
+       } else if (type == IORESOURCE_DMA) {
+               r = _get_sdma_req_by_name(oh, name, &dma);
+               if (r)
+                       return r;
+
+               rsrc->start = dma;
+               rsrc->end = dma;
+       } else if (type == IORESOURCE_MEM) {
+               r = _get_addr_space_by_name(oh, name, &pa_start, &pa_end);
+               if (r)
+                       return r;
+
+               rsrc->start = pa_start;
+               rsrc->end = pa_end;
+       } else {
+               return -EINVAL;
+       }
+
+       rsrc->flags = type;
+       rsrc->name = name;
+
+       return 0;
+}
+
 /**
  * omap_hwmod_get_pwrdm - return pointer to this module's main powerdomain
  * @oh: struct omap_hwmod *
@@ -2370,6 +2981,7 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
 struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh)
 {
        struct clk *c;
+       struct omap_hwmod_ocp_if *oi;
 
        if (!oh)
                return NULL;
@@ -2377,9 +2989,10 @@ struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh)
        if (oh->_clk) {
                c = oh->_clk;
        } else {
-               if (oh->_int_flags & _HWMOD_NO_MPU_PORT)
+               oi = _find_mpu_rt_port(oh);
+               if (!oi)
                        return NULL;
-               c = oh->slaves[oh->_mpu_port_index]->_clk;
+               c = oi->_clk;
        }
 
        if (!c->clkdm)
@@ -2653,10 +3266,10 @@ int omap_hwmod_for_each_by_class(const char *classname,
  * @state: state that _setup() should leave the hwmod in
  *
  * Sets the hwmod state that @oh will enter at the end of _setup()
- * (called by omap_hwmod_setup_*()).  Only valid to call between
- * calling omap_hwmod_register() and omap_hwmod_setup_*().  Returns
- * 0 upon success or -EINVAL if there is a problem with the arguments
- * or if the hwmod is in the wrong state.
+ * (called by omap_hwmod_setup_*()).  See also the documentation
+ * for _setup_postsetup(), above.  Returns 0 upon success or
+ * -EINVAL if there is a problem with the arguments or if the hwmod is
+ * in the wrong state.
  */
 int omap_hwmod_set_postsetup_state(struct omap_hwmod *oh, u8 state)
 {
index a6bde34e443a7719fcefcbf447779ea16c9202b0..2c087ffc6a924f447e134d89c0c65a12a3ee3761 100644 (file)
@@ -2,6 +2,7 @@
  * omap_hwmod_2420_data.c - hardware modules present on the OMAP2420 chips
  *
  * Copyright (C) 2009-2011 Nokia Corporation
+ * Copyright (C) 2012 Texas Instruments, Inc.
  * Paul Walmsley
  *
  * This program is free software; you can redistribute it and/or modify
 /*
  * OMAP2420 hardware module integration data
  *
- * ALl of the data in this section should be autogeneratable from the
+ * All of the data in this section should be autogeneratable from the
  * TI hardware database or other technical documentation.  Data that
  * is driver-specific or driver-kernel integration-specific belongs
  * elsewhere.
  */
 
-static struct omap_hwmod omap2420_mpu_hwmod;
-static struct omap_hwmod omap2420_iva_hwmod;
-static struct omap_hwmod omap2420_l3_main_hwmod;
-static struct omap_hwmod omap2420_l4_core_hwmod;
-static struct omap_hwmod omap2420_dss_core_hwmod;
-static struct omap_hwmod omap2420_dss_dispc_hwmod;
-static struct omap_hwmod omap2420_dss_rfbi_hwmod;
-static struct omap_hwmod omap2420_dss_venc_hwmod;
-static struct omap_hwmod omap2420_wd_timer2_hwmod;
-static struct omap_hwmod omap2420_gpio1_hwmod;
-static struct omap_hwmod omap2420_gpio2_hwmod;
-static struct omap_hwmod omap2420_gpio3_hwmod;
-static struct omap_hwmod omap2420_gpio4_hwmod;
-static struct omap_hwmod omap2420_dma_system_hwmod;
-static struct omap_hwmod omap2420_mcspi1_hwmod;
-static struct omap_hwmod omap2420_mcspi2_hwmod;
-
-/* L3 -> L4_CORE interface */
-static struct omap_hwmod_ocp_if omap2420_l3_main__l4_core = {
-       .master = &omap2420_l3_main_hwmod,
-       .slave  = &omap2420_l4_core_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* MPU -> L3 interface */
-static struct omap_hwmod_ocp_if omap2420_mpu__l3_main = {
-       .master = &omap2420_mpu_hwmod,
-       .slave  = &omap2420_l3_main_hwmod,
-       .user   = OCP_USER_MPU,
-};
-
-/* Slave interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l3_main_slaves[] = {
-       &omap2420_mpu__l3_main,
-};
-
-/* DSS -> l3 */
-static struct omap_hwmod_ocp_if omap2420_dss__l3 = {
-       .master         = &omap2420_dss_core_hwmod,
-       .slave          = &omap2420_l3_main_hwmod,
-       .fw = {
-               .omap2 = {
-                       .l3_perm_bit  = OMAP2_L3_CORE_FW_CONNID_DSS,
-                       .flags  = OMAP_FIREWALL_L3,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* Master interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l3_main_masters[] = {
-       &omap2420_l3_main__l4_core,
-};
-
-/* L3 */
-static struct omap_hwmod omap2420_l3_main_hwmod = {
-       .name           = "l3_main",
-       .class          = &l3_hwmod_class,
-       .masters        = omap2420_l3_main_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_l3_main_masters),
-       .slaves         = omap2420_l3_main_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_l3_main_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-static struct omap_hwmod omap2420_l4_wkup_hwmod;
-static struct omap_hwmod omap2420_uart1_hwmod;
-static struct omap_hwmod omap2420_uart2_hwmod;
-static struct omap_hwmod omap2420_uart3_hwmod;
-static struct omap_hwmod omap2420_i2c1_hwmod;
-static struct omap_hwmod omap2420_i2c2_hwmod;
-static struct omap_hwmod omap2420_mcbsp1_hwmod;
-static struct omap_hwmod omap2420_mcbsp2_hwmod;
-
-/* l4 core -> mcspi1 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi1 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_mcspi1_hwmod,
-       .clk            = "mcspi1_ick",
-       .addr           = omap2_mcspi1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> mcspi2 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__mcspi2 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_mcspi2_hwmod,
-       .clk            = "mcspi2_ick",
-       .addr           = omap2_mcspi2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4_CORE -> L4_WKUP interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__l4_wkup = {
-       .master = &omap2420_l4_core_hwmod,
-       .slave  = &omap2420_l4_wkup_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> UART1 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_uart1_hwmod,
-       .clk            = "uart1_ick",
-       .addr           = omap2xxx_uart1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> UART2 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_uart2_hwmod,
-       .clk            = "uart2_ick",
-       .addr           = omap2xxx_uart2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 PER -> UART3 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_uart3_hwmod,
-       .clk            = "uart3_ick",
-       .addr           = omap2xxx_uart3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> I2C1 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_i2c1_hwmod,
-       .clk            = "i2c1_ick",
-       .addr           = omap2_i2c1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> I2C2 interface */
-static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_i2c2_hwmod,
-       .clk            = "i2c2_ick",
-       .addr           = omap2_i2c2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* Slave interfaces on the L4_CORE interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l4_core_slaves[] = {
-       &omap2420_l3_main__l4_core,
-};
-
-/* Master interfaces on the L4_CORE interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l4_core_masters[] = {
-       &omap2420_l4_core__l4_wkup,
-       &omap2_l4_core__uart1,
-       &omap2_l4_core__uart2,
-       &omap2_l4_core__uart3,
-       &omap2420_l4_core__i2c1,
-       &omap2420_l4_core__i2c2
-};
-
-/* L4 CORE */
-static struct omap_hwmod omap2420_l4_core_hwmod = {
-       .name           = "l4_core",
-       .class          = &l4_hwmod_class,
-       .masters        = omap2420_l4_core_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_l4_core_masters),
-       .slaves         = omap2420_l4_core_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_l4_core_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* Slave interfaces on the L4_WKUP interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l4_wkup_slaves[] = {
-       &omap2420_l4_core__l4_wkup,
-};
-
-/* Master interfaces on the L4_WKUP interconnect */
-static struct omap_hwmod_ocp_if *omap2420_l4_wkup_masters[] = {
-};
-
-/* L4 WKUP */
-static struct omap_hwmod omap2420_l4_wkup_hwmod = {
-       .name           = "l4_wkup",
-       .class          = &l4_hwmod_class,
-       .masters        = omap2420_l4_wkup_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_l4_wkup_masters),
-       .slaves         = omap2420_l4_wkup_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_l4_wkup_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* Master interfaces on the MPU device */
-static struct omap_hwmod_ocp_if *omap2420_mpu_masters[] = {
-       &omap2420_mpu__l3_main,
-};
-
-/* MPU */
-static struct omap_hwmod omap2420_mpu_hwmod = {
-       .name           = "mpu",
-       .class          = &mpu_hwmod_class,
-       .main_clk       = "mpu_ck",
-       .masters        = omap2420_mpu_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_mpu_masters),
-};
-
 /*
- * IVA1 interface data
+ * IP blocks
  */
 
-/* IVA <- L3 interface */
-static struct omap_hwmod_ocp_if omap2420_l3__iva = {
-       .master         = &omap2420_l3_main_hwmod,
-       .slave          = &omap2420_iva_hwmod,
-       .clk            = "iva1_ifck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* IVA1 (IVA1) */
+static struct omap_hwmod_class iva1_hwmod_class = {
+       .name           = "iva1",
 };
 
-static struct omap_hwmod_ocp_if *omap2420_iva_masters[] = {
-       &omap2420_l3__iva,
+static struct omap_hwmod_rst_info omap2420_iva_resets[] = {
+       { .name = "iva", .rst_shift = 8 },
 };
 
-/*
- * IVA2 (IVA2)
- */
-
 static struct omap_hwmod omap2420_iva_hwmod = {
        .name           = "iva",
-       .class          = &iva_hwmod_class,
-       .masters        = omap2420_iva_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_iva_masters),
+       .class          = &iva1_hwmod_class,
+       .clkdm_name     = "iva1_clkdm",
+       .rst_lines      = omap2420_iva_resets,
+       .rst_lines_cnt  = ARRAY_SIZE(omap2420_iva_resets),
+       .main_clk       = "iva1_ifck",
 };
 
-/* always-on timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
-       .timer_capability       = OMAP_TIMER_ALWON,
+/* DSP */
+static struct omap_hwmod_class dsp_hwmod_class = {
+       .name           = "dsp",
 };
 
-/* pwm timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
-       .timer_capability       = OMAP_TIMER_HAS_PWM,
+static struct omap_hwmod_rst_info omap2420_dsp_resets[] = {
+       { .name = "logic", .rst_shift = 0 },
+       { .name = "mmu", .rst_shift = 1 },
 };
 
-/* timer1 */
-static struct omap_hwmod omap2420_timer1_hwmod;
-
-static struct omap_hwmod_addr_space omap2420_timer1_addrs[] = {
-       {
-               .pa_start       = 0x48028000,
-               .pa_end         = 0x48028000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+static struct omap_hwmod omap2420_dsp_hwmod = {
+       .name           = "dsp",
+       .class          = &dsp_hwmod_class,
+       .clkdm_name     = "dsp_clkdm",
+       .rst_lines      = omap2420_dsp_resets,
+       .rst_lines_cnt  = ARRAY_SIZE(omap2420_dsp_resets),
+       .main_clk       = "dsp_fck",
 };
 
-/* l4_wkup -> timer1 */
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__timer1 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_timer1_hwmod,
-       .clk            = "gpt1_ick",
-       .addr           = omap2420_timer1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer1 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer1_slaves[] = {
-       &omap2420_l4_wkup__timer1,
-};
-
-/* timer1 hwmod */
-static struct omap_hwmod omap2420_timer1_hwmod = {
-       .name           = "timer1",
-       .mpu_irqs       = omap2_timer1_mpu_irqs,
-       .main_clk       = "gpt1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT1_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer1_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer2 */
-static struct omap_hwmod omap2420_timer2_hwmod;
-
-/* l4_core -> timer2 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer2 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer2_hwmod,
-       .clk            = "gpt2_ick",
-       .addr           = omap2xxx_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer2 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer2_slaves[] = {
-       &omap2420_l4_core__timer2,
-};
-
-/* timer2 hwmod */
-static struct omap_hwmod omap2420_timer2_hwmod = {
-       .name           = "timer2",
-       .mpu_irqs       = omap2_timer2_mpu_irqs,
-       .main_clk       = "gpt2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT2_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer2_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer3 */
-static struct omap_hwmod omap2420_timer3_hwmod;
-
-/* l4_core -> timer3 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer3 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer3_hwmod,
-       .clk            = "gpt3_ick",
-       .addr           = omap2xxx_timer3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer3 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer3_slaves[] = {
-       &omap2420_l4_core__timer3,
-};
-
-/* timer3 hwmod */
-static struct omap_hwmod omap2420_timer3_hwmod = {
-       .name           = "timer3",
-       .mpu_irqs       = omap2_timer3_mpu_irqs,
-       .main_clk       = "gpt3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT3_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer3_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer4 */
-static struct omap_hwmod omap2420_timer4_hwmod;
-
-/* l4_core -> timer4 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer4 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer4_hwmod,
-       .clk            = "gpt4_ick",
-       .addr           = omap2xxx_timer4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer4 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer4_slaves[] = {
-       &omap2420_l4_core__timer4,
-};
-
-/* timer4 hwmod */
-static struct omap_hwmod omap2420_timer4_hwmod = {
-       .name           = "timer4",
-       .mpu_irqs       = omap2_timer4_mpu_irqs,
-       .main_clk       = "gpt4_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT4_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer4_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer5 */
-static struct omap_hwmod omap2420_timer5_hwmod;
-
-/* l4_core -> timer5 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer5 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer5_hwmod,
-       .clk            = "gpt5_ick",
-       .addr           = omap2xxx_timer5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer5 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer5_slaves[] = {
-       &omap2420_l4_core__timer5,
-};
-
-/* timer5 hwmod */
-static struct omap_hwmod omap2420_timer5_hwmod = {
-       .name           = "timer5",
-       .mpu_irqs       = omap2_timer5_mpu_irqs,
-       .main_clk       = "gpt5_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT5_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer5_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-
-/* timer6 */
-static struct omap_hwmod omap2420_timer6_hwmod;
-
-/* l4_core -> timer6 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer6 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer6_hwmod,
-       .clk            = "gpt6_ick",
-       .addr           = omap2xxx_timer6_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer6 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer6_slaves[] = {
-       &omap2420_l4_core__timer6,
-};
-
-/* timer6 hwmod */
-static struct omap_hwmod omap2420_timer6_hwmod = {
-       .name           = "timer6",
-       .mpu_irqs       = omap2_timer6_mpu_irqs,
-       .main_clk       = "gpt6_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT6_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer6_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+/* I2C common */
+static struct omap_hwmod_class_sysconfig i2c_sysc = {
+       .rev_offs       = 0x00,
+       .sysc_offs      = 0x20,
+       .syss_offs      = 0x10,
+       .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* timer7 */
-static struct omap_hwmod omap2420_timer7_hwmod;
-
-/* l4_core -> timer7 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer7 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer7_hwmod,
-       .clk            = "gpt7_ick",
-       .addr           = omap2xxx_timer7_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class i2c_class = {
+       .name           = "i2c",
+       .sysc           = &i2c_sysc,
+       .rev            = OMAP_I2C_IP_VERSION_1,
+       .reset          = &omap_i2c_reset,
 };
 
-/* timer7 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer7_slaves[] = {
-       &omap2420_l4_core__timer7,
+static struct omap_i2c_dev_attr i2c_dev_attr = {
+       .flags          = OMAP_I2C_FLAG_NO_FIFO |
+                         OMAP_I2C_FLAG_SIMPLE_CLOCK |
+                         OMAP_I2C_FLAG_16BIT_DATA_REG |
+                         OMAP_I2C_FLAG_BUS_SHIFT_2,
 };
 
-/* timer7 hwmod */
-static struct omap_hwmod omap2420_timer7_hwmod = {
-       .name           = "timer7",
-       .mpu_irqs       = omap2_timer7_mpu_irqs,
-       .main_clk       = "gpt7_fck",
+/* I2C1 */
+static struct omap_hwmod omap2420_i2c1_hwmod = {
+       .name           = "i2c1",
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
+       .sdma_reqs      = omap2_i2c1_sdma_reqs,
+       .main_clk       = "i2c1_fck",
        .prcm           = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT7_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer7_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer7_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer8 */
-static struct omap_hwmod omap2420_timer8_hwmod;
-
-/* l4_core -> timer8 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer8 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer8_hwmod,
-       .clk            = "gpt8_ick",
-       .addr           = omap2xxx_timer8_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer8 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer8_slaves[] = {
-       &omap2420_l4_core__timer8,
-};
-
-/* timer8 hwmod */
-static struct omap_hwmod omap2420_timer8_hwmod = {
-       .name           = "timer8",
-       .mpu_irqs       = omap2_timer8_mpu_irqs,
-       .main_clk       = "gpt8_fck",
-       .prcm           = {
-               .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT8_SHIFT,
-                       .module_offs = CORE_MOD,
+                       .module_bit = OMAP2420_EN_I2C1_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
+                       .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2420_timer8_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer8_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer9 */
-static struct omap_hwmod omap2420_timer9_hwmod;
-
-/* l4_core -> timer9 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer9 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer9_hwmod,
-       .clk            = "gpt9_ick",
-       .addr           = omap2xxx_timer9_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer9 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer9_slaves[] = {
-       &omap2420_l4_core__timer9,
+       .class          = &i2c_class,
+       .dev_attr       = &i2c_dev_attr,
+       .flags          = HWMOD_16BIT_REG,
 };
 
-/* timer9 hwmod */
-static struct omap_hwmod omap2420_timer9_hwmod = {
-       .name           = "timer9",
-       .mpu_irqs       = omap2_timer9_mpu_irqs,
-       .main_clk       = "gpt9_fck",
+/* I2C2 */
+static struct omap_hwmod omap2420_i2c2_hwmod = {
+       .name           = "i2c2",
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
+       .sdma_reqs      = omap2_i2c2_sdma_reqs,
+       .main_clk       = "i2c2_fck",
        .prcm           = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT9_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2420_timer9_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer9_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer10 */
-static struct omap_hwmod omap2420_timer10_hwmod;
-
-/* l4_core -> timer10 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer10 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer10_hwmod,
-       .clk            = "gpt10_ick",
-       .addr           = omap2_timer10_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer10 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer10_slaves[] = {
-       &omap2420_l4_core__timer10,
-};
-
-/* timer10 hwmod */
-static struct omap_hwmod omap2420_timer10_hwmod = {
-       .name           = "timer10",
-       .mpu_irqs       = omap2_timer10_mpu_irqs,
-       .main_clk       = "gpt10_fck",
-       .prcm           = {
-               .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT10_SHIFT,
-                       .module_offs = CORE_MOD,
+                       .module_bit = OMAP2420_EN_I2C2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
+                       .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2420_timer10_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer10_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer11 */
-static struct omap_hwmod omap2420_timer11_hwmod;
-
-/* l4_core -> timer11 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer11 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer11_hwmod,
-       .clk            = "gpt11_ick",
-       .addr           = omap2_timer11_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer11 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer11_slaves[] = {
-       &omap2420_l4_core__timer11,
+       .class          = &i2c_class,
+       .dev_attr       = &i2c_dev_attr,
+       .flags          = HWMOD_16BIT_REG,
 };
 
-/* timer11 hwmod */
-static struct omap_hwmod omap2420_timer11_hwmod = {
-       .name           = "timer11",
-       .mpu_irqs       = omap2_timer11_mpu_irqs,
-       .main_clk       = "gpt11_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT11_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2420_timer11_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer11_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+/* dma attributes */
+static struct omap_dma_dev_attr dma_dev_attr = {
+       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
+                                               IS_CSSA_32 | IS_CDSA_32,
+       .lch_count = 32,
 };
 
-/* timer12 */
-static struct omap_hwmod omap2420_timer12_hwmod;
-
-/* l4_core -> timer12 */
-static struct omap_hwmod_ocp_if omap2420_l4_core__timer12 = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_timer12_hwmod,
-       .clk            = "gpt12_ick",
-       .addr           = omap2xxx_timer12_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap2420_dma_system_hwmod = {
+       .name           = "dma",
+       .class          = &omap2xxx_dma_hwmod_class,
+       .mpu_irqs       = omap2_dma_system_irqs,
+       .main_clk       = "core_l3_ck",
+       .dev_attr       = &dma_dev_attr,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* timer12 slave port */
-static struct omap_hwmod_ocp_if *omap2420_timer12_slaves[] = {
-       &omap2420_l4_core__timer12,
+/* mailbox */
+static struct omap_hwmod_irq_info omap2420_mailbox_irqs[] = {
+       { .name = "dsp", .irq = 26 },
+       { .name = "iva", .irq = 34 },
+       { .irq = -1 }
 };
 
-/* timer12 hwmod */
-static struct omap_hwmod omap2420_timer12_hwmod = {
-       .name           = "timer12",
-       .mpu_irqs       = omap2xxx_timer12_mpu_irqs,
-       .main_clk       = "gpt12_fck",
+static struct omap_hwmod omap2420_mailbox_hwmod = {
+       .name           = "mailbox",
+       .class          = &omap2xxx_mailbox_hwmod_class,
+       .mpu_irqs       = omap2420_mailbox_irqs,
+       .main_clk       = "mailboxes_ick",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT12_SHIFT,
+                       .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
                        .module_offs = CORE_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
+                       .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2420_timer12_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_timer12_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = {
-       {
-               .pa_start       = 0x48022000,
-               .pa_end         = 0x4802207f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
 };
 
-static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_wd_timer2_hwmod,
-       .clk            = "mpu_wdt_ick",
-       .addr           = omap2420_wd_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* wd_timer2 */
-static struct omap_hwmod_ocp_if *omap2420_wd_timer2_slaves[] = {
-       &omap2420_l4_wkup__wd_timer2,
-};
+/*
+ * 'mcbsp' class
+ * multi channel buffered serial port controller
+ */
 
-static struct omap_hwmod omap2420_wd_timer2_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &omap2xxx_wd_timer_hwmod_class,
-       .main_clk       = "mpu_wdt_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
-               },
-       },
-       .slaves         = omap2420_wd_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_wd_timer2_slaves),
+static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
+       .name = "mcbsp",
 };
 
-/* UART1 */
-
-static struct omap_hwmod_ocp_if *omap2420_uart1_slaves[] = {
-       &omap2_l4_core__uart1,
+/* mcbsp1 */
+static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs[] = {
+       { .name = "tx", .irq = 59 },
+       { .name = "rx", .irq = 60 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap2420_uart1_hwmod = {
-       .name           = "uart1",
-       .mpu_irqs       = omap2_uart1_mpu_irqs,
-       .sdma_reqs      = omap2_uart1_sdma_reqs,
-       .main_clk       = "uart1_fck",
+static struct omap_hwmod omap2420_mcbsp1_hwmod = {
+       .name           = "mcbsp1",
+       .class          = &omap2420_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2420_mcbsp1_irqs,
+       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
+       .main_clk       = "mcbsp1_fck",
        .prcm           = {
                .omap2 = {
-                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_UART1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
-               },
-       },
-       .slaves         = omap2420_uart1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_uart1_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* UART2 */
-
-static struct omap_hwmod_ocp_if *omap2420_uart2_slaves[] = {
-       &omap2_l4_core__uart2,
-};
-
-static struct omap_hwmod omap2420_uart2_hwmod = {
-       .name           = "uart2",
-       .mpu_irqs       = omap2_uart2_mpu_irqs,
-       .sdma_reqs      = omap2_uart2_sdma_reqs,
-       .main_clk       = "uart2_fck",
-       .prcm           = {
-               .omap2 = {
+                       .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
                        .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_UART2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
-               },
-       },
-       .slaves         = omap2420_uart2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_uart2_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* UART3 */
-
-static struct omap_hwmod_ocp_if *omap2420_uart3_slaves[] = {
-       &omap2_l4_core__uart3,
-};
-
-static struct omap_hwmod omap2420_uart3_hwmod = {
-       .name           = "uart3",
-       .mpu_irqs       = omap2_uart3_mpu_irqs,
-       .sdma_reqs      = omap2_uart3_sdma_reqs,
-       .main_clk       = "uart3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 2,
-                       .module_bit = OMAP24XX_EN_UART3_SHIFT,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
+                       .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
                },
        },
-       .slaves         = omap2420_uart3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_uart3_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* dss */
-/* dss master ports */
-static struct omap_hwmod_ocp_if *omap2420_dss_masters[] = {
-       &omap2420_dss__l3,
 };
 
-/* l4_core -> dss */
-static struct omap_hwmod_ocp_if omap2420_l4_core__dss = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_dss_core_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dss slave ports */
-static struct omap_hwmod_ocp_if *omap2420_dss_slaves[] = {
-       &omap2420_l4_core__dss,
-};
-
-static struct omap_hwmod_opt_clk dss_opt_clks[] = {
-       /*
-        * The DSS HW needs all DSS clocks enabled during reset. The dss_core
-        * driver does not use these clocks.
-        */
-       { .role = "tv_clk", .clk = "dss_54m_fck" },
-       { .role = "sys_clk", .clk = "dss2_fck" },
+/* mcbsp2 */
+static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs[] = {
+       { .name = "tx", .irq = 62 },
+       { .name = "rx", .irq = 63 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap2420_dss_core_hwmod = {
-       .name           = "dss_core",
-       .class          = &omap2_dss_hwmod_class,
-       .main_clk       = "dss1_fck", /* instead of dss_fck */
-       .sdma_reqs      = omap2xxx_dss_sdma_chs,
+static struct omap_hwmod omap2420_mcbsp2_hwmod = {
+       .name           = "mcbsp2",
+       .class          = &omap2420_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2420_mcbsp2_irqs,
+       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
+       .main_clk       = "mcbsp2_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
+                       .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
                        .module_offs = CORE_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
+                       .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
                },
        },
-       .opt_clks       = dss_opt_clks,
-       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
-       .slaves         = omap2420_dss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_dss_slaves),
-       .masters        = omap2420_dss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_dss_masters),
-       .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 };
 
-/* l4_core -> dss_dispc */
-static struct omap_hwmod_ocp_if omap2420_l4_core__dss_dispc = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_dss_dispc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_dispc_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dss_dispc slave ports */
-static struct omap_hwmod_ocp_if *omap2420_dss_dispc_slaves[] = {
-       &omap2420_l4_core__dss_dispc,
-};
-
-static struct omap_hwmod omap2420_dss_dispc_hwmod = {
-       .name           = "dss_dispc",
-       .class          = &omap2_dispc_hwmod_class,
-       .mpu_irqs       = omap2_dispc_irqs,
-       .main_clk       = "dss1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
-               },
-       },
-       .slaves         = omap2420_dss_dispc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_dss_dispc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-       .dev_attr       = &omap2_3_dss_dispc_dev_attr
-};
+/*
+ * interfaces
+ */
 
-/* l4_core -> dss_rfbi */
-static struct omap_hwmod_ocp_if omap2420_l4_core__dss_rfbi = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_dss_rfbi_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_rfbi_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
+/* L4 CORE -> I2C1 interface */
+static struct omap_hwmod_ocp_if omap2420_l4_core__i2c1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2420_i2c1_hwmod,
+       .clk            = "i2c1_ick",
+       .addr           = omap2_i2c1_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss_rfbi slave ports */
-static struct omap_hwmod_ocp_if *omap2420_dss_rfbi_slaves[] = {
-       &omap2420_l4_core__dss_rfbi,
-};
-
-static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
-       { .role = "ick", .clk = "dss_ick" },
-};
-
-static struct omap_hwmod omap2420_dss_rfbi_hwmod = {
-       .name           = "dss_rfbi",
-       .class          = &omap2_rfbi_hwmod_class,
-       .main_clk       = "dss1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-               },
-       },
-       .opt_clks       = dss_rfbi_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
-       .slaves         = omap2420_dss_rfbi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_dss_rfbi_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* l4_core -> dss_venc */
-static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
-       .master         = &omap2420_l4_core_hwmod,
-       .slave          = &omap2420_dss_venc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_venc_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
+/* L4 CORE -> I2C2 interface */
+static struct omap_hwmod_ocp_if omap2420_l4_core__i2c2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2420_i2c2_hwmod,
+       .clk            = "i2c2_ick",
+       .addr           = omap2_i2c2_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss_venc slave ports */
-static struct omap_hwmod_ocp_if *omap2420_dss_venc_slaves[] = {
-       &omap2420_l4_core__dss_venc,
-};
-
-static struct omap_hwmod omap2420_dss_venc_hwmod = {
-       .name           = "dss_venc",
-       .class          = &omap2_venc_hwmod_class,
-       .main_clk       = "dss_54m_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-               },
-       },
-       .slaves         = omap2420_dss_venc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_dss_venc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* I2C common */
-static struct omap_hwmod_class_sysconfig i2c_sysc = {
-       .rev_offs       = 0x00,
-       .sysc_offs      = 0x20,
-       .syss_offs      = 0x10,
-       .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class i2c_class = {
-       .name           = "i2c",
-       .sysc           = &i2c_sysc,
-       .rev            = OMAP_I2C_IP_VERSION_1,
-       .reset          = &omap_i2c_reset,
-};
-
-static struct omap_i2c_dev_attr i2c_dev_attr = {
-       .flags          = OMAP_I2C_FLAG_NO_FIFO |
-                         OMAP_I2C_FLAG_SIMPLE_CLOCK |
-                         OMAP_I2C_FLAG_16BIT_DATA_REG |
-                         OMAP_I2C_FLAG_BUS_SHIFT_2,
-};
-
-/* I2C1 */
-
-static struct omap_hwmod_ocp_if *omap2420_i2c1_slaves[] = {
-       &omap2420_l4_core__i2c1,
-};
-
-static struct omap_hwmod omap2420_i2c1_hwmod = {
-       .name           = "i2c1",
-       .mpu_irqs       = omap2_i2c1_mpu_irqs,
-       .sdma_reqs      = omap2_i2c1_sdma_reqs,
-       .main_clk       = "i2c1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2420_EN_I2C1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP2420_ST_I2C1_SHIFT,
-               },
-       },
-       .slaves         = omap2420_i2c1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_i2c1_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c_dev_attr,
-       .flags          = HWMOD_16BIT_REG,
+/* IVA <- L3 interface */
+static struct omap_hwmod_ocp_if omap2420_l3__iva = {
+       .master         = &omap2xxx_l3_main_hwmod,
+       .slave          = &omap2420_iva_hwmod,
+       .clk            = "core_l3_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* I2C2 */
+/* DSP <- L3 interface */
+static struct omap_hwmod_ocp_if omap2420_l3__dsp = {
+       .master         = &omap2xxx_l3_main_hwmod,
+       .slave          = &omap2420_dsp_hwmod,
+       .clk            = "dsp_ick",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
-static struct omap_hwmod_ocp_if *omap2420_i2c2_slaves[] = {
-       &omap2420_l4_core__i2c2,
+static struct omap_hwmod_addr_space omap2420_timer1_addrs[] = {
+       {
+               .pa_start       = 0x48028000,
+               .pa_end         = 0x48028000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod omap2420_i2c2_hwmod = {
-       .name           = "i2c2",
-       .mpu_irqs       = omap2_i2c2_mpu_irqs,
-       .sdma_reqs      = omap2_i2c2_sdma_reqs,
-       .main_clk       = "i2c2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2420_EN_I2C2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP2420_ST_I2C2_SHIFT,
-               },
+/* l4_wkup -> timer1 */
+static struct omap_hwmod_ocp_if omap2420_l4_wkup__timer1 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_timer1_hwmod,
+       .clk            = "gpt1_ick",
+       .addr           = omap2420_timer1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_wkup -> wd_timer2 */
+static struct omap_hwmod_addr_space omap2420_wd_timer2_addrs[] = {
+       {
+               .pa_start       = 0x48022000,
+               .pa_end         = 0x4802207f,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap2420_i2c2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_i2c2_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c_dev_attr,
-       .flags          = HWMOD_16BIT_REG,
+       { }
+};
+
+static struct omap_hwmod_ocp_if omap2420_l4_wkup__wd_timer2 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_wd_timer2_hwmod,
+       .clk            = "mpu_wdt_ick",
+       .addr           = omap2420_wd_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
 /* l4_wkup -> gpio1 */
@@ -1112,8 +324,8 @@ static struct omap_hwmod_addr_space omap2420_gpio1_addr_space[] = {
 };
 
 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio1 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_gpio1_hwmod,
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio1_hwmod,
        .clk            = "gpios_ick",
        .addr           = omap2420_gpio1_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
@@ -1130,8 +342,8 @@ static struct omap_hwmod_addr_space omap2420_gpio2_addr_space[] = {
 };
 
 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio2 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_gpio2_hwmod,
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio2_hwmod,
        .clk            = "gpios_ick",
        .addr           = omap2420_gpio2_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
@@ -1148,8 +360,8 @@ static struct omap_hwmod_addr_space omap2420_gpio3_addr_space[] = {
 };
 
 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio3 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_gpio3_hwmod,
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio3_hwmod,
        .clk            = "gpios_ick",
        .addr           = omap2420_gpio3_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
@@ -1166,408 +378,100 @@ static struct omap_hwmod_addr_space omap2420_gpio4_addr_space[] = {
 };
 
 static struct omap_hwmod_ocp_if omap2420_l4_wkup__gpio4 = {
-       .master         = &omap2420_l4_wkup_hwmod,
-       .slave          = &omap2420_gpio4_hwmod,
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio4_hwmod,
        .clk            = "gpios_ick",
        .addr           = omap2420_gpio4_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* gpio dev_attr */
-static struct omap_gpio_dev_attr gpio_dev_attr = {
-       .bank_width = 32,
-       .dbck_flag = false,
-};
-
-/* gpio1 */
-static struct omap_hwmod_ocp_if *omap2420_gpio1_slaves[] = {
-       &omap2420_l4_wkup__gpio1,
-};
-
-static struct omap_hwmod omap2420_gpio1_hwmod = {
-       .name           = "gpio1",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio1_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2420_gpio1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_gpio1_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio2 */
-static struct omap_hwmod_ocp_if *omap2420_gpio2_slaves[] = {
-       &omap2420_l4_wkup__gpio2,
-};
-
-static struct omap_hwmod omap2420_gpio2_hwmod = {
-       .name           = "gpio2",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio2_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2420_gpio2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_gpio2_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio3 */
-static struct omap_hwmod_ocp_if *omap2420_gpio3_slaves[] = {
-       &omap2420_l4_wkup__gpio3,
-};
-
-static struct omap_hwmod omap2420_gpio3_hwmod = {
-       .name           = "gpio3",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio3_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2420_gpio3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_gpio3_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio4 */
-static struct omap_hwmod_ocp_if *omap2420_gpio4_slaves[] = {
-       &omap2420_l4_wkup__gpio4,
-};
-
-static struct omap_hwmod omap2420_gpio4_hwmod = {
-       .name           = "gpio4",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio4_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2420_gpio4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_gpio4_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* dma attributes */
-static struct omap_dma_dev_attr dma_dev_attr = {
-       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
-                                               IS_CSSA_32 | IS_CDSA_32,
-       .lch_count = 32,
-};
-
 /* dma_system -> L3 */
 static struct omap_hwmod_ocp_if omap2420_dma_system__l3 = {
        .master         = &omap2420_dma_system_hwmod,
-       .slave          = &omap2420_l3_main_hwmod,
+       .slave          = &omap2xxx_l3_main_hwmod,
        .clk            = "core_l3_ck",
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dma_system master ports */
-static struct omap_hwmod_ocp_if *omap2420_dma_system_masters[] = {
-       &omap2420_dma_system__l3,
-};
-
 /* l4_core -> dma_system */
 static struct omap_hwmod_ocp_if omap2420_l4_core__dma_system = {
-       .master         = &omap2420_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2420_dma_system_hwmod,
        .clk            = "sdma_ick",
        .addr           = omap2_dma_system_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dma_system slave ports */
-static struct omap_hwmod_ocp_if *omap2420_dma_system_slaves[] = {
-       &omap2420_l4_core__dma_system,
-};
-
-static struct omap_hwmod omap2420_dma_system_hwmod = {
-       .name           = "dma",
-       .class          = &omap2xxx_dma_hwmod_class,
-       .mpu_irqs       = omap2_dma_system_irqs,
-       .main_clk       = "core_l3_ck",
-       .slaves         = omap2420_dma_system_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_dma_system_slaves),
-       .masters        = omap2420_dma_system_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2420_dma_system_masters),
-       .dev_attr       = &dma_dev_attr,
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* mailbox */
-static struct omap_hwmod omap2420_mailbox_hwmod;
-static struct omap_hwmod_irq_info omap2420_mailbox_irqs[] = {
-       { .name = "dsp", .irq = 26 },
-       { .name = "iva", .irq = 34 },
-       { .irq = -1 }
-};
-
 /* l4_core -> mailbox */
 static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = {
-       .master         = &omap2420_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2420_mailbox_hwmod,
        .addr           = omap2_mailbox_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mailbox slave ports */
-static struct omap_hwmod_ocp_if *omap2420_mailbox_slaves[] = {
-       &omap2420_l4_core__mailbox,
-};
-
-static struct omap_hwmod omap2420_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &omap2xxx_mailbox_hwmod_class,
-       .mpu_irqs       = omap2420_mailbox_irqs,
-       .main_clk       = "mailboxes_ick",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
-               },
-       },
-       .slaves         = omap2420_mailbox_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_mailbox_slaves),
-};
-
-/* mcspi1 */
-static struct omap_hwmod_ocp_if *omap2420_mcspi1_slaves[] = {
-       &omap2420_l4_core__mcspi1,
-};
-
-static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
-       .num_chipselect = 4,
-};
-
-static struct omap_hwmod omap2420_mcspi1_hwmod = {
-       .name           = "mcspi1_hwmod",
-       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi1_sdma_reqs,
-       .main_clk       = "mcspi1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
-               },
-       },
-       .slaves         = omap2420_mcspi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_mcspi1_slaves),
-       .class          = &omap2xxx_mcspi_class,
-       .dev_attr       = &omap_mcspi1_dev_attr,
-};
-
-/* mcspi2 */
-static struct omap_hwmod_ocp_if *omap2420_mcspi2_slaves[] = {
-       &omap2420_l4_core__mcspi2,
-};
-
-static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
-       .num_chipselect = 2,
-};
-
-static struct omap_hwmod omap2420_mcspi2_hwmod = {
-       .name           = "mcspi2_hwmod",
-       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi2_sdma_reqs,
-       .main_clk       = "mcspi2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
-               },
-       },
-       .slaves         = omap2420_mcspi2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_mcspi2_slaves),
-       .class          = &omap2xxx_mcspi_class,
-       .dev_attr       = &omap_mcspi2_dev_attr,
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class omap2420_mcbsp_hwmod_class = {
-       .name = "mcbsp",
-};
-
-/* mcbsp1 */
-static struct omap_hwmod_irq_info omap2420_mcbsp1_irqs[] = {
-       { .name = "tx", .irq = 59 },
-       { .name = "rx", .irq = 60 },
-       { .irq = -1 }
-};
-
 /* l4_core -> mcbsp1 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp1 = {
-       .master         = &omap2420_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2420_mcbsp1_hwmod,
        .clk            = "mcbsp1_ick",
        .addr           = omap2_mcbsp1_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp1 slave ports */
-static struct omap_hwmod_ocp_if *omap2420_mcbsp1_slaves[] = {
-       &omap2420_l4_core__mcbsp1,
-};
-
-static struct omap_hwmod omap2420_mcbsp1_hwmod = {
-       .name           = "mcbsp1",
-       .class          = &omap2420_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2420_mcbsp1_irqs,
-       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
-       .main_clk       = "mcbsp1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
-               },
-       },
-       .slaves         = omap2420_mcbsp1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_mcbsp1_slaves),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod_irq_info omap2420_mcbsp2_irqs[] = {
-       { .name = "tx", .irq = 62 },
-       { .name = "rx", .irq = 63 },
-       { .irq = -1 }
-};
-
 /* l4_core -> mcbsp2 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__mcbsp2 = {
-       .master         = &omap2420_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2420_mcbsp2_hwmod,
        .clk            = "mcbsp2_ick",
        .addr           = omap2xxx_mcbsp2_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp2 slave ports */
-static struct omap_hwmod_ocp_if *omap2420_mcbsp2_slaves[] = {
+static struct omap_hwmod_ocp_if *omap2420_hwmod_ocp_ifs[] __initdata = {
+       &omap2xxx_l3_main__l4_core,
+       &omap2xxx_mpu__l3_main,
+       &omap2xxx_dss__l3,
+       &omap2xxx_l4_core__mcspi1,
+       &omap2xxx_l4_core__mcspi2,
+       &omap2xxx_l4_core__l4_wkup,
+       &omap2_l4_core__uart1,
+       &omap2_l4_core__uart2,
+       &omap2_l4_core__uart3,
+       &omap2420_l4_core__i2c1,
+       &omap2420_l4_core__i2c2,
+       &omap2420_l3__iva,
+       &omap2420_l3__dsp,
+       &omap2420_l4_wkup__timer1,
+       &omap2xxx_l4_core__timer2,
+       &omap2xxx_l4_core__timer3,
+       &omap2xxx_l4_core__timer4,
+       &omap2xxx_l4_core__timer5,
+       &omap2xxx_l4_core__timer6,
+       &omap2xxx_l4_core__timer7,
+       &omap2xxx_l4_core__timer8,
+       &omap2xxx_l4_core__timer9,
+       &omap2xxx_l4_core__timer10,
+       &omap2xxx_l4_core__timer11,
+       &omap2xxx_l4_core__timer12,
+       &omap2420_l4_wkup__wd_timer2,
+       &omap2xxx_l4_core__dss,
+       &omap2xxx_l4_core__dss_dispc,
+       &omap2xxx_l4_core__dss_rfbi,
+       &omap2xxx_l4_core__dss_venc,
+       &omap2420_l4_wkup__gpio1,
+       &omap2420_l4_wkup__gpio2,
+       &omap2420_l4_wkup__gpio3,
+       &omap2420_l4_wkup__gpio4,
+       &omap2420_dma_system__l3,
+       &omap2420_l4_core__dma_system,
+       &omap2420_l4_core__mailbox,
+       &omap2420_l4_core__mcbsp1,
        &omap2420_l4_core__mcbsp2,
-};
-
-static struct omap_hwmod omap2420_mcbsp2_hwmod = {
-       .name           = "mcbsp2",
-       .class          = &omap2420_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2420_mcbsp2_irqs,
-       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
-       .main_clk       = "mcbsp2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
-               },
-       },
-       .slaves         = omap2420_mcbsp2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2420_mcbsp2_slaves),
-};
-
-static __initdata struct omap_hwmod *omap2420_hwmods[] = {
-       &omap2420_l3_main_hwmod,
-       &omap2420_l4_core_hwmod,
-       &omap2420_l4_wkup_hwmod,
-       &omap2420_mpu_hwmod,
-       &omap2420_iva_hwmod,
-
-       &omap2420_timer1_hwmod,
-       &omap2420_timer2_hwmod,
-       &omap2420_timer3_hwmod,
-       &omap2420_timer4_hwmod,
-       &omap2420_timer5_hwmod,
-       &omap2420_timer6_hwmod,
-       &omap2420_timer7_hwmod,
-       &omap2420_timer8_hwmod,
-       &omap2420_timer9_hwmod,
-       &omap2420_timer10_hwmod,
-       &omap2420_timer11_hwmod,
-       &omap2420_timer12_hwmod,
-
-       &omap2420_wd_timer2_hwmod,
-       &omap2420_uart1_hwmod,
-       &omap2420_uart2_hwmod,
-       &omap2420_uart3_hwmod,
-       /* dss class */
-       &omap2420_dss_core_hwmod,
-       &omap2420_dss_dispc_hwmod,
-       &omap2420_dss_rfbi_hwmod,
-       &omap2420_dss_venc_hwmod,
-       /* i2c class */
-       &omap2420_i2c1_hwmod,
-       &omap2420_i2c2_hwmod,
-
-       /* gpio class */
-       &omap2420_gpio1_hwmod,
-       &omap2420_gpio2_hwmod,
-       &omap2420_gpio3_hwmod,
-       &omap2420_gpio4_hwmod,
-
-       /* dma_system class*/
-       &omap2420_dma_system_hwmod,
-
-       /* mailbox class */
-       &omap2420_mailbox_hwmod,
-
-       /* mcbsp class */
-       &omap2420_mcbsp1_hwmod,
-       &omap2420_mcbsp2_hwmod,
-
-       /* mcspi class */
-       &omap2420_mcspi1_hwmod,
-       &omap2420_mcspi2_hwmod,
        NULL,
 };
 
 int __init omap2420_hwmod_init(void)
 {
-       return omap_hwmod_register(omap2420_hwmods);
+       return omap_hwmod_register_links(omap2420_hwmod_ocp_ifs);
 }
index 04a3885f4475f6e6ff865c4624a19d58b061a7f4..71d9f8824f9d1960daf3487e22d35d7bce8d5400 100644 (file)
@@ -2,6 +2,7 @@
  * omap_hwmod_2430_data.c - hardware modules present on the OMAP2430 chips
  *
  * Copyright (C) 2009-2011 Nokia Corporation
+ * Copyright (C) 2012 Texas Instruments, Inc.
  * Paul Walmsley
  *
  * This program is free software; you can redistribute it and/or modify
 /*
  * OMAP2430 hardware module integration data
  *
- * ALl of the data in this section should be autogeneratable from the
+ * All of the data in this section should be autogeneratable from the
  * TI hardware database or other technical documentation.  Data that
  * is driver-specific or driver-kernel integration-specific belongs
  * elsewhere.
  */
 
-static struct omap_hwmod omap2430_mpu_hwmod;
-static struct omap_hwmod omap2430_iva_hwmod;
-static struct omap_hwmod omap2430_l3_main_hwmod;
-static struct omap_hwmod omap2430_l4_core_hwmod;
-static struct omap_hwmod omap2430_dss_core_hwmod;
-static struct omap_hwmod omap2430_dss_dispc_hwmod;
-static struct omap_hwmod omap2430_dss_rfbi_hwmod;
-static struct omap_hwmod omap2430_dss_venc_hwmod;
-static struct omap_hwmod omap2430_wd_timer2_hwmod;
-static struct omap_hwmod omap2430_gpio1_hwmod;
-static struct omap_hwmod omap2430_gpio2_hwmod;
-static struct omap_hwmod omap2430_gpio3_hwmod;
-static struct omap_hwmod omap2430_gpio4_hwmod;
-static struct omap_hwmod omap2430_gpio5_hwmod;
-static struct omap_hwmod omap2430_dma_system_hwmod;
-static struct omap_hwmod omap2430_mcbsp1_hwmod;
-static struct omap_hwmod omap2430_mcbsp2_hwmod;
-static struct omap_hwmod omap2430_mcbsp3_hwmod;
-static struct omap_hwmod omap2430_mcbsp4_hwmod;
-static struct omap_hwmod omap2430_mcbsp5_hwmod;
-static struct omap_hwmod omap2430_mcspi1_hwmod;
-static struct omap_hwmod omap2430_mcspi2_hwmod;
-static struct omap_hwmod omap2430_mcspi3_hwmod;
-static struct omap_hwmod omap2430_mmc1_hwmod;
-static struct omap_hwmod omap2430_mmc2_hwmod;
-
-/* L3 -> L4_CORE interface */
-static struct omap_hwmod_ocp_if omap2430_l3_main__l4_core = {
-       .master = &omap2430_l3_main_hwmod,
-       .slave  = &omap2430_l4_core_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
-};
+/*
+ * IP blocks
+ */
 
-/* MPU -> L3 interface */
-static struct omap_hwmod_ocp_if omap2430_mpu__l3_main = {
-       .master = &omap2430_mpu_hwmod,
-       .slave  = &omap2430_l3_main_hwmod,
-       .user   = OCP_USER_MPU,
+/* IVA2 (IVA2) */
+static struct omap_hwmod_rst_info omap2430_iva_resets[] = {
+       { .name = "logic", .rst_shift = 0 },
+       { .name = "mmu", .rst_shift = 1 },
 };
 
-/* Slave interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l3_main_slaves[] = {
-       &omap2430_mpu__l3_main,
+static struct omap_hwmod omap2430_iva_hwmod = {
+       .name           = "iva",
+       .class          = &iva_hwmod_class,
+       .clkdm_name     = "dsp_clkdm",
+       .rst_lines      = omap2430_iva_resets,
+       .rst_lines_cnt  = ARRAY_SIZE(omap2430_iva_resets),
+       .main_clk       = "dsp_fck",
 };
 
-/* DSS -> l3 */
-static struct omap_hwmod_ocp_if omap2430_dss__l3 = {
-       .master         = &omap2430_dss_core_hwmod,
-       .slave          = &omap2430_l3_main_hwmod,
-       .fw = {
-               .omap2 = {
-                       .l3_perm_bit  = OMAP2_L3_CORE_FW_CONNID_DSS,
-                       .flags  = OMAP_FIREWALL_L3,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* I2C common */
+static struct omap_hwmod_class_sysconfig i2c_sysc = {
+       .rev_offs       = 0x00,
+       .sysc_offs      = 0x20,
+       .syss_offs      = 0x10,
+       .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
+                          SYSS_HAS_RESET_STATUS),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* Master interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l3_main_masters[] = {
-       &omap2430_l3_main__l4_core,
+static struct omap_hwmod_class i2c_class = {
+       .name           = "i2c",
+       .sysc           = &i2c_sysc,
+       .rev            = OMAP_I2C_IP_VERSION_1,
+       .reset          = &omap_i2c_reset,
 };
 
-/* L3 */
-static struct omap_hwmod omap2430_l3_main_hwmod = {
-       .name           = "l3_main",
-       .class          = &l3_hwmod_class,
-       .masters        = omap2430_l3_main_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_l3_main_masters),
-       .slaves         = omap2430_l3_main_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_l3_main_slaves),
-       .flags          = HWMOD_NO_IDLEST,
+static struct omap_i2c_dev_attr i2c_dev_attr = {
+       .fifo_depth     = 8, /* bytes */
+       .flags          = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
+                         OMAP_I2C_FLAG_BUS_SHIFT_2 |
+                         OMAP_I2C_FLAG_FORCE_19200_INT_CLK,
 };
 
-static struct omap_hwmod omap2430_l4_wkup_hwmod;
-static struct omap_hwmod omap2430_uart1_hwmod;
-static struct omap_hwmod omap2430_uart2_hwmod;
-static struct omap_hwmod omap2430_uart3_hwmod;
-static struct omap_hwmod omap2430_i2c1_hwmod;
-static struct omap_hwmod omap2430_i2c2_hwmod;
-
-static struct omap_hwmod omap2430_usbhsotg_hwmod;
-
-/* l3_core -> usbhsotg  interface */
-static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
-       .master         = &omap2430_usbhsotg_hwmod,
-       .slave          = &omap2430_l3_main_hwmod,
-       .clk            = "core_l3_ck",
-       .user           = OCP_USER_MPU,
+/* I2C1 */
+static struct omap_hwmod omap2430_i2c1_hwmod = {
+       .name           = "i2c1",
+       .flags          = HWMOD_16BIT_REG,
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
+       .sdma_reqs      = omap2_i2c1_sdma_reqs,
+       .main_clk       = "i2chs1_fck",
+       .prcm           = {
+               .omap2 = {
+                       /*
+                        * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
+                        * I2CHS IP's do not follow the usual pattern.
+                        * prcm_reg_id alone cannot be used to program
+                        * the iclk and fclk. Needs to be handled using
+                        * additional flags when clk handling is moved
+                        * to hwmod framework.
+                        */
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP2430_EN_I2CHS1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
+               },
+       },
+       .class          = &i2c_class,
+       .dev_attr       = &i2c_dev_attr,
 };
 
-/* L4 CORE -> I2C1 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_i2c1_hwmod,
-       .clk            = "i2c1_ick",
-       .addr           = omap2_i2c1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* I2C2 */
+static struct omap_hwmod omap2430_i2c2_hwmod = {
+       .name           = "i2c2",
+       .flags          = HWMOD_16BIT_REG,
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
+       .sdma_reqs      = omap2_i2c2_sdma_reqs,
+       .main_clk       = "i2chs2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP2430_EN_I2CHS2_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
+               },
+       },
+       .class          = &i2c_class,
+       .dev_attr       = &i2c_dev_attr,
 };
 
-/* L4 CORE -> I2C2 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_i2c2_hwmod,
-       .clk            = "i2c2_ick",
-       .addr           = omap2_i2c2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* gpio5 */
+static struct omap_hwmod_irq_info omap243x_gpio5_irqs[] = {
+       { .irq = 33 }, /* INT_24XX_GPIO_BANK5 */
+       { .irq = -1 }
 };
 
-/* L4_CORE -> L4_WKUP interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__l4_wkup = {
-       .master = &omap2430_l4_core_hwmod,
-       .slave  = &omap2430_l4_wkup_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap2430_gpio5_hwmod = {
+       .name           = "gpio5",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap243x_gpio5_irqs,
+       .main_clk       = "gpio5_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 2,
+                       .module_bit = OMAP2430_EN_GPIO5_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_gpio_hwmod_class,
+       .dev_attr       = &omap2xxx_gpio_dev_attr,
 };
 
-/* L4 CORE -> UART1 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_uart1_hwmod,
-       .clk            = "uart1_ick",
-       .addr           = omap2xxx_uart1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* dma attributes */
+static struct omap_dma_dev_attr dma_dev_attr = {
+       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
+                               IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
+       .lch_count = 32,
 };
 
-/* L4 CORE -> UART2 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_uart2_hwmod,
-       .clk            = "uart2_ick",
-       .addr           = omap2xxx_uart2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap2430_dma_system_hwmod = {
+       .name           = "dma",
+       .class          = &omap2xxx_dma_hwmod_class,
+       .mpu_irqs       = omap2_dma_system_irqs,
+       .main_clk       = "core_l3_ck",
+       .dev_attr       = &dma_dev_attr,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* L4 PER -> UART3 interface */
-static struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_uart3_hwmod,
-       .clk            = "uart3_ick",
-       .addr           = omap2xxx_uart3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* mailbox */
+static struct omap_hwmod_irq_info omap2430_mailbox_irqs[] = {
+       { .irq = 26 },
+       { .irq = -1 }
 };
 
-/*
-* usbhsotg interface data
-*/
-static struct omap_hwmod_addr_space omap2430_usbhsotg_addrs[] = {
-       {
-               .pa_start       = OMAP243X_HS_BASE,
-               .pa_end         = OMAP243X_HS_BASE + SZ_4K - 1,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap2430_mailbox_hwmod = {
+       .name           = "mailbox",
+       .class          = &omap2xxx_mailbox_hwmod_class,
+       .mpu_irqs       = omap2430_mailbox_irqs,
+       .main_clk       = "mailboxes_ick",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
+               },
        },
-       { }
 };
 
-/*  l4_core ->usbhsotg  interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_usbhsotg_hwmod,
-       .clk            = "usb_l4_ick",
-       .addr           = omap2430_usbhsotg_addrs,
-       .user           = OCP_USER_MPU,
+/* mcspi3 */
+static struct omap_hwmod_irq_info omap2430_mcspi3_mpu_irqs[] = {
+       { .irq = 91 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap2430_usbhsotg_masters[] = {
-       &omap2430_usbhsotg__l3,
+static struct omap_hwmod_dma_info omap2430_mcspi3_sdma_reqs[] = {
+       { .name = "tx0", .dma_req = 15 }, /* DMA_SPI3_TX0 */
+       { .name = "rx0", .dma_req = 16 }, /* DMA_SPI3_RX0 */
+       { .name = "tx1", .dma_req = 23 }, /* DMA_SPI3_TX1 */
+       { .name = "rx1", .dma_req = 24 }, /* DMA_SPI3_RX1 */
+       { .dma_req = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap2430_usbhsotg_slaves[] = {
-       &omap2430_l4_core__usbhsotg,
+static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
+       .num_chipselect = 2,
 };
 
-/* L4 CORE -> MMC1 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mmc1_hwmod,
-       .clk            = "mmchs1_ick",
-       .addr           = omap2430_mmc1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap2430_mcspi3_hwmod = {
+       .name           = "mcspi3",
+       .mpu_irqs       = omap2430_mcspi3_mpu_irqs,
+       .sdma_reqs      = omap2430_mcspi3_sdma_reqs,
+       .main_clk       = "mcspi3_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 2,
+                       .module_bit = OMAP2430_EN_MCSPI3_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_mcspi_class,
+       .dev_attr       = &omap_mcspi3_dev_attr,
 };
 
-/* L4 CORE -> MMC2 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mmc2_hwmod,
-       .clk            = "mmchs2_ick",
-       .addr           = omap2430_mmc2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* usbhsotg */
+static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
+       .rev_offs       = 0x0400,
+       .sysc_offs      = 0x0404,
+       .syss_offs      = 0x0408,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
+                         SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                         SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                         MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* Slave interfaces on the L4_CORE interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l4_core_slaves[] = {
-       &omap2430_l3_main__l4_core,
+static struct omap_hwmod_class usbotg_class = {
+       .name = "usbotg",
+       .sysc = &omap2430_usbhsotg_sysc,
 };
 
-/* Master interfaces on the L4_CORE interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l4_core_masters[] = {
-       &omap2430_l4_core__l4_wkup,
-       &omap2430_l4_core__mmc1,
-       &omap2430_l4_core__mmc2,
-};
+/* usb_otg_hs */
+static struct omap_hwmod_irq_info omap2430_usbhsotg_mpu_irqs[] = {
 
-/* L4 CORE */
-static struct omap_hwmod omap2430_l4_core_hwmod = {
-       .name           = "l4_core",
-       .class          = &l4_hwmod_class,
-       .masters        = omap2430_l4_core_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_l4_core_masters),
-       .slaves         = omap2430_l4_core_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_l4_core_slaves),
-       .flags          = HWMOD_NO_IDLEST,
+       { .name = "mc", .irq = 92 },
+       { .name = "dma", .irq = 93 },
+       { .irq = -1 }
 };
 
-/* Slave interfaces on the L4_WKUP interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l4_wkup_slaves[] = {
-       &omap2430_l4_core__l4_wkup,
-       &omap2_l4_core__uart1,
-       &omap2_l4_core__uart2,
-       &omap2_l4_core__uart3,
+static struct omap_hwmod omap2430_usbhsotg_hwmod = {
+       .name           = "usb_otg_hs",
+       .mpu_irqs       = omap2430_usbhsotg_mpu_irqs,
+       .main_clk       = "usbhs_ick",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP2430_EN_USBHS_MASK,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
+               },
+       },
+       .class          = &usbotg_class,
+       /*
+        * Erratum ID: i479  idle_req / idle_ack mechanism potentially
+        * broken when autoidle is enabled
+        * workaround is to disable the autoidle bit at module level.
+        */
+       .flags          = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
+                               | HWMOD_SWSUP_MSTANDBY,
 };
 
-/* Master interfaces on the L4_WKUP interconnect */
-static struct omap_hwmod_ocp_if *omap2430_l4_wkup_masters[] = {
-};
+/*
+ * 'mcbsp' class
+ * multi channel buffered serial port controller
+ */
 
-/* l4 core -> mcspi1 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi1 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mcspi1_hwmod,
-       .clk            = "mcspi1_ick",
-       .addr           = omap2_mcspi1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
+       .rev_offs       = 0x007C,
+       .sysc_offs      = 0x008C,
+       .sysc_flags     = (SYSC_HAS_SOFTRESET),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* l4 core -> mcspi2 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi2 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mcspi2_hwmod,
-       .clk            = "mcspi2_ick",
-       .addr           = omap2_mcspi2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4 core -> mcspi3 interface */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mcspi3_hwmod,
-       .clk            = "mcspi3_ick",
-       .addr           = omap2430_mcspi3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 WKUP */
-static struct omap_hwmod omap2430_l4_wkup_hwmod = {
-       .name           = "l4_wkup",
-       .class          = &l4_hwmod_class,
-       .masters        = omap2430_l4_wkup_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_l4_wkup_masters),
-       .slaves         = omap2430_l4_wkup_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_l4_wkup_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* Master interfaces on the MPU device */
-static struct omap_hwmod_ocp_if *omap2430_mpu_masters[] = {
-       &omap2430_mpu__l3_main,
-};
-
-/* MPU */
-static struct omap_hwmod omap2430_mpu_hwmod = {
-       .name           = "mpu",
-       .class          = &mpu_hwmod_class,
-       .main_clk       = "mpu_ck",
-       .masters        = omap2430_mpu_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_mpu_masters),
-};
-
-/*
- * IVA2_1 interface data
- */
-
-/* IVA2 <- L3 interface */
-static struct omap_hwmod_ocp_if omap2430_l3__iva = {
-       .master         = &omap2430_l3_main_hwmod,
-       .slave          = &omap2430_iva_hwmod,
-       .clk            = "dsp_fck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_ocp_if *omap2430_iva_masters[] = {
-       &omap2430_l3__iva,
-};
-
-/*
- * IVA2 (IVA2)
- */
-
-static struct omap_hwmod omap2430_iva_hwmod = {
-       .name           = "iva",
-       .class          = &iva_hwmod_class,
-       .masters        = omap2430_iva_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_iva_masters),
-};
-
-/* always-on timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
-       .timer_capability       = OMAP_TIMER_ALWON,
-};
-
-/* pwm timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
-       .timer_capability       = OMAP_TIMER_HAS_PWM,
-};
-
-/* timer1 */
-static struct omap_hwmod omap2430_timer1_hwmod;
-
-static struct omap_hwmod_addr_space omap2430_timer1_addrs[] = {
-       {
-               .pa_start       = 0x49018000,
-               .pa_end         = 0x49018000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_wkup -> timer1 */
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__timer1 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_timer1_hwmod,
-       .clk            = "gpt1_ick",
-       .addr           = omap2430_timer1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
+       .name = "mcbsp",
+       .sysc = &omap2430_mcbsp_sysc,
+       .rev  = MCBSP_CONFIG_TYPE2,
 };
 
-/* timer1 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer1_slaves[] = {
-       &omap2430_l4_wkup__timer1,
+/* mcbsp1 */
+static struct omap_hwmod_irq_info omap2430_mcbsp1_irqs[] = {
+       { .name = "tx",         .irq = 59 },
+       { .name = "rx",         .irq = 60 },
+       { .name = "ovr",        .irq = 61 },
+       { .name = "common",     .irq = 64 },
+       { .irq = -1 }
 };
 
-/* timer1 hwmod */
-static struct omap_hwmod omap2430_timer1_hwmod = {
-       .name           = "timer1",
-       .mpu_irqs       = omap2_timer1_mpu_irqs,
-       .main_clk       = "gpt1_fck",
+static struct omap_hwmod omap2430_mcbsp1_hwmod = {
+       .name           = "mcbsp1",
+       .class          = &omap2430_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2430_mcbsp1_irqs,
+       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
+       .main_clk       = "mcbsp1_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT1_SHIFT,
-                       .module_offs = WKUP_MOD,
+                       .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
+                       .module_offs = CORE_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
+                       .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer1_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer2 */
-static struct omap_hwmod omap2430_timer2_hwmod;
-
-/* l4_core -> timer2 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer2 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer2_hwmod,
-       .clk            = "gpt2_ick",
-       .addr           = omap2xxx_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer2 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer2_slaves[] = {
-       &omap2430_l4_core__timer2,
+/* mcbsp2 */
+static struct omap_hwmod_irq_info omap2430_mcbsp2_irqs[] = {
+       { .name = "tx",         .irq = 62 },
+       { .name = "rx",         .irq = 63 },
+       { .name = "common",     .irq = 16 },
+       { .irq = -1 }
 };
 
-/* timer2 hwmod */
-static struct omap_hwmod omap2430_timer2_hwmod = {
-       .name           = "timer2",
-       .mpu_irqs       = omap2_timer2_mpu_irqs,
-       .main_clk       = "gpt2_fck",
+static struct omap_hwmod omap2430_mcbsp2_hwmod = {
+       .name           = "mcbsp2",
+       .class          = &omap2430_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2430_mcbsp2_irqs,
+       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
+       .main_clk       = "mcbsp2_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT2_SHIFT,
+                       .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
                        .module_offs = CORE_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
+                       .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer2_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer3 */
-static struct omap_hwmod omap2430_timer3_hwmod;
-
-/* l4_core -> timer3 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer3 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer3_hwmod,
-       .clk            = "gpt3_ick",
-       .addr           = omap2xxx_timer3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer3 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer3_slaves[] = {
-       &omap2430_l4_core__timer3,
+/* mcbsp3 */
+static struct omap_hwmod_irq_info omap2430_mcbsp3_irqs[] = {
+       { .name = "tx",         .irq = 89 },
+       { .name = "rx",         .irq = 90 },
+       { .name = "common",     .irq = 17 },
+       { .irq = -1 }
 };
 
-/* timer3 hwmod */
-static struct omap_hwmod omap2430_timer3_hwmod = {
-       .name           = "timer3",
-       .mpu_irqs       = omap2_timer3_mpu_irqs,
-       .main_clk       = "gpt3_fck",
+static struct omap_hwmod omap2430_mcbsp3_hwmod = {
+       .name           = "mcbsp3",
+       .class          = &omap2430_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2430_mcbsp3_irqs,
+       .sdma_reqs      = omap2_mcbsp3_sdma_reqs,
+       .main_clk       = "mcbsp3_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT3_SHIFT,
+                       .module_bit = OMAP2430_EN_MCBSP3_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer3_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
 };
 
-/* timer4 */
-static struct omap_hwmod omap2430_timer4_hwmod;
-
-/* l4_core -> timer4 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer4 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer4_hwmod,
-       .clk            = "gpt4_ick",
-       .addr           = omap2xxx_timer4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* mcbsp4 */
+static struct omap_hwmod_irq_info omap2430_mcbsp4_irqs[] = {
+       { .name = "tx",         .irq = 54 },
+       { .name = "rx",         .irq = 55 },
+       { .name = "common",     .irq = 18 },
+       { .irq = -1 }
 };
 
-/* timer4 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer4_slaves[] = {
-       &omap2430_l4_core__timer4,
+static struct omap_hwmod_dma_info omap2430_mcbsp4_sdma_chs[] = {
+       { .name = "rx", .dma_req = 20 },
+       { .name = "tx", .dma_req = 19 },
+       { .dma_req = -1 }
 };
 
-/* timer4 hwmod */
-static struct omap_hwmod omap2430_timer4_hwmod = {
-       .name           = "timer4",
-       .mpu_irqs       = omap2_timer4_mpu_irqs,
-       .main_clk       = "gpt4_fck",
+static struct omap_hwmod omap2430_mcbsp4_hwmod = {
+       .name           = "mcbsp4",
+       .class          = &omap2430_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2430_mcbsp4_irqs,
+       .sdma_reqs      = omap2430_mcbsp4_sdma_chs,
+       .main_clk       = "mcbsp4_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT4_SHIFT,
+                       .module_bit = OMAP2430_EN_MCBSP4_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer4_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
 };
 
-/* timer5 */
-static struct omap_hwmod omap2430_timer5_hwmod;
-
-/* l4_core -> timer5 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer5 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer5_hwmod,
-       .clk            = "gpt5_ick",
-       .addr           = omap2xxx_timer5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* mcbsp5 */
+static struct omap_hwmod_irq_info omap2430_mcbsp5_irqs[] = {
+       { .name = "tx",         .irq = 81 },
+       { .name = "rx",         .irq = 82 },
+       { .name = "common",     .irq = 19 },
+       { .irq = -1 }
 };
 
-/* timer5 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer5_slaves[] = {
-       &omap2430_l4_core__timer5,
+static struct omap_hwmod_dma_info omap2430_mcbsp5_sdma_chs[] = {
+       { .name = "rx", .dma_req = 22 },
+       { .name = "tx", .dma_req = 21 },
+       { .dma_req = -1 }
 };
 
-/* timer5 hwmod */
-static struct omap_hwmod omap2430_timer5_hwmod = {
-       .name           = "timer5",
-       .mpu_irqs       = omap2_timer5_mpu_irqs,
-       .main_clk       = "gpt5_fck",
+static struct omap_hwmod omap2430_mcbsp5_hwmod = {
+       .name           = "mcbsp5",
+       .class          = &omap2430_mcbsp_hwmod_class,
+       .mpu_irqs       = omap2430_mcbsp5_irqs,
+       .sdma_reqs      = omap2430_mcbsp5_sdma_chs,
+       .main_clk       = "mcbsp5_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT5_SHIFT,
+                       .module_bit = OMAP2430_EN_MCBSP5_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer5_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
 };
 
-/* timer6 */
-static struct omap_hwmod omap2430_timer6_hwmod;
-
-/* l4_core -> timer6 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer6 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer6_hwmod,
-       .clk            = "gpt6_ick",
-       .addr           = omap2xxx_timer6_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* MMC/SD/SDIO common */
+static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
+       .rev_offs       = 0x1fc,
+       .sysc_offs      = 0x10,
+       .syss_offs      = 0x14,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* timer6 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer6_slaves[] = {
-       &omap2430_l4_core__timer6,
+static struct omap_hwmod_class omap2430_mmc_class = {
+       .name = "mmc",
+       .sysc = &omap2430_mmc_sysc,
 };
 
-/* timer6 hwmod */
-static struct omap_hwmod omap2430_timer6_hwmod = {
-       .name           = "timer6",
-       .mpu_irqs       = omap2_timer6_mpu_irqs,
-       .main_clk       = "gpt6_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT6_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer6_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+/* MMC/SD/SDIO1 */
+static struct omap_hwmod_irq_info omap2430_mmc1_mpu_irqs[] = {
+       { .irq = 83 },
+       { .irq = -1 }
 };
 
-/* timer7 */
-static struct omap_hwmod omap2430_timer7_hwmod;
+static struct omap_hwmod_dma_info omap2430_mmc1_sdma_reqs[] = {
+       { .name = "tx", .dma_req = 61 }, /* DMA_MMC1_TX */
+       { .name = "rx", .dma_req = 62 }, /* DMA_MMC1_RX */
+       { .dma_req = -1 }
+};
 
-/* l4_core -> timer7 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer7 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer7_hwmod,
-       .clk            = "gpt7_ick",
-       .addr           = omap2xxx_timer7_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
+       { .role = "dbck", .clk = "mmchsdb1_fck" },
 };
 
-/* timer7 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer7_slaves[] = {
-       &omap2430_l4_core__timer7,
+static struct omap_mmc_dev_attr mmc1_dev_attr = {
+       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
 };
 
-/* timer7 hwmod */
-static struct omap_hwmod omap2430_timer7_hwmod = {
-       .name           = "timer7",
-       .mpu_irqs       = omap2_timer7_mpu_irqs,
-       .main_clk       = "gpt7_fck",
+static struct omap_hwmod omap2430_mmc1_hwmod = {
+       .name           = "mmc1",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2430_mmc1_mpu_irqs,
+       .sdma_reqs      = omap2430_mmc1_sdma_reqs,
+       .opt_clks       = omap2430_mmc1_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc1_opt_clks),
+       .main_clk       = "mmchs1_fck",
        .prcm           = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT7_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
+                       .prcm_reg_id = 2,
+                       .module_bit  = OMAP2430_EN_MMCHS1_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer7_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer7_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+       .dev_attr       = &mmc1_dev_attr,
+       .class          = &omap2430_mmc_class,
 };
 
-/* timer8 */
-static struct omap_hwmod omap2430_timer8_hwmod;
+/* MMC/SD/SDIO2 */
+static struct omap_hwmod_irq_info omap2430_mmc2_mpu_irqs[] = {
+       { .irq = 86 },
+       { .irq = -1 }
+};
 
-/* l4_core -> timer8 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer8 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer8_hwmod,
-       .clk            = "gpt8_ick",
-       .addr           = omap2xxx_timer8_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_dma_info omap2430_mmc2_sdma_reqs[] = {
+       { .name = "tx", .dma_req = 47 }, /* DMA_MMC2_TX */
+       { .name = "rx", .dma_req = 48 }, /* DMA_MMC2_RX */
+       { .dma_req = -1 }
 };
 
-/* timer8 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer8_slaves[] = {
-       &omap2430_l4_core__timer8,
+static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
+       { .role = "dbck", .clk = "mmchsdb2_fck" },
 };
 
-/* timer8 hwmod */
-static struct omap_hwmod omap2430_timer8_hwmod = {
-       .name           = "timer8",
-       .mpu_irqs       = omap2_timer8_mpu_irqs,
-       .main_clk       = "gpt8_fck",
+static struct omap_hwmod omap2430_mmc2_hwmod = {
+       .name           = "mmc2",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2430_mmc2_mpu_irqs,
+       .sdma_reqs      = omap2430_mmc2_sdma_reqs,
+       .opt_clks       = omap2430_mmc2_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc2_opt_clks),
+       .main_clk       = "mmchs2_fck",
        .prcm           = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT8_SHIFT,
                        .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
+                       .prcm_reg_id = 2,
+                       .module_bit  = OMAP2430_EN_MMCHS2_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap2430_timer8_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer8_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+       .class          = &omap2430_mmc_class,
 };
 
-/* timer9 */
-static struct omap_hwmod omap2430_timer9_hwmod;
+/*
+ * interfaces
+ */
 
-/* l4_core -> timer9 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer9 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer9_hwmod,
-       .clk            = "gpt9_ick",
-       .addr           = omap2xxx_timer9_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* L3 -> L4_CORE interface */
+/* l3_core -> usbhsotg  interface */
+static struct omap_hwmod_ocp_if omap2430_usbhsotg__l3 = {
+       .master         = &omap2430_usbhsotg_hwmod,
+       .slave          = &omap2xxx_l3_main_hwmod,
+       .clk            = "core_l3_ck",
+       .user           = OCP_USER_MPU,
 };
 
-/* timer9 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer9_slaves[] = {
-       &omap2430_l4_core__timer9,
+/* L4 CORE -> I2C1 interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__i2c1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_i2c1_hwmod,
+       .clk            = "i2c1_ick",
+       .addr           = omap2_i2c1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer9 hwmod */
-static struct omap_hwmod omap2430_timer9_hwmod = {
-       .name           = "timer9",
-       .mpu_irqs       = omap2_timer9_mpu_irqs,
-       .main_clk       = "gpt9_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT9_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2430_timer9_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer9_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
-};
-
-/* timer10 */
-static struct omap_hwmod omap2430_timer10_hwmod;
-
-/* l4_core -> timer10 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer10 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer10_hwmod,
-       .clk            = "gpt10_ick",
-       .addr           = omap2_timer10_addrs,
+/* L4 CORE -> I2C2 interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__i2c2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_i2c2_hwmod,
+       .clk            = "i2c2_ick",
+       .addr           = omap2_i2c2_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer10 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer10_slaves[] = {
-       &omap2430_l4_core__timer10,
-};
-
-/* timer10 hwmod */
-static struct omap_hwmod omap2430_timer10_hwmod = {
-       .name           = "timer10",
-       .mpu_irqs       = omap2_timer10_mpu_irqs,
-       .main_clk       = "gpt10_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT10_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap2430_usbhsotg_addrs[] = {
+       {
+               .pa_start       = OMAP243X_HS_BASE,
+               .pa_end         = OMAP243X_HS_BASE + SZ_4K - 1,
+               .flags          = ADDR_TYPE_RT
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2430_timer10_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer10_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+       { }
 };
 
-/* timer11 */
-static struct omap_hwmod omap2430_timer11_hwmod;
+/*  l4_core ->usbhsotg  interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__usbhsotg = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_usbhsotg_hwmod,
+       .clk            = "usb_l4_ick",
+       .addr           = omap2430_usbhsotg_addrs,
+       .user           = OCP_USER_MPU,
+};
 
-/* l4_core -> timer11 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer11 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer11_hwmod,
-       .clk            = "gpt11_ick",
-       .addr           = omap2_timer11_addrs,
+/* L4 CORE -> MMC1 interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__mmc1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_mmc1_hwmod,
+       .clk            = "mmchs1_ick",
+       .addr           = omap2430_mmc1_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer11 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer11_slaves[] = {
-       &omap2430_l4_core__timer11,
+/* L4 CORE -> MMC2 interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__mmc2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_mmc2_hwmod,
+       .clk            = "mmchs2_ick",
+       .addr           = omap2430_mmc2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer11 hwmod */
-static struct omap_hwmod omap2430_timer11_hwmod = {
-       .name           = "timer11",
-       .mpu_irqs       = omap2_timer11_mpu_irqs,
-       .main_clk       = "gpt11_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT11_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2430_timer11_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer11_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+/* l4 core -> mcspi3 interface */
+static struct omap_hwmod_ocp_if omap2430_l4_core__mcspi3 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_mcspi3_hwmod,
+       .clk            = "mcspi3_ick",
+       .addr           = omap2430_mcspi3_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer12 */
-static struct omap_hwmod omap2430_timer12_hwmod;
-
-/* l4_core -> timer12 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__timer12 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_timer12_hwmod,
-       .clk            = "gpt12_ick",
-       .addr           = omap2xxx_timer12_addrs,
+/* IVA2 <- L3 interface */
+static struct omap_hwmod_ocp_if omap2430_l3__iva = {
+       .master         = &omap2xxx_l3_main_hwmod,
+       .slave          = &omap2430_iva_hwmod,
+       .clk            = "core_l3_ck",
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* timer12 slave port */
-static struct omap_hwmod_ocp_if *omap2430_timer12_slaves[] = {
-       &omap2430_l4_core__timer12,
+static struct omap_hwmod_addr_space omap2430_timer1_addrs[] = {
+       {
+               .pa_start       = 0x49018000,
+               .pa_end         = 0x49018000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-/* timer12 hwmod */
-static struct omap_hwmod omap2430_timer12_hwmod = {
-       .name           = "timer12",
-       .mpu_irqs       = omap2xxx_timer12_mpu_irqs,
-       .main_clk       = "gpt12_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPT12_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
-               },
-       },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap2430_timer12_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_timer12_slaves),
-       .class          = &omap2xxx_timer_hwmod_class,
+/* l4_wkup -> timer1 */
+static struct omap_hwmod_ocp_if omap2430_l4_wkup__timer1 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_timer1_hwmod,
+       .clk            = "gpt1_ick",
+       .addr           = omap2430_timer1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
 /* l4_wkup -> wd_timer2 */
@@ -817,923 +641,146 @@ static struct omap_hwmod_addr_space omap2430_wd_timer2_addrs[] = {
 };
 
 static struct omap_hwmod_ocp_if omap2430_l4_wkup__wd_timer2 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_wd_timer2_hwmod,
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_wd_timer2_hwmod,
        .clk            = "mpu_wdt_ick",
        .addr           = omap2430_wd_timer2_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* wd_timer2 */
-static struct omap_hwmod_ocp_if *omap2430_wd_timer2_slaves[] = {
-       &omap2430_l4_wkup__wd_timer2,
-};
-
-static struct omap_hwmod omap2430_wd_timer2_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &omap2xxx_wd_timer_hwmod_class,
-       .main_clk       = "mpu_wdt_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
-               },
-       },
-       .slaves         = omap2430_wd_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_wd_timer2_slaves),
-};
-
-/* UART1 */
-
-static struct omap_hwmod_ocp_if *omap2430_uart1_slaves[] = {
-       &omap2_l4_core__uart1,
-};
-
-static struct omap_hwmod omap2430_uart1_hwmod = {
-       .name           = "uart1",
-       .mpu_irqs       = omap2_uart1_mpu_irqs,
-       .sdma_reqs      = omap2_uart1_sdma_reqs,
-       .main_clk       = "uart1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_UART1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
-               },
-       },
-       .slaves         = omap2430_uart1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_uart1_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* UART2 */
-
-static struct omap_hwmod_ocp_if *omap2430_uart2_slaves[] = {
-       &omap2_l4_core__uart2,
-};
-
-static struct omap_hwmod omap2430_uart2_hwmod = {
-       .name           = "uart2",
-       .mpu_irqs       = omap2_uart2_mpu_irqs,
-       .sdma_reqs      = omap2_uart2_sdma_reqs,
-       .main_clk       = "uart2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_UART2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
-               },
-       },
-       .slaves         = omap2430_uart2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_uart2_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* UART3 */
-
-static struct omap_hwmod_ocp_if *omap2430_uart3_slaves[] = {
-       &omap2_l4_core__uart3,
-};
-
-static struct omap_hwmod omap2430_uart3_hwmod = {
-       .name           = "uart3",
-       .mpu_irqs       = omap2_uart3_mpu_irqs,
-       .sdma_reqs      = omap2_uart3_sdma_reqs,
-       .main_clk       = "uart3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 2,
-                       .module_bit = OMAP24XX_EN_UART3_SHIFT,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
-               },
+/* l4_wkup -> gpio1 */
+static struct omap_hwmod_addr_space omap2430_gpio1_addr_space[] = {
+       {
+               .pa_start       = 0x4900C000,
+               .pa_end         = 0x4900C1ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap2430_uart3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_uart3_slaves),
-       .class          = &omap2_uart_class,
-};
-
-/* dss */
-/* dss master ports */
-static struct omap_hwmod_ocp_if *omap2430_dss_masters[] = {
-       &omap2430_dss__l3,
+       { }
 };
 
-/* l4_core -> dss */
-static struct omap_hwmod_ocp_if omap2430_l4_core__dss = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_dss_core_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_addrs,
+static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio1_hwmod,
+       .clk            = "gpios_ick",
+       .addr           = omap2430_gpio1_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss slave ports */
-static struct omap_hwmod_ocp_if *omap2430_dss_slaves[] = {
-       &omap2430_l4_core__dss,
-};
-
-static struct omap_hwmod_opt_clk dss_opt_clks[] = {
-       /*
-        * The DSS HW needs all DSS clocks enabled during reset. The dss_core
-        * driver does not use these clocks.
-        */
-       { .role = "tv_clk", .clk = "dss_54m_fck" },
-       { .role = "sys_clk", .clk = "dss2_fck" },
-};
-
-static struct omap_hwmod omap2430_dss_core_hwmod = {
-       .name           = "dss_core",
-       .class          = &omap2_dss_hwmod_class,
-       .main_clk       = "dss1_fck", /* instead of dss_fck */
-       .sdma_reqs      = omap2xxx_dss_sdma_chs,
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
-               },
+/* l4_wkup -> gpio2 */
+static struct omap_hwmod_addr_space omap2430_gpio2_addr_space[] = {
+       {
+               .pa_start       = 0x4900E000,
+               .pa_end         = 0x4900E1ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .opt_clks       = dss_opt_clks,
-       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
-       .slaves         = omap2430_dss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_dss_slaves),
-       .masters        = omap2430_dss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_dss_masters),
-       .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-};
-
-/* l4_core -> dss_dispc */
-static struct omap_hwmod_ocp_if omap2430_l4_core__dss_dispc = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_dss_dispc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_dispc_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       { }
 };
 
-/* dss_dispc slave ports */
-static struct omap_hwmod_ocp_if *omap2430_dss_dispc_slaves[] = {
-       &omap2430_l4_core__dss_dispc,
+static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio2_hwmod,
+       .clk            = "gpios_ick",
+       .addr           = omap2430_gpio2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap2430_dss_dispc_hwmod = {
-       .name           = "dss_dispc",
-       .class          = &omap2_dispc_hwmod_class,
-       .mpu_irqs       = omap2_dispc_irqs,
-       .main_clk       = "dss1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
-               },
+/* l4_wkup -> gpio3 */
+static struct omap_hwmod_addr_space omap2430_gpio3_addr_space[] = {
+       {
+               .pa_start       = 0x49010000,
+               .pa_end         = 0x490101ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap2430_dss_dispc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_dss_dispc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-       .dev_attr       = &omap2_3_dss_dispc_dev_attr
+       { }
 };
 
-/* l4_core -> dss_rfbi */
-static struct omap_hwmod_ocp_if omap2430_l4_core__dss_rfbi = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_dss_rfbi_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_rfbi_addrs,
+static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio3_hwmod,
+       .clk            = "gpios_ick",
+       .addr           = omap2430_gpio3_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss_rfbi slave ports */
-static struct omap_hwmod_ocp_if *omap2430_dss_rfbi_slaves[] = {
-       &omap2430_l4_core__dss_rfbi,
-};
-
-static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
-       { .role = "ick", .clk = "dss_ick" },
-};
-
-static struct omap_hwmod omap2430_dss_rfbi_hwmod = {
-       .name           = "dss_rfbi",
-       .class          = &omap2_rfbi_hwmod_class,
-       .main_clk       = "dss1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-               },
+/* l4_wkup -> gpio4 */
+static struct omap_hwmod_addr_space omap2430_gpio4_addr_space[] = {
+       {
+               .pa_start       = 0x49012000,
+               .pa_end         = 0x490121ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .opt_clks       = dss_rfbi_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
-       .slaves         = omap2430_dss_rfbi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_dss_rfbi_slaves),
-       .flags          = HWMOD_NO_IDLEST,
+       { }
 };
 
-/* l4_core -> dss_venc */
-static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_dss_venc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_venc_addrs,
+static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
+       .master         = &omap2xxx_l4_wkup_hwmod,
+       .slave          = &omap2xxx_gpio4_hwmod,
+       .clk            = "gpios_ick",
+       .addr           = omap2430_gpio4_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss_venc slave ports */
-static struct omap_hwmod_ocp_if *omap2430_dss_venc_slaves[] = {
-       &omap2430_l4_core__dss_venc,
-};
-
-static struct omap_hwmod omap2430_dss_venc_hwmod = {
-       .name           = "dss_venc",
-       .class          = &omap2_venc_hwmod_class,
-       .main_clk       = "dss_54m_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
-                       .module_offs = CORE_MOD,
-               },
+/* l4_core -> gpio5 */
+static struct omap_hwmod_addr_space omap2430_gpio5_addr_space[] = {
+       {
+               .pa_start       = 0x480B6000,
+               .pa_end         = 0x480B61ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap2430_dss_venc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_dss_venc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* I2C common */
-static struct omap_hwmod_class_sysconfig i2c_sysc = {
-       .rev_offs       = 0x00,
-       .sysc_offs      = 0x20,
-       .syss_offs      = 0x10,
-       .sysc_flags     = (SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-                          SYSS_HAS_RESET_STATUS),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+       { }
 };
 
-static struct omap_hwmod_class i2c_class = {
-       .name           = "i2c",
-       .sysc           = &i2c_sysc,
-       .rev            = OMAP_I2C_IP_VERSION_1,
-       .reset          = &omap_i2c_reset,
+static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_gpio5_hwmod,
+       .clk            = "gpio5_ick",
+       .addr           = omap2430_gpio5_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_i2c_dev_attr i2c_dev_attr = {
-       .fifo_depth     = 8, /* bytes */
-       .flags          = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
-                         OMAP_I2C_FLAG_BUS_SHIFT_2 |
-                         OMAP_I2C_FLAG_FORCE_19200_INT_CLK,
+/* dma_system -> L3 */
+static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
+       .master         = &omap2430_dma_system_hwmod,
+       .slave          = &omap2xxx_l3_main_hwmod,
+       .clk            = "core_l3_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* I2C1 */
-
-static struct omap_hwmod_ocp_if *omap2430_i2c1_slaves[] = {
-       &omap2430_l4_core__i2c1,
-};
-
-static struct omap_hwmod omap2430_i2c1_hwmod = {
-       .name           = "i2c1",
-       .flags          = HWMOD_16BIT_REG,
-       .mpu_irqs       = omap2_i2c1_mpu_irqs,
-       .sdma_reqs      = omap2_i2c1_sdma_reqs,
-       .main_clk       = "i2chs1_fck",
-       .prcm           = {
-               .omap2 = {
-                       /*
-                        * NOTE: The CM_FCLKEN* and CM_ICLKEN* for
-                        * I2CHS IP's do not follow the usual pattern.
-                        * prcm_reg_id alone cannot be used to program
-                        * the iclk and fclk. Needs to be handled using
-                        * additional flags when clk handling is moved
-                        * to hwmod framework.
-                        */
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_I2CHS1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP2430_ST_I2CHS1_SHIFT,
-               },
-       },
-       .slaves         = omap2430_i2c1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_i2c1_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c_dev_attr,
-};
-
-/* I2C2 */
-
-static struct omap_hwmod_ocp_if *omap2430_i2c2_slaves[] = {
-       &omap2430_l4_core__i2c2,
-};
-
-static struct omap_hwmod omap2430_i2c2_hwmod = {
-       .name           = "i2c2",
-       .flags          = HWMOD_16BIT_REG,
-       .mpu_irqs       = omap2_i2c2_mpu_irqs,
-       .sdma_reqs      = omap2_i2c2_sdma_reqs,
-       .main_clk       = "i2chs2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_I2CHS2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP2430_ST_I2CHS2_SHIFT,
-               },
-       },
-       .slaves         = omap2430_i2c2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_i2c2_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c_dev_attr,
-};
-
-/* l4_wkup -> gpio1 */
-static struct omap_hwmod_addr_space omap2430_gpio1_addr_space[] = {
-       {
-               .pa_start       = 0x4900C000,
-               .pa_end         = 0x4900C1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio1 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_gpio1_hwmod,
-       .clk            = "gpios_ick",
-       .addr           = omap2430_gpio1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio2 */
-static struct omap_hwmod_addr_space omap2430_gpio2_addr_space[] = {
-       {
-               .pa_start       = 0x4900E000,
-               .pa_end         = 0x4900E1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio2 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_gpio2_hwmod,
-       .clk            = "gpios_ick",
-       .addr           = omap2430_gpio2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio3 */
-static struct omap_hwmod_addr_space omap2430_gpio3_addr_space[] = {
-       {
-               .pa_start       = 0x49010000,
-               .pa_end         = 0x490101ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio3 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_gpio3_hwmod,
-       .clk            = "gpios_ick",
-       .addr           = omap2430_gpio3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup -> gpio4 */
-static struct omap_hwmod_addr_space omap2430_gpio4_addr_space[] = {
-       {
-               .pa_start       = 0x49012000,
-               .pa_end         = 0x490121ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap2430_l4_wkup__gpio4 = {
-       .master         = &omap2430_l4_wkup_hwmod,
-       .slave          = &omap2430_gpio4_hwmod,
-       .clk            = "gpios_ick",
-       .addr           = omap2430_gpio4_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_core -> gpio5 */
-static struct omap_hwmod_addr_space omap2430_gpio5_addr_space[] = {
-       {
-               .pa_start       = 0x480B6000,
-               .pa_end         = 0x480B61ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap2430_l4_core__gpio5 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_gpio5_hwmod,
-       .clk            = "gpio5_ick",
-       .addr           = omap2430_gpio5_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio dev_attr */
-static struct omap_gpio_dev_attr gpio_dev_attr = {
-       .bank_width = 32,
-       .dbck_flag = false,
-};
-
-/* gpio1 */
-static struct omap_hwmod_ocp_if *omap2430_gpio1_slaves[] = {
-       &omap2430_l4_wkup__gpio1,
-};
-
-static struct omap_hwmod omap2430_gpio1_hwmod = {
-       .name           = "gpio1",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio1_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_EN_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2430_gpio1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_gpio1_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio2 */
-static struct omap_hwmod_ocp_if *omap2430_gpio2_slaves[] = {
-       &omap2430_l4_wkup__gpio2,
-};
-
-static struct omap_hwmod omap2430_gpio2_hwmod = {
-       .name           = "gpio2",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio2_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2430_gpio2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_gpio2_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio3 */
-static struct omap_hwmod_ocp_if *omap2430_gpio3_slaves[] = {
-       &omap2430_l4_wkup__gpio3,
-};
-
-static struct omap_hwmod omap2430_gpio3_hwmod = {
-       .name           = "gpio3",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio3_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2430_gpio3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_gpio3_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio4 */
-static struct omap_hwmod_ocp_if *omap2430_gpio4_slaves[] = {
-       &omap2430_l4_wkup__gpio4,
-};
-
-static struct omap_hwmod omap2430_gpio4_hwmod = {
-       .name           = "gpio4",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio4_irqs,
-       .main_clk       = "gpios_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
-               },
-       },
-       .slaves         = omap2430_gpio4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_gpio4_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio5 */
-static struct omap_hwmod_irq_info omap243x_gpio5_irqs[] = {
-       { .irq = 33 }, /* INT_24XX_GPIO_BANK5 */
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_ocp_if *omap2430_gpio5_slaves[] = {
-       &omap2430_l4_core__gpio5,
-};
-
-static struct omap_hwmod omap2430_gpio5_hwmod = {
-       .name           = "gpio5",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap243x_gpio5_irqs,
-       .main_clk       = "gpio5_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 2,
-                       .module_bit = OMAP2430_EN_GPIO5_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_GPIO5_SHIFT,
-               },
-       },
-       .slaves         = omap2430_gpio5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_gpio5_slaves),
-       .class          = &omap2xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* dma attributes */
-static struct omap_dma_dev_attr dma_dev_attr = {
-       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
-                               IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
-       .lch_count = 32,
-};
-
-/* dma_system -> L3 */
-static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
-       .master         = &omap2430_dma_system_hwmod,
-       .slave          = &omap2430_l3_main_hwmod,
-       .clk            = "core_l3_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dma_system master ports */
-static struct omap_hwmod_ocp_if *omap2430_dma_system_masters[] = {
-       &omap2430_dma_system__l3,
-};
-
-/* l4_core -> dma_system */
-static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_dma_system_hwmod,
-       .clk            = "sdma_ick",
-       .addr           = omap2_dma_system_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dma_system slave ports */
-static struct omap_hwmod_ocp_if *omap2430_dma_system_slaves[] = {
-       &omap2430_l4_core__dma_system,
-};
-
-static struct omap_hwmod omap2430_dma_system_hwmod = {
-       .name           = "dma",
-       .class          = &omap2xxx_dma_hwmod_class,
-       .mpu_irqs       = omap2_dma_system_irqs,
-       .main_clk       = "core_l3_ck",
-       .slaves         = omap2430_dma_system_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_dma_system_slaves),
-       .masters        = omap2430_dma_system_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_dma_system_masters),
-       .dev_attr       = &dma_dev_attr,
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* mailbox */
-static struct omap_hwmod omap2430_mailbox_hwmod;
-static struct omap_hwmod_irq_info omap2430_mailbox_irqs[] = {
-       { .irq = 26 },
-       { .irq = -1 }
+/* l4_core -> dma_system */
+static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_dma_system_hwmod,
+       .clk            = "sdma_ick",
+       .addr           = omap2_dma_system_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
 /* l4_core -> mailbox */
 static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = {
-       .master         = &omap2430_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2430_mailbox_hwmod,
-       .addr           = omap2_mailbox_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mailbox slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mailbox_slaves[] = {
-       &omap2430_l4_core__mailbox,
-};
-
-static struct omap_hwmod omap2430_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &omap2xxx_mailbox_hwmod_class,
-       .mpu_irqs       = omap2430_mailbox_irqs,
-       .main_clk       = "mailboxes_ick",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MAILBOXES_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MAILBOXES_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mailbox_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mailbox_slaves),
-};
-
-/* mcspi1 */
-static struct omap_hwmod_ocp_if *omap2430_mcspi1_slaves[] = {
-       &omap2430_l4_core__mcspi1,
-};
-
-static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
-       .num_chipselect = 4,
-};
-
-static struct omap_hwmod omap2430_mcspi1_hwmod = {
-       .name           = "mcspi1_hwmod",
-       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi1_sdma_reqs,
-       .main_clk       = "mcspi1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcspi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcspi1_slaves),
-       .class          = &omap2xxx_mcspi_class,
-       .dev_attr       = &omap_mcspi1_dev_attr,
-};
-
-/* mcspi2 */
-static struct omap_hwmod_ocp_if *omap2430_mcspi2_slaves[] = {
-       &omap2430_l4_core__mcspi2,
-};
-
-static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
-       .num_chipselect = 2,
-};
-
-static struct omap_hwmod omap2430_mcspi2_hwmod = {
-       .name           = "mcspi2_hwmod",
-       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi2_sdma_reqs,
-       .main_clk       = "mcspi2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcspi2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcspi2_slaves),
-       .class          = &omap2xxx_mcspi_class,
-       .dev_attr       = &omap_mcspi2_dev_attr,
-};
-
-/* mcspi3 */
-static struct omap_hwmod_irq_info omap2430_mcspi3_mpu_irqs[] = {
-       { .irq = 91 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_dma_info omap2430_mcspi3_sdma_reqs[] = {
-       { .name = "tx0", .dma_req = 15 }, /* DMA_SPI3_TX0 */
-       { .name = "rx0", .dma_req = 16 }, /* DMA_SPI3_RX0 */
-       { .name = "tx1", .dma_req = 23 }, /* DMA_SPI3_TX1 */
-       { .name = "rx1", .dma_req = 24 }, /* DMA_SPI3_RX1 */
-       { .dma_req = -1 }
-};
-
-static struct omap_hwmod_ocp_if *omap2430_mcspi3_slaves[] = {
-       &omap2430_l4_core__mcspi3,
-};
-
-static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
-       .num_chipselect = 2,
-};
-
-static struct omap_hwmod omap2430_mcspi3_hwmod = {
-       .name           = "mcspi3_hwmod",
-       .mpu_irqs       = omap2430_mcspi3_mpu_irqs,
-       .sdma_reqs      = omap2430_mcspi3_sdma_reqs,
-       .main_clk       = "mcspi3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 2,
-                       .module_bit = OMAP2430_EN_MCSPI3_SHIFT,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MCSPI3_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcspi3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcspi3_slaves),
-       .class          = &omap2xxx_mcspi_class,
-       .dev_attr       = &omap_mcspi3_dev_attr,
-};
-
-/*
- * usbhsotg
- */
-static struct omap_hwmod_class_sysconfig omap2430_usbhsotg_sysc = {
-       .rev_offs       = 0x0400,
-       .sysc_offs      = 0x0404,
-       .syss_offs      = 0x0408,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
-                         SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                         SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                         MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class usbotg_class = {
-       .name = "usbotg",
-       .sysc = &omap2430_usbhsotg_sysc,
-};
-
-/* usb_otg_hs */
-static struct omap_hwmod_irq_info omap2430_usbhsotg_mpu_irqs[] = {
-
-       { .name = "mc", .irq = 92 },
-       { .name = "dma", .irq = 93 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod omap2430_usbhsotg_hwmod = {
-       .name           = "usb_otg_hs",
-       .mpu_irqs       = omap2430_usbhsotg_mpu_irqs,
-       .main_clk       = "usbhs_ick",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_USBHS_MASK,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP2430_ST_USBHS_SHIFT,
-               },
-       },
-       .masters        = omap2430_usbhsotg_masters,
-       .masters_cnt    = ARRAY_SIZE(omap2430_usbhsotg_masters),
-       .slaves         = omap2430_usbhsotg_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_usbhsotg_slaves),
-       .class          = &usbotg_class,
-       /*
-        * Erratum ID: i479  idle_req / idle_ack mechanism potentially
-        * broken when autoidle is enabled
-        * workaround is to disable the autoidle bit at module level.
-        */
-       .flags          = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
-                               | HWMOD_SWSUP_MSTANDBY,
-};
-
-/*
- * 'mcbsp' class
- * multi channel buffered serial port controller
- */
-
-static struct omap_hwmod_class_sysconfig omap2430_mcbsp_sysc = {
-       .rev_offs       = 0x007C,
-       .sysc_offs      = 0x008C,
-       .sysc_flags     = (SYSC_HAS_SOFTRESET),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2430_mcbsp_hwmod_class = {
-       .name = "mcbsp",
-       .sysc = &omap2430_mcbsp_sysc,
-       .rev  = MCBSP_CONFIG_TYPE2,
-};
-
-/* mcbsp1 */
-static struct omap_hwmod_irq_info omap2430_mcbsp1_irqs[] = {
-       { .name = "tx",         .irq = 59 },
-       { .name = "rx",         .irq = 60 },
-       { .name = "ovr",        .irq = 61 },
-       { .name = "common",     .irq = 64 },
-       { .irq = -1 }
-};
-
-/* l4_core -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
-       .master         = &omap2430_l4_core_hwmod,
-       .slave          = &omap2430_mcbsp1_hwmod,
-       .clk            = "mcbsp1_ick",
-       .addr           = omap2_mcbsp1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcbsp1 slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mcbsp1_slaves[] = {
-       &omap2430_l4_core__mcbsp1,
-};
-
-static struct omap_hwmod omap2430_mcbsp1_hwmod = {
-       .name           = "mcbsp1",
-       .class          = &omap2430_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2430_mcbsp1_irqs,
-       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
-       .main_clk       = "mcbsp1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCBSP1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCBSP1_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcbsp1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcbsp1_slaves),
+       .addr           = omap2_mailbox_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp2 */
-static struct omap_hwmod_irq_info omap2430_mcbsp2_irqs[] = {
-       { .name = "tx",         .irq = 62 },
-       { .name = "rx",         .irq = 63 },
-       { .name = "common",     .irq = 16 },
-       { .irq = -1 }
+/* l4_core -> mcbsp1 */
+static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2430_mcbsp1_hwmod,
+       .clk            = "mcbsp1_ick",
+       .addr           = omap2_mcbsp1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
 /* l4_core -> mcbsp2 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
-       .master         = &omap2430_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2430_mcbsp2_hwmod,
        .clk            = "mcbsp2_ick",
        .addr           = omap2xxx_mcbsp2_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp2 slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mcbsp2_slaves[] = {
-       &omap2430_l4_core__mcbsp2,
-};
-
-static struct omap_hwmod omap2430_mcbsp2_hwmod = {
-       .name           = "mcbsp2",
-       .class          = &omap2430_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2430_mcbsp2_irqs,
-       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
-       .main_clk       = "mcbsp2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP24XX_EN_MCBSP2_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP24XX_ST_MCBSP2_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcbsp2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcbsp2_slaves),
-};
-
-/* mcbsp3 */
-static struct omap_hwmod_irq_info omap2430_mcbsp3_irqs[] = {
-       { .name = "tx",         .irq = 89 },
-       { .name = "rx",         .irq = 90 },
-       { .name = "common",     .irq = 17 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_addr_space omap2430_mcbsp3_addrs[] = {
        {
                .name           = "mpu",
@@ -1746,51 +793,13 @@ static struct omap_hwmod_addr_space omap2430_mcbsp3_addrs[] = {
 
 /* l4_core -> mcbsp3 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
-       .master         = &omap2430_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2430_mcbsp3_hwmod,
        .clk            = "mcbsp3_ick",
        .addr           = omap2430_mcbsp3_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp3 slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mcbsp3_slaves[] = {
-       &omap2430_l4_core__mcbsp3,
-};
-
-static struct omap_hwmod omap2430_mcbsp3_hwmod = {
-       .name           = "mcbsp3",
-       .class          = &omap2430_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2430_mcbsp3_irqs,
-       .sdma_reqs      = omap2_mcbsp3_sdma_reqs,
-       .main_clk       = "mcbsp3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_MCBSP3_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MCBSP3_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcbsp3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcbsp3_slaves),
-};
-
-/* mcbsp4 */
-static struct omap_hwmod_irq_info omap2430_mcbsp4_irqs[] = {
-       { .name = "tx",         .irq = 54 },
-       { .name = "rx",         .irq = 55 },
-       { .name = "common",     .irq = 18 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_dma_info omap2430_mcbsp4_sdma_chs[] = {
-       { .name = "rx", .dma_req = 20 },
-       { .name = "tx", .dma_req = 19 },
-       { .dma_req = -1 }
-};
-
 static struct omap_hwmod_addr_space omap2430_mcbsp4_addrs[] = {
        {
                .name           = "mpu",
@@ -1803,51 +812,13 @@ static struct omap_hwmod_addr_space omap2430_mcbsp4_addrs[] = {
 
 /* l4_core -> mcbsp4 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
-       .master         = &omap2430_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2430_mcbsp4_hwmod,
        .clk            = "mcbsp4_ick",
        .addr           = omap2430_mcbsp4_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp4 slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mcbsp4_slaves[] = {
-       &omap2430_l4_core__mcbsp4,
-};
-
-static struct omap_hwmod omap2430_mcbsp4_hwmod = {
-       .name           = "mcbsp4",
-       .class          = &omap2430_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2430_mcbsp4_irqs,
-       .sdma_reqs      = omap2430_mcbsp4_sdma_chs,
-       .main_clk       = "mcbsp4_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_MCBSP4_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MCBSP4_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcbsp4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcbsp4_slaves),
-};
-
-/* mcbsp5 */
-static struct omap_hwmod_irq_info omap2430_mcbsp5_irqs[] = {
-       { .name = "tx",         .irq = 81 },
-       { .name = "rx",         .irq = 82 },
-       { .name = "common",     .irq = 19 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_dma_info omap2430_mcbsp5_sdma_chs[] = {
-       { .name = "rx", .dma_req = 22 },
-       { .name = "tx", .dma_req = 21 },
-       { .dma_req = -1 }
-};
-
 static struct omap_hwmod_addr_space omap2430_mcbsp5_addrs[] = {
        {
                .name           = "mpu",
@@ -1860,213 +831,65 @@ static struct omap_hwmod_addr_space omap2430_mcbsp5_addrs[] = {
 
 /* l4_core -> mcbsp5 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
-       .master         = &omap2430_l4_core_hwmod,
+       .master         = &omap2xxx_l4_core_hwmod,
        .slave          = &omap2430_mcbsp5_hwmod,
        .clk            = "mcbsp5_ick",
        .addr           = omap2430_mcbsp5_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp5 slave ports */
-static struct omap_hwmod_ocp_if *omap2430_mcbsp5_slaves[] = {
-       &omap2430_l4_core__mcbsp5,
-};
-
-static struct omap_hwmod omap2430_mcbsp5_hwmod = {
-       .name           = "mcbsp5",
-       .class          = &omap2430_mcbsp_hwmod_class,
-       .mpu_irqs       = omap2430_mcbsp5_irqs,
-       .sdma_reqs      = omap2430_mcbsp5_sdma_chs,
-       .main_clk       = "mcbsp5_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP2430_EN_MCBSP5_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MCBSP5_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mcbsp5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mcbsp5_slaves),
-};
-
-/* MMC/SD/SDIO common */
-
-static struct omap_hwmod_class_sysconfig omap2430_mmc_sysc = {
-       .rev_offs       = 0x1fc,
-       .sysc_offs      = 0x10,
-       .syss_offs      = 0x14,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap2430_mmc_class = {
-       .name = "mmc",
-       .sysc = &omap2430_mmc_sysc,
-};
-
-/* MMC/SD/SDIO1 */
-
-static struct omap_hwmod_irq_info omap2430_mmc1_mpu_irqs[] = {
-       { .irq = 83 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_dma_info omap2430_mmc1_sdma_reqs[] = {
-       { .name = "tx", .dma_req = 61 }, /* DMA_MMC1_TX */
-       { .name = "rx", .dma_req = 62 }, /* DMA_MMC1_RX */
-       { .dma_req = -1 }
-};
-
-static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
-       { .role = "dbck", .clk = "mmchsdb1_fck" },
-};
-
-static struct omap_hwmod_ocp_if *omap2430_mmc1_slaves[] = {
+static struct omap_hwmod_ocp_if *omap2430_hwmod_ocp_ifs[] __initdata = {
+       &omap2xxx_l3_main__l4_core,
+       &omap2xxx_mpu__l3_main,
+       &omap2xxx_dss__l3,
+       &omap2430_usbhsotg__l3,
+       &omap2430_l4_core__i2c1,
+       &omap2430_l4_core__i2c2,
+       &omap2xxx_l4_core__l4_wkup,
+       &omap2_l4_core__uart1,
+       &omap2_l4_core__uart2,
+       &omap2_l4_core__uart3,
+       &omap2430_l4_core__usbhsotg,
        &omap2430_l4_core__mmc1,
-};
-
-static struct omap_mmc_dev_attr mmc1_dev_attr = {
-       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
-};
-
-static struct omap_hwmod omap2430_mmc1_hwmod = {
-       .name           = "mmc1",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2430_mmc1_mpu_irqs,
-       .sdma_reqs      = omap2430_mmc1_sdma_reqs,
-       .opt_clks       = omap2430_mmc1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc1_opt_clks),
-       .main_clk       = "mmchs1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 2,
-                       .module_bit  = OMAP2430_EN_MMCHS1_SHIFT,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MMCHS1_SHIFT,
-               },
-       },
-       .dev_attr       = &mmc1_dev_attr,
-       .slaves         = omap2430_mmc1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mmc1_slaves),
-       .class          = &omap2430_mmc_class,
-};
-
-/* MMC/SD/SDIO2 */
-
-static struct omap_hwmod_irq_info omap2430_mmc2_mpu_irqs[] = {
-       { .irq = 86 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_dma_info omap2430_mmc2_sdma_reqs[] = {
-       { .name = "tx", .dma_req = 47 }, /* DMA_MMC2_TX */
-       { .name = "rx", .dma_req = 48 }, /* DMA_MMC2_RX */
-       { .dma_req = -1 }
-};
-
-static struct omap_hwmod_opt_clk omap2430_mmc2_opt_clks[] = {
-       { .role = "dbck", .clk = "mmchsdb2_fck" },
-};
-
-static struct omap_hwmod_ocp_if *omap2430_mmc2_slaves[] = {
        &omap2430_l4_core__mmc2,
-};
-
-static struct omap_hwmod omap2430_mmc2_hwmod = {
-       .name           = "mmc2",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2430_mmc2_mpu_irqs,
-       .sdma_reqs      = omap2430_mmc2_sdma_reqs,
-       .opt_clks       = omap2430_mmc2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap2430_mmc2_opt_clks),
-       .main_clk       = "mmchs2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 2,
-                       .module_bit  = OMAP2430_EN_MMCHS2_SHIFT,
-                       .idlest_reg_id = 2,
-                       .idlest_idle_bit = OMAP2430_ST_MMCHS2_SHIFT,
-               },
-       },
-       .slaves         = omap2430_mmc2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap2430_mmc2_slaves),
-       .class          = &omap2430_mmc_class,
-};
-
-static __initdata struct omap_hwmod *omap2430_hwmods[] = {
-       &omap2430_l3_main_hwmod,
-       &omap2430_l4_core_hwmod,
-       &omap2430_l4_wkup_hwmod,
-       &omap2430_mpu_hwmod,
-       &omap2430_iva_hwmod,
-
-       &omap2430_timer1_hwmod,
-       &omap2430_timer2_hwmod,
-       &omap2430_timer3_hwmod,
-       &omap2430_timer4_hwmod,
-       &omap2430_timer5_hwmod,
-       &omap2430_timer6_hwmod,
-       &omap2430_timer7_hwmod,
-       &omap2430_timer8_hwmod,
-       &omap2430_timer9_hwmod,
-       &omap2430_timer10_hwmod,
-       &omap2430_timer11_hwmod,
-       &omap2430_timer12_hwmod,
-
-       &omap2430_wd_timer2_hwmod,
-       &omap2430_uart1_hwmod,
-       &omap2430_uart2_hwmod,
-       &omap2430_uart3_hwmod,
-       /* dss class */
-       &omap2430_dss_core_hwmod,
-       &omap2430_dss_dispc_hwmod,
-       &omap2430_dss_rfbi_hwmod,
-       &omap2430_dss_venc_hwmod,
-       /* i2c class */
-       &omap2430_i2c1_hwmod,
-       &omap2430_i2c2_hwmod,
-       &omap2430_mmc1_hwmod,
-       &omap2430_mmc2_hwmod,
-
-       /* gpio class */
-       &omap2430_gpio1_hwmod,
-       &omap2430_gpio2_hwmod,
-       &omap2430_gpio3_hwmod,
-       &omap2430_gpio4_hwmod,
-       &omap2430_gpio5_hwmod,
-
-       /* dma_system class*/
-       &omap2430_dma_system_hwmod,
-
-       /* mcbsp class */
-       &omap2430_mcbsp1_hwmod,
-       &omap2430_mcbsp2_hwmod,
-       &omap2430_mcbsp3_hwmod,
-       &omap2430_mcbsp4_hwmod,
-       &omap2430_mcbsp5_hwmod,
-
-       /* mailbox class */
-       &omap2430_mailbox_hwmod,
-
-       /* mcspi class */
-       &omap2430_mcspi1_hwmod,
-       &omap2430_mcspi2_hwmod,
-       &omap2430_mcspi3_hwmod,
-
-       /* usbotg class*/
-       &omap2430_usbhsotg_hwmod,
-
+       &omap2xxx_l4_core__mcspi1,
+       &omap2xxx_l4_core__mcspi2,
+       &omap2430_l4_core__mcspi3,
+       &omap2430_l3__iva,
+       &omap2430_l4_wkup__timer1,
+       &omap2xxx_l4_core__timer2,
+       &omap2xxx_l4_core__timer3,
+       &omap2xxx_l4_core__timer4,
+       &omap2xxx_l4_core__timer5,
+       &omap2xxx_l4_core__timer6,
+       &omap2xxx_l4_core__timer7,
+       &omap2xxx_l4_core__timer8,
+       &omap2xxx_l4_core__timer9,
+       &omap2xxx_l4_core__timer10,
+       &omap2xxx_l4_core__timer11,
+       &omap2xxx_l4_core__timer12,
+       &omap2430_l4_wkup__wd_timer2,
+       &omap2xxx_l4_core__dss,
+       &omap2xxx_l4_core__dss_dispc,
+       &omap2xxx_l4_core__dss_rfbi,
+       &omap2xxx_l4_core__dss_venc,
+       &omap2430_l4_wkup__gpio1,
+       &omap2430_l4_wkup__gpio2,
+       &omap2430_l4_wkup__gpio3,
+       &omap2430_l4_wkup__gpio4,
+       &omap2430_l4_core__gpio5,
+       &omap2430_dma_system__l3,
+       &omap2430_l4_core__dma_system,
+       &omap2430_l4_core__mailbox,
+       &omap2430_l4_core__mcbsp1,
+       &omap2430_l4_core__mcbsp2,
+       &omap2430_l4_core__mcbsp3,
+       &omap2430_l4_core__mcbsp4,
+       &omap2430_l4_core__mcbsp5,
        NULL,
 };
 
 int __init omap2430_hwmod_init(void)
 {
-       return omap_hwmod_register(omap2430_hwmods);
+       return omap_hwmod_register_links(omap2430_hwmod_ocp_ifs);
 }
index 4f3547c2a49eb08dd1280274fb2d3f1cb0aeb740..5178e40e84f941cf806dcebdc0be4fc197e9bd60 100644 (file)
 
 #include <plat/omap_hwmod.h>
 #include <plat/serial.h>
+#include <plat/l3_2xxx.h>
+#include <plat/l4_2xxx.h>
 
 #include "omap_hwmod_common_data.h"
 
-struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[] = {
+static struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[] = {
        {
                .pa_start       = OMAP2_UART1_BASE,
                .pa_end         = OMAP2_UART1_BASE + SZ_8K - 1,
@@ -27,7 +29,7 @@ struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[] = {
+static struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[] = {
        {
                .pa_start       = OMAP2_UART2_BASE,
                .pa_end         = OMAP2_UART2_BASE + SZ_1K - 1,
@@ -36,7 +38,7 @@ struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_uart3_addr_space[] = {
+static struct omap_hwmod_addr_space omap2xxx_uart3_addr_space[] = {
        {
                .pa_start       = OMAP2_UART3_BASE,
                .pa_end         = OMAP2_UART3_BASE + SZ_1K - 1,
@@ -45,7 +47,7 @@ struct omap_hwmod_addr_space omap2xxx_uart3_addr_space[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer2_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer2_addrs[] = {
        {
                .pa_start       = 0x4802a000,
                .pa_end         = 0x4802a000 + SZ_1K - 1,
@@ -54,7 +56,7 @@ struct omap_hwmod_addr_space omap2xxx_timer2_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer3_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer3_addrs[] = {
        {
                .pa_start       = 0x48078000,
                .pa_end         = 0x48078000 + SZ_1K - 1,
@@ -63,7 +65,7 @@ struct omap_hwmod_addr_space omap2xxx_timer3_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer4_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer4_addrs[] = {
        {
                .pa_start       = 0x4807a000,
                .pa_end         = 0x4807a000 + SZ_1K - 1,
@@ -72,7 +74,7 @@ struct omap_hwmod_addr_space omap2xxx_timer4_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer5_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer5_addrs[] = {
        {
                .pa_start       = 0x4807c000,
                .pa_end         = 0x4807c000 + SZ_1K - 1,
@@ -81,7 +83,7 @@ struct omap_hwmod_addr_space omap2xxx_timer5_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer6_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer6_addrs[] = {
        {
                .pa_start       = 0x4807e000,
                .pa_end         = 0x4807e000 + SZ_1K - 1,
@@ -90,7 +92,7 @@ struct omap_hwmod_addr_space omap2xxx_timer6_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer7_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer7_addrs[] = {
        {
                .pa_start       = 0x48080000,
                .pa_end         = 0x48080000 + SZ_1K - 1,
@@ -99,7 +101,7 @@ struct omap_hwmod_addr_space omap2xxx_timer7_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer8_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer8_addrs[] = {
        {
                .pa_start       = 0x48082000,
                .pa_end         = 0x48082000 + SZ_1K - 1,
@@ -108,7 +110,7 @@ struct omap_hwmod_addr_space omap2xxx_timer8_addrs[] = {
        { }
 };
 
-struct omap_hwmod_addr_space omap2xxx_timer9_addrs[] = {
+static struct omap_hwmod_addr_space omap2xxx_timer9_addrs[] = {
        {
                .pa_start       = 0x48084000,
                .pa_end         = 0x48084000 + SZ_1K - 1,
@@ -127,4 +129,246 @@ struct omap_hwmod_addr_space omap2xxx_mcbsp2_addrs[] = {
        { }
 };
 
+/*
+ * Common interconnect data
+ */
+
+/* L3 -> L4_CORE interface */
+struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core = {
+       .master = &omap2xxx_l3_main_hwmod,
+       .slave  = &omap2xxx_l4_core_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* MPU -> L3 interface */
+struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main = {
+       .master = &omap2xxx_mpu_hwmod,
+       .slave  = &omap2xxx_l3_main_hwmod,
+       .user   = OCP_USER_MPU,
+};
+
+/* DSS -> l3 */
+struct omap_hwmod_ocp_if omap2xxx_dss__l3 = {
+       .master         = &omap2xxx_dss_core_hwmod,
+       .slave          = &omap2xxx_l3_main_hwmod,
+       .fw = {
+               .omap2 = {
+                       .l3_perm_bit  = OMAP2_L3_CORE_FW_CONNID_DSS,
+                       .flags  = OMAP_FIREWALL_L3,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* L4_CORE -> L4_WKUP interface */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup = {
+       .master = &omap2xxx_l4_core_hwmod,
+       .slave  = &omap2xxx_l4_wkup_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* L4 CORE -> UART1 interface */
+struct omap_hwmod_ocp_if omap2_l4_core__uart1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_uart1_hwmod,
+       .clk            = "uart1_ick",
+       .addr           = omap2xxx_uart1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* L4 CORE -> UART2 interface */
+struct omap_hwmod_ocp_if omap2_l4_core__uart2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_uart2_hwmod,
+       .clk            = "uart2_ick",
+       .addr           = omap2xxx_uart2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* L4 PER -> UART3 interface */
+struct omap_hwmod_ocp_if omap2_l4_core__uart3 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_uart3_hwmod,
+       .clk            = "uart3_ick",
+       .addr           = omap2xxx_uart3_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4 core -> mcspi1 interface */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_mcspi1_hwmod,
+       .clk            = "mcspi1_ick",
+       .addr           = omap2_mcspi1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4 core -> mcspi2 interface */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_mcspi2_hwmod,
+       .clk            = "mcspi2_ick",
+       .addr           = omap2_mcspi2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer2 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer2 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer2_hwmod,
+       .clk            = "gpt2_ick",
+       .addr           = omap2xxx_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer3 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer3_hwmod,
+       .clk            = "gpt3_ick",
+       .addr           = omap2xxx_timer3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer4 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer4_hwmod,
+       .clk            = "gpt4_ick",
+       .addr           = omap2xxx_timer4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer5 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer5_hwmod,
+       .clk            = "gpt5_ick",
+       .addr           = omap2xxx_timer5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer6 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer6_hwmod,
+       .clk            = "gpt6_ick",
+       .addr           = omap2xxx_timer6_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer7 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer7_hwmod,
+       .clk            = "gpt7_ick",
+       .addr           = omap2xxx_timer7_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer8 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer8_hwmod,
+       .clk            = "gpt8_ick",
+       .addr           = omap2xxx_timer8_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer9 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer9_hwmod,
+       .clk            = "gpt9_ick",
+       .addr           = omap2xxx_timer9_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer10 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer10_hwmod,
+       .clk            = "gpt10_ick",
+       .addr           = omap2_timer10_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer11 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer11_hwmod,
+       .clk            = "gpt11_ick",
+       .addr           = omap2_timer11_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> timer12 */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12 = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_timer12_hwmod,
+       .clk            = "gpt12_ick",
+       .addr           = omap2xxx_timer12_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> dss */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__dss = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_dss_core_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> dss_dispc */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_dss_dispc_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_dispc_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_DISPC_REGION,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> dss_rfbi */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_dss_rfbi_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_rfbi_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_CORE_REGION,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_core -> dss_venc */
+struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc = {
+       .master         = &omap2xxx_l4_core_hwmod,
+       .slave          = &omap2xxx_dss_venc_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_venc_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP2420_L4_CORE_FW_DSS_VENC_REGION,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .flags          = OCPIF_SWSUP_IDLE,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
index 2a6729741b069c2fd7633bbfb14dab1432c471d7..45aaa07e3025b4684d7b27767538616fd7045148 100644 (file)
@@ -10,6 +10,7 @@
  */
 #include <plat/omap_hwmod.h>
 #include <plat/serial.h>
+#include <plat/gpio.h>
 #include <plat/dma.h>
 #include <plat/dmtimer.h>
 #include <plat/mcspi.h>
@@ -17,6 +18,8 @@
 #include <mach/irqs.h>
 
 #include "omap_hwmod_common_data.h"
+#include "cm-regbits-24xx.h"
+#include "prm-regbits-24xx.h"
 #include "wd_timer.h"
 
 struct omap_hwmod_irq_info omap2xxx_timer12_mpu_irqs[] = {
@@ -170,3 +173,562 @@ struct omap_hwmod_class omap2xxx_mcspi_class = {
        .sysc   = &omap2xxx_mcspi_sysc,
        .rev    = OMAP2_MCSPI_REV,
 };
+
+/*
+ * IP blocks
+ */
+
+/* L3 */
+struct omap_hwmod omap2xxx_l3_main_hwmod = {
+       .name           = "l3_main",
+       .class          = &l3_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
+};
+
+/* L4 CORE */
+struct omap_hwmod omap2xxx_l4_core_hwmod = {
+       .name           = "l4_core",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
+};
+
+/* L4 WKUP */
+struct omap_hwmod omap2xxx_l4_wkup_hwmod = {
+       .name           = "l4_wkup",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
+};
+
+/* MPU */
+struct omap_hwmod omap2xxx_mpu_hwmod = {
+       .name           = "mpu",
+       .class          = &mpu_hwmod_class,
+       .main_clk       = "mpu_ck",
+};
+
+/* IVA2 */
+struct omap_hwmod omap2xxx_iva_hwmod = {
+       .name           = "iva",
+       .class          = &iva_hwmod_class,
+};
+
+/* always-on timers dev attribute */
+static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
+       .timer_capability       = OMAP_TIMER_ALWON,
+};
+
+/* pwm timers dev attribute */
+static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
+       .timer_capability       = OMAP_TIMER_HAS_PWM,
+};
+
+/* timer1 */
+
+struct omap_hwmod omap2xxx_timer1_hwmod = {
+       .name           = "timer1",
+       .mpu_irqs       = omap2_timer1_mpu_irqs,
+       .main_clk       = "gpt1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT1_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT1_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer2 */
+
+struct omap_hwmod omap2xxx_timer2_hwmod = {
+       .name           = "timer2",
+       .mpu_irqs       = omap2_timer2_mpu_irqs,
+       .main_clk       = "gpt2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT2_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT2_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer3 */
+
+struct omap_hwmod omap2xxx_timer3_hwmod = {
+       .name           = "timer3",
+       .mpu_irqs       = omap2_timer3_mpu_irqs,
+       .main_clk       = "gpt3_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT3_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT3_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer4 */
+
+struct omap_hwmod omap2xxx_timer4_hwmod = {
+       .name           = "timer4",
+       .mpu_irqs       = omap2_timer4_mpu_irqs,
+       .main_clk       = "gpt4_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT4_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT4_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer5 */
+
+struct omap_hwmod omap2xxx_timer5_hwmod = {
+       .name           = "timer5",
+       .mpu_irqs       = omap2_timer5_mpu_irqs,
+       .main_clk       = "gpt5_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT5_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT5_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer6 */
+
+struct omap_hwmod omap2xxx_timer6_hwmod = {
+       .name           = "timer6",
+       .mpu_irqs       = omap2_timer6_mpu_irqs,
+       .main_clk       = "gpt6_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT6_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT6_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer7 */
+
+struct omap_hwmod omap2xxx_timer7_hwmod = {
+       .name           = "timer7",
+       .mpu_irqs       = omap2_timer7_mpu_irqs,
+       .main_clk       = "gpt7_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT7_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT7_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer8 */
+
+struct omap_hwmod omap2xxx_timer8_hwmod = {
+       .name           = "timer8",
+       .mpu_irqs       = omap2_timer8_mpu_irqs,
+       .main_clk       = "gpt8_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT8_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT8_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer9 */
+
+struct omap_hwmod omap2xxx_timer9_hwmod = {
+       .name           = "timer9",
+       .mpu_irqs       = omap2_timer9_mpu_irqs,
+       .main_clk       = "gpt9_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT9_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT9_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer10 */
+
+struct omap_hwmod omap2xxx_timer10_hwmod = {
+       .name           = "timer10",
+       .mpu_irqs       = omap2_timer10_mpu_irqs,
+       .main_clk       = "gpt10_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT10_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT10_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer11 */
+
+struct omap_hwmod omap2xxx_timer11_hwmod = {
+       .name           = "timer11",
+       .mpu_irqs       = omap2_timer11_mpu_irqs,
+       .main_clk       = "gpt11_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT11_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT11_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* timer12 */
+
+struct omap_hwmod omap2xxx_timer12_hwmod = {
+       .name           = "timer12",
+       .mpu_irqs       = omap2xxx_timer12_mpu_irqs,
+       .main_clk       = "gpt12_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPT12_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPT12_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap2xxx_timer_hwmod_class,
+};
+
+/* wd_timer2 */
+struct omap_hwmod omap2xxx_wd_timer2_hwmod = {
+       .name           = "wd_timer2",
+       .class          = &omap2xxx_wd_timer_hwmod_class,
+       .main_clk       = "mpu_wdt_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_MPU_WDT_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_MPU_WDT_SHIFT,
+               },
+       },
+};
+
+/* UART1 */
+
+struct omap_hwmod omap2xxx_uart1_hwmod = {
+       .name           = "uart1",
+       .mpu_irqs       = omap2_uart1_mpu_irqs,
+       .sdma_reqs      = omap2_uart1_sdma_reqs,
+       .main_clk       = "uart1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_UART1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_EN_UART1_SHIFT,
+               },
+       },
+       .class          = &omap2_uart_class,
+};
+
+/* UART2 */
+
+struct omap_hwmod omap2xxx_uart2_hwmod = {
+       .name           = "uart2",
+       .mpu_irqs       = omap2_uart2_mpu_irqs,
+       .sdma_reqs      = omap2_uart2_sdma_reqs,
+       .main_clk       = "uart2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_UART2_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_EN_UART2_SHIFT,
+               },
+       },
+       .class          = &omap2_uart_class,
+};
+
+/* UART3 */
+
+struct omap_hwmod omap2xxx_uart3_hwmod = {
+       .name           = "uart3",
+       .mpu_irqs       = omap2_uart3_mpu_irqs,
+       .sdma_reqs      = omap2_uart3_sdma_reqs,
+       .main_clk       = "uart3_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 2,
+                       .module_bit = OMAP24XX_EN_UART3_SHIFT,
+                       .idlest_reg_id = 2,
+                       .idlest_idle_bit = OMAP24XX_EN_UART3_SHIFT,
+               },
+       },
+       .class          = &omap2_uart_class,
+};
+
+/* dss */
+
+static struct omap_hwmod_opt_clk dss_opt_clks[] = {
+       /*
+        * The DSS HW needs all DSS clocks enabled during reset. The dss_core
+        * driver does not use these clocks.
+        */
+       { .role = "tv_clk", .clk = "dss_54m_fck" },
+       { .role = "sys_clk", .clk = "dss2_fck" },
+};
+
+struct omap_hwmod omap2xxx_dss_core_hwmod = {
+       .name           = "dss_core",
+       .class          = &omap2_dss_hwmod_class,
+       .main_clk       = "dss1_fck", /* instead of dss_fck */
+       .sdma_reqs      = omap2xxx_dss_sdma_chs,
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
+               },
+       },
+       .opt_clks       = dss_opt_clks,
+       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
+       .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+};
+
+struct omap_hwmod omap2xxx_dss_dispc_hwmod = {
+       .name           = "dss_dispc",
+       .class          = &omap2_dispc_hwmod_class,
+       .mpu_irqs       = omap2_dispc_irqs,
+       .main_clk       = "dss1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_stdby_bit = OMAP24XX_ST_DSS_SHIFT,
+               },
+       },
+       .flags          = HWMOD_NO_IDLEST,
+       .dev_attr       = &omap2_3_dss_dispc_dev_attr
+};
+
+static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
+       { .role = "ick", .clk = "dss_ick" },
+};
+
+struct omap_hwmod omap2xxx_dss_rfbi_hwmod = {
+       .name           = "dss_rfbi",
+       .class          = &omap2_rfbi_hwmod_class,
+       .main_clk       = "dss1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
+                       .module_offs = CORE_MOD,
+               },
+       },
+       .opt_clks       = dss_rfbi_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
+       .flags          = HWMOD_NO_IDLEST,
+};
+
+struct omap_hwmod omap2xxx_dss_venc_hwmod = {
+       .name           = "dss_venc",
+       .class          = &omap2_venc_hwmod_class,
+       .main_clk       = "dss_54m_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_DSS1_SHIFT,
+                       .module_offs = CORE_MOD,
+               },
+       },
+       .flags          = HWMOD_NO_IDLEST,
+};
+
+/* gpio dev_attr */
+struct omap_gpio_dev_attr omap2xxx_gpio_dev_attr = {
+       .bank_width = 32,
+       .dbck_flag = false,
+};
+
+/* gpio1 */
+struct omap_hwmod omap2xxx_gpio1_hwmod = {
+       .name           = "gpio1",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio1_irqs,
+       .main_clk       = "gpios_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_gpio_hwmod_class,
+       .dev_attr       = &omap2xxx_gpio_dev_attr,
+};
+
+/* gpio2 */
+struct omap_hwmod omap2xxx_gpio2_hwmod = {
+       .name           = "gpio2",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio2_irqs,
+       .main_clk       = "gpios_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_gpio_hwmod_class,
+       .dev_attr       = &omap2xxx_gpio_dev_attr,
+};
+
+/* gpio3 */
+struct omap_hwmod omap2xxx_gpio3_hwmod = {
+       .name           = "gpio3",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio3_irqs,
+       .main_clk       = "gpios_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_gpio_hwmod_class,
+       .dev_attr       = &omap2xxx_gpio_dev_attr,
+};
+
+/* gpio4 */
+struct omap_hwmod omap2xxx_gpio4_hwmod = {
+       .name           = "gpio4",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio4_irqs,
+       .main_clk       = "gpios_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_GPIOS_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_GPIOS_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_gpio_hwmod_class,
+       .dev_attr       = &omap2xxx_gpio_dev_attr,
+};
+
+/* mcspi1 */
+static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
+       .num_chipselect = 4,
+};
+
+struct omap_hwmod omap2xxx_mcspi1_hwmod = {
+       .name           = "mcspi1",
+       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
+       .sdma_reqs      = omap2_mcspi1_sdma_reqs,
+       .main_clk       = "mcspi1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_MCSPI1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_MCSPI1_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_mcspi_class,
+       .dev_attr       = &omap_mcspi1_dev_attr,
+};
+
+/* mcspi2 */
+static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
+       .num_chipselect = 2,
+};
+
+struct omap_hwmod omap2xxx_mcspi2_hwmod = {
+       .name           = "mcspi2",
+       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
+       .sdma_reqs      = omap2_mcspi2_sdma_reqs,
+       .main_clk       = "mcspi2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP24XX_EN_MCSPI2_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP24XX_ST_MCSPI2_SHIFT,
+               },
+       },
+       .class          = &omap2xxx_mcspi_class,
+       .dev_attr       = &omap_mcspi2_dev_attr,
+};
index db86ce90c69fbc769fd1c63005a5ad188e43f33b..0c65079c2b69b308a7ea45953adfbf6b1d461617 100644 (file)
@@ -2,6 +2,7 @@
  * omap_hwmod_3xxx_data.c - hardware modules present on the OMAP3xxx chips
  *
  * Copyright (C) 2009-2011 Nokia Corporation
+ * Copyright (C) 2012 Texas Instruments, Inc.
  * Paul Walmsley
  *
  * This program is free software; you can redistribute it and/or modify
 /*
  * OMAP3xxx hardware module integration data
  *
- * ALl of the data in this section should be autogeneratable from the
+ * All of the data in this section should be autogeneratable from the
  * TI hardware database or other technical documentation.  Data that
  * is driver-specific or driver-kernel integration-specific belongs
  * elsewhere.
  */
 
-static struct omap_hwmod omap3xxx_mpu_hwmod;
-static struct omap_hwmod omap3xxx_iva_hwmod;
-static struct omap_hwmod omap3xxx_l3_main_hwmod;
-static struct omap_hwmod omap3xxx_l4_core_hwmod;
-static struct omap_hwmod omap3xxx_l4_per_hwmod;
-static struct omap_hwmod omap3xxx_wd_timer2_hwmod;
-static struct omap_hwmod omap3430es1_dss_core_hwmod;
-static struct omap_hwmod omap3xxx_dss_core_hwmod;
-static struct omap_hwmod omap3xxx_dss_dispc_hwmod;
-static struct omap_hwmod omap3xxx_dss_dsi1_hwmod;
-static struct omap_hwmod omap3xxx_dss_rfbi_hwmod;
-static struct omap_hwmod omap3xxx_dss_venc_hwmod;
-static struct omap_hwmod omap3xxx_i2c1_hwmod;
-static struct omap_hwmod omap3xxx_i2c2_hwmod;
-static struct omap_hwmod omap3xxx_i2c3_hwmod;
-static struct omap_hwmod omap3xxx_gpio1_hwmod;
-static struct omap_hwmod omap3xxx_gpio2_hwmod;
-static struct omap_hwmod omap3xxx_gpio3_hwmod;
-static struct omap_hwmod omap3xxx_gpio4_hwmod;
-static struct omap_hwmod omap3xxx_gpio5_hwmod;
-static struct omap_hwmod omap3xxx_gpio6_hwmod;
-static struct omap_hwmod omap34xx_sr1_hwmod;
-static struct omap_hwmod omap34xx_sr2_hwmod;
-static struct omap_hwmod omap34xx_mcspi1;
-static struct omap_hwmod omap34xx_mcspi2;
-static struct omap_hwmod omap34xx_mcspi3;
-static struct omap_hwmod omap34xx_mcspi4;
-static struct omap_hwmod omap3xxx_mmc1_hwmod;
-static struct omap_hwmod omap3xxx_mmc2_hwmod;
-static struct omap_hwmod omap3xxx_mmc3_hwmod;
-static struct omap_hwmod am35xx_usbhsotg_hwmod;
-
-static struct omap_hwmod omap3xxx_dma_system_hwmod;
-
-static struct omap_hwmod omap3xxx_mcbsp1_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp2_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp3_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp4_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp5_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp2_sidetone_hwmod;
-static struct omap_hwmod omap3xxx_mcbsp3_sidetone_hwmod;
-static struct omap_hwmod omap3xxx_usb_host_hs_hwmod;
-static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod;
-
-/* L3 -> L4_CORE interface */
-static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = {
-       .master = &omap3xxx_l3_main_hwmod,
-       .slave  = &omap3xxx_l4_core_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L3 -> L4_PER interface */
-static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = {
-       .master = &omap3xxx_l3_main_hwmod,
-       .slave  = &omap3xxx_l4_per_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
-};
+/*
+ * IP blocks
+ */
 
-/* L3 taret configuration and error log registers */
+/* L3 */
 static struct omap_hwmod_irq_info omap3xxx_l3_main_irqs[] = {
        { .irq = INT_34XX_L3_DBG_IRQ },
        { .irq = INT_34XX_L3_APP_IRQ },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap3xxx_l3_main_addrs[] = {
-       {
-               .pa_start       = 0x68000000,
-               .pa_end         = 0x6800ffff,
-               .flags          = ADDR_TYPE_RT,
-       },
-       { }
-};
-
-/* MPU -> L3 interface */
-static struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = {
-       .master   = &omap3xxx_mpu_hwmod,
-       .slave    = &omap3xxx_l3_main_hwmod,
-       .addr     = omap3xxx_l3_main_addrs,
-       .user   = OCP_USER_MPU,
-};
-
-/* Slave interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap3xxx_l3_main_slaves[] = {
-       &omap3xxx_mpu__l3_main,
-};
-
-/* DSS -> l3 */
-static struct omap_hwmod_ocp_if omap3xxx_dss__l3 = {
-       .master         = &omap3xxx_dss_core_hwmod,
-       .slave          = &omap3xxx_l3_main_hwmod,
-       .fw = {
-               .omap2 = {
-                       .l3_perm_bit  = OMAP3_L3_CORE_FW_INIT_ID_DSS,
-                       .flags  = OMAP_FIREWALL_L3,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* Master interfaces on the L3 interconnect */
-static struct omap_hwmod_ocp_if *omap3xxx_l3_main_masters[] = {
-       &omap3xxx_l3_main__l4_core,
-       &omap3xxx_l3_main__l4_per,
-};
-
-/* L3 */
 static struct omap_hwmod omap3xxx_l3_main_hwmod = {
        .name           = "l3_main",
        .class          = &l3_hwmod_class,
        .mpu_irqs       = omap3xxx_l3_main_irqs,
-       .masters        = omap3xxx_l3_main_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_l3_main_masters),
-       .slaves         = omap3xxx_l3_main_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_l3_main_slaves),
        .flags          = HWMOD_NO_IDLEST,
 };
 
-static struct omap_hwmod omap3xxx_l4_wkup_hwmod;
-static struct omap_hwmod omap3xxx_uart1_hwmod;
-static struct omap_hwmod omap3xxx_uart2_hwmod;
-static struct omap_hwmod omap3xxx_uart3_hwmod;
-static struct omap_hwmod omap3xxx_uart4_hwmod;
-static struct omap_hwmod am35xx_uart4_hwmod;
-static struct omap_hwmod omap3xxx_usbhsotg_hwmod;
-
-/* l3_core -> usbhsotg interface */
-static struct omap_hwmod_ocp_if omap3xxx_usbhsotg__l3 = {
-       .master         = &omap3xxx_usbhsotg_hwmod,
-       .slave          = &omap3xxx_l3_main_hwmod,
-       .clk            = "core_l3_ick",
-       .user           = OCP_USER_MPU,
+/* L4 CORE */
+static struct omap_hwmod omap3xxx_l4_core_hwmod = {
+       .name           = "l4_core",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* l3_core -> am35xx_usbhsotg interface */
-static struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = {
-       .master         = &am35xx_usbhsotg_hwmod,
-       .slave          = &omap3xxx_l3_main_hwmod,
-       .clk            = "core_l3_ick",
-       .user           = OCP_USER_MPU,
-};
-/* L4_CORE -> L4_WKUP interface */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
-       .master = &omap3xxx_l4_core_hwmod,
-       .slave  = &omap3xxx_l4_wkup_hwmod,
-       .user   = OCP_USER_MPU | OCP_USER_SDMA,
+/* L4 PER */
+static struct omap_hwmod omap3xxx_l4_per_hwmod = {
+       .name           = "l4_per",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* L4 CORE -> MMC1 interface */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mmc1_hwmod,
-       .clk            = "mmchs1_ick",
-       .addr           = omap2430_mmc1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-       .flags          = OMAP_FIREWALL_L4
+/* L4 WKUP */
+static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
+       .name           = "l4_wkup",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* L4 CORE -> MMC2 interface */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc2 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mmc2_hwmod,
-       .clk            = "mmchs2_ick",
-       .addr           = omap2430_mmc2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-       .flags          = OMAP_FIREWALL_L4
+/* L4 SEC */
+static struct omap_hwmod omap3xxx_l4_sec_hwmod = {
+       .name           = "l4_sec",
+       .class          = &l4_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* L4 CORE -> MMC3 interface */
-static struct omap_hwmod_addr_space omap3xxx_mmc3_addr_space[] = {
-       {
-               .pa_start       = 0x480ad000,
-               .pa_end         = 0x480ad1ff,
-               .flags          = ADDR_TYPE_RT,
-       },
-       { }
+/* MPU */
+static struct omap_hwmod omap3xxx_mpu_hwmod = {
+       .name           = "mpu",
+       .class          = &mpu_hwmod_class,
+       .main_clk       = "arm_fck",
 };
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc3 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mmc3_hwmod,
-       .clk            = "mmchs3_ick",
-       .addr           = omap3xxx_mmc3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-       .flags          = OMAP_FIREWALL_L4
+/* IVA2 (IVA2) */
+static struct omap_hwmod_rst_info omap3xxx_iva_resets[] = {
+       { .name = "logic", .rst_shift = 0 },
+       { .name = "seq0", .rst_shift = 1 },
+       { .name = "seq1", .rst_shift = 2 },
 };
 
-/* L4 CORE -> UART1 interface */
-static struct omap_hwmod_addr_space omap3xxx_uart1_addr_space[] = {
-       {
-               .pa_start       = OMAP3_UART1_BASE,
-               .pa_end         = OMAP3_UART1_BASE + SZ_8K - 1,
-               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
-       },
-       { }
+static struct omap_hwmod omap3xxx_iva_hwmod = {
+       .name           = "iva",
+       .class          = &iva_hwmod_class,
+       .clkdm_name     = "iva2_clkdm",
+       .rst_lines      = omap3xxx_iva_resets,
+       .rst_lines_cnt  = ARRAY_SIZE(omap3xxx_iva_resets),
+       .main_clk       = "iva2_ck",
 };
 
-static struct omap_hwmod_ocp_if omap3_l4_core__uart1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_uart1_hwmod,
-       .clk            = "uart1_ick",
-       .addr           = omap3xxx_uart1_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* timer class */
+static struct omap_hwmod_class_sysconfig omap3xxx_timer_1ms_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
+                               SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                               SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* L4 CORE -> UART2 interface */
-static struct omap_hwmod_addr_space omap3xxx_uart2_addr_space[] = {
-       {
-               .pa_start       = OMAP3_UART2_BASE,
-               .pa_end         = OMAP3_UART2_BASE + SZ_1K - 1,
-               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
-       },
-       { }
+static struct omap_hwmod_class omap3xxx_timer_1ms_hwmod_class = {
+       .name = "timer",
+       .sysc = &omap3xxx_timer_1ms_sysc,
+       .rev = OMAP_TIMER_IP_VERSION_1,
 };
 
-static struct omap_hwmod_ocp_if omap3_l4_core__uart2 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_uart2_hwmod,
-       .clk            = "uart2_ick",
-       .addr           = omap3xxx_uart2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
+                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* L4 PER -> UART3 interface */
-static struct omap_hwmod_addr_space omap3xxx_uart3_addr_space[] = {
-       {
-               .pa_start       = OMAP3_UART3_BASE,
-               .pa_end         = OMAP3_UART3_BASE + SZ_1K - 1,
-               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
-       },
-       { }
+static struct omap_hwmod_class omap3xxx_timer_hwmod_class = {
+       .name = "timer",
+       .sysc = &omap3xxx_timer_sysc,
+       .rev =  OMAP_TIMER_IP_VERSION_1,
 };
 
-static struct omap_hwmod_ocp_if omap3_l4_per__uart3 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_uart3_hwmod,
-       .clk            = "uart3_ick",
-       .addr           = omap3xxx_uart3_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* secure timers dev attribute */
+static struct omap_timer_capability_dev_attr capability_secure_dev_attr = {
+       .timer_capability       = OMAP_TIMER_SECURE,
 };
 
-/* L4 PER -> UART4 interface */
-static struct omap_hwmod_addr_space omap3xxx_uart4_addr_space[] = {
-       {
-               .pa_start       = OMAP3_UART4_BASE,
-               .pa_end         = OMAP3_UART4_BASE + SZ_1K - 1,
-               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
-       },
-       { }
+/* always-on timers dev attribute */
+static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
+       .timer_capability       = OMAP_TIMER_ALWON,
 };
 
-static struct omap_hwmod_ocp_if omap3_l4_per__uart4 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_uart4_hwmod,
-       .clk            = "uart4_ick",
-       .addr           = omap3xxx_uart4_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* pwm timers dev attribute */
+static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
+       .timer_capability       = OMAP_TIMER_HAS_PWM,
 };
 
-/* AM35xx: L4 CORE -> UART4 interface */
-static struct omap_hwmod_addr_space am35xx_uart4_addr_space[] = {
-       {
-               .pa_start       = OMAP3_UART4_AM35XX_BASE,
-               .pa_end         = OMAP3_UART4_AM35XX_BASE + SZ_1K - 1,
-               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
+/* timer1 */
+static struct omap_hwmod omap3xxx_timer1_hwmod = {
+       .name           = "timer1",
+       .mpu_irqs       = omap2_timer1_mpu_irqs,
+       .main_clk       = "gpt1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT1_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT1_SHIFT,
+               },
        },
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_1ms_hwmod_class,
 };
 
-static struct omap_hwmod_ocp_if am35xx_l4_core__uart4 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &am35xx_uart4_hwmod,
-       .clk            = "uart4_ick",
-       .addr           = am35xx_uart4_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* L4 CORE -> I2C1 interface */
-static struct omap_hwmod_ocp_if omap3_l4_core__i2c1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_i2c1_hwmod,
-       .clk            = "i2c1_ick",
-       .addr           = omap2_i2c1_addr_space,
-       .fw = {
+/* timer2 */
+static struct omap_hwmod omap3xxx_timer2_hwmod = {
+       .name           = "timer2",
+       .mpu_irqs       = omap2_timer2_mpu_irqs,
+       .main_clk       = "gpt2_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C1_REGION,
-                       .l4_prot_group = 7,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT2_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_1ms_hwmod_class,
 };
 
-/* L4 CORE -> I2C2 interface */
-static struct omap_hwmod_ocp_if omap3_l4_core__i2c2 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_i2c2_hwmod,
-       .clk            = "i2c2_ick",
-       .addr           = omap2_i2c2_addr_space,
-       .fw = {
+/* timer3 */
+static struct omap_hwmod omap3xxx_timer3_hwmod = {
+       .name           = "timer3",
+       .mpu_irqs       = omap2_timer3_mpu_irqs,
+       .main_clk       = "gpt3_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C2_REGION,
-                       .l4_prot_group = 7,
-                       .flags = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT3_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/* L4 CORE -> I2C3 interface */
-static struct omap_hwmod_addr_space omap3xxx_i2c3_addr_space[] = {
-       {
-               .pa_start       = 0x48060000,
-               .pa_end         = 0x48060000 + SZ_128 - 1,
-               .flags          = ADDR_TYPE_RT,
+/* timer4 */
+static struct omap_hwmod omap3xxx_timer4_hwmod = {
+       .name           = "timer4",
+       .mpu_irqs       = omap2_timer4_mpu_irqs,
+       .main_clk       = "gpt4_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT4_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT,
+               },
        },
-       { }
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_i2c3_hwmod,
-       .clk            = "i2c3_ick",
-       .addr           = omap3xxx_i2c3_addr_space,
-       .fw = {
+/* timer5 */
+static struct omap_hwmod omap3xxx_timer5_hwmod = {
+       .name           = "timer5",
+       .mpu_irqs       = omap2_timer5_mpu_irqs,
+       .main_clk       = "gpt5_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C3_REGION,
-                       .l4_prot_group = 7,
-                       .flags = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT5_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_irq_info omap3_smartreflex_mpu_irqs[] = {
-       { .irq = 18},
-       { .irq = -1 }
-};
-
-static struct omap_hwmod_irq_info omap3_smartreflex_core_irqs[] = {
-       { .irq = 19},
-       { .irq = -1 }
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/* L4 CORE -> SR1 interface */
-static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = {
-       {
-               .pa_start       = OMAP34XX_SR1_BASE,
-               .pa_end         = OMAP34XX_SR1_BASE + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT,
+/* timer6 */
+static struct omap_hwmod omap3xxx_timer6_hwmod = {
+       .name           = "timer6",
+       .mpu_irqs       = omap2_timer6_mpu_irqs,
+       .main_clk       = "gpt6_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT6_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT,
+               },
        },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap3_l4_core__sr1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_sr1_hwmod,
-       .clk            = "sr_l4_ick",
-       .addr           = omap3_sr1_addr_space,
-       .user           = OCP_USER_MPU,
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/* L4 CORE -> SR1 interface */
-static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = {
-       {
-               .pa_start       = OMAP34XX_SR2_BASE,
-               .pa_end         = OMAP34XX_SR2_BASE + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT,
+/* timer7 */
+static struct omap_hwmod omap3xxx_timer7_hwmod = {
+       .name           = "timer7",
+       .mpu_irqs       = omap2_timer7_mpu_irqs,
+       .main_clk       = "gpt7_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT7_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT,
+               },
        },
-       { }
-};
-
-static struct omap_hwmod_ocp_if omap3_l4_core__sr2 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_sr2_hwmod,
-       .clk            = "sr_l4_ick",
-       .addr           = omap3_sr2_addr_space,
-       .user           = OCP_USER_MPU,
+       .dev_attr       = &capability_alwon_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/*
-* usbhsotg interface data
-*/
-
-static struct omap_hwmod_addr_space omap3xxx_usbhsotg_addrs[] = {
-       {
-               .pa_start       = OMAP34XX_HSUSB_OTG_BASE,
-               .pa_end         = OMAP34XX_HSUSB_OTG_BASE + SZ_4K - 1,
-               .flags          = ADDR_TYPE_RT
+/* timer8 */
+static struct omap_hwmod omap3xxx_timer8_hwmod = {
+       .name           = "timer8",
+       .mpu_irqs       = omap2_timer8_mpu_irqs,
+       .main_clk       = "gpt8_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT8_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT8_SHIFT,
+               },
        },
-       { }
-};
-
-/* l4_core -> usbhsotg  */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__usbhsotg = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_usbhsotg_hwmod,
-       .clk            = "l4_ick",
-       .addr           = omap3xxx_usbhsotg_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_usbhsotg_masters[] = {
-       &omap3xxx_usbhsotg__l3,
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_usbhsotg_slaves[] = {
-       &omap3xxx_l4_core__usbhsotg,
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-static struct omap_hwmod_addr_space am35xx_usbhsotg_addrs[] = {
-       {
-               .pa_start       = AM35XX_IPSS_USBOTGSS_BASE,
-               .pa_end         = AM35XX_IPSS_USBOTGSS_BASE + SZ_4K - 1,
-               .flags          = ADDR_TYPE_RT
+/* timer9 */
+static struct omap_hwmod omap3xxx_timer9_hwmod = {
+       .name           = "timer9",
+       .mpu_irqs       = omap2_timer9_mpu_irqs,
+       .main_clk       = "gpt9_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT9_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT9_SHIFT,
+               },
        },
-       { }
-};
-
-/* l4_core -> usbhsotg  */
-static struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &am35xx_usbhsotg_hwmod,
-       .clk            = "l4_ick",
-       .addr           = am35xx_usbhsotg_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_ocp_if *am35xx_usbhsotg_masters[] = {
-       &am35xx_usbhsotg__l3,
-};
-
-static struct omap_hwmod_ocp_if *am35xx_usbhsotg_slaves[] = {
-       &am35xx_l4_core__usbhsotg,
-};
-/* Slave interfaces on the L4_CORE interconnect */
-static struct omap_hwmod_ocp_if *omap3xxx_l4_core_slaves[] = {
-       &omap3xxx_l3_main__l4_core,
-};
-
-/* L4 CORE */
-static struct omap_hwmod omap3xxx_l4_core_hwmod = {
-       .name           = "l4_core",
-       .class          = &l4_hwmod_class,
-       .slaves         = omap3xxx_l4_core_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_l4_core_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* Slave interfaces on the L4_PER interconnect */
-static struct omap_hwmod_ocp_if *omap3xxx_l4_per_slaves[] = {
-       &omap3xxx_l3_main__l4_per,
-};
-
-/* L4 PER */
-static struct omap_hwmod omap3xxx_l4_per_hwmod = {
-       .name           = "l4_per",
-       .class          = &l4_hwmod_class,
-       .slaves         = omap3xxx_l4_per_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_l4_per_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* Slave interfaces on the L4_WKUP interconnect */
-static struct omap_hwmod_ocp_if *omap3xxx_l4_wkup_slaves[] = {
-       &omap3xxx_l4_core__l4_wkup,
-};
-
-/* L4 WKUP */
-static struct omap_hwmod omap3xxx_l4_wkup_hwmod = {
-       .name           = "l4_wkup",
-       .class          = &l4_hwmod_class,
-       .slaves         = omap3xxx_l4_wkup_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_l4_wkup_slaves),
-       .flags          = HWMOD_NO_IDLEST,
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/* Master interfaces on the MPU device */
-static struct omap_hwmod_ocp_if *omap3xxx_mpu_masters[] = {
-       &omap3xxx_mpu__l3_main,
+/* timer10 */
+static struct omap_hwmod omap3xxx_timer10_hwmod = {
+       .name           = "timer10",
+       .mpu_irqs       = omap2_timer10_mpu_irqs,
+       .main_clk       = "gpt10_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT10_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT10_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap3xxx_timer_1ms_hwmod_class,
 };
 
-/* MPU */
-static struct omap_hwmod omap3xxx_mpu_hwmod = {
-       .name           = "mpu",
-       .class          = &mpu_hwmod_class,
-       .main_clk       = "arm_fck",
-       .masters        = omap3xxx_mpu_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_mpu_masters),
+/* timer11 */
+static struct omap_hwmod omap3xxx_timer11_hwmod = {
+       .name           = "timer11",
+       .mpu_irqs       = omap2_timer11_mpu_irqs,
+       .main_clk       = "gpt11_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT11_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT11_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_pwm_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
-/*
- * IVA2_2 interface data
- */
-
-/* IVA2 <- L3 interface */
-static struct omap_hwmod_ocp_if omap3xxx_l3__iva = {
-       .master         = &omap3xxx_l3_main_hwmod,
-       .slave          = &omap3xxx_iva_hwmod,
-       .clk            = "iva2_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* timer12 */
+static struct omap_hwmod_irq_info omap3xxx_timer12_mpu_irqs[] = {
+       { .irq = 95, },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_iva_masters[] = {
-       &omap3xxx_l3__iva,
+static struct omap_hwmod omap3xxx_timer12_hwmod = {
+       .name           = "timer12",
+       .mpu_irqs       = omap3xxx_timer12_mpu_irqs,
+       .main_clk       = "gpt12_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPT12_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPT12_SHIFT,
+               },
+       },
+       .dev_attr       = &capability_secure_dev_attr,
+       .class          = &omap3xxx_timer_hwmod_class,
 };
 
 /*
- * IVA2 (IVA2)
+ * 'wd_timer' class
+ * 32-bit watchdog upward counter that generates a pulse on the reset pin on
+ * overflow condition
  */
 
-static struct omap_hwmod omap3xxx_iva_hwmod = {
-       .name           = "iva",
-       .class          = &iva_hwmod_class,
-       .masters        = omap3xxx_iva_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_iva_masters),
-};
-
-/* timer class */
-static struct omap_hwmod_class_sysconfig omap3xxx_timer_1ms_sysc = {
+static struct omap_hwmod_class_sysconfig omap3xxx_wd_timer_sysc = {
        .rev_offs       = 0x0000,
        .sysc_offs      = 0x0010,
        .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
-                               SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                               SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE),
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
+                          SYSS_HAS_RESET_STATUS),
        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap3xxx_timer_1ms_hwmod_class = {
-       .name = "timer",
-       .sysc = &omap3xxx_timer_1ms_sysc,
-       .rev = OMAP_TIMER_IP_VERSION_1,
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_class_sysconfig omap3xxx_timer_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
+/* I2C common */
+static struct omap_hwmod_class_sysconfig i2c_sysc = {
+       .rev_offs       = 0x00,
+       .sysc_offs      = 0x20,
+       .syss_offs      = 0x10,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
        .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+       .clockact       = CLOCKACT_TEST_ICLK,
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_class omap3xxx_timer_hwmod_class = {
-       .name = "timer",
-       .sysc = &omap3xxx_timer_sysc,
-       .rev =  OMAP_TIMER_IP_VERSION_1,
+static struct omap_hwmod_class omap3xxx_wd_timer_hwmod_class = {
+       .name           = "wd_timer",
+       .sysc           = &omap3xxx_wd_timer_sysc,
+       .pre_shutdown   = &omap2_wd_timer_disable
 };
 
-/* secure timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_secure_dev_attr = {
-       .timer_capability       = OMAP_TIMER_SECURE,
+static struct omap_hwmod omap3xxx_wd_timer2_hwmod = {
+       .name           = "wd_timer2",
+       .class          = &omap3xxx_wd_timer_hwmod_class,
+       .main_clk       = "wdt2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_WDT2_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_WDT2_SHIFT,
+               },
+       },
+       /*
+        * XXX: Use software supervised mode, HW supervised smartidle seems to
+        * block CORE power domain idle transitions. Maybe a HW bug in wdt2?
+        */
+       .flags          = HWMOD_SWSUP_SIDLE,
 };
 
-/* always-on timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_alwon_dev_attr = {
-       .timer_capability       = OMAP_TIMER_ALWON,
+/* UART1 */
+static struct omap_hwmod omap3xxx_uart1_hwmod = {
+       .name           = "uart1",
+       .mpu_irqs       = omap2_uart1_mpu_irqs,
+       .sdma_reqs      = omap2_uart1_sdma_reqs,
+       .main_clk       = "uart1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_UART1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_UART1_SHIFT,
+               },
+       },
+       .class          = &omap2_uart_class,
 };
 
-/* pwm timers dev attribute */
-static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
-       .timer_capability       = OMAP_TIMER_HAS_PWM,
+/* UART2 */
+static struct omap_hwmod omap3xxx_uart2_hwmod = {
+       .name           = "uart2",
+       .mpu_irqs       = omap2_uart2_mpu_irqs,
+       .sdma_reqs      = omap2_uart2_sdma_reqs,
+       .main_clk       = "uart2_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_UART2_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_UART2_SHIFT,
+               },
+       },
+       .class          = &omap2_uart_class,
 };
 
-/* timer1 */
-static struct omap_hwmod omap3xxx_timer1_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer1_addrs[] = {
-       {
-               .pa_start       = 0x48318000,
-               .pa_end         = 0x48318000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
+/* UART3 */
+static struct omap_hwmod omap3xxx_uart3_hwmod = {
+       .name           = "uart3",
+       .mpu_irqs       = omap2_uart3_mpu_irqs,
+       .sdma_reqs      = omap2_uart3_sdma_reqs,
+       .main_clk       = "uart3_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = OMAP3430_PER_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_UART3_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_UART3_SHIFT,
+               },
        },
-       { }
+       .class          = &omap2_uart_class,
 };
 
-/* l4_wkup -> timer1 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__timer1 = {
-       .master         = &omap3xxx_l4_wkup_hwmod,
-       .slave          = &omap3xxx_timer1_hwmod,
-       .clk            = "gpt1_ick",
-       .addr           = omap3xxx_timer1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* UART4 */
+static struct omap_hwmod_irq_info uart4_mpu_irqs[] = {
+       { .irq = INT_36XX_UART4_IRQ, },
+       { .irq = -1 }
 };
 
-/* timer1 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer1_slaves[] = {
-       &omap3xxx_l4_wkup__timer1,
+static struct omap_hwmod_dma_info uart4_sdma_reqs[] = {
+       { .name = "rx", .dma_req = OMAP36XX_DMA_UART4_RX, },
+       { .name = "tx", .dma_req = OMAP36XX_DMA_UART4_TX, },
+       { .dma_req = -1 }
 };
 
-/* timer1 hwmod */
-static struct omap_hwmod omap3xxx_timer1_hwmod = {
-       .name           = "timer1",
-       .mpu_irqs       = omap2_timer1_mpu_irqs,
-       .main_clk       = "gpt1_fck",
+static struct omap_hwmod omap36xx_uart4_hwmod = {
+       .name           = "uart4",
+       .mpu_irqs       = uart4_mpu_irqs,
+       .sdma_reqs      = uart4_sdma_reqs,
+       .main_clk       = "uart4_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = OMAP3430_PER_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT1_SHIFT,
-                       .module_offs = WKUP_MOD,
+                       .module_bit = OMAP3630_EN_UART4_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT1_SHIFT,
+                       .idlest_idle_bit = OMAP3630_EN_UART4_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer1_slaves),
-       .class          = &omap3xxx_timer_1ms_hwmod_class,
+       .class          = &omap2_uart_class,
 };
 
-/* timer2 */
-static struct omap_hwmod omap3xxx_timer2_hwmod;
+static struct omap_hwmod_irq_info am35xx_uart4_mpu_irqs[] = {
+       { .irq = INT_35XX_UART4_IRQ, },
+};
 
-static struct omap_hwmod_addr_space omap3xxx_timer2_addrs[] = {
-       {
-               .pa_start       = 0x49032000,
-               .pa_end         = 0x49032000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod_dma_info am35xx_uart4_sdma_reqs[] = {
+       { .name = "rx", .dma_req = AM35XX_DMA_UART4_RX, },
+       { .name = "tx", .dma_req = AM35XX_DMA_UART4_TX, },
+};
+
+static struct omap_hwmod am35xx_uart4_hwmod = {
+       .name           = "uart4",
+       .mpu_irqs       = am35xx_uart4_mpu_irqs,
+       .sdma_reqs      = am35xx_uart4_sdma_reqs,
+       .main_clk       = "uart4_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_UART4_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_UART4_SHIFT,
+               },
        },
-       { }
+       .class          = &omap2_uart_class,
 };
 
-/* l4_per -> timer2 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer2 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer2_hwmod,
-       .clk            = "gpt2_ick",
-       .addr           = omap3xxx_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class i2c_class = {
+       .name   = "i2c",
+       .sysc   = &i2c_sysc,
+       .rev    = OMAP_I2C_IP_VERSION_1,
+       .reset  = &omap_i2c_reset,
 };
 
-/* timer2 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer2_slaves[] = {
-       &omap3xxx_l4_per__timer2,
+static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {
+       { .name = "dispc", .dma_req = 5 },
+       { .name = "dsi1", .dma_req = 74 },
+       { .dma_req = -1 }
+};
+
+/* dss */
+static struct omap_hwmod_opt_clk dss_opt_clks[] = {
+       /*
+        * The DSS HW needs all DSS clocks enabled during reset. The dss_core
+        * driver does not use these clocks.
+        */
+       { .role = "sys_clk", .clk = "dss2_alwon_fck" },
+       { .role = "tv_clk", .clk = "dss_tv_fck" },
+       /* required only on OMAP3430 */
+       { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
 };
 
-/* timer2 hwmod */
-static struct omap_hwmod omap3xxx_timer2_hwmod = {
-       .name           = "timer2",
-       .mpu_irqs       = omap2_timer2_mpu_irqs,
-       .main_clk       = "gpt2_fck",
+static struct omap_hwmod omap3430es1_dss_core_hwmod = {
+       .name           = "dss_core",
+       .class          = &omap2_dss_hwmod_class,
+       .main_clk       = "dss1_alwon_fck", /* instead of dss_fck */
+       .sdma_reqs      = omap3xxx_dss_sdma_chs,
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT2_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT2_SHIFT,
+                       .idlest_stdby_bit = OMAP3430ES1_ST_DSS_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer2_slaves),
-       .class          = &omap3xxx_timer_1ms_hwmod_class,
-};
-
-/* timer3 */
-static struct omap_hwmod omap3xxx_timer3_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer3_addrs[] = {
-       {
-               .pa_start       = 0x49034000,
-               .pa_end         = 0x49034000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer3 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer3 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer3_hwmod,
-       .clk            = "gpt3_ick",
-       .addr           = omap3xxx_timer3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer3 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer3_slaves[] = {
-       &omap3xxx_l4_per__timer3,
+       .opt_clks       = dss_opt_clks,
+       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
+       .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 };
 
-/* timer3 hwmod */
-static struct omap_hwmod omap3xxx_timer3_hwmod = {
-       .name           = "timer3",
-       .mpu_irqs       = omap2_timer3_mpu_irqs,
-       .main_clk       = "gpt3_fck",
+static struct omap_hwmod omap3xxx_dss_core_hwmod = {
+       .name           = "dss_core",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .class          = &omap2_dss_hwmod_class,
+       .main_clk       = "dss1_alwon_fck", /* instead of dss_fck */
+       .sdma_reqs      = omap3xxx_dss_sdma_chs,
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT3_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT3_SHIFT,
+                       .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT,
+                       .idlest_stdby_bit = OMAP3430ES2_ST_DSS_STDBY_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer3_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .opt_clks       = dss_opt_clks,
+       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
 };
 
-/* timer4 */
-static struct omap_hwmod omap3xxx_timer4_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer4_addrs[] = {
-       {
-               .pa_start       = 0x49036000,
-               .pa_end         = 0x49036000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
+/*
+ * 'dispc' class
+ * display controller
+ */
 
-/* l4_per -> timer4 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer4 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer4_hwmod,
-       .clk            = "gpt4_ick",
-       .addr           = omap3xxx_timer4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
+                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
+                          SYSC_HAS_ENAWAKEUP),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* timer4 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer4_slaves[] = {
-       &omap3xxx_l4_per__timer4,
+static struct omap_hwmod_class omap3_dispc_hwmod_class = {
+       .name   = "dispc",
+       .sysc   = &omap3_dispc_sysc,
 };
 
-/* timer4 hwmod */
-static struct omap_hwmod omap3xxx_timer4_hwmod = {
-       .name           = "timer4",
-       .mpu_irqs       = omap2_timer4_mpu_irqs,
-       .main_clk       = "gpt4_fck",
+static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
+       .name           = "dss_dispc",
+       .class          = &omap3_dispc_hwmod_class,
+       .mpu_irqs       = omap2_dispc_irqs,
+       .main_clk       = "dss1_alwon_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT4_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT4_SHIFT,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer4_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .flags          = HWMOD_NO_IDLEST,
+       .dev_attr       = &omap2_3_dss_dispc_dev_attr
 };
 
-/* timer5 */
-static struct omap_hwmod omap3xxx_timer5_hwmod;
+/*
+ * 'dsi' class
+ * display serial interface controller
+ */
 
-static struct omap_hwmod_addr_space omap3xxx_timer5_addrs[] = {
-       {
-               .pa_start       = 0x49038000,
-               .pa_end         = 0x49038000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = {
+       .name = "dsi",
 };
 
-/* l4_per -> timer5 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer5 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer5_hwmod,
-       .clk            = "gpt5_ick",
-       .addr           = omap3xxx_timer5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_irq_info omap3xxx_dsi1_irqs[] = {
+       { .irq = 25 },
+       { .irq = -1 }
 };
 
-/* timer5 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer5_slaves[] = {
-       &omap3xxx_l4_per__timer5,
+/* dss_dsi1 */
+static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
+       { .role = "sys_clk", .clk = "dss2_alwon_fck" },
 };
 
-/* timer5 hwmod */
-static struct omap_hwmod omap3xxx_timer5_hwmod = {
-       .name           = "timer5",
-       .mpu_irqs       = omap2_timer5_mpu_irqs,
-       .main_clk       = "gpt5_fck",
+static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
+       .name           = "dss_dsi1",
+       .class          = &omap3xxx_dsi_hwmod_class,
+       .mpu_irqs       = omap3xxx_dsi1_irqs,
+       .main_clk       = "dss1_alwon_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT5_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT5_SHIFT,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer5_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .opt_clks       = dss_dsi1_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_opt_clks),
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* timer6 */
-static struct omap_hwmod omap3xxx_timer6_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer6_addrs[] = {
-       {
-               .pa_start       = 0x4903A000,
-               .pa_end         = 0x4903A000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
+       { .role = "ick", .clk = "dss_ick" },
 };
 
-/* l4_per -> timer6 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer6 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer6_hwmod,
-       .clk            = "gpt6_ick",
-       .addr           = omap3xxx_timer6_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
+       .name           = "dss_rfbi",
+       .class          = &omap2_rfbi_hwmod_class,
+       .main_clk       = "dss1_alwon_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
+               },
+       },
+       .opt_clks       = dss_rfbi_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* timer6 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer6_slaves[] = {
-       &omap3xxx_l4_per__timer6,
+static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
+       /* required only on OMAP3430 */
+       { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
 };
 
-/* timer6 hwmod */
-static struct omap_hwmod omap3xxx_timer6_hwmod = {
-       .name           = "timer6",
-       .mpu_irqs       = omap2_timer6_mpu_irqs,
-       .main_clk       = "gpt6_fck",
+static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
+       .name           = "dss_venc",
+       .class          = &omap2_venc_hwmod_class,
+       .main_clk       = "dss_tv_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT6_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT6_SHIFT,
+                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
+                       .module_offs = OMAP3430_DSS_MOD,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer6_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .opt_clks       = dss_venc_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(dss_venc_opt_clks),
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* timer7 */
-static struct omap_hwmod omap3xxx_timer7_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer7_addrs[] = {
-       {
-               .pa_start       = 0x4903C000,
-               .pa_end         = 0x4903C000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* I2C1 */
+static struct omap_i2c_dev_attr i2c1_dev_attr = {
+       .fifo_depth     = 8, /* bytes */
+       .flags          = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
+                         OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
+                         OMAP_I2C_FLAG_BUS_SHIFT_2,
 };
 
-/* l4_per -> timer7 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer7 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer7_hwmod,
-       .clk            = "gpt7_ick",
-       .addr           = omap3xxx_timer7_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod omap3xxx_i2c1_hwmod = {
+       .name           = "i2c1",
+       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
+       .sdma_reqs      = omap2_i2c1_sdma_reqs,
+       .main_clk       = "i2c1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_I2C1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT,
+               },
+       },
+       .class          = &i2c_class,
+       .dev_attr       = &i2c1_dev_attr,
 };
 
-/* timer7 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer7_slaves[] = {
-       &omap3xxx_l4_per__timer7,
+/* I2C2 */
+static struct omap_i2c_dev_attr i2c2_dev_attr = {
+       .fifo_depth     = 8, /* bytes */
+       .flags = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
+                OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
+                OMAP_I2C_FLAG_BUS_SHIFT_2,
 };
 
-/* timer7 hwmod */
-static struct omap_hwmod omap3xxx_timer7_hwmod = {
-       .name           = "timer7",
-       .mpu_irqs       = omap2_timer7_mpu_irqs,
-       .main_clk       = "gpt7_fck",
+static struct omap_hwmod omap3xxx_i2c2_hwmod = {
+       .name           = "i2c2",
+       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
+       .sdma_reqs      = omap2_i2c2_sdma_reqs,
+       .main_clk       = "i2c2_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT7_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_I2C2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT7_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT,
                },
        },
-       .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap3xxx_timer7_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer7_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .class          = &i2c_class,
+       .dev_attr       = &i2c2_dev_attr,
 };
 
-/* timer8 */
-static struct omap_hwmod omap3xxx_timer8_hwmod;
-
-static struct omap_hwmod_addr_space omap3xxx_timer8_addrs[] = {
-       {
-               .pa_start       = 0x4903E000,
-               .pa_end         = 0x4903E000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* I2C3 */
+static struct omap_i2c_dev_attr i2c3_dev_attr = {
+       .fifo_depth     = 64, /* bytes */
+       .flags = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
+                OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
+                OMAP_I2C_FLAG_BUS_SHIFT_2,
 };
 
-/* l4_per -> timer8 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer8 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer8_hwmod,
-       .clk            = "gpt8_ick",
-       .addr           = omap3xxx_timer8_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = {
+       { .irq = INT_34XX_I2C3_IRQ, },
+       { .irq = -1 }
 };
 
-/* timer8 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer8_slaves[] = {
-       &omap3xxx_l4_per__timer8,
+static struct omap_hwmod_dma_info i2c3_sdma_reqs[] = {
+       { .name = "tx", .dma_req = OMAP34XX_DMA_I2C3_TX },
+       { .name = "rx", .dma_req = OMAP34XX_DMA_I2C3_RX },
+       { .dma_req = -1 }
 };
 
-/* timer8 hwmod */
-static struct omap_hwmod omap3xxx_timer8_hwmod = {
-       .name           = "timer8",
-       .mpu_irqs       = omap2_timer8_mpu_irqs,
-       .main_clk       = "gpt8_fck",
+static struct omap_hwmod omap3xxx_i2c3_hwmod = {
+       .name           = "i2c3",
+       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
+       .mpu_irqs       = i2c3_mpu_irqs,
+       .sdma_reqs      = i2c3_sdma_reqs,
+       .main_clk       = "i2c3_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT8_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_I2C3_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT8_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap3xxx_timer8_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer8_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .class          = &i2c_class,
+       .dev_attr       = &i2c3_dev_attr,
 };
 
-/* timer9 */
-static struct omap_hwmod omap3xxx_timer9_hwmod;
+/*
+ * 'gpio' class
+ * general purpose io module
+ */
 
-static struct omap_hwmod_addr_space omap3xxx_timer9_addrs[] = {
-       {
-               .pa_start       = 0x49040000,
-               .pa_end         = 0x49040000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+static struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
+                          SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* l4_per -> timer9 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer9 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_timer9_hwmod,
-       .clk            = "gpt9_ick",
-       .addr           = omap3xxx_timer9_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class omap3xxx_gpio_hwmod_class = {
+       .name = "gpio",
+       .sysc = &omap3xxx_gpio_sysc,
+       .rev = 1,
 };
 
-/* timer9 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer9_slaves[] = {
-       &omap3xxx_l4_per__timer9,
+/* gpio_dev_attr */
+static struct omap_gpio_dev_attr gpio_dev_attr = {
+       .bank_width = 32,
+       .dbck_flag = true,
 };
 
-/* timer9 hwmod */
-static struct omap_hwmod omap3xxx_timer9_hwmod = {
-       .name           = "timer9",
-       .mpu_irqs       = omap2_timer9_mpu_irqs,
-       .main_clk       = "gpt9_fck",
+/* gpio1 */
+static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio1_dbck", },
+};
+
+static struct omap_hwmod omap3xxx_gpio1_hwmod = {
+       .name           = "gpio1",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio1_irqs,
+       .main_clk       = "gpio1_ick",
+       .opt_clks       = gpio1_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT9_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_GPIO1_SHIFT,
+                       .module_offs = WKUP_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT9_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap3xxx_timer9_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer9_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
-};
-
-/* timer10 */
-static struct omap_hwmod omap3xxx_timer10_hwmod;
-
-/* l4_core -> timer10 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_timer10_hwmod,
-       .clk            = "gpt10_ick",
-       .addr           = omap2_timer10_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* timer10 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer10_slaves[] = {
-       &omap3xxx_l4_core__timer10,
+/* gpio2 */
+static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio2_dbck", },
 };
 
-/* timer10 hwmod */
-static struct omap_hwmod omap3xxx_timer10_hwmod = {
-       .name           = "timer10",
-       .mpu_irqs       = omap2_timer10_mpu_irqs,
-       .main_clk       = "gpt10_fck",
+static struct omap_hwmod omap3xxx_gpio2_hwmod = {
+       .name           = "gpio2",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio2_irqs,
+       .main_clk       = "gpio2_ick",
+       .opt_clks       = gpio2_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT10_SHIFT,
-                       .module_offs = CORE_MOD,
+                       .module_bit = OMAP3430_EN_GPIO2_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT10_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO2_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap3xxx_timer10_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer10_slaves),
-       .class          = &omap3xxx_timer_1ms_hwmod_class,
-};
-
-/* timer11 */
-static struct omap_hwmod omap3xxx_timer11_hwmod;
-
-/* l4_core -> timer11 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_timer11_hwmod,
-       .clk            = "gpt11_ick",
-       .addr           = omap2_timer11_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* timer11 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer11_slaves[] = {
-       &omap3xxx_l4_core__timer11,
+/* gpio3 */
+static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio3_dbck", },
 };
 
-/* timer11 hwmod */
-static struct omap_hwmod omap3xxx_timer11_hwmod = {
-       .name           = "timer11",
-       .mpu_irqs       = omap2_timer11_mpu_irqs,
-       .main_clk       = "gpt11_fck",
+static struct omap_hwmod omap3xxx_gpio3_hwmod = {
+       .name           = "gpio3",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio3_irqs,
+       .main_clk       = "gpio3_ick",
+       .opt_clks       = gpio3_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT11_SHIFT,
-                       .module_offs = CORE_MOD,
+                       .module_bit = OMAP3430_EN_GPIO3_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT11_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO3_SHIFT,
                },
        },
-       .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap3xxx_timer11_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer11_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* timer12*/
-static struct omap_hwmod omap3xxx_timer12_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer12_mpu_irqs[] = {
-       { .irq = 95, },
-       { .irq = -1 }
+/* gpio4 */
+static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio4_dbck", },
 };
 
-static struct omap_hwmod_addr_space omap3xxx_timer12_addrs[] = {
-       {
-               .pa_start       = 0x48304000,
-               .pa_end         = 0x48304000 + SZ_1K - 1,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap3xxx_gpio4_hwmod = {
+       .name           = "gpio4",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap2_gpio4_irqs,
+       .main_clk       = "gpio4_ick",
+       .opt_clks       = gpio4_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPIO4_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO4_SHIFT,
+               },
        },
-       { }
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* l4_core -> timer12 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer12 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_timer12_hwmod,
-       .clk            = "gpt12_ick",
-       .addr           = omap3xxx_timer12_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* gpio5 */
+static struct omap_hwmod_irq_info omap3xxx_gpio5_irqs[] = {
+       { .irq = 33 }, /* INT_34XX_GPIO_BANK5 */
+       { .irq = -1 }
 };
 
-/* timer12 slave port */
-static struct omap_hwmod_ocp_if *omap3xxx_timer12_slaves[] = {
-       &omap3xxx_l4_core__timer12,
+static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio5_dbck", },
 };
 
-/* timer12 hwmod */
-static struct omap_hwmod omap3xxx_timer12_hwmod = {
-       .name           = "timer12",
-       .mpu_irqs       = omap3xxx_timer12_mpu_irqs,
-       .main_clk       = "gpt12_fck",
+static struct omap_hwmod omap3xxx_gpio5_hwmod = {
+       .name           = "gpio5",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap3xxx_gpio5_irqs,
+       .main_clk       = "gpio5_ick",
+       .opt_clks       = gpio5_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio5_opt_clks),
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPT12_SHIFT,
-                       .module_offs = WKUP_MOD,
+                       .module_bit = OMAP3430_EN_GPIO5_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPT12_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO5_SHIFT,
                },
        },
-       .dev_attr       = &capability_secure_dev_attr,
-       .slaves         = omap3xxx_timer12_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_timer12_slaves),
-       .class          = &omap3xxx_timer_hwmod_class,
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_addr_space omap3xxx_wd_timer2_addrs[] = {
-       {
-               .pa_start       = 0x48314000,
-               .pa_end         = 0x4831407f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* gpio6 */
+static struct omap_hwmod_irq_info omap3xxx_gpio6_irqs[] = {
+       { .irq = 34 }, /* INT_34XX_GPIO_BANK6 */
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__wd_timer2 = {
-       .master         = &omap3xxx_l4_wkup_hwmod,
-       .slave          = &omap3xxx_wd_timer2_hwmod,
-       .clk            = "wdt2_ick",
-       .addr           = omap3xxx_wd_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
+       { .role = "dbclk", .clk = "gpio6_dbck", },
 };
 
-/*
- * 'wd_timer' class
- * 32-bit watchdog upward counter that generates a pulse on the reset pin on
- * overflow condition
- */
-
-static struct omap_hwmod_class_sysconfig omap3xxx_wd_timer_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_EMUFREE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY |
-                          SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+static struct omap_hwmod omap3xxx_gpio6_hwmod = {
+       .name           = "gpio6",
+       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
+       .mpu_irqs       = omap3xxx_gpio6_irqs,
+       .main_clk       = "gpio6_ick",
+       .opt_clks       = gpio6_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(gpio6_opt_clks),
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_GPIO6_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_GPIO6_SHIFT,
+               },
+       },
+       .class          = &omap3xxx_gpio_hwmod_class,
+       .dev_attr       = &gpio_dev_attr,
 };
 
-/* I2C common */
-static struct omap_hwmod_class_sysconfig i2c_sysc = {
-       .rev_offs       = 0x00,
-       .sysc_offs      = 0x20,
-       .syss_offs      = 0x10,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .clockact       = CLOCKACT_TEST_ICLK,
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+/* dma attributes */
+static struct omap_dma_dev_attr dma_dev_attr = {
+       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
+                               IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
+       .lch_count = 32,
 };
 
-static struct omap_hwmod_class omap3xxx_wd_timer_hwmod_class = {
-       .name           = "wd_timer",
-       .sysc           = &omap3xxx_wd_timer_sysc,
-       .pre_shutdown   = &omap2_wd_timer_disable
+static struct omap_hwmod_class_sysconfig omap3xxx_dma_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x002c,
+       .syss_offs      = 0x0028,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
+                          SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE |
+                          SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* wd_timer2 */
-static struct omap_hwmod_ocp_if *omap3xxx_wd_timer2_slaves[] = {
-       &omap3xxx_l4_wkup__wd_timer2,
+static struct omap_hwmod_class omap3xxx_dma_hwmod_class = {
+       .name = "dma",
+       .sysc = &omap3xxx_dma_sysc,
 };
 
-static struct omap_hwmod omap3xxx_wd_timer2_hwmod = {
-       .name           = "wd_timer2",
-       .class          = &omap3xxx_wd_timer_hwmod_class,
-       .main_clk       = "wdt2_fck",
-       .prcm           = {
+/* dma_system */
+static struct omap_hwmod omap3xxx_dma_system_hwmod = {
+       .name           = "dma",
+       .class          = &omap3xxx_dma_hwmod_class,
+       .mpu_irqs       = omap2_dma_system_irqs,
+       .main_clk       = "core_l3_ick",
+       .prcm = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_WDT2_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_WDT2_SHIFT,
+                       .module_offs            = CORE_MOD,
+                       .prcm_reg_id            = 1,
+                       .module_bit             = OMAP3430_ST_SDMA_SHIFT,
+                       .idlest_reg_id          = 1,
+                       .idlest_idle_bit        = OMAP3430_ST_SDMA_SHIFT,
                },
        },
-       .slaves         = omap3xxx_wd_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_wd_timer2_slaves),
-       /*
-        * XXX: Use software supervised mode, HW supervised smartidle seems to
-        * block CORE power domain idle transitions. Maybe a HW bug in wdt2?
-        */
-       .flags          = HWMOD_SWSUP_SIDLE,
+       .dev_attr       = &dma_dev_attr,
+       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* UART1 */
+/*
+ * 'mcbsp' class
+ * multi channel buffered serial port controller
+ */
 
-static struct omap_hwmod_ocp_if *omap3xxx_uart1_slaves[] = {
-       &omap3_l4_core__uart1,
+static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sysc = {
+       .sysc_offs      = 0x008c,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
+                          SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
+       .clockact       = 0x2,
 };
 
-static struct omap_hwmod omap3xxx_uart1_hwmod = {
-       .name           = "uart1",
-       .mpu_irqs       = omap2_uart1_mpu_irqs,
-       .sdma_reqs      = omap2_uart1_sdma_reqs,
-       .main_clk       = "uart1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_UART1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_UART1_SHIFT,
-               },
-       },
-       .slaves         = omap3xxx_uart1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_uart1_slaves),
-       .class          = &omap2_uart_class,
+static struct omap_hwmod_class omap3xxx_mcbsp_hwmod_class = {
+       .name = "mcbsp",
+       .sysc = &omap3xxx_mcbsp_sysc,
+       .rev  = MCBSP_CONFIG_TYPE3,
 };
 
-/* UART2 */
-
-static struct omap_hwmod_ocp_if *omap3xxx_uart2_slaves[] = {
-       &omap3_l4_core__uart2,
+/* mcbsp1 */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp1_irqs[] = {
+       { .name = "irq", .irq = 16 },
+       { .name = "tx", .irq = 59 },
+       { .name = "rx", .irq = 60 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap3xxx_uart2_hwmod = {
-       .name           = "uart2",
-       .mpu_irqs       = omap2_uart2_mpu_irqs,
-       .sdma_reqs      = omap2_uart2_sdma_reqs,
-       .main_clk       = "uart2_fck",
+static struct omap_hwmod omap3xxx_mcbsp1_hwmod = {
+       .name           = "mcbsp1",
+       .class          = &omap3xxx_mcbsp_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp1_irqs,
+       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
+       .main_clk       = "mcbsp1_fck",
        .prcm           = {
                .omap2 = {
-                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_UART2_SHIFT,
+                       .module_bit = OMAP3430_EN_MCBSP1_SHIFT,
+                       .module_offs = CORE_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_UART2_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP1_SHIFT,
                },
        },
-       .slaves         = omap3xxx_uart2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_uart2_slaves),
-       .class          = &omap2_uart_class,
 };
 
-/* UART3 */
+/* mcbsp2 */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp2_irqs[] = {
+       { .name = "irq", .irq = 17 },
+       { .name = "tx", .irq = 62 },
+       { .name = "rx", .irq = 63 },
+       { .irq = -1 }
+};
 
-static struct omap_hwmod_ocp_if *omap3xxx_uart3_slaves[] = {
-       &omap3_l4_per__uart3,
+static struct omap_mcbsp_dev_attr omap34xx_mcbsp2_dev_attr = {
+       .sidetone       = "mcbsp2_sidetone",
 };
 
-static struct omap_hwmod omap3xxx_uart3_hwmod = {
-       .name           = "uart3",
-       .mpu_irqs       = omap2_uart3_mpu_irqs,
-       .sdma_reqs      = omap2_uart3_sdma_reqs,
-       .main_clk       = "uart3_fck",
+static struct omap_hwmod omap3xxx_mcbsp2_hwmod = {
+       .name           = "mcbsp2",
+       .class          = &omap3xxx_mcbsp_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp2_irqs,
+       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
+       .main_clk       = "mcbsp2_fck",
        .prcm           = {
                .omap2 = {
-                       .module_offs = OMAP3430_PER_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_UART3_SHIFT,
+                       .module_bit = OMAP3430_EN_MCBSP2_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_UART3_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
                },
        },
-       .slaves         = omap3xxx_uart3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_uart3_slaves),
-       .class          = &omap2_uart_class,
+       .dev_attr       = &omap34xx_mcbsp2_dev_attr,
 };
 
-/* UART4 */
-
-static struct omap_hwmod_irq_info uart4_mpu_irqs[] = {
-       { .irq = INT_36XX_UART4_IRQ, },
+/* mcbsp3 */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp3_irqs[] = {
+       { .name = "irq", .irq = 22 },
+       { .name = "tx", .irq = 89 },
+       { .name = "rx", .irq = 90 },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_dma_info uart4_sdma_reqs[] = {
-       { .name = "rx", .dma_req = OMAP36XX_DMA_UART4_RX, },
-       { .name = "tx", .dma_req = OMAP36XX_DMA_UART4_TX, },
-       { .dma_req = -1 }
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_uart4_slaves[] = {
-       &omap3_l4_per__uart4,
+static struct omap_mcbsp_dev_attr omap34xx_mcbsp3_dev_attr = {
+       .sidetone       = "mcbsp3_sidetone",
 };
 
-static struct omap_hwmod omap3xxx_uart4_hwmod = {
-       .name           = "uart4",
-       .mpu_irqs       = uart4_mpu_irqs,
-       .sdma_reqs      = uart4_sdma_reqs,
-       .main_clk       = "uart4_fck",
+static struct omap_hwmod omap3xxx_mcbsp3_hwmod = {
+       .name           = "mcbsp3",
+       .class          = &omap3xxx_mcbsp_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp3_irqs,
+       .sdma_reqs      = omap2_mcbsp3_sdma_reqs,
+       .main_clk       = "mcbsp3_fck",
        .prcm           = {
                .omap2 = {
-                       .module_offs = OMAP3430_PER_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3630_EN_UART4_SHIFT,
+                       .module_bit = OMAP3430_EN_MCBSP3_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3630_EN_UART4_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
                },
        },
-       .slaves         = omap3xxx_uart4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_uart4_slaves),
-       .class          = &omap2_uart_class,
-};
-
-static struct omap_hwmod_irq_info am35xx_uart4_mpu_irqs[] = {
-       { .irq = INT_35XX_UART4_IRQ, },
+       .dev_attr       = &omap34xx_mcbsp3_dev_attr,
 };
 
-static struct omap_hwmod_dma_info am35xx_uart4_sdma_reqs[] = {
-       { .name = "rx", .dma_req = AM35XX_DMA_UART4_RX, },
-       { .name = "tx", .dma_req = AM35XX_DMA_UART4_TX, },
+/* mcbsp4 */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp4_irqs[] = {
+       { .name = "irq", .irq = 23 },
+       { .name = "tx", .irq = 54 },
+       { .name = "rx", .irq = 55 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if *am35xx_uart4_slaves[] = {
-       &am35xx_l4_core__uart4,
+static struct omap_hwmod_dma_info omap3xxx_mcbsp4_sdma_chs[] = {
+       { .name = "rx", .dma_req = 20 },
+       { .name = "tx", .dma_req = 19 },
+       { .dma_req = -1 }
 };
 
-static struct omap_hwmod am35xx_uart4_hwmod = {
-       .name           = "uart4",
-       .mpu_irqs       = am35xx_uart4_mpu_irqs,
-       .sdma_reqs      = am35xx_uart4_sdma_reqs,
-       .main_clk       = "uart4_fck",
-       .prcm           = {
+static struct omap_hwmod omap3xxx_mcbsp4_hwmod = {
+       .name           = "mcbsp4",
+       .class          = &omap3xxx_mcbsp_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp4_irqs,
+       .sdma_reqs      = omap3xxx_mcbsp4_sdma_chs,
+       .main_clk       = "mcbsp4_fck",
+       .prcm           = {
                .omap2 = {
-                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_UART4_SHIFT,
+                       .module_bit = OMAP3430_EN_MCBSP4_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_UART4_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP4_SHIFT,
                },
        },
-       .slaves         = am35xx_uart4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(am35xx_uart4_slaves),
-       .class          = &omap2_uart_class,
 };
 
-
-static struct omap_hwmod_class i2c_class = {
-       .name   = "i2c",
-       .sysc   = &i2c_sysc,
-       .rev    = OMAP_I2C_IP_VERSION_1,
-       .reset  = &omap_i2c_reset,
+/* mcbsp5 */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp5_irqs[] = {
+       { .name = "irq", .irq = 27 },
+       { .name = "tx", .irq = 81 },
+       { .name = "rx", .irq = 82 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_dma_info omap3xxx_dss_sdma_chs[] = {
-       { .name = "dispc", .dma_req = 5 },
-       { .name = "dsi1", .dma_req = 74 },
+static struct omap_hwmod_dma_info omap3xxx_mcbsp5_sdma_chs[] = {
+       { .name = "rx", .dma_req = 22 },
+       { .name = "tx", .dma_req = 21 },
        { .dma_req = -1 }
 };
 
-/* dss */
-/* dss master ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dss_masters[] = {
-       &omap3xxx_dss__l3,
-};
-
-/* l4_core -> dss */
-static struct omap_hwmod_ocp_if omap3430es1_l4_core__dss = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3430es1_dss_core_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP3ES1_L4_CORE_FW_DSS_CORE_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dss_core_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_addrs,
-       .fw = {
+static struct omap_hwmod omap3xxx_mcbsp5_hwmod = {
+       .name           = "mcbsp5",
+       .class          = &omap3xxx_mcbsp_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp5_irqs,
+       .sdma_reqs      = omap3xxx_mcbsp5_sdma_chs,
+       .main_clk       = "mcbsp5_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_CORE_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_MCBSP5_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP5_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* dss slave ports */
-static struct omap_hwmod_ocp_if *omap3430es1_dss_slaves[] = {
-       &omap3430es1_l4_core__dss,
+/* 'mcbsp sidetone' class */
+static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sidetone_sysc = {
+       .sysc_offs      = 0x0010,
+       .sysc_flags     = SYSC_HAS_AUTOIDLE,
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_dss_slaves[] = {
-       &omap3xxx_l4_core__dss,
+static struct omap_hwmod_class omap3xxx_mcbsp_sidetone_hwmod_class = {
+       .name = "mcbsp_sidetone",
+       .sysc = &omap3xxx_mcbsp_sidetone_sysc,
 };
 
-static struct omap_hwmod_opt_clk dss_opt_clks[] = {
-       /*
-        * The DSS HW needs all DSS clocks enabled during reset. The dss_core
-        * driver does not use these clocks.
-        */
-       { .role = "sys_clk", .clk = "dss2_alwon_fck" },
-       { .role = "tv_clk", .clk = "dss_tv_fck" },
-       /* required only on OMAP3430 */
-       { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
+/* mcbsp2_sidetone */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp2_sidetone_irqs[] = {
+       { .name = "irq", .irq = 4 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap3430es1_dss_core_hwmod = {
-       .name           = "dss_core",
-       .class          = &omap2_dss_hwmod_class,
-       .main_clk       = "dss1_alwon_fck", /* instead of dss_fck */
-       .sdma_reqs      = omap3xxx_dss_sdma_chs,
+static struct omap_hwmod omap3xxx_mcbsp2_sidetone_hwmod = {
+       .name           = "mcbsp2_sidetone",
+       .class          = &omap3xxx_mcbsp_sidetone_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp2_sidetone_irqs,
+       .main_clk       = "mcbsp2_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
+                        .module_bit = OMAP3430_EN_MCBSP2_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_stdby_bit = OMAP3430ES1_ST_DSS_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
                },
        },
-       .opt_clks       = dss_opt_clks,
-       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
-       .slaves         = omap3430es1_dss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3430es1_dss_slaves),
-       .masters        = omap3xxx_dss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_dss_masters),
-       .flags          = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 };
 
-static struct omap_hwmod omap3xxx_dss_core_hwmod = {
-       .name           = "dss_core",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .class          = &omap2_dss_hwmod_class,
-       .main_clk       = "dss1_alwon_fck", /* instead of dss_fck */
-       .sdma_reqs      = omap3xxx_dss_sdma_chs,
+/* mcbsp3_sidetone */
+static struct omap_hwmod_irq_info omap3xxx_mcbsp3_sidetone_irqs[] = {
+       { .name = "irq", .irq = 5 },
+       { .irq = -1 }
+};
+
+static struct omap_hwmod omap3xxx_mcbsp3_sidetone_hwmod = {
+       .name           = "mcbsp3_sidetone",
+       .class          = &omap3xxx_mcbsp_sidetone_hwmod_class,
+       .mpu_irqs       = omap3xxx_mcbsp3_sidetone_irqs,
+       .main_clk       = "mcbsp3_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
+                       .module_bit = OMAP3430_EN_MCBSP3_SHIFT,
+                       .module_offs = OMAP3430_PER_MOD,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430ES2_ST_DSS_IDLE_SHIFT,
-                       .idlest_stdby_bit = OMAP3430ES2_ST_DSS_STDBY_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
                },
        },
-       .opt_clks       = dss_opt_clks,
-       .opt_clks_cnt = ARRAY_SIZE(dss_opt_clks),
-       .slaves         = omap3xxx_dss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dss_slaves),
-       .masters        = omap3xxx_dss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_dss_masters),
 };
 
-/*
- * 'dispc' class
- * display controller
- */
-
-static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-                          SYSC_HAS_ENAWAKEUP),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+/* SR common */
+static struct omap_hwmod_sysc_fields omap34xx_sr_sysc_fields = {
+       .clkact_shift   = 20,
 };
 
-static struct omap_hwmod_class omap3_dispc_hwmod_class = {
-       .name   = "dispc",
-       .sysc   = &omap3_dispc_sysc,
+static struct omap_hwmod_class_sysconfig omap34xx_sr_sysc = {
+       .sysc_offs      = 0x24,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_NO_CACHE),
+       .clockact       = CLOCKACT_TEST_ICLK,
+       .sysc_fields    = &omap34xx_sr_sysc_fields,
 };
 
-/* l4_core -> dss_dispc */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dss_dispc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_dispc_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_DISPC_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class omap34xx_smartreflex_hwmod_class = {
+       .name = "smartreflex",
+       .sysc = &omap34xx_sr_sysc,
+       .rev  = 1,
 };
 
-/* dss_dispc slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = {
-       &omap3xxx_l4_core__dss_dispc,
+static struct omap_hwmod_sysc_fields omap36xx_sr_sysc_fields = {
+       .sidle_shift    = 24,
+       .enwkup_shift   = 26,
 };
 
-static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
-       .name           = "dss_dispc",
-       .class          = &omap3_dispc_hwmod_class,
-       .mpu_irqs       = omap2_dispc_irqs,
-       .main_clk       = "dss1_alwon_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
-               },
-       },
-       .slaves         = omap3xxx_dss_dispc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dss_dispc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-       .dev_attr       = &omap2_3_dss_dispc_dev_attr
+static struct omap_hwmod_class_sysconfig omap36xx_sr_sysc = {
+       .sysc_offs      = 0x38,
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
+                       SYSC_NO_CACHE),
+       .sysc_fields    = &omap36xx_sr_sysc_fields,
 };
 
-/*
- * 'dsi' class
- * display serial interface controller
- */
+static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = {
+       .name = "smartreflex",
+       .sysc = &omap36xx_sr_sysc,
+       .rev  = 2,
+};
 
-static struct omap_hwmod_class omap3xxx_dsi_hwmod_class = {
-       .name = "dsi",
+/* SR1 */
+static struct omap_smartreflex_dev_attr sr1_dev_attr = {
+       .sensor_voltdm_name   = "mpu_iva",
 };
 
-static struct omap_hwmod_irq_info omap3xxx_dsi1_irqs[] = {
-       { .irq = 25 },
+static struct omap_hwmod_irq_info omap3_smartreflex_mpu_irqs[] = {
+       { .irq = 18 },
        { .irq = -1 }
 };
 
-/* dss_dsi1 */
-static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
-       {
-               .pa_start       = 0x4804FC00,
-               .pa_end         = 0x4804FFFF,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap34xx_sr1_hwmod = {
+       .name           = "sr1",
+       .class          = &omap34xx_smartreflex_hwmod_class,
+       .main_clk       = "sr1_fck",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_SR1_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
+               },
        },
-       { }
+       .dev_attr       = &sr1_dev_attr,
+       .mpu_irqs       = omap3_smartreflex_mpu_irqs,
+       .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
 };
 
-/* l4_core -> dss_dsi1 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dss_dsi1_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap3xxx_dss_dsi1_addrs,
-       .fw = {
+static struct omap_hwmod omap36xx_sr1_hwmod = {
+       .name           = "sr1",
+       .class          = &omap36xx_smartreflex_hwmod_class,
+       .main_clk       = "sr1_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_DSI_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_SR1_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .dev_attr       = &sr1_dev_attr,
+       .mpu_irqs       = omap3_smartreflex_mpu_irqs,
 };
 
-/* dss_dsi1 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {
-       &omap3xxx_l4_core__dss_dsi1,
+/* SR2 */
+static struct omap_smartreflex_dev_attr sr2_dev_attr = {
+       .sensor_voltdm_name     = "core",
 };
 
-static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
-       { .role = "sys_clk", .clk = "dss2_alwon_fck" },
+static struct omap_hwmod_irq_info omap3_smartreflex_core_irqs[] = {
+       { .irq = 19 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {
-       .name           = "dss_dsi1",
-       .class          = &omap3xxx_dsi_hwmod_class,
-       .mpu_irqs       = omap3xxx_dsi1_irqs,
-       .main_clk       = "dss1_alwon_fck",
+static struct omap_hwmod omap34xx_sr2_hwmod = {
+       .name           = "sr2",
+       .class          = &omap34xx_smartreflex_hwmod_class,
+       .main_clk       = "sr2_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
+                       .module_bit = OMAP3430_EN_SR2_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
                },
        },
-       .opt_clks       = dss_dsi1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_opt_clks),
-       .slaves         = omap3xxx_dss_dsi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),
-       .flags          = HWMOD_NO_IDLEST,
+       .dev_attr       = &sr2_dev_attr,
+       .mpu_irqs       = omap3_smartreflex_core_irqs,
+       .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
 };
 
-/* l4_core -> dss_rfbi */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dss_rfbi_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_rfbi_addrs,
-       .fw = {
+static struct omap_hwmod omap36xx_sr2_hwmod = {
+       .name           = "sr2",
+       .class          = &omap36xx_smartreflex_hwmod_class,
+       .main_clk       = "sr2_fck",
+       .prcm           = {
                .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_RFBI_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP ,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_SR2_SHIFT,
+                       .module_offs = WKUP_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
+               },
        },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .dev_attr       = &sr2_dev_attr,
+       .mpu_irqs       = omap3_smartreflex_core_irqs,
 };
 
-/* dss_rfbi slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = {
-       &omap3xxx_l4_core__dss_rfbi,
+/*
+ * 'mailbox' class
+ * mailbox module allowing communication between the on-chip processors
+ * using a queued mailbox-interrupt mechanism.
+ */
+
+static struct omap_hwmod_class_sysconfig omap3xxx_mailbox_sysc = {
+       .rev_offs       = 0x000,
+       .sysc_offs      = 0x010,
+       .syss_offs      = 0x014,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                               SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
-       { .role = "ick", .clk = "dss_ick" },
+static struct omap_hwmod_class omap3xxx_mailbox_hwmod_class = {
+       .name = "mailbox",
+       .sysc = &omap3xxx_mailbox_sysc,
 };
 
-static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {
-       .name           = "dss_rfbi",
-       .class          = &omap2_rfbi_hwmod_class,
-       .main_clk       = "dss1_alwon_fck",
+static struct omap_hwmod_irq_info omap3xxx_mailbox_irqs[] = {
+       { .irq = 26 },
+       { .irq = -1 }
+};
+
+static struct omap_hwmod omap3xxx_mailbox_hwmod = {
+       .name           = "mailbox",
+       .class          = &omap3xxx_mailbox_hwmod_class,
+       .mpu_irqs       = omap3xxx_mailbox_irqs,
+       .main_clk       = "mailboxes_ick",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
+                       .module_bit = OMAP3430_EN_MAILBOXES_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_MAILBOXES_SHIFT,
                },
        },
-       .opt_clks       = dss_rfbi_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
-       .slaves         = omap3xxx_dss_rfbi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),
-       .flags          = HWMOD_NO_IDLEST,
 };
 
-/* l4_core -> dss_venc */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dss_venc_hwmod,
-       .clk            = "dss_ick",
-       .addr           = omap2_dss_venc_addrs,
-       .fw = {
-               .omap2 = {
-                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_VENC_REGION,
-                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
-                       .flags  = OMAP_FIREWALL_L4,
-               }
-       },
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/*
+ * 'mcspi' class
+ * multichannel serial port interface (mcspi) / master/slave synchronous serial
+ * bus
+ */
+
+static struct omap_hwmod_class_sysconfig omap34xx_mcspi_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                               SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                               SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* dss_venc slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = {
-       &omap3xxx_l4_core__dss_venc,
+static struct omap_hwmod_class omap34xx_mcspi_class = {
+       .name = "mcspi",
+       .sysc = &omap34xx_mcspi_sysc,
+       .rev = OMAP3_MCSPI_REV,
 };
 
-static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
-       /* required only on OMAP3430 */
-       { .role = "tv_dac_clk", .clk = "dss_96m_fck" },
+/* mcspi1 */
+static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
+       .num_chipselect = 4,
 };
 
-static struct omap_hwmod omap3xxx_dss_venc_hwmod = {
-       .name           = "dss_venc",
-       .class          = &omap2_venc_hwmod_class,
-       .main_clk       = "dss_tv_fck",
+static struct omap_hwmod omap34xx_mcspi1 = {
+       .name           = "mcspi1",
+       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
+       .sdma_reqs      = omap2_mcspi1_sdma_reqs,
+       .main_clk       = "mcspi1_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_DSS1_SHIFT,
-                       .module_offs = OMAP3430_DSS_MOD,
+                       .module_bit = OMAP3430_EN_MCSPI1_SHIFT,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430_ST_MCSPI1_SHIFT,
                },
        },
-       .opt_clks       = dss_venc_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(dss_venc_opt_clks),
-       .slaves         = omap3xxx_dss_venc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dss_venc_slaves),
-       .flags          = HWMOD_NO_IDLEST,
-};
-
-/* I2C1 */
-
-static struct omap_i2c_dev_attr i2c1_dev_attr = {
-       .fifo_depth     = 8, /* bytes */
-       .flags          = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
-                         OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
-                         OMAP_I2C_FLAG_BUS_SHIFT_2,
+       .class          = &omap34xx_mcspi_class,
+       .dev_attr       = &omap_mcspi1_dev_attr,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_i2c1_slaves[] = {
-       &omap3_l4_core__i2c1,
+/* mcspi2 */
+static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
+       .num_chipselect = 2,
 };
 
-static struct omap_hwmod omap3xxx_i2c1_hwmod = {
-       .name           = "i2c1",
-       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
-       .mpu_irqs       = omap2_i2c1_mpu_irqs,
-       .sdma_reqs      = omap2_i2c1_sdma_reqs,
-       .main_clk       = "i2c1_fck",
+static struct omap_hwmod omap34xx_mcspi2 = {
+       .name           = "mcspi2",
+       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
+       .sdma_reqs      = omap2_mcspi2_sdma_reqs,
+       .main_clk       = "mcspi2_fck",
        .prcm           = {
                .omap2 = {
                        .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_I2C1_SHIFT,
+                       .module_bit = OMAP3430_EN_MCSPI2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_I2C1_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT,
                },
        },
-       .slaves         = omap3xxx_i2c1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_i2c1_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c1_dev_attr,
+       .class          = &omap34xx_mcspi_class,
+       .dev_attr       = &omap_mcspi2_dev_attr,
 };
 
-/* I2C2 */
-
-static struct omap_i2c_dev_attr i2c2_dev_attr = {
-       .fifo_depth     = 8, /* bytes */
-       .flags = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
-                OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
-                OMAP_I2C_FLAG_BUS_SHIFT_2,
+/* mcspi3 */
+static struct omap_hwmod_irq_info omap34xx_mcspi3_mpu_irqs[] = {
+       { .name = "irq", .irq = 91 }, /* 91 */
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_i2c2_slaves[] = {
-       &omap3_l4_core__i2c2,
+static struct omap_hwmod_dma_info omap34xx_mcspi3_sdma_reqs[] = {
+       { .name = "tx0", .dma_req = 15 },
+       { .name = "rx0", .dma_req = 16 },
+       { .name = "tx1", .dma_req = 23 },
+       { .name = "rx1", .dma_req = 24 },
+       { .dma_req = -1 }
 };
 
-static struct omap_hwmod omap3xxx_i2c2_hwmod = {
-       .name           = "i2c2",
-       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
-       .mpu_irqs       = omap2_i2c2_mpu_irqs,
-       .sdma_reqs      = omap2_i2c2_sdma_reqs,
-       .main_clk       = "i2c2_fck",
+static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
+       .num_chipselect = 2,
+};
+
+static struct omap_hwmod omap34xx_mcspi3 = {
+       .name           = "mcspi3",
+       .mpu_irqs       = omap34xx_mcspi3_mpu_irqs,
+       .sdma_reqs      = omap34xx_mcspi3_sdma_reqs,
+       .main_clk       = "mcspi3_fck",
        .prcm           = {
                .omap2 = {
                        .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_I2C2_SHIFT,
+                       .module_bit = OMAP3430_EN_MCSPI3_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_I2C2_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT,
                },
        },
-       .slaves         = omap3xxx_i2c2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_i2c2_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c2_dev_attr,
-};
-
-/* I2C3 */
-
-static struct omap_i2c_dev_attr i2c3_dev_attr = {
-       .fifo_depth     = 64, /* bytes */
-       .flags = OMAP_I2C_FLAG_APPLY_ERRATA_I207 |
-                OMAP_I2C_FLAG_RESET_REGS_POSTIDLE |
-                OMAP_I2C_FLAG_BUS_SHIFT_2,
+       .class          = &omap34xx_mcspi_class,
+       .dev_attr       = &omap_mcspi3_dev_attr,
 };
 
-static struct omap_hwmod_irq_info i2c3_mpu_irqs[] = {
-       { .irq = INT_34XX_I2C3_IRQ, },
+/* mcspi4 */
+static struct omap_hwmod_irq_info omap34xx_mcspi4_mpu_irqs[] = {
+       { .name = "irq", .irq = INT_34XX_SPI4_IRQ }, /* 48 */
        { .irq = -1 }
 };
 
-static struct omap_hwmod_dma_info i2c3_sdma_reqs[] = {
-       { .name = "tx", .dma_req = OMAP34XX_DMA_I2C3_TX },
-       { .name = "rx", .dma_req = OMAP34XX_DMA_I2C3_RX },
+static struct omap_hwmod_dma_info omap34xx_mcspi4_sdma_reqs[] = {
+       { .name = "tx0", .dma_req = 70 }, /* DMA_SPI4_TX0 */
+       { .name = "rx0", .dma_req = 71 }, /* DMA_SPI4_RX0 */
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_i2c3_slaves[] = {
-       &omap3_l4_core__i2c3,
+static struct omap2_mcspi_dev_attr omap_mcspi4_dev_attr = {
+       .num_chipselect = 1,
 };
 
-static struct omap_hwmod omap3xxx_i2c3_hwmod = {
-       .name           = "i2c3",
-       .flags          = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT,
-       .mpu_irqs       = i2c3_mpu_irqs,
-       .sdma_reqs      = i2c3_sdma_reqs,
-       .main_clk       = "i2c3_fck",
+static struct omap_hwmod omap34xx_mcspi4 = {
+       .name           = "mcspi4",
+       .mpu_irqs       = omap34xx_mcspi4_mpu_irqs,
+       .sdma_reqs      = omap34xx_mcspi4_sdma_reqs,
+       .main_clk       = "mcspi4_fck",
        .prcm           = {
                .omap2 = {
                        .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_I2C3_SHIFT,
+                       .module_bit = OMAP3430_EN_MCSPI4_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_I2C3_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT,
                },
        },
-       .slaves         = omap3xxx_i2c3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_i2c3_slaves),
-       .class          = &i2c_class,
-       .dev_attr       = &i2c3_dev_attr,
+       .class          = &omap34xx_mcspi_class,
+       .dev_attr       = &omap_mcspi4_dev_attr,
 };
 
-/* l4_wkup -> gpio1 */
-static struct omap_hwmod_addr_space omap3xxx_gpio1_addrs[] = {
-       {
-               .pa_start       = 0x48310000,
-               .pa_end         = 0x483101ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* usbhsotg */
+static struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = {
+       .rev_offs       = 0x0400,
+       .sysc_offs      = 0x0404,
+       .syss_offs      = 0x0408,
+       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
+                         SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                         SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                         MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__gpio1 = {
-       .master         = &omap3xxx_l4_wkup_hwmod,
-       .slave          = &omap3xxx_gpio1_hwmod,
-       .addr           = omap3xxx_gpio1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class usbotg_class = {
+       .name = "usbotg",
+       .sysc = &omap3xxx_usbhsotg_sysc,
 };
 
-/* l4_per -> gpio2 */
-static struct omap_hwmod_addr_space omap3xxx_gpio2_addrs[] = {
-       {
-               .pa_start       = 0x49050000,
-               .pa_end         = 0x490501ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
+/* usb_otg_hs */
+static struct omap_hwmod_irq_info omap3xxx_usbhsotg_mpu_irqs[] = {
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio2 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_gpio2_hwmod,
-       .addr           = omap3xxx_gpio2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       { .name = "mc", .irq = 92 },
+       { .name = "dma", .irq = 93 },
+       { .irq = -1 }
 };
 
-/* l4_per -> gpio3 */
-static struct omap_hwmod_addr_space omap3xxx_gpio3_addrs[] = {
-       {
-               .pa_start       = 0x49052000,
-               .pa_end         = 0x490521ff,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
+       .name           = "usb_otg_hs",
+       .mpu_irqs       = omap3xxx_usbhsotg_mpu_irqs,
+       .main_clk       = "hsotgusb_ick",
+       .prcm           = {
+               .omap2 = {
+                       .prcm_reg_id = 1,
+                       .module_bit = OMAP3430_EN_HSOTGUSB_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .idlest_reg_id = 1,
+                       .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT,
+                       .idlest_stdby_bit = OMAP3430ES2_ST_HSOTGUSB_STDBY_SHIFT
+               },
        },
-       { }
-};
+       .class          = &usbotg_class,
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio3 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_gpio3_hwmod,
-       .addr           = omap3xxx_gpio3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       /*
+        * Erratum ID: i479  idle_req / idle_ack mechanism potentially
+        * broken when autoidle is enabled
+        * workaround is to disable the autoidle bit at module level.
+        */
+       .flags          = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
+                               | HWMOD_SWSUP_MSTANDBY,
 };
 
-/* l4_per -> gpio4 */
-static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = {
-       {
-               .pa_start       = 0x49054000,
-               .pa_end         = 0x490541ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
+/* usb_otg_hs */
+static struct omap_hwmod_irq_info am35xx_usbhsotg_mpu_irqs[] = {
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio4 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_gpio4_hwmod,
-       .addr           = omap3xxx_gpio4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       { .name = "mc", .irq = 71 },
+       { .irq = -1 }
 };
 
-/* l4_per -> gpio5 */
-static struct omap_hwmod_addr_space omap3xxx_gpio5_addrs[] = {
-       {
-               .pa_start       = 0x49056000,
-               .pa_end         = 0x490561ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+static struct omap_hwmod_class am35xx_usbotg_class = {
+       .name = "am35xx_usbotg",
+       .sysc = NULL,
 };
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio5 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_gpio5_hwmod,
-       .addr           = omap3xxx_gpio5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod am35xx_usbhsotg_hwmod = {
+       .name           = "am35x_otg_hs",
+       .mpu_irqs       = am35xx_usbhsotg_mpu_irqs,
+       .main_clk       = NULL,
+       .prcm = {
+               .omap2 = {
+               },
+       },
+       .class          = &am35xx_usbotg_class,
 };
 
-/* l4_per -> gpio6 */
-static struct omap_hwmod_addr_space omap3xxx_gpio6_addrs[] = {
-       {
-               .pa_start       = 0x49058000,
-               .pa_end         = 0x490581ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* MMC/SD/SDIO common */
+static struct omap_hwmod_class_sysconfig omap34xx_mmc_sysc = {
+       .rev_offs       = 0x1fc,
+       .sysc_offs      = 0x10,
+       .syss_offs      = 0x14,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_gpio6_hwmod,
-       .addr           = omap3xxx_gpio6_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class omap34xx_mmc_class = {
+       .name = "mmc",
+       .sysc = &omap34xx_mmc_sysc,
 };
 
-/*
- * 'gpio' class
- * general purpose io module
- */
+/* MMC/SD/SDIO1 */
 
-static struct omap_hwmod_class_sysconfig omap3xxx_gpio_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
-                          SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+static struct omap_hwmod_irq_info omap34xx_mmc1_mpu_irqs[] = {
+       { .irq = 83, },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_class omap3xxx_gpio_hwmod_class = {
-       .name = "gpio",
-       .sysc = &omap3xxx_gpio_sysc,
-       .rev = 1,
+static struct omap_hwmod_dma_info omap34xx_mmc1_sdma_reqs[] = {
+       { .name = "tx", .dma_req = 61, },
+       { .name = "rx", .dma_req = 62, },
+       { .dma_req = -1 }
 };
 
-/* gpio_dev_attr*/
-static struct omap_gpio_dev_attr gpio_dev_attr = {
-       .bank_width = 32,
-       .dbck_flag = true,
+static struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = {
+       { .role = "dbck", .clk = "omap_32k_fck", },
 };
 
-/* gpio1 */
-static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio1_dbck", },
+static struct omap_mmc_dev_attr mmc1_dev_attr = {
+       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_gpio1_slaves[] = {
-       &omap3xxx_l4_wkup__gpio1,
+/* See 35xx errata 2.1.1.128 in SPRZ278F */
+static struct omap_mmc_dev_attr mmc1_pre_es3_dev_attr = {
+       .flags = (OMAP_HSMMC_SUPPORTS_DUAL_VOLT |
+                 OMAP_HSMMC_BROKEN_MULTIBLOCK_READ),
 };
 
-static struct omap_hwmod omap3xxx_gpio1_hwmod = {
-       .name           = "gpio1",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio1_irqs,
-       .main_clk       = "gpio1_ick",
-       .opt_clks       = gpio1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
+static struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod = {
+       .name           = "mmc1",
+       .mpu_irqs       = omap34xx_mmc1_mpu_irqs,
+       .sdma_reqs      = omap34xx_mmc1_sdma_reqs,
+       .opt_clks       = omap34xx_mmc1_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
+       .main_clk       = "mmchs1_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO1_SHIFT,
-                       .module_offs = WKUP_MOD,
+                       .module_bit = OMAP3430_EN_MMC1_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO1_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio1_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio2 */
-static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio2_dbck", },
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_gpio2_slaves[] = {
-       &omap3xxx_l4_per__gpio2,
+       .dev_attr       = &mmc1_pre_es3_dev_attr,
+       .class          = &omap34xx_mmc_class,
 };
 
-static struct omap_hwmod omap3xxx_gpio2_hwmod = {
-       .name           = "gpio2",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio2_irqs,
-       .main_clk       = "gpio2_ick",
-       .opt_clks       = gpio2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
+static struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod = {
+       .name           = "mmc1",
+       .mpu_irqs       = omap34xx_mmc1_mpu_irqs,
+       .sdma_reqs      = omap34xx_mmc1_sdma_reqs,
+       .opt_clks       = omap34xx_mmc1_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
+       .main_clk       = "mmchs1_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO2_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_MMC1_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO2_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio2_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
+       .dev_attr       = &mmc1_dev_attr,
+       .class          = &omap34xx_mmc_class,
 };
 
-/* gpio3 */
-static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio3_dbck", },
+/* MMC/SD/SDIO2 */
+
+static struct omap_hwmod_irq_info omap34xx_mmc2_mpu_irqs[] = {
+       { .irq = INT_24XX_MMC2_IRQ, },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_gpio3_slaves[] = {
-       &omap3xxx_l4_per__gpio3,
+static struct omap_hwmod_dma_info omap34xx_mmc2_sdma_reqs[] = {
+       { .name = "tx", .dma_req = 47, },
+       { .name = "rx", .dma_req = 48, },
+       { .dma_req = -1 }
 };
 
-static struct omap_hwmod omap3xxx_gpio3_hwmod = {
-       .name           = "gpio3",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio3_irqs,
-       .main_clk       = "gpio3_ick",
-       .opt_clks       = gpio3_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
+static struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = {
+       { .role = "dbck", .clk = "omap_32k_fck", },
+};
+
+/* See 35xx errata 2.1.1.128 in SPRZ278F */
+static struct omap_mmc_dev_attr mmc2_pre_es3_dev_attr = {
+       .flags = OMAP_HSMMC_BROKEN_MULTIBLOCK_READ,
+};
+
+static struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod = {
+       .name           = "mmc2",
+       .mpu_irqs       = omap34xx_mmc2_mpu_irqs,
+       .sdma_reqs      = omap34xx_mmc2_sdma_reqs,
+       .opt_clks       = omap34xx_mmc2_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
+       .main_clk       = "mmchs2_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO3_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_MMC2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO3_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio3_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
-
-/* gpio4 */
-static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio4_dbck", },
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_gpio4_slaves[] = {
-       &omap3xxx_l4_per__gpio4,
+       .dev_attr       = &mmc2_pre_es3_dev_attr,
+       .class          = &omap34xx_mmc_class,
 };
 
-static struct omap_hwmod omap3xxx_gpio4_hwmod = {
-       .name           = "gpio4",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap2_gpio4_irqs,
-       .main_clk       = "gpio4_ick",
-       .opt_clks       = gpio4_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
+static struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod = {
+       .name           = "mmc2",
+       .mpu_irqs       = omap34xx_mmc2_mpu_irqs,
+       .sdma_reqs      = omap34xx_mmc2_sdma_reqs,
+       .opt_clks       = omap34xx_mmc2_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
+       .main_clk       = "mmchs2_fck",
        .prcm           = {
                .omap2 = {
+                       .module_offs = CORE_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO4_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_MMC2_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO4_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio4_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
+       .class          = &omap34xx_mmc_class,
 };
 
-/* gpio5 */
-static struct omap_hwmod_irq_info omap3xxx_gpio5_irqs[] = {
-       { .irq = 33 }, /* INT_34XX_GPIO_BANK5 */
+/* MMC/SD/SDIO3 */
+
+static struct omap_hwmod_irq_info omap34xx_mmc3_mpu_irqs[] = {
+       { .irq = 94, },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio5_dbck", },
+static struct omap_hwmod_dma_info omap34xx_mmc3_sdma_reqs[] = {
+       { .name = "tx", .dma_req = 77, },
+       { .name = "rx", .dma_req = 78, },
+       { .dma_req = -1 }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_gpio5_slaves[] = {
-       &omap3xxx_l4_per__gpio5,
+static struct omap_hwmod_opt_clk omap34xx_mmc3_opt_clks[] = {
+       { .role = "dbck", .clk = "omap_32k_fck", },
 };
 
-static struct omap_hwmod omap3xxx_gpio5_hwmod = {
-       .name           = "gpio5",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio5_irqs,
-       .main_clk       = "gpio5_ick",
-       .opt_clks       = gpio5_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio5_opt_clks),
+static struct omap_hwmod omap3xxx_mmc3_hwmod = {
+       .name           = "mmc3",
+       .mpu_irqs       = omap34xx_mmc3_mpu_irqs,
+       .sdma_reqs      = omap34xx_mmc3_sdma_reqs,
+       .opt_clks       = omap34xx_mmc3_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc3_opt_clks),
+       .main_clk       = "mmchs3_fck",
        .prcm           = {
                .omap2 = {
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO5_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430_EN_MMC3_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO5_SHIFT,
+                       .idlest_idle_bit = OMAP3430_ST_MMC3_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio5_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
+       .class          = &omap34xx_mmc_class,
 };
 
-/* gpio6 */
-static struct omap_hwmod_irq_info omap3xxx_gpio6_irqs[] = {
-       { .irq = 34 }, /* INT_34XX_GPIO_BANK6 */
-       { .irq = -1 }
+/*
+ * 'usb_host_hs' class
+ * high-speed multi-port usb host controller
+ */
+
+static struct omap_hwmod_class_sysconfig omap3xxx_usb_host_hs_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
+                          SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
+                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
-       { .role = "dbclk", .clk = "gpio6_dbck", },
+static struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = {
+       .name = "usb_host_hs",
+       .sysc = &omap3xxx_usb_host_hs_sysc,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_gpio6_slaves[] = {
-       &omap3xxx_l4_per__gpio6,
+static struct omap_hwmod_opt_clk omap3xxx_usb_host_hs_opt_clks[] = {
+         { .role = "ehci_logic_fck", .clk = "usbhost_120m_fck", },
 };
 
-static struct omap_hwmod omap3xxx_gpio6_hwmod = {
-       .name           = "gpio6",
-       .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio6_irqs,
-       .main_clk       = "gpio6_ick",
-       .opt_clks       = gpio6_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(gpio6_opt_clks),
-       .prcm           = {
+static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = {
+       { .name = "ohci-irq", .irq = 76 },
+       { .name = "ehci-irq", .irq = 77 },
+       { .irq = -1 }
+};
+
+static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {
+       .name           = "usb_host_hs",
+       .class          = &omap3xxx_usb_host_hs_hwmod_class,
+       .clkdm_name     = "l3_init_clkdm",
+       .mpu_irqs       = omap3xxx_usb_host_hs_irqs,
+       .main_clk       = "usbhost_48m_fck",
+       .prcm = {
                .omap2 = {
+                       .module_offs = OMAP3430ES2_USBHOST_MOD,
                        .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_GPIO6_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
+                       .module_bit = OMAP3430ES2_EN_USBHOST1_SHIFT,
                        .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_GPIO6_SHIFT,
+                       .idlest_idle_bit = OMAP3430ES2_ST_USBHOST_IDLE_SHIFT,
+                       .idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT,
                },
        },
-       .slaves         = omap3xxx_gpio6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_gpio6_slaves),
-       .class          = &omap3xxx_gpio_hwmod_class,
-       .dev_attr       = &gpio_dev_attr,
-};
+       .opt_clks       = omap3xxx_usb_host_hs_opt_clks,
+       .opt_clks_cnt   = ARRAY_SIZE(omap3xxx_usb_host_hs_opt_clks),
+
+       /*
+        * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
+        * id: i660
+        *
+        * Description:
+        * In the following configuration :
+        * - USBHOST module is set to smart-idle mode
+        * - PRCM asserts idle_req to the USBHOST module ( This typically
+        *   happens when the system is going to a low power mode : all ports
+        *   have been suspended, the master part of the USBHOST module has
+        *   entered the standby state, and SW has cut the functional clocks)
+        * - an USBHOST interrupt occurs before the module is able to answer
+        *   idle_ack, typically a remote wakeup IRQ.
+        * Then the USB HOST module will enter a deadlock situation where it
+        * is no more accessible nor functional.
+        *
+        * Workaround:
+        * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
+        */
+
+       /*
+        * Errata: USB host EHCI may stall when entering smart-standby mode
+        * Id: i571
+        *
+        * Description:
+        * When the USBHOST module is set to smart-standby mode, and when it is
+        * ready to enter the standby state (i.e. all ports are suspended and
+        * all attached devices are in suspend mode), then it can wrongly assert
+        * the Mstandby signal too early while there are still some residual OCP
+        * transactions ongoing. If this condition occurs, the internal state
+        * machine may go to an undefined state and the USB link may be stuck
+        * upon the next resume.
+        *
+        * Workaround:
+        * Don't use smart standby; use only force standby,
+        * hence HWMOD_SWSUP_MSTANDBY
+        */
 
-/* dma_system -> L3 */
-static struct omap_hwmod_ocp_if omap3xxx_dma_system__l3 = {
-       .master         = &omap3xxx_dma_system_hwmod,
-       .slave          = &omap3xxx_l3_main_hwmod,
-       .clk            = "core_l3_ick",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
+       /*
+        * During system boot; If the hwmod framework resets the module
+        * the module will have smart idle settings; which can lead to deadlock
+        * (above Errata Id:i660); so, dont reset the module during boot;
+        * Use HWMOD_INIT_NO_RESET.
+        */
 
-/* dma attributes */
-static struct omap_dma_dev_attr dma_dev_attr = {
-       .dev_caps  = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY |
-                               IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY,
-       .lch_count = 32,
+       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
+                         HWMOD_INIT_NO_RESET,
 };
 
-static struct omap_hwmod_class_sysconfig omap3xxx_dma_sysc = {
+/*
+ * 'usb_tll_hs' class
+ * usb_tll_hs module is the adapter on the usb_host_hs ports
+ */
+static struct omap_hwmod_class_sysconfig omap3xxx_usb_tll_hs_sysc = {
        .rev_offs       = 0x0000,
-       .sysc_offs      = 0x002c,
-       .syss_offs      = 0x0028,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
-                          SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE |
-                          SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
        .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_class omap3xxx_dma_hwmod_class = {
-       .name = "dma",
-       .sysc = &omap3xxx_dma_sysc,
-};
-
-/* dma_system */
-static struct omap_hwmod_addr_space omap3xxx_dma_system_addrs[] = {
-       {
-               .pa_start       = 0x48056000,
-               .pa_end         = 0x48056fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* dma_system master ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dma_system_masters[] = {
-       &omap3xxx_dma_system__l3,
-};
-
-/* l4_cfg -> dma_system */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__dma_system = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_dma_system_hwmod,
-       .clk            = "core_l4_ick",
-       .addr           = omap3xxx_dma_system_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_class omap3xxx_usb_tll_hs_hwmod_class = {
+       .name = "usb_tll_hs",
+       .sysc = &omap3xxx_usb_tll_hs_sysc,
 };
 
-/* dma_system slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_dma_system_slaves[] = {
-       &omap3xxx_l4_core__dma_system,
+static struct omap_hwmod_irq_info omap3xxx_usb_tll_hs_irqs[] = {
+       { .name = "tll-irq", .irq = 78 },
+       { .irq = -1 }
 };
 
-static struct omap_hwmod omap3xxx_dma_system_hwmod = {
-       .name           = "dma",
-       .class          = &omap3xxx_dma_hwmod_class,
-       .mpu_irqs       = omap2_dma_system_irqs,
-       .main_clk       = "core_l3_ick",
+static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = {
+       .name           = "usb_tll_hs",
+       .class          = &omap3xxx_usb_tll_hs_hwmod_class,
+       .clkdm_name     = "l3_init_clkdm",
+       .mpu_irqs       = omap3xxx_usb_tll_hs_irqs,
+       .main_clk       = "usbtll_fck",
        .prcm = {
                .omap2 = {
-                       .module_offs            = CORE_MOD,
-                       .prcm_reg_id            = 1,
-                       .module_bit             = OMAP3430_ST_SDMA_SHIFT,
-                       .idlest_reg_id          = 1,
-                       .idlest_idle_bit        = OMAP3430_ST_SDMA_SHIFT,
+                       .module_offs = CORE_MOD,
+                       .prcm_reg_id = 3,
+                       .module_bit = OMAP3430ES2_EN_USBTLL_SHIFT,
+                       .idlest_reg_id = 3,
+                       .idlest_idle_bit = OMAP3430ES2_ST_USBTLL_SHIFT,
                },
        },
-       .slaves         = omap3xxx_dma_system_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_dma_system_slaves),
-       .masters        = omap3xxx_dma_system_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_dma_system_masters),
-       .dev_attr       = &dma_dev_attr,
-       .flags          = HWMOD_NO_IDLEST,
 };
 
 /*
- * 'mcbsp' class
- * multi channel buffered serial port controller
+ * interfaces
  */
 
-static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sysc = {
-       .sysc_offs      = 0x008c,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-       .clockact       = 0x2,
-};
-
-static struct omap_hwmod_class omap3xxx_mcbsp_hwmod_class = {
-       .name = "mcbsp",
-       .sysc = &omap3xxx_mcbsp_sysc,
-       .rev  = MCBSP_CONFIG_TYPE3,
+/* L3 -> L4_CORE interface */
+static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_core = {
+       .master = &omap3xxx_l3_main_hwmod,
+       .slave  = &omap3xxx_l4_core_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp1 */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp1_irqs[] = {
-       { .name = "irq", .irq = 16 },
-       { .name = "tx", .irq = 59 },
-       { .name = "rx", .irq = 60 },
-       { .irq = -1 }
+/* L3 -> L4_PER interface */
+static struct omap_hwmod_ocp_if omap3xxx_l3_main__l4_per = {
+       .master = &omap3xxx_l3_main_hwmod,
+       .slave  = &omap3xxx_l4_per_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp1_addrs[] = {
+static struct omap_hwmod_addr_space omap3xxx_l3_main_addrs[] = {
        {
-               .name           = "mpu",
-               .pa_start       = 0x48074000,
-               .pa_end         = 0x480740ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = 0x68000000,
+               .pa_end         = 0x6800ffff,
+               .flags          = ADDR_TYPE_RT,
        },
        { }
 };
 
-/* l4_core -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mcbsp1_hwmod,
-       .clk            = "mcbsp1_ick",
-       .addr           = omap3xxx_mcbsp1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* MPU -> L3 interface */
+static struct omap_hwmod_ocp_if omap3xxx_mpu__l3_main = {
+       .master   = &omap3xxx_mpu_hwmod,
+       .slave    = &omap3xxx_l3_main_hwmod,
+       .addr     = omap3xxx_l3_main_addrs,
+       .user   = OCP_USER_MPU,
 };
 
-/* mcbsp1 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp1_slaves[] = {
-       &omap3xxx_l4_core__mcbsp1,
+/* DSS -> l3 */
+static struct omap_hwmod_ocp_if omap3430es1_dss__l3 = {
+       .master         = &omap3430es1_dss_core_hwmod,
+       .slave          = &omap3xxx_l3_main_hwmod,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap3xxx_mcbsp1_hwmod = {
-       .name           = "mcbsp1",
-       .class          = &omap3xxx_mcbsp_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp1_irqs,
-       .sdma_reqs      = omap2_mcbsp1_sdma_reqs,
-       .main_clk       = "mcbsp1_fck",
-       .prcm           = {
+static struct omap_hwmod_ocp_if omap3xxx_dss__l3 = {
+       .master         = &omap3xxx_dss_core_hwmod,
+       .slave          = &omap3xxx_l3_main_hwmod,
+       .fw = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP1_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP1_SHIFT,
-               },
+                       .l3_perm_bit  = OMAP3_L3_CORE_FW_INIT_ID_DSS,
+                       .flags  = OMAP_FIREWALL_L3,
+               }
        },
-       .slaves         = omap3xxx_mcbsp1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp1_slaves),
-};
-
-/* mcbsp2 */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp2_irqs[] = {
-       { .name = "irq", .irq = 17 },
-       { .name = "tx", .irq = 62 },
-       { .name = "rx", .irq = 63 },
-       { .irq = -1 }
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp2_addrs[] = {
-       {
-               .name           = "mpu",
-               .pa_start       = 0x49022000,
-               .pa_end         = 0x490220ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
+/* l3_core -> usbhsotg interface */
+static struct omap_hwmod_ocp_if omap3xxx_usbhsotg__l3 = {
+       .master         = &omap3xxx_usbhsotg_hwmod,
+       .slave          = &omap3xxx_l3_main_hwmod,
+       .clk            = "core_l3_ick",
+       .user           = OCP_USER_MPU,
 };
 
-/* l4_per -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_mcbsp2_hwmod,
-       .clk            = "mcbsp2_ick",
-       .addr           = omap3xxx_mcbsp2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/* l3_core -> am35xx_usbhsotg interface */
+static struct omap_hwmod_ocp_if am35xx_usbhsotg__l3 = {
+       .master         = &am35xx_usbhsotg_hwmod,
+       .slave          = &omap3xxx_l3_main_hwmod,
+       .clk            = "core_l3_ick",
+       .user           = OCP_USER_MPU,
 };
-
-/* mcbsp2 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp2_slaves[] = {
-       &omap3xxx_l4_per__mcbsp2,
+/* L4_CORE -> L4_WKUP interface */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__l4_wkup = {
+       .master = &omap3xxx_l4_core_hwmod,
+       .slave  = &omap3xxx_l4_wkup_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_mcbsp_dev_attr omap34xx_mcbsp2_dev_attr = {
-       .sidetone       = "mcbsp2_sidetone",
+/* L4 CORE -> MMC1 interface */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_pre_es3_mmc1_hwmod,
+       .clk            = "mmchs1_ick",
+       .addr           = omap2430_mmc1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .flags          = OMAP_FIREWALL_L4
 };
 
-static struct omap_hwmod omap3xxx_mcbsp2_hwmod = {
-       .name           = "mcbsp2",
-       .class          = &omap3xxx_mcbsp_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp2_irqs,
-       .sdma_reqs      = omap2_mcbsp2_sdma_reqs,
-       .main_clk       = "mcbsp2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP2_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
-               },
-       },
-       .slaves         = omap3xxx_mcbsp2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp2_slaves),
-       .dev_attr       = &omap34xx_mcbsp2_dev_attr,
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_es3plus_mmc1_hwmod,
+       .clk            = "mmchs1_ick",
+       .addr           = omap2430_mmc1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .flags          = OMAP_FIREWALL_L4
 };
 
-/* mcbsp3 */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp3_irqs[] = {
-       { .name = "irq", .irq = 22 },
-       { .name = "tx", .irq = 89 },
-       { .name = "rx", .irq = 90 },
-       { .irq = -1 }
+/* L4 CORE -> MMC2 interface */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__pre_es3_mmc2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_pre_es3_mmc2_hwmod,
+       .clk            = "mmchs2_ick",
+       .addr           = omap2430_mmc2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .flags          = OMAP_FIREWALL_L4
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp3_addrs[] = {
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__es3plus_mmc2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_es3plus_mmc2_hwmod,
+       .clk            = "mmchs2_ick",
+       .addr           = omap2430_mmc2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .flags          = OMAP_FIREWALL_L4
+};
+
+/* L4 CORE -> MMC3 interface */
+static struct omap_hwmod_addr_space omap3xxx_mmc3_addr_space[] = {
        {
-               .name           = "mpu",
-               .pa_start       = 0x49024000,
-               .pa_end         = 0x490240ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = 0x480ad000,
+               .pa_end         = 0x480ad1ff,
+               .flags          = ADDR_TYPE_RT,
        },
        { }
 };
 
-/* l4_per -> mcbsp3 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3 = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_mcbsp3_hwmod,
-       .clk            = "mcbsp3_ick",
-       .addr           = omap3xxx_mcbsp3_addrs,
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__mmc3 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_mmc3_hwmod,
+       .clk            = "mmchs3_ick",
+       .addr           = omap3xxx_mmc3_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .flags          = OMAP_FIREWALL_L4
 };
 
-/* mcbsp3 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp3_slaves[] = {
-       &omap3xxx_l4_per__mcbsp3,
+/* L4 CORE -> UART1 interface */
+static struct omap_hwmod_addr_space omap3xxx_uart1_addr_space[] = {
+       {
+               .pa_start       = OMAP3_UART1_BASE,
+               .pa_end         = OMAP3_UART1_BASE + SZ_8K - 1,
+               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
+       },
+       { }
 };
 
-static struct omap_mcbsp_dev_attr omap34xx_mcbsp3_dev_attr = {
-       .sidetone       = "mcbsp3_sidetone",
+static struct omap_hwmod_ocp_if omap3_l4_core__uart1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_uart1_hwmod,
+       .clk            = "uart1_ick",
+       .addr           = omap3xxx_uart1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap3xxx_mcbsp3_hwmod = {
-       .name           = "mcbsp3",
-       .class          = &omap3xxx_mcbsp_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp3_irqs,
-       .sdma_reqs      = omap2_mcbsp3_sdma_reqs,
-       .main_clk       = "mcbsp3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP3_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
-               },
+/* L4 CORE -> UART2 interface */
+static struct omap_hwmod_addr_space omap3xxx_uart2_addr_space[] = {
+       {
+               .pa_start       = OMAP3_UART2_BASE,
+               .pa_end         = OMAP3_UART2_BASE + SZ_1K - 1,
+               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
        },
-       .slaves         = omap3xxx_mcbsp3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp3_slaves),
-       .dev_attr       = &omap34xx_mcbsp3_dev_attr,
-};
-
-/* mcbsp4 */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp4_irqs[] = {
-       { .name = "irq", .irq = 23 },
-       { .name = "tx", .irq = 54 },
-       { .name = "rx", .irq = 55 },
-       { .irq = -1 }
+       { }
 };
 
-static struct omap_hwmod_dma_info omap3xxx_mcbsp4_sdma_chs[] = {
-       { .name = "rx", .dma_req = 20 },
-       { .name = "tx", .dma_req = 19 },
-       { .dma_req = -1 }
+static struct omap_hwmod_ocp_if omap3_l4_core__uart2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_uart2_hwmod,
+       .clk            = "uart2_ick",
+       .addr           = omap3xxx_uart2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp4_addrs[] = {
+/* L4 PER -> UART3 interface */
+static struct omap_hwmod_addr_space omap3xxx_uart3_addr_space[] = {
        {
-               .name           = "mpu",
-               .pa_start       = 0x49026000,
-               .pa_end         = 0x490260ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = OMAP3_UART3_BASE,
+               .pa_end         = OMAP3_UART3_BASE + SZ_1K - 1,
+               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
        },
        { }
 };
 
-/* l4_per -> mcbsp4 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp4 = {
+static struct omap_hwmod_ocp_if omap3_l4_per__uart3 = {
        .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_mcbsp4_hwmod,
-       .clk            = "mcbsp4_ick",
-       .addr           = omap3xxx_mcbsp4_addrs,
+       .slave          = &omap3xxx_uart3_hwmod,
+       .clk            = "uart3_ick",
+       .addr           = omap3xxx_uart3_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp4 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp4_slaves[] = {
-       &omap3xxx_l4_per__mcbsp4,
-};
-
-static struct omap_hwmod omap3xxx_mcbsp4_hwmod = {
-       .name           = "mcbsp4",
-       .class          = &omap3xxx_mcbsp_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp4_irqs,
-       .sdma_reqs      = omap3xxx_mcbsp4_sdma_chs,
-       .main_clk       = "mcbsp4_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP4_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP4_SHIFT,
-               },
+/* L4 PER -> UART4 interface */
+static struct omap_hwmod_addr_space omap36xx_uart4_addr_space[] = {
+       {
+               .pa_start       = OMAP3_UART4_BASE,
+               .pa_end         = OMAP3_UART4_BASE + SZ_1K - 1,
+               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
        },
-       .slaves         = omap3xxx_mcbsp4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp4_slaves),
-};
-
-/* mcbsp5 */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp5_irqs[] = {
-       { .name = "irq", .irq = 27 },
-       { .name = "tx", .irq = 81 },
-       { .name = "rx", .irq = 82 },
-       { .irq = -1 }
+       { }
 };
 
-static struct omap_hwmod_dma_info omap3xxx_mcbsp5_sdma_chs[] = {
-       { .name = "rx", .dma_req = 22 },
-       { .name = "tx", .dma_req = 21 },
-       { .dma_req = -1 }
+static struct omap_hwmod_ocp_if omap36xx_l4_per__uart4 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap36xx_uart4_hwmod,
+       .clk            = "uart4_ick",
+       .addr           = omap36xx_uart4_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp5_addrs[] = {
+/* AM35xx: L4 CORE -> UART4 interface */
+static struct omap_hwmod_addr_space am35xx_uart4_addr_space[] = {
        {
-               .name           = "mpu",
-               .pa_start       = 0x48096000,
-               .pa_end         = 0x480960ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = OMAP3_UART4_AM35XX_BASE,
+               .pa_end         = OMAP3_UART4_AM35XX_BASE + SZ_1K - 1,
+               .flags          = ADDR_MAP_ON_INIT | ADDR_TYPE_RT,
        },
-       { }
 };
 
-/* l4_core -> mcbsp5 */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp5 = {
+static struct omap_hwmod_ocp_if am35xx_l4_core__uart4 = {
        .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mcbsp5_hwmod,
-       .clk            = "mcbsp5_ick",
-       .addr           = omap3xxx_mcbsp5_addrs,
+       .slave          = &am35xx_uart4_hwmod,
+       .clk            = "uart4_ick",
+       .addr           = am35xx_uart4_addr_space,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp5 slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp5_slaves[] = {
-       &omap3xxx_l4_core__mcbsp5,
-};
-
-static struct omap_hwmod omap3xxx_mcbsp5_hwmod = {
-       .name           = "mcbsp5",
-       .class          = &omap3xxx_mcbsp_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp5_irqs,
-       .sdma_reqs      = omap3xxx_mcbsp5_sdma_chs,
-       .main_clk       = "mcbsp5_fck",
-       .prcm           = {
+/* L4 CORE -> I2C1 interface */
+static struct omap_hwmod_ocp_if omap3_l4_core__i2c1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_i2c1_hwmod,
+       .clk            = "i2c1_ick",
+       .addr           = omap2_i2c1_addr_space,
+       .fw = {
                .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP5_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP5_SHIFT,
-               },
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C1_REGION,
+                       .l4_prot_group = 7,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
        },
-       .slaves         = omap3xxx_mcbsp5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp5_slaves),
-};
-/* 'mcbsp sidetone' class */
-
-static struct omap_hwmod_class_sysconfig omap3xxx_mcbsp_sidetone_sysc = {
-       .sysc_offs      = 0x0010,
-       .sysc_flags     = SYSC_HAS_AUTOIDLE,
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap3xxx_mcbsp_sidetone_hwmod_class = {
-       .name = "mcbsp_sidetone",
-       .sysc = &omap3xxx_mcbsp_sidetone_sysc,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcbsp2_sidetone */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp2_sidetone_irqs[] = {
-       { .name = "irq", .irq = 4 },
-       { .irq = -1 }
+/* L4 CORE -> I2C2 interface */
+static struct omap_hwmod_ocp_if omap3_l4_core__i2c2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_i2c2_hwmod,
+       .clk            = "i2c2_ick",
+       .addr           = omap2_i2c2_addr_space,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C2_REGION,
+                       .l4_prot_group = 7,
+                       .flags = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp2_sidetone_addrs[] = {
+/* L4 CORE -> I2C3 interface */
+static struct omap_hwmod_addr_space omap3xxx_i2c3_addr_space[] = {
        {
-               .name           = "sidetone",
-               .pa_start       = 0x49028000,
-               .pa_end         = 0x490280ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = 0x48060000,
+               .pa_end         = 0x48060000 + SZ_128 - 1,
+               .flags          = ADDR_TYPE_RT,
        },
        { }
 };
 
-/* l4_per -> mcbsp2_sidetone */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2_sidetone = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_mcbsp2_sidetone_hwmod,
-       .clk            = "mcbsp2_ick",
-       .addr           = omap3xxx_mcbsp2_sidetone_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* mcbsp2_sidetone slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp2_sidetone_slaves[] = {
-       &omap3xxx_l4_per__mcbsp2_sidetone,
-};
-
-static struct omap_hwmod omap3xxx_mcbsp2_sidetone_hwmod = {
-       .name           = "mcbsp2_sidetone",
-       .class          = &omap3xxx_mcbsp_sidetone_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp2_sidetone_irqs,
-       .main_clk       = "mcbsp2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                        .module_bit = OMAP3430_EN_MCBSP2_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP2_SHIFT,
-               },
+static struct omap_hwmod_ocp_if omap3_l4_core__i2c3 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_i2c3_hwmod,
+       .clk            = "i2c3_ick",
+       .addr           = omap3xxx_i2c3_addr_space,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_I2C3_REGION,
+                       .l4_prot_group = 7,
+                       .flags = OMAP_FIREWALL_L4,
+               }
        },
-       .slaves         = omap3xxx_mcbsp2_sidetone_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp2_sidetone_slaves),
-};
-
-/* mcbsp3_sidetone */
-static struct omap_hwmod_irq_info omap3xxx_mcbsp3_sidetone_irqs[] = {
-       { .name = "irq", .irq = 5 },
-       { .irq = -1 }
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mcbsp3_sidetone_addrs[] = {
+/* L4 CORE -> SR1 interface */
+static struct omap_hwmod_addr_space omap3_sr1_addr_space[] = {
        {
-               .name           = "sidetone",
-               .pa_start       = 0x4902A000,
-               .pa_end         = 0x4902A0ff,
-               .flags          = ADDR_TYPE_RT
+               .pa_start       = OMAP34XX_SR1_BASE,
+               .pa_end         = OMAP34XX_SR1_BASE + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT,
        },
        { }
 };
 
-/* l4_per -> mcbsp3_sidetone */
-static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3_sidetone = {
-       .master         = &omap3xxx_l4_per_hwmod,
-       .slave          = &omap3xxx_mcbsp3_sidetone_hwmod,
-       .clk            = "mcbsp3_ick",
-       .addr           = omap3xxx_mcbsp3_sidetone_addrs,
+static struct omap_hwmod_ocp_if omap34xx_l4_core__sr1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_sr1_hwmod,
+       .clk            = "sr_l4_ick",
+       .addr           = omap3_sr1_addr_space,
        .user           = OCP_USER_MPU,
 };
 
-/* mcbsp3_sidetone slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mcbsp3_sidetone_slaves[] = {
-       &omap3xxx_l4_per__mcbsp3_sidetone,
+static struct omap_hwmod_ocp_if omap36xx_l4_core__sr1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap36xx_sr1_hwmod,
+       .clk            = "sr_l4_ick",
+       .addr           = omap3_sr1_addr_space,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod omap3xxx_mcbsp3_sidetone_hwmod = {
-       .name           = "mcbsp3_sidetone",
-       .class          = &omap3xxx_mcbsp_sidetone_hwmod_class,
-       .mpu_irqs       = omap3xxx_mcbsp3_sidetone_irqs,
-       .main_clk       = "mcbsp3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCBSP3_SHIFT,
-                       .module_offs = OMAP3430_PER_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCBSP3_SHIFT,
-               },
+/* L4 CORE -> SR1 interface */
+static struct omap_hwmod_addr_space omap3_sr2_addr_space[] = {
+       {
+               .pa_start       = OMAP34XX_SR2_BASE,
+               .pa_end         = OMAP34XX_SR2_BASE + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT,
        },
-       .slaves         = omap3xxx_mcbsp3_sidetone_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mcbsp3_sidetone_slaves),
+       { }
 };
 
-
-/* SR common */
-static struct omap_hwmod_sysc_fields omap34xx_sr_sysc_fields = {
-       .clkact_shift   = 20,
+static struct omap_hwmod_ocp_if omap34xx_l4_core__sr2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_sr2_hwmod,
+       .clk            = "sr_l4_ick",
+       .addr           = omap3_sr2_addr_space,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_class_sysconfig omap34xx_sr_sysc = {
-       .sysc_offs      = 0x24,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_NO_CACHE),
-       .clockact       = CLOCKACT_TEST_ICLK,
-       .sysc_fields    = &omap34xx_sr_sysc_fields,
+static struct omap_hwmod_ocp_if omap36xx_l4_core__sr2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap36xx_sr2_hwmod,
+       .clk            = "sr_l4_ick",
+       .addr           = omap3_sr2_addr_space,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_class omap34xx_smartreflex_hwmod_class = {
-       .name = "smartreflex",
-       .sysc = &omap34xx_sr_sysc,
-       .rev  = 1,
+static struct omap_hwmod_addr_space omap3xxx_usbhsotg_addrs[] = {
+       {
+               .pa_start       = OMAP34XX_HSUSB_OTG_BASE,
+               .pa_end         = OMAP34XX_HSUSB_OTG_BASE + SZ_4K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_sysc_fields omap36xx_sr_sysc_fields = {
-       .sidle_shift    = 24,
-       .enwkup_shift   = 26
+/* l4_core -> usbhsotg  */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__usbhsotg = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_usbhsotg_hwmod,
+       .clk            = "l4_ick",
+       .addr           = omap3xxx_usbhsotg_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_class_sysconfig omap36xx_sr_sysc = {
-       .sysc_offs      = 0x38,
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
-                       SYSC_NO_CACHE),
-       .sysc_fields    = &omap36xx_sr_sysc_fields,
+static struct omap_hwmod_addr_space am35xx_usbhsotg_addrs[] = {
+       {
+               .pa_start       = AM35XX_IPSS_USBOTGSS_BASE,
+               .pa_end         = AM35XX_IPSS_USBOTGSS_BASE + SZ_4K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_class omap36xx_smartreflex_hwmod_class = {
-       .name = "smartreflex",
-       .sysc = &omap36xx_sr_sysc,
-       .rev  = 2,
+/* l4_core -> usbhsotg  */
+static struct omap_hwmod_ocp_if am35xx_l4_core__usbhsotg = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &am35xx_usbhsotg_hwmod,
+       .clk            = "l4_ick",
+       .addr           = am35xx_usbhsotg_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-/* SR1 */
-static struct omap_smartreflex_dev_attr sr1_dev_attr = {
-       .sensor_voltdm_name   = "mpu_iva",
+/* L4_WKUP -> L4_SEC interface */
+static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__l4_sec = {
+       .master = &omap3xxx_l4_wkup_hwmod,
+       .slave  = &omap3xxx_l4_sec_hwmod,
+       .user   = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap3_sr1_slaves[] = {
-       &omap3_l4_core__sr1,
+/* IVA2 <- L3 interface */
+static struct omap_hwmod_ocp_if omap3xxx_l3__iva = {
+       .master         = &omap3xxx_l3_main_hwmod,
+       .slave          = &omap3xxx_iva_hwmod,
+       .clk            = "core_l3_ick",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_sr1_hwmod = {
-       .name           = "sr1_hwmod",
-       .class          = &omap34xx_smartreflex_hwmod_class,
-       .main_clk       = "sr1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_SR1_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap3xxx_timer1_addrs[] = {
+       {
+               .pa_start       = 0x48318000,
+               .pa_end         = 0x48318000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap3_sr1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3_sr1_slaves),
-       .dev_attr       = &sr1_dev_attr,
-       .mpu_irqs       = omap3_smartreflex_mpu_irqs,
-       .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
+       { }
 };
 
-static struct omap_hwmod omap36xx_sr1_hwmod = {
-       .name           = "sr1_hwmod",
-       .class          = &omap36xx_smartreflex_hwmod_class,
-       .main_clk       = "sr1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_SR1_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_SR1_SHIFT,
-               },
-       },
-       .slaves         = omap3_sr1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3_sr1_slaves),
-       .dev_attr       = &sr1_dev_attr,
-       .mpu_irqs       = omap3_smartreflex_mpu_irqs,
+/* l4_wkup -> timer1 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__timer1 = {
+       .master         = &omap3xxx_l4_wkup_hwmod,
+       .slave          = &omap3xxx_timer1_hwmod,
+       .clk            = "gpt1_ick",
+       .addr           = omap3xxx_timer1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* SR2 */
-static struct omap_smartreflex_dev_attr sr2_dev_attr = {
-       .sensor_voltdm_name     = "core",
+static struct omap_hwmod_addr_space omap3xxx_timer2_addrs[] = {
+       {
+               .pa_start       = 0x49032000,
+               .pa_end         = 0x49032000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_ocp_if *omap3_sr2_slaves[] = {
-       &omap3_l4_core__sr2,
+/* l4_per -> timer2 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer2 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer2_hwmod,
+       .clk            = "gpt2_ick",
+       .addr           = omap3xxx_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_sr2_hwmod = {
-       .name           = "sr2_hwmod",
-       .class          = &omap34xx_smartreflex_hwmod_class,
-       .main_clk       = "sr2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_SR2_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap3xxx_timer3_addrs[] = {
+       {
+               .pa_start       = 0x49034000,
+               .pa_end         = 0x49034000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap3_sr2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3_sr2_slaves),
-       .dev_attr       = &sr2_dev_attr,
-       .mpu_irqs       = omap3_smartreflex_core_irqs,
-       .flags          = HWMOD_SET_DEFAULT_CLOCKACT,
+       { }
 };
 
-static struct omap_hwmod omap36xx_sr2_hwmod = {
-       .name           = "sr2_hwmod",
-       .class          = &omap36xx_smartreflex_hwmod_class,
-       .main_clk       = "sr2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_SR2_SHIFT,
-                       .module_offs = WKUP_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_EN_SR2_SHIFT,
-               },
-       },
-       .slaves         = omap3_sr2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3_sr2_slaves),
-       .dev_attr       = &sr2_dev_attr,
-       .mpu_irqs       = omap3_smartreflex_core_irqs,
+/* l4_per -> timer3 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer3 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer3_hwmod,
+       .clk            = "gpt3_ick",
+       .addr           = omap3xxx_timer3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/*
- * 'mailbox' class
- * mailbox module allowing communication between the on-chip processors
- * using a queued mailbox-interrupt mechanism.
- */
+static struct omap_hwmod_addr_space omap3xxx_timer4_addrs[] = {
+       {
+               .pa_start       = 0x49036000,
+               .pa_end         = 0x49036000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
 
-static struct omap_hwmod_class_sysconfig omap3xxx_mailbox_sysc = {
-       .rev_offs       = 0x000,
-       .sysc_offs      = 0x010,
-       .syss_offs      = 0x014,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                               SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+/* l4_per -> timer4 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer4 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer4_hwmod,
+       .clk            = "gpt4_ick",
+       .addr           = omap3xxx_timer4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class omap3xxx_mailbox_hwmod_class = {
-       .name = "mailbox",
-       .sysc = &omap3xxx_mailbox_sysc,
+static struct omap_hwmod_addr_space omap3xxx_timer5_addrs[] = {
+       {
+               .pa_start       = 0x49038000,
+               .pa_end         = 0x49038000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod omap3xxx_mailbox_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_mailbox_irqs[] = {
-       { .irq = 26 },
-       { .irq = -1 }
+/* l4_per -> timer5 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer5 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer5_hwmod,
+       .clk            = "gpt5_ick",
+       .addr           = omap3xxx_timer5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap3xxx_mailbox_addrs[] = {
+static struct omap_hwmod_addr_space omap3xxx_timer6_addrs[] = {
        {
-               .pa_start       = 0x48094000,
-               .pa_end         = 0x480941ff,
-               .flags          = ADDR_TYPE_RT,
+               .pa_start       = 0x4903A000,
+               .pa_end         = 0x4903A000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
        },
        { }
 };
 
-/* l4_core -> mailbox */
-static struct omap_hwmod_ocp_if omap3xxx_l4_core__mailbox = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap3xxx_mailbox_hwmod,
-       .addr           = omap3xxx_mailbox_addrs,
+/* l4_per -> timer6 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer6 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer6_hwmod,
+       .clk            = "gpt6_ick",
+       .addr           = omap3xxx_timer6_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mailbox slave ports */
-static struct omap_hwmod_ocp_if *omap3xxx_mailbox_slaves[] = {
-       &omap3xxx_l4_core__mailbox,
-};
-
-static struct omap_hwmod omap3xxx_mailbox_hwmod = {
-       .name           = "mailbox",
-       .class          = &omap3xxx_mailbox_hwmod_class,
-       .mpu_irqs       = omap3xxx_mailbox_irqs,
-       .main_clk       = "mailboxes_ick",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MAILBOXES_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MAILBOXES_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap3xxx_timer7_addrs[] = {
+       {
+               .pa_start       = 0x4903C000,
+               .pa_end         = 0x4903C000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap3xxx_mailbox_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mailbox_slaves),
+       { }
 };
 
-/* l4 core -> mcspi1 interface */
-static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi1 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_mcspi1,
-       .clk            = "mcspi1_ick",
-       .addr           = omap2_mcspi1_addr_space,
+/* l4_per -> timer7 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer7 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer7_hwmod,
+       .clk            = "gpt7_ick",
+       .addr           = omap3xxx_timer7_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4 core -> mcspi2 interface */
-static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi2 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_mcspi2,
-       .clk            = "mcspi2_ick",
-       .addr           = omap2_mcspi2_addr_space,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+static struct omap_hwmod_addr_space omap3xxx_timer8_addrs[] = {
+       {
+               .pa_start       = 0x4903E000,
+               .pa_end         = 0x4903E000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-/* l4 core -> mcspi3 interface */
-static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi3 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_mcspi3,
-       .clk            = "mcspi3_ick",
-       .addr           = omap2430_mcspi3_addr_space,
+/* l4_per -> timer8 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer8 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer8_hwmod,
+       .clk            = "gpt8_ick",
+       .addr           = omap3xxx_timer8_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* l4 core -> mcspi4 interface */
-static struct omap_hwmod_addr_space omap34xx_mcspi4_addr_space[] = {
+static struct omap_hwmod_addr_space omap3xxx_timer9_addrs[] = {
        {
-               .pa_start       = 0x480ba000,
-               .pa_end         = 0x480ba0ff,
-               .flags          = ADDR_TYPE_RT,
+               .pa_start       = 0x49040000,
+               .pa_end         = 0x49040000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
        },
        { }
 };
 
-static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi4 = {
-       .master         = &omap3xxx_l4_core_hwmod,
-       .slave          = &omap34xx_mcspi4,
-       .clk            = "mcspi4_ick",
-       .addr           = omap34xx_mcspi4_addr_space,
+/* l4_per -> timer9 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__timer9 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_timer9_hwmod,
+       .clk            = "gpt9_ick",
+       .addr           = omap3xxx_timer9_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/*
- * 'mcspi' class
- * multichannel serial port interface (mcspi) / master/slave synchronous serial
- * bus
- */
-
-static struct omap_hwmod_class_sysconfig omap34xx_mcspi_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                               SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                               SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+/* l4_core -> timer10 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_timer10_hwmod,
+       .clk            = "gpt10_ick",
+       .addr           = omap2_timer10_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class omap34xx_mcspi_class = {
-       .name = "mcspi",
-       .sysc = &omap34xx_mcspi_sysc,
-       .rev = OMAP3_MCSPI_REV,
+/* l4_core -> timer11 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_timer11_hwmod,
+       .clk            = "gpt11_ick",
+       .addr           = omap2_timer11_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcspi1 */
-static struct omap_hwmod_ocp_if *omap34xx_mcspi1_slaves[] = {
-       &omap34xx_l4_core__mcspi1,
+static struct omap_hwmod_addr_space omap3xxx_timer12_addrs[] = {
+       {
+               .pa_start       = 0x48304000,
+               .pa_end         = 0x48304000 + SZ_1K - 1,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap2_mcspi_dev_attr omap_mcspi1_dev_attr = {
-       .num_chipselect = 4,
+/* l4_core -> timer12 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_sec__timer12 = {
+       .master         = &omap3xxx_l4_sec_hwmod,
+       .slave          = &omap3xxx_timer12_hwmod,
+       .clk            = "gpt12_ick",
+       .addr           = omap3xxx_timer12_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_mcspi1 = {
-       .name           = "mcspi1",
-       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi1_sdma_reqs,
-       .main_clk       = "mcspi1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCSPI1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCSPI1_SHIFT,
-               },
+/* l4_wkup -> wd_timer2 */
+static struct omap_hwmod_addr_space omap3xxx_wd_timer2_addrs[] = {
+       {
+               .pa_start       = 0x48314000,
+               .pa_end         = 0x4831407f,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap34xx_mcspi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap34xx_mcspi1_slaves),
-       .class          = &omap34xx_mcspi_class,
-       .dev_attr       = &omap_mcspi1_dev_attr,
+       { }
 };
 
-/* mcspi2 */
-static struct omap_hwmod_ocp_if *omap34xx_mcspi2_slaves[] = {
-       &omap34xx_l4_core__mcspi2,
+static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__wd_timer2 = {
+       .master         = &omap3xxx_l4_wkup_hwmod,
+       .slave          = &omap3xxx_wd_timer2_hwmod,
+       .clk            = "wdt2_ick",
+       .addr           = omap3xxx_wd_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap2_mcspi_dev_attr omap_mcspi2_dev_attr = {
-       .num_chipselect = 2,
+/* l4_core -> dss */
+static struct omap_hwmod_ocp_if omap3430es1_l4_core__dss = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3430es1_dss_core_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3ES1_L4_CORE_FW_DSS_CORE_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_mcspi2 = {
-       .name           = "mcspi2",
-       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
-       .sdma_reqs      = omap2_mcspi2_sdma_reqs,
-       .main_clk       = "mcspi2_fck",
-       .prcm           = {
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dss_core_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_addrs,
+       .fw = {
                .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCSPI2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCSPI2_SHIFT,
-               },
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_CORE_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
        },
-       .slaves         = omap34xx_mcspi2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap34xx_mcspi2_slaves),
-       .class          = &omap34xx_mcspi_class,
-       .dev_attr       = &omap_mcspi2_dev_attr,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* mcspi3 */
-static struct omap_hwmod_irq_info omap34xx_mcspi3_mpu_irqs[] = {
-       { .name = "irq", .irq = 91 }, /* 91 */
-       { .irq = -1 }
+/* l4_core -> dss_dispc */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dss_dispc_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_dispc_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_DISPC_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_dma_info omap34xx_mcspi3_sdma_reqs[] = {
-       { .name = "tx0", .dma_req = 15 },
-       { .name = "rx0", .dma_req = 16 },
-       { .name = "tx1", .dma_req = 23 },
-       { .name = "rx1", .dma_req = 24 },
-       { .dma_req = -1 }
+static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {
+       {
+               .pa_start       = 0x4804FC00,
+               .pa_end         = 0x4804FFFF,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_ocp_if *omap34xx_mcspi3_slaves[] = {
-       &omap34xx_l4_core__mcspi3,
+/* l4_core -> dss_dsi1 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dss_dsi1_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap3xxx_dss_dsi1_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_DSI_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap2_mcspi_dev_attr omap_mcspi3_dev_attr = {
-       .num_chipselect = 2,
+/* l4_core -> dss_rfbi */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_rfbi = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dss_rfbi_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_rfbi_addrs,
+       .fw = {
+               .omap2 = {
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_RFBI_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP ,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
+       },
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_mcspi3 = {
-       .name           = "mcspi3",
-       .mpu_irqs       = omap34xx_mcspi3_mpu_irqs,
-       .sdma_reqs      = omap34xx_mcspi3_sdma_reqs,
-       .main_clk       = "mcspi3_fck",
-       .prcm           = {
+/* l4_core -> dss_venc */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dss_venc_hwmod,
+       .clk            = "dss_ick",
+       .addr           = omap2_dss_venc_addrs,
+       .fw = {
                .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCSPI3_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCSPI3_SHIFT,
-               },
+                       .l4_fw_region  = OMAP3_L4_CORE_FW_DSS_VENC_REGION,
+                       .l4_prot_group = OMAP3_L4_CORE_FW_DSS_PROT_GROUP,
+                       .flags  = OMAP_FIREWALL_L4,
+               }
        },
-       .slaves         = omap34xx_mcspi3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap34xx_mcspi3_slaves),
-       .class          = &omap34xx_mcspi_class,
-       .dev_attr       = &omap_mcspi3_dev_attr,
+       .flags          = OCPIF_SWSUP_IDLE,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* SPI4 */
-static struct omap_hwmod_irq_info omap34xx_mcspi4_mpu_irqs[] = {
-       { .name = "irq", .irq = INT_34XX_SPI4_IRQ }, /* 48 */
-       { .irq = -1 }
+/* l4_wkup -> gpio1 */
+static struct omap_hwmod_addr_space omap3xxx_gpio1_addrs[] = {
+       {
+               .pa_start       = 0x48310000,
+               .pa_end         = 0x483101ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_dma_info omap34xx_mcspi4_sdma_reqs[] = {
-       { .name = "tx0", .dma_req = 70 }, /* DMA_SPI4_TX0 */
-       { .name = "rx0", .dma_req = 71 }, /* DMA_SPI4_RX0 */
-       { .dma_req = -1 }
+static struct omap_hwmod_ocp_if omap3xxx_l4_wkup__gpio1 = {
+       .master         = &omap3xxx_l4_wkup_hwmod,
+       .slave          = &omap3xxx_gpio1_hwmod,
+       .addr           = omap3xxx_gpio1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap34xx_mcspi4_slaves[] = {
-       &omap34xx_l4_core__mcspi4,
+/* l4_per -> gpio2 */
+static struct omap_hwmod_addr_space omap3xxx_gpio2_addrs[] = {
+       {
+               .pa_start       = 0x49050000,
+               .pa_end         = 0x490501ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap2_mcspi_dev_attr omap_mcspi4_dev_attr = {
-       .num_chipselect = 1,
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio2 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_gpio2_hwmod,
+       .addr           = omap3xxx_gpio2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap34xx_mcspi4 = {
-       .name           = "mcspi4",
-       .mpu_irqs       = omap34xx_mcspi4_mpu_irqs,
-       .sdma_reqs      = omap34xx_mcspi4_sdma_reqs,
-       .main_clk       = "mcspi4_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MCSPI4_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MCSPI4_SHIFT,
-               },
+/* l4_per -> gpio3 */
+static struct omap_hwmod_addr_space omap3xxx_gpio3_addrs[] = {
+       {
+               .pa_start       = 0x49052000,
+               .pa_end         = 0x490521ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .slaves         = omap34xx_mcspi4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap34xx_mcspi4_slaves),
-       .class          = &omap34xx_mcspi_class,
-       .dev_attr       = &omap_mcspi4_dev_attr,
+       { }
 };
 
-/*
- * usbhsotg
- */
-static struct omap_hwmod_class_sysconfig omap3xxx_usbhsotg_sysc = {
-       .rev_offs       = 0x0400,
-       .sysc_offs      = 0x0404,
-       .syss_offs      = 0x0408,
-       .sysc_flags     = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE|
-                         SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                         SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                         MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio3 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_gpio3_hwmod,
+       .addr           = omap3xxx_gpio3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class usbotg_class = {
-       .name = "usbotg",
-       .sysc = &omap3xxx_usbhsotg_sysc,
+/* l4_per -> gpio4 */
+static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = {
+       {
+               .pa_start       = 0x49054000,
+               .pa_end         = 0x490541ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
-/* usb_otg_hs */
-static struct omap_hwmod_irq_info omap3xxx_usbhsotg_mpu_irqs[] = {
 
-       { .name = "mc", .irq = 92 },
-       { .name = "dma", .irq = 93 },
-       { .irq = -1 }
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio4 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_gpio4_hwmod,
+       .addr           = omap3xxx_gpio4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap3xxx_usbhsotg_hwmod = {
-       .name           = "usb_otg_hs",
-       .mpu_irqs       = omap3xxx_usbhsotg_mpu_irqs,
-       .main_clk       = "hsotgusb_ick",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_HSOTGUSB_SHIFT,
-                       .module_offs = CORE_MOD,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430ES2_ST_HSOTGUSB_IDLE_SHIFT,
-                       .idlest_stdby_bit = OMAP3430ES2_ST_HSOTGUSB_STDBY_SHIFT
-               },
+/* l4_per -> gpio5 */
+static struct omap_hwmod_addr_space omap3xxx_gpio5_addrs[] = {
+       {
+               .pa_start       = 0x49056000,
+               .pa_end         = 0x490561ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .masters        = omap3xxx_usbhsotg_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_usbhsotg_masters),
-       .slaves         = omap3xxx_usbhsotg_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_usbhsotg_slaves),
-       .class          = &usbotg_class,
-
-       /*
-        * Erratum ID: i479  idle_req / idle_ack mechanism potentially
-        * broken when autoidle is enabled
-        * workaround is to disable the autoidle bit at module level.
-        */
-       .flags          = HWMOD_NO_OCP_AUTOIDLE | HWMOD_SWSUP_SIDLE
-                               | HWMOD_SWSUP_MSTANDBY,
+       { }
 };
 
-/* usb_otg_hs */
-static struct omap_hwmod_irq_info am35xx_usbhsotg_mpu_irqs[] = {
-
-       { .name = "mc", .irq = 71 },
-       { .irq = -1 }
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio5 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_gpio5_hwmod,
+       .addr           = omap3xxx_gpio5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class am35xx_usbotg_class = {
-       .name = "am35xx_usbotg",
-       .sysc = NULL,
+/* l4_per -> gpio6 */
+static struct omap_hwmod_addr_space omap3xxx_gpio6_addrs[] = {
+       {
+               .pa_start       = 0x49058000,
+               .pa_end         = 0x490581ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod am35xx_usbhsotg_hwmod = {
-       .name           = "am35x_otg_hs",
-       .mpu_irqs       = am35xx_usbhsotg_mpu_irqs,
-       .main_clk       = NULL,
-       .prcm = {
-               .omap2 = {
-               },
-       },
-       .masters        = am35xx_usbhsotg_masters,
-       .masters_cnt    = ARRAY_SIZE(am35xx_usbhsotg_masters),
-       .slaves         = am35xx_usbhsotg_slaves,
-       .slaves_cnt     = ARRAY_SIZE(am35xx_usbhsotg_slaves),
-       .class          = &am35xx_usbotg_class,
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__gpio6 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_gpio6_hwmod,
+       .addr           = omap3xxx_gpio6_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* MMC/SD/SDIO common */
+/* dma_system -> L3 */
+static struct omap_hwmod_ocp_if omap3xxx_dma_system__l3 = {
+       .master         = &omap3xxx_dma_system_hwmod,
+       .slave          = &omap3xxx_l3_main_hwmod,
+       .clk            = "core_l3_ick",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
-static struct omap_hwmod_class_sysconfig omap34xx_mmc_sysc = {
-       .rev_offs       = 0x1fc,
-       .sysc_offs      = 0x10,
-       .syss_offs      = 0x14,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+static struct omap_hwmod_addr_space omap3xxx_dma_system_addrs[] = {
+       {
+               .pa_start       = 0x48056000,
+               .pa_end         = 0x48056fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_class omap34xx_mmc_class = {
-       .name = "mmc",
-       .sysc = &omap34xx_mmc_sysc,
+/* l4_cfg -> dma_system */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__dma_system = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_dma_system_hwmod,
+       .clk            = "core_l4_ick",
+       .addr           = omap3xxx_dma_system_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* MMC/SD/SDIO1 */
-
-static struct omap_hwmod_irq_info omap34xx_mmc1_mpu_irqs[] = {
-       { .irq = 83, },
-       { .irq = -1 }
+static struct omap_hwmod_addr_space omap3xxx_mcbsp1_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x48074000,
+               .pa_end         = 0x480740ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_dma_info omap34xx_mmc1_sdma_reqs[] = {
-       { .name = "tx", .dma_req = 61, },
-       { .name = "rx", .dma_req = 62, },
-       { .dma_req = -1 }
+/* l4_core -> mcbsp1 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_mcbsp1_hwmod,
+       .clk            = "mcbsp1_ick",
+       .addr           = omap3xxx_mcbsp1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_opt_clk omap34xx_mmc1_opt_clks[] = {
-       { .role = "dbck", .clk = "omap_32k_fck", },
+static struct omap_hwmod_addr_space omap3xxx_mcbsp2_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x49022000,
+               .pa_end         = 0x490220ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_mmc1_slaves[] = {
-       &omap3xxx_l4_core__mmc1,
+/* l4_per -> mcbsp2 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_mcbsp2_hwmod,
+       .clk            = "mcbsp2_ick",
+       .addr           = omap3xxx_mcbsp2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_mmc_dev_attr mmc1_dev_attr = {
-       .flags = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
+static struct omap_hwmod_addr_space omap3xxx_mcbsp3_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x49024000,
+               .pa_end         = 0x490240ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-/* See 35xx errata 2.1.1.128 in SPRZ278F */
-static struct omap_mmc_dev_attr mmc1_pre_es3_dev_attr = {
-       .flags = (OMAP_HSMMC_SUPPORTS_DUAL_VOLT |
-                 OMAP_HSMMC_BROKEN_MULTIBLOCK_READ),
+/* l4_per -> mcbsp3 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_mcbsp3_hwmod,
+       .clk            = "mcbsp3_ick",
+       .addr           = omap3xxx_mcbsp3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap3xxx_pre_es3_mmc1_hwmod = {
-       .name           = "mmc1",
-       .mpu_irqs       = omap34xx_mmc1_mpu_irqs,
-       .sdma_reqs      = omap34xx_mmc1_sdma_reqs,
-       .opt_clks       = omap34xx_mmc1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
-       .main_clk       = "mmchs1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MMC1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap3xxx_mcbsp4_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x49026000,
+               .pa_end         = 0x490260ff,
+               .flags          = ADDR_TYPE_RT
        },
-       .dev_attr       = &mmc1_pre_es3_dev_attr,
-       .slaves         = omap3xxx_mmc1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc1_slaves),
-       .class          = &omap34xx_mmc_class,
+       { }
 };
 
-static struct omap_hwmod omap3xxx_es3plus_mmc1_hwmod = {
-       .name           = "mmc1",
-       .mpu_irqs       = omap34xx_mmc1_mpu_irqs,
-       .sdma_reqs      = omap34xx_mmc1_sdma_reqs,
-       .opt_clks       = omap34xx_mmc1_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc1_opt_clks),
-       .main_clk       = "mmchs1_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MMC1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MMC1_SHIFT,
-               },
-       },
-       .dev_attr       = &mmc1_dev_attr,
-       .slaves         = omap3xxx_mmc1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc1_slaves),
-       .class          = &omap34xx_mmc_class,
+/* l4_per -> mcbsp4 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp4 = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_mcbsp4_hwmod,
+       .clk            = "mcbsp4_ick",
+       .addr           = omap3xxx_mcbsp4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/* MMC/SD/SDIO2 */
-
-static struct omap_hwmod_irq_info omap34xx_mmc2_mpu_irqs[] = {
-       { .irq = INT_24XX_MMC2_IRQ, },
-       { .irq = -1 }
+static struct omap_hwmod_addr_space omap3xxx_mcbsp5_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x48096000,
+               .pa_end         = 0x480960ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_dma_info omap34xx_mmc2_sdma_reqs[] = {
-       { .name = "tx", .dma_req = 47, },
-       { .name = "rx", .dma_req = 48, },
-       { .dma_req = -1 }
+/* l4_core -> mcbsp5 */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp5 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_mcbsp5_hwmod,
+       .clk            = "mcbsp5_ick",
+       .addr           = omap3xxx_mcbsp5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_opt_clk omap34xx_mmc2_opt_clks[] = {
-       { .role = "dbck", .clk = "omap_32k_fck", },
+static struct omap_hwmod_addr_space omap3xxx_mcbsp2_sidetone_addrs[] = {
+       {
+               .name           = "sidetone",
+               .pa_start       = 0x49028000,
+               .pa_end         = 0x490280ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_mmc2_slaves[] = {
-       &omap3xxx_l4_core__mmc2,
+/* l4_per -> mcbsp2_sidetone */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp2_sidetone = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_mcbsp2_sidetone_hwmod,
+       .clk            = "mcbsp2_ick",
+       .addr           = omap3xxx_mcbsp2_sidetone_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-/* See 35xx errata 2.1.1.128 in SPRZ278F */
-static struct omap_mmc_dev_attr mmc2_pre_es3_dev_attr = {
-       .flags = OMAP_HSMMC_BROKEN_MULTIBLOCK_READ,
+static struct omap_hwmod_addr_space omap3xxx_mcbsp3_sidetone_addrs[] = {
+       {
+               .name           = "sidetone",
+               .pa_start       = 0x4902A000,
+               .pa_end         = 0x4902A0ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod omap3xxx_pre_es3_mmc2_hwmod = {
-       .name           = "mmc2",
-       .mpu_irqs       = omap34xx_mmc2_mpu_irqs,
-       .sdma_reqs      = omap34xx_mmc2_sdma_reqs,
-       .opt_clks       = omap34xx_mmc2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
-       .main_clk       = "mmchs2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MMC2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
-               },
-       },
-       .dev_attr       = &mmc2_pre_es3_dev_attr,
-       .slaves         = omap3xxx_mmc2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc2_slaves),
-       .class          = &omap34xx_mmc_class,
+/* l4_per -> mcbsp3_sidetone */
+static struct omap_hwmod_ocp_if omap3xxx_l4_per__mcbsp3_sidetone = {
+       .master         = &omap3xxx_l4_per_hwmod,
+       .slave          = &omap3xxx_mcbsp3_sidetone_hwmod,
+       .clk            = "mcbsp3_ick",
+       .addr           = omap3xxx_mcbsp3_sidetone_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod omap3xxx_es3plus_mmc2_hwmod = {
-       .name           = "mmc2",
-       .mpu_irqs       = omap34xx_mmc2_mpu_irqs,
-       .sdma_reqs      = omap34xx_mmc2_sdma_reqs,
-       .opt_clks       = omap34xx_mmc2_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc2_opt_clks),
-       .main_clk       = "mmchs2_fck",
-       .prcm           = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MMC2_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MMC2_SHIFT,
-               },
+static struct omap_hwmod_addr_space omap3xxx_mailbox_addrs[] = {
+       {
+               .pa_start       = 0x48094000,
+               .pa_end         = 0x480941ff,
+               .flags          = ADDR_TYPE_RT,
        },
-       .slaves         = omap3xxx_mmc2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc2_slaves),
-       .class          = &omap34xx_mmc_class,
+       { }
 };
 
-/* MMC/SD/SDIO3 */
+/* l4_core -> mailbox */
+static struct omap_hwmod_ocp_if omap3xxx_l4_core__mailbox = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap3xxx_mailbox_hwmod,
+       .addr           = omap3xxx_mailbox_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
-static struct omap_hwmod_irq_info omap34xx_mmc3_mpu_irqs[] = {
-       { .irq = 94, },
-       { .irq = -1 }
+/* l4 core -> mcspi1 interface */
+static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi1 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_mcspi1,
+       .clk            = "mcspi1_ick",
+       .addr           = omap2_mcspi1_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_dma_info omap34xx_mmc3_sdma_reqs[] = {
-       { .name = "tx", .dma_req = 77, },
-       { .name = "rx", .dma_req = 78, },
-       { .dma_req = -1 }
+/* l4 core -> mcspi2 interface */
+static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi2 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_mcspi2,
+       .clk            = "mcspi2_ick",
+       .addr           = omap2_mcspi2_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_opt_clk omap34xx_mmc3_opt_clks[] = {
-       { .role = "dbck", .clk = "omap_32k_fck", },
+/* l4 core -> mcspi3 interface */
+static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi3 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_mcspi3,
+       .clk            = "mcspi3_ick",
+       .addr           = omap2430_mcspi3_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_mmc3_slaves[] = {
-       &omap3xxx_l4_core__mmc3,
+/* l4 core -> mcspi4 interface */
+static struct omap_hwmod_addr_space omap34xx_mcspi4_addr_space[] = {
+       {
+               .pa_start       = 0x480ba000,
+               .pa_end         = 0x480ba0ff,
+               .flags          = ADDR_TYPE_RT,
+       },
+       { }
 };
 
-static struct omap_hwmod omap3xxx_mmc3_hwmod = {
-       .name           = "mmc3",
-       .mpu_irqs       = omap34xx_mmc3_mpu_irqs,
-       .sdma_reqs      = omap34xx_mmc3_sdma_reqs,
-       .opt_clks       = omap34xx_mmc3_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap34xx_mmc3_opt_clks),
-       .main_clk       = "mmchs3_fck",
-       .prcm           = {
-               .omap2 = {
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430_EN_MMC3_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430_ST_MMC3_SHIFT,
-               },
-       },
-       .slaves         = omap3xxx_mmc3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_mmc3_slaves),
-       .class          = &omap34xx_mmc_class,
+static struct omap_hwmod_ocp_if omap34xx_l4_core__mcspi4 = {
+       .master         = &omap3xxx_l4_core_hwmod,
+       .slave          = &omap34xx_mcspi4,
+       .clk            = "mcspi4_ick",
+       .addr           = omap34xx_mcspi4_addr_space,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-/*
- * 'usb_host_hs' class
- * high-speed multi-port usb host controller
- */
 static struct omap_hwmod_ocp_if omap3xxx_usb_host_hs__l3_main_2 = {
        .master         = &omap3xxx_usb_host_hs_hwmod,
        .slave          = &omap3xxx_l3_main_hwmod,
@@ -3341,27 +3013,6 @@ static struct omap_hwmod_ocp_if omap3xxx_usb_host_hs__l3_main_2 = {
        .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_class_sysconfig omap3xxx_usb_host_hs_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |
-                          SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP |
-                          SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = {
-       .name = "usb_host_hs",
-       .sysc = &omap3xxx_usb_host_hs_sysc,
-};
-
-static struct omap_hwmod_ocp_if *omap3xxx_usb_host_hs_masters[] = {
-       &omap3xxx_usb_host_hs__l3_main_2,
-};
-
 static struct omap_hwmod_addr_space omap3xxx_usb_host_hs_addrs[] = {
        {
                .name           = "uhh",
@@ -3390,117 +3041,6 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_host_hs = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_usb_host_hs_slaves[] = {
-       &omap3xxx_l4_core__usb_host_hs,
-};
-
-static struct omap_hwmod_opt_clk omap3xxx_usb_host_hs_opt_clks[] = {
-         { .role = "ehci_logic_fck", .clk = "usbhost_120m_fck", },
-};
-
-static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = {
-       { .name = "ohci-irq", .irq = 76 },
-       { .name = "ehci-irq", .irq = 77 },
-       { .irq = -1 }
-};
-
-static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {
-       .name           = "usb_host_hs",
-       .class          = &omap3xxx_usb_host_hs_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .mpu_irqs       = omap3xxx_usb_host_hs_irqs,
-       .main_clk       = "usbhost_48m_fck",
-       .prcm = {
-               .omap2 = {
-                       .module_offs = OMAP3430ES2_USBHOST_MOD,
-                       .prcm_reg_id = 1,
-                       .module_bit = OMAP3430ES2_EN_USBHOST1_SHIFT,
-                       .idlest_reg_id = 1,
-                       .idlest_idle_bit = OMAP3430ES2_ST_USBHOST_IDLE_SHIFT,
-                       .idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT,
-               },
-       },
-       .opt_clks       = omap3xxx_usb_host_hs_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(omap3xxx_usb_host_hs_opt_clks),
-       .slaves         = omap3xxx_usb_host_hs_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_usb_host_hs_slaves),
-       .masters        = omap3xxx_usb_host_hs_masters,
-       .masters_cnt    = ARRAY_SIZE(omap3xxx_usb_host_hs_masters),
-
-       /*
-        * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
-        * id: i660
-        *
-        * Description:
-        * In the following configuration :
-        * - USBHOST module is set to smart-idle mode
-        * - PRCM asserts idle_req to the USBHOST module ( This typically
-        *   happens when the system is going to a low power mode : all ports
-        *   have been suspended, the master part of the USBHOST module has
-        *   entered the standby state, and SW has cut the functional clocks)
-        * - an USBHOST interrupt occurs before the module is able to answer
-        *   idle_ack, typically a remote wakeup IRQ.
-        * Then the USB HOST module will enter a deadlock situation where it
-        * is no more accessible nor functional.
-        *
-        * Workaround:
-        * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
-        */
-
-       /*
-        * Errata: USB host EHCI may stall when entering smart-standby mode
-        * Id: i571
-        *
-        * Description:
-        * When the USBHOST module is set to smart-standby mode, and when it is
-        * ready to enter the standby state (i.e. all ports are suspended and
-        * all attached devices are in suspend mode), then it can wrongly assert
-        * the Mstandby signal too early while there are still some residual OCP
-        * transactions ongoing. If this condition occurs, the internal state
-        * machine may go to an undefined state and the USB link may be stuck
-        * upon the next resume.
-        *
-        * Workaround:
-        * Don't use smart standby; use only force standby,
-        * hence HWMOD_SWSUP_MSTANDBY
-        */
-
-       /*
-        * During system boot; If the hwmod framework resets the module
-        * the module will have smart idle settings; which can lead to deadlock
-        * (above Errata Id:i660); so, dont reset the module during boot;
-        * Use HWMOD_INIT_NO_RESET.
-        */
-
-       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
-                         HWMOD_INIT_NO_RESET,
-};
-
-/*
- * 'usb_tll_hs' class
- * usb_tll_hs module is the adapter on the usb_host_hs ports
- */
-static struct omap_hwmod_class_sysconfig omap3xxx_usb_tll_hs_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
-};
-
-static struct omap_hwmod_class omap3xxx_usb_tll_hs_hwmod_class = {
-       .name = "usb_tll_hs",
-       .sysc = &omap3xxx_usb_tll_hs_sysc,
-};
-
-static struct omap_hwmod_irq_info omap3xxx_usb_tll_hs_irqs[] = {
-       { .name = "tll-irq", .irq = 78 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_addr_space omap3xxx_usb_tll_hs_addrs[] = {
        {
                .name           = "tll",
@@ -3519,183 +3059,156 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__usb_tll_hs = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap3xxx_usb_tll_hs_slaves[] = {
-       &omap3xxx_l4_core__usb_tll_hs,
-};
-
-static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = {
-       .name           = "usb_tll_hs",
-       .class          = &omap3xxx_usb_tll_hs_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .mpu_irqs       = omap3xxx_usb_tll_hs_irqs,
-       .main_clk       = "usbtll_fck",
-       .prcm = {
-               .omap2 = {
-                       .module_offs = CORE_MOD,
-                       .prcm_reg_id = 3,
-                       .module_bit = OMAP3430ES2_EN_USBTLL_SHIFT,
-                       .idlest_reg_id = 3,
-                       .idlest_idle_bit = OMAP3430ES2_ST_USBTLL_SHIFT,
-               },
-       },
-       .slaves         = omap3xxx_usb_tll_hs_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap3xxx_usb_tll_hs_slaves),
-};
-
-static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
-       &omap3xxx_l3_main_hwmod,
-       &omap3xxx_l4_core_hwmod,
-       &omap3xxx_l4_per_hwmod,
-       &omap3xxx_l4_wkup_hwmod,
-       &omap3xxx_mmc3_hwmod,
-       &omap3xxx_mpu_hwmod,
-
-       &omap3xxx_timer1_hwmod,
-       &omap3xxx_timer2_hwmod,
-       &omap3xxx_timer3_hwmod,
-       &omap3xxx_timer4_hwmod,
-       &omap3xxx_timer5_hwmod,
-       &omap3xxx_timer6_hwmod,
-       &omap3xxx_timer7_hwmod,
-       &omap3xxx_timer8_hwmod,
-       &omap3xxx_timer9_hwmod,
-       &omap3xxx_timer10_hwmod,
-       &omap3xxx_timer11_hwmod,
-
-       &omap3xxx_wd_timer2_hwmod,
-       &omap3xxx_uart1_hwmod,
-       &omap3xxx_uart2_hwmod,
-       &omap3xxx_uart3_hwmod,
-
-       /* i2c class */
-       &omap3xxx_i2c1_hwmod,
-       &omap3xxx_i2c2_hwmod,
-       &omap3xxx_i2c3_hwmod,
-
-       /* gpio class */
-       &omap3xxx_gpio1_hwmod,
-       &omap3xxx_gpio2_hwmod,
-       &omap3xxx_gpio3_hwmod,
-       &omap3xxx_gpio4_hwmod,
-       &omap3xxx_gpio5_hwmod,
-       &omap3xxx_gpio6_hwmod,
-
-       /* dma_system class*/
-       &omap3xxx_dma_system_hwmod,
-
-       /* mcbsp class */
-       &omap3xxx_mcbsp1_hwmod,
-       &omap3xxx_mcbsp2_hwmod,
-       &omap3xxx_mcbsp3_hwmod,
-       &omap3xxx_mcbsp4_hwmod,
-       &omap3xxx_mcbsp5_hwmod,
-       &omap3xxx_mcbsp2_sidetone_hwmod,
-       &omap3xxx_mcbsp3_sidetone_hwmod,
-
-
-       /* mcspi class */
-       &omap34xx_mcspi1,
-       &omap34xx_mcspi2,
-       &omap34xx_mcspi3,
-       &omap34xx_mcspi4,
-
+static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l3_main__l4_core,
+       &omap3xxx_l3_main__l4_per,
+       &omap3xxx_mpu__l3_main,
+       &omap3xxx_l4_core__l4_wkup,
+       &omap3xxx_l4_core__mmc3,
+       &omap3_l4_core__uart1,
+       &omap3_l4_core__uart2,
+       &omap3_l4_per__uart3,
+       &omap3_l4_core__i2c1,
+       &omap3_l4_core__i2c2,
+       &omap3_l4_core__i2c3,
+       &omap3xxx_l4_wkup__l4_sec,
+       &omap3xxx_l4_wkup__timer1,
+       &omap3xxx_l4_per__timer2,
+       &omap3xxx_l4_per__timer3,
+       &omap3xxx_l4_per__timer4,
+       &omap3xxx_l4_per__timer5,
+       &omap3xxx_l4_per__timer6,
+       &omap3xxx_l4_per__timer7,
+       &omap3xxx_l4_per__timer8,
+       &omap3xxx_l4_per__timer9,
+       &omap3xxx_l4_core__timer10,
+       &omap3xxx_l4_core__timer11,
+       &omap3xxx_l4_wkup__wd_timer2,
+       &omap3xxx_l4_wkup__gpio1,
+       &omap3xxx_l4_per__gpio2,
+       &omap3xxx_l4_per__gpio3,
+       &omap3xxx_l4_per__gpio4,
+       &omap3xxx_l4_per__gpio5,
+       &omap3xxx_l4_per__gpio6,
+       &omap3xxx_dma_system__l3,
+       &omap3xxx_l4_core__dma_system,
+       &omap3xxx_l4_core__mcbsp1,
+       &omap3xxx_l4_per__mcbsp2,
+       &omap3xxx_l4_per__mcbsp3,
+       &omap3xxx_l4_per__mcbsp4,
+       &omap3xxx_l4_core__mcbsp5,
+       &omap3xxx_l4_per__mcbsp2_sidetone,
+       &omap3xxx_l4_per__mcbsp3_sidetone,
+       &omap34xx_l4_core__mcspi1,
+       &omap34xx_l4_core__mcspi2,
+       &omap34xx_l4_core__mcspi3,
+       &omap34xx_l4_core__mcspi4,
        NULL,
 };
 
-/* GP-only hwmods */
-static __initdata struct omap_hwmod *omap3xxx_gp_hwmods[] = {
-       &omap3xxx_timer12_hwmod,
+/* GP-only hwmod links */
+static struct omap_hwmod_ocp_if *omap3xxx_gp_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l4_sec__timer12,
        NULL
 };
 
-/* 3430ES1-only hwmods */
-static __initdata struct omap_hwmod *omap3430es1_hwmods[] = {
-       &omap3430es1_dss_core_hwmod,
+/* 3430ES1-only hwmod links */
+static struct omap_hwmod_ocp_if *omap3430es1_hwmod_ocp_ifs[] __initdata = {
+       &omap3430es1_dss__l3,
+       &omap3430es1_l4_core__dss,
        NULL
 };
 
-/* 3430ES2+-only hwmods */
-static __initdata struct omap_hwmod *omap3430es2plus_hwmods[] = {
-       &omap3xxx_dss_core_hwmod,
-       &omap3xxx_usbhsotg_hwmod,
-       &omap3xxx_usb_host_hs_hwmod,
-       &omap3xxx_usb_tll_hs_hwmod,
+/* 3430ES2+-only hwmod links */
+static struct omap_hwmod_ocp_if *omap3430es2plus_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_dss__l3,
+       &omap3xxx_l4_core__dss,
+       &omap3xxx_usbhsotg__l3,
+       &omap3xxx_l4_core__usbhsotg,
+       &omap3xxx_usb_host_hs__l3_main_2,
+       &omap3xxx_l4_core__usb_host_hs,
+       &omap3xxx_l4_core__usb_tll_hs,
        NULL
 };
 
-/* <= 3430ES3-only hwmods */
-static struct omap_hwmod *omap3430_pre_es3_hwmods[] __initdata = {
-       &omap3xxx_pre_es3_mmc1_hwmod,
-       &omap3xxx_pre_es3_mmc2_hwmod,
+/* <= 3430ES3-only hwmod links */
+static struct omap_hwmod_ocp_if *omap3430_pre_es3_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l4_core__pre_es3_mmc1,
+       &omap3xxx_l4_core__pre_es3_mmc2,
        NULL
 };
 
-/* 3430ES3+-only hwmods */
-static struct omap_hwmod *omap3430_es3plus_hwmods[] __initdata = {
-       &omap3xxx_es3plus_mmc1_hwmod,
-       &omap3xxx_es3plus_mmc2_hwmod,
+/* 3430ES3+-only hwmod links */
+static struct omap_hwmod_ocp_if *omap3430_es3plus_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l4_core__es3plus_mmc1,
+       &omap3xxx_l4_core__es3plus_mmc2,
        NULL
 };
 
-/* 34xx-only hwmods (all ES revisions) */
-static __initdata struct omap_hwmod *omap34xx_hwmods[] = {
-       &omap3xxx_iva_hwmod,
-       &omap34xx_sr1_hwmod,
-       &omap34xx_sr2_hwmod,
-       &omap3xxx_mailbox_hwmod,
+/* 34xx-only hwmod links (all ES revisions) */
+static struct omap_hwmod_ocp_if *omap34xx_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l3__iva,
+       &omap34xx_l4_core__sr1,
+       &omap34xx_l4_core__sr2,
+       &omap3xxx_l4_core__mailbox,
        NULL
 };
 
-/* 36xx-only hwmods (all ES revisions) */
-static __initdata struct omap_hwmod *omap36xx_hwmods[] = {
-       &omap3xxx_iva_hwmod,
-       &omap3xxx_uart4_hwmod,
-       &omap3xxx_dss_core_hwmod,
-       &omap36xx_sr1_hwmod,
-       &omap36xx_sr2_hwmod,
-       &omap3xxx_usbhsotg_hwmod,
-       &omap3xxx_mailbox_hwmod,
-       &omap3xxx_usb_host_hs_hwmod,
-       &omap3xxx_usb_tll_hs_hwmod,
-       &omap3xxx_es3plus_mmc1_hwmod,
-       &omap3xxx_es3plus_mmc2_hwmod,
+/* 36xx-only hwmod links (all ES revisions) */
+static struct omap_hwmod_ocp_if *omap36xx_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l3__iva,
+       &omap36xx_l4_per__uart4,
+       &omap3xxx_dss__l3,
+       &omap3xxx_l4_core__dss,
+       &omap36xx_l4_core__sr1,
+       &omap36xx_l4_core__sr2,
+       &omap3xxx_usbhsotg__l3,
+       &omap3xxx_l4_core__usbhsotg,
+       &omap3xxx_l4_core__mailbox,
+       &omap3xxx_usb_host_hs__l3_main_2,
+       &omap3xxx_l4_core__usb_host_hs,
+       &omap3xxx_l4_core__usb_tll_hs,
+       &omap3xxx_l4_core__es3plus_mmc1,
+       &omap3xxx_l4_core__es3plus_mmc2,
        NULL
 };
 
-static __initdata struct omap_hwmod *am35xx_hwmods[] = {
-       &omap3xxx_dss_core_hwmod, /* XXX ??? */
-       &am35xx_usbhsotg_hwmod,
-       &am35xx_uart4_hwmod,
-       &omap3xxx_usb_host_hs_hwmod,
-       &omap3xxx_usb_tll_hs_hwmod,
-       &omap3xxx_es3plus_mmc1_hwmod,
-       &omap3xxx_es3plus_mmc2_hwmod,
+static struct omap_hwmod_ocp_if *am35xx_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_dss__l3,
+       &omap3xxx_l4_core__dss,
+       &am35xx_usbhsotg__l3,
+       &am35xx_l4_core__usbhsotg,
+       &am35xx_l4_core__uart4,
+       &omap3xxx_usb_host_hs__l3_main_2,
+       &omap3xxx_l4_core__usb_host_hs,
+       &omap3xxx_l4_core__usb_tll_hs,
+       &omap3xxx_l4_core__es3plus_mmc1,
+       &omap3xxx_l4_core__es3plus_mmc2,
        NULL
 };
 
-static __initdata struct omap_hwmod *omap3xxx_dss_hwmods[] = {
-       /* dss class */
-       &omap3xxx_dss_dispc_hwmod,
-       &omap3xxx_dss_dsi1_hwmod,
-       &omap3xxx_dss_rfbi_hwmod,
-       &omap3xxx_dss_venc_hwmod,
+static struct omap_hwmod_ocp_if *omap3xxx_dss_hwmod_ocp_ifs[] __initdata = {
+       &omap3xxx_l4_core__dss_dispc,
+       &omap3xxx_l4_core__dss_dsi1,
+       &omap3xxx_l4_core__dss_rfbi,
+       &omap3xxx_l4_core__dss_venc,
        NULL
 };
 
 int __init omap3xxx_hwmod_init(void)
 {
        int r;
-       struct omap_hwmod **h = NULL;
+       struct omap_hwmod_ocp_if **h = NULL;
        unsigned int rev;
 
-       /* Register hwmods common to all OMAP3 */
-       r = omap_hwmod_register(omap3xxx_hwmods);
+       /* Register hwmod links common to all OMAP3 */
+       r = omap_hwmod_register_links(omap3xxx_hwmod_ocp_ifs);
        if (r < 0)
                return r;
 
-       /* Register GP-only hwmods. */
+       /* Register GP-only hwmod links. */
        if (omap_type() == OMAP2_DEVICE_TYPE_GP) {
-               r = omap_hwmod_register(omap3xxx_gp_hwmods);
+               r = omap_hwmod_register_links(omap3xxx_gp_hwmod_ocp_ifs);
                if (r < 0)
                        return r;
        }
@@ -3703,43 +3216,43 @@ int __init omap3xxx_hwmod_init(void)
        rev = omap_rev();
 
        /*
-        * Register hwmods common to individual OMAP3 families, all
+        * Register hwmod links common to individual OMAP3 families, all
         * silicon revisions (e.g., 34xx, or AM3505/3517, or 36xx)
         * All possible revisions should be included in this conditional.
         */
        if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 ||
            rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 ||
            rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) {
-               h = omap34xx_hwmods;
+               h = omap34xx_hwmod_ocp_ifs;
        } else if (rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1) {
-               h = am35xx_hwmods;
+               h = am35xx_hwmod_ocp_ifs;
        } else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 ||
                   rev == OMAP3630_REV_ES1_2) {
-               h = omap36xx_hwmods;
+               h = omap36xx_hwmod_ocp_ifs;
        } else {
                WARN(1, "OMAP3 hwmod family init: unknown chip type\n");
                return -EINVAL;
        };
 
-       r = omap_hwmod_register(h);
+       r = omap_hwmod_register_links(h);
        if (r < 0)
                return r;
 
        /*
-        * Register hwmods specific to certain ES levels of a
+        * Register hwmod links specific to certain ES levels of a
         * particular family of silicon (e.g., 34xx ES1.0)
         */
        h = NULL;
        if (rev == OMAP3430_REV_ES1_0) {
-               h = omap3430es1_hwmods;
+               h = omap3430es1_hwmod_ocp_ifs;
        } else if (rev == OMAP3430_REV_ES2_0 || rev == OMAP3430_REV_ES2_1 ||
                   rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
                   rev == OMAP3430_REV_ES3_1_2) {
-               h = omap3430es2plus_hwmods;
+               h = omap3430es2plus_hwmod_ocp_ifs;
        };
 
        if (h) {
-               r = omap_hwmod_register(h);
+               r = omap_hwmod_register_links(h);
                if (r < 0)
                        return r;
        }
@@ -3747,29 +3260,29 @@ int __init omap3xxx_hwmod_init(void)
        h = NULL;
        if (rev == OMAP3430_REV_ES1_0 || rev == OMAP3430_REV_ES2_0 ||
            rev == OMAP3430_REV_ES2_1) {
-               h = omap3430_pre_es3_hwmods;
+               h = omap3430_pre_es3_hwmod_ocp_ifs;
        } else if (rev == OMAP3430_REV_ES3_0 || rev == OMAP3430_REV_ES3_1 ||
                   rev == OMAP3430_REV_ES3_1_2) {
-               h = omap3430_es3plus_hwmods;
+               h = omap3430_es3plus_hwmod_ocp_ifs;
        };
 
        if (h)
-               r = omap_hwmod_register(h);
+               r = omap_hwmod_register_links(h);
        if (r < 0)
                return r;
 
        /*
         * DSS code presumes that dss_core hwmod is handled first,
         * _before_ any other DSS related hwmods so register common
-        * DSS hwmods last to ensure that dss_core is already registered.
-        * Otherwise some change things may happen, for ex. if dispc
-        * is handled before dss_core and DSS is enabled in bootloader
-        * DIPSC will be reset with outputs enabled which sometimes leads
-        * to unrecoverable L3 error.
-        * XXX The long-term fix to this is to ensure modules are set up
-        * in dependency order in the hwmod core code.
+        * DSS hwmod links last to ensure that dss_core is already
+        * registered.  Otherwise some change things may happen, for
+        * ex. if dispc is handled before dss_core and DSS is enabled
+        * in bootloader DISPC will be reset with outputs enabled
+        * which sometimes leads to unrecoverable L3 error.  XXX The
+        * long-term fix to this is to ensure hwmods are set up in
+        * dependency order in the hwmod core code.
         */
-       r = omap_hwmod_register(omap3xxx_dss_hwmods);
+       r = omap_hwmod_register_links(omap3xxx_dss_hwmod_ocp_ifs);
 
        return r;
 }
index 6abc75753e42b2048ab7e7a4e4d158064efcce8b..0d91dec5b4bc1b8f23fb412d2b6b1172b5e3c444 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Hardware modules present on the OMAP44xx chips
  *
- * Copyright (C) 2009-2011 Texas Instruments, Inc.
+ * Copyright (C) 2009-2012 Texas Instruments, Inc.
  * Copyright (C) 2009-2010 Nokia Corporation
  *
  * Paul Walmsley
 #define OMAP44XX_IRQ_GIC_START 32
 
 /* Base offset for all OMAP4 dma requests */
-#define OMAP44XX_DMA_REQ_START  1
-
-/* Backward references (IPs with Bus Master capability) */
-static struct omap_hwmod omap44xx_aess_hwmod;
-static struct omap_hwmod omap44xx_dma_system_hwmod;
-static struct omap_hwmod omap44xx_dmm_hwmod;
-static struct omap_hwmod omap44xx_dsp_hwmod;
-static struct omap_hwmod omap44xx_dss_hwmod;
-static struct omap_hwmod omap44xx_emif_fw_hwmod;
-static struct omap_hwmod omap44xx_hsi_hwmod;
-static struct omap_hwmod omap44xx_ipu_hwmod;
-static struct omap_hwmod omap44xx_iss_hwmod;
-static struct omap_hwmod omap44xx_iva_hwmod;
-static struct omap_hwmod omap44xx_l3_instr_hwmod;
-static struct omap_hwmod omap44xx_l3_main_1_hwmod;
-static struct omap_hwmod omap44xx_l3_main_2_hwmod;
-static struct omap_hwmod omap44xx_l3_main_3_hwmod;
-static struct omap_hwmod omap44xx_l4_abe_hwmod;
-static struct omap_hwmod omap44xx_l4_cfg_hwmod;
-static struct omap_hwmod omap44xx_l4_per_hwmod;
-static struct omap_hwmod omap44xx_l4_wkup_hwmod;
-static struct omap_hwmod omap44xx_mmc1_hwmod;
-static struct omap_hwmod omap44xx_mmc2_hwmod;
-static struct omap_hwmod omap44xx_mpu_hwmod;
-static struct omap_hwmod omap44xx_mpu_private_hwmod;
-static struct omap_hwmod omap44xx_usb_otg_hs_hwmod;
-static struct omap_hwmod omap44xx_usb_host_hs_hwmod;
-static struct omap_hwmod omap44xx_usb_tll_hs_hwmod;
+#define OMAP44XX_DMA_REQ_START 1
 
 /*
- * Interconnects omap_hwmod structures
- * hwmods that compose the global OMAP interconnect
+ * IP blocks
  */
 
 /*
@@ -92,51 +64,17 @@ static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {
        { .irq = -1 }
 };
 
-/* l3_main_1 -> dmm */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
-       .master         = &omap44xx_l3_main_1_hwmod,
-       .slave          = &omap44xx_dmm_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
-       {
-               .pa_start       = 0x4e000000,
-               .pa_end         = 0x4e0007ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* mpu -> dmm */
-static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
-       .master         = &omap44xx_mpu_hwmod,
-       .slave          = &omap44xx_dmm_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_dmm_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dmm slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dmm_slaves[] = {
-       &omap44xx_l3_main_1__dmm,
-       &omap44xx_mpu__dmm,
-};
-
 static struct omap_hwmod omap44xx_dmm_hwmod = {
        .name           = "dmm",
        .class          = &omap44xx_dmm_hwmod_class,
        .clkdm_name     = "l3_emif_clkdm",
+       .mpu_irqs       = omap44xx_dmm_irqs,
        .prcm = {
                .omap4 = {
                        .clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,
                        .context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_dmm_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dmm_slaves),
-       .mpu_irqs       = omap44xx_dmm_irqs,
 };
 
 /*
@@ -148,38 +86,6 @@ static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {
 };
 
 /* emif_fw */
-/* dmm -> emif_fw */
-static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
-       .master         = &omap44xx_dmm_hwmod,
-       .slave          = &omap44xx_emif_fw_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
-       {
-               .pa_start       = 0x4a20c000,
-               .pa_end         = 0x4a20c0ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> emif_fw */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_emif_fw_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_emif_fw_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* emif_fw slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_emif_fw_slaves[] = {
-       &omap44xx_dmm__emif_fw,
-       &omap44xx_l4_cfg__emif_fw,
-};
-
 static struct omap_hwmod omap44xx_emif_fw_hwmod = {
        .name           = "emif_fw",
        .class          = &omap44xx_emif_fw_hwmod_class,
@@ -190,8 +96,6 @@ static struct omap_hwmod omap44xx_emif_fw_hwmod = {
                        .context_offs = OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_emif_fw_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_emif_fw_slaves),
 };
 
 /*
@@ -203,28 +107,6 @@ static struct omap_hwmod_class omap44xx_l3_hwmod_class = {
 };
 
 /* l3_instr */
-/* iva -> l3_instr */
-static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
-       .master         = &omap44xx_iva_hwmod,
-       .slave          = &omap44xx_l3_instr_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_main_3 -> l3_instr */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
-       .master         = &omap44xx_l3_main_3_hwmod,
-       .slave          = &omap44xx_l3_instr_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_instr slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = {
-       &omap44xx_iva__l3_instr,
-       &omap44xx_l3_main_3__l3_instr,
-};
-
 static struct omap_hwmod omap44xx_l3_instr_hwmod = {
        .name           = "l3_instr",
        .class          = &omap44xx_l3_hwmod_class,
@@ -236,8 +118,6 @@ static struct omap_hwmod omap44xx_l3_instr_hwmod = {
                        .modulemode   = MODULEMODE_HWCTRL,
                },
        },
-       .slaves         = omap44xx_l3_instr_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l3_instr_slaves),
 };
 
 /* l3_main_1 */
@@ -247,83 +127,6 @@ static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {
        { .irq = -1 }
 };
 
-/* dsp -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
-       .master         = &omap44xx_dsp_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dss -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
-       .master         = &omap44xx_dss_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_main_2 -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_cfg -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc1 -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
-       .master         = &omap44xx_mmc1_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc2 -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
-       .master         = &omap44xx_mmc2_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
-       {
-               .pa_start       = 0x44000000,
-               .pa_end         = 0x44000fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* mpu -> l3_main_1 */
-static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
-       .master         = &omap44xx_mpu_hwmod,
-       .slave          = &omap44xx_l3_main_1_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_l3_main_1_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* l3_main_1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = {
-       &omap44xx_dsp__l3_main_1,
-       &omap44xx_dss__l3_main_1,
-       &omap44xx_l3_main_2__l3_main_1,
-       &omap44xx_l4_cfg__l3_main_1,
-       &omap44xx_mmc1__l3_main_1,
-       &omap44xx_mmc2__l3_main_1,
-       &omap44xx_mpu__l3_main_1,
-};
-
 static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
        .name           = "l3_main_1",
        .class          = &omap44xx_l3_hwmod_class,
@@ -335,97 +138,9 @@ static struct omap_hwmod omap44xx_l3_main_1_hwmod = {
                        .context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_l3_main_1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l3_main_1_slaves),
 };
 
 /* l3_main_2 */
-/* dma_system -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
-       .master         = &omap44xx_dma_system_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* hsi -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
-       .master         = &omap44xx_hsi_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* ipu -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
-       .master         = &omap44xx_ipu_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* iss -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
-       .master         = &omap44xx_iss_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* iva -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
-       .master         = &omap44xx_iva_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
-       {
-               .pa_start       = 0x44800000,
-               .pa_end         = 0x44801fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_1 -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
-       .master         = &omap44xx_l3_main_1_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_l3_main_2_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* l4_cfg -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* usb_otg_hs -> l3_main_2 */
-static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
-       .master         = &omap44xx_usb_otg_hs_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_main_2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = {
-       &omap44xx_dma_system__l3_main_2,
-       &omap44xx_hsi__l3_main_2,
-       &omap44xx_ipu__l3_main_2,
-       &omap44xx_iss__l3_main_2,
-       &omap44xx_iva__l3_main_2,
-       &omap44xx_l3_main_1__l3_main_2,
-       &omap44xx_l4_cfg__l3_main_2,
-       &omap44xx_usb_otg_hs__l3_main_2,
-};
-
 static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
        .name           = "l3_main_2",
        .class          = &omap44xx_l3_hwmod_class,
@@ -436,65 +151,20 @@ static struct omap_hwmod omap44xx_l3_main_2_hwmod = {
                        .context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_l3_main_2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l3_main_2_slaves),
 };
 
 /* l3_main_3 */
-static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
-       {
-               .pa_start       = 0x45000000,
-               .pa_end         = 0x45000fff,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
+       .name           = "l3_main_3",
+       .class          = &omap44xx_l3_hwmod_class,
+       .clkdm_name     = "l3_instr_clkdm",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_HWCTRL,
+               },
        },
-       { }
-};
-
-/* l3_main_1 -> l3_main_3 */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
-       .master         = &omap44xx_l3_main_1_hwmod,
-       .slave          = &omap44xx_l3_main_3_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_l3_main_3_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* l3_main_2 -> l3_main_3 */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_l3_main_3_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_cfg -> l3_main_3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_l3_main_3_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_main_3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l3_main_3_slaves[] = {
-       &omap44xx_l3_main_1__l3_main_3,
-       &omap44xx_l3_main_2__l3_main_3,
-       &omap44xx_l4_cfg__l3_main_3,
-};
-
-static struct omap_hwmod omap44xx_l3_main_3_hwmod = {
-       .name           = "l3_main_3",
-       .class          = &omap44xx_l3_hwmod_class,
-       .clkdm_name     = "l3_instr_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L3INSTR_L3_3_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L3INSTR_L3_3_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_HWCTRL,
-               },
-       },
-       .slaves         = omap44xx_l3_main_3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l3_main_3_slaves),
 };
 
 /*
@@ -506,46 +176,6 @@ static struct omap_hwmod_class omap44xx_l4_hwmod_class = {
 };
 
 /* l4_abe */
-/* aess -> l4_abe */
-static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = {
-       .master         = &omap44xx_aess_hwmod,
-       .slave          = &omap44xx_l4_abe_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dsp -> l4_abe */
-static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
-       .master         = &omap44xx_dsp_hwmod,
-       .slave          = &omap44xx_l4_abe_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l3_main_1 -> l4_abe */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
-       .master         = &omap44xx_l3_main_1_hwmod,
-       .slave          = &omap44xx_l4_abe_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mpu -> l4_abe */
-static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
-       .master         = &omap44xx_mpu_hwmod,
-       .slave          = &omap44xx_l4_abe_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_abe slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = {
-       &omap44xx_aess__l4_abe,
-       &omap44xx_dsp__l4_abe,
-       &omap44xx_l3_main_1__l4_abe,
-       &omap44xx_mpu__l4_abe,
-};
-
 static struct omap_hwmod omap44xx_l4_abe_hwmod = {
        .name           = "l4_abe",
        .class          = &omap44xx_l4_hwmod_class,
@@ -555,24 +185,9 @@ static struct omap_hwmod omap44xx_l4_abe_hwmod = {
                        .clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,
                },
        },
-       .slaves         = omap44xx_l4_abe_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l4_abe_slaves),
 };
 
 /* l4_cfg */
-/* l3_main_1 -> l4_cfg */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
-       .master         = &omap44xx_l3_main_1_hwmod,
-       .slave          = &omap44xx_l4_cfg_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_cfg slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l4_cfg_slaves[] = {
-       &omap44xx_l3_main_1__l4_cfg,
-};
-
 static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
        .name           = "l4_cfg",
        .class          = &omap44xx_l4_hwmod_class,
@@ -583,24 +198,9 @@ static struct omap_hwmod omap44xx_l4_cfg_hwmod = {
                        .context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_l4_cfg_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l4_cfg_slaves),
 };
 
 /* l4_per */
-/* l3_main_2 -> l4_per */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_l4_per_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_per slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l4_per_slaves[] = {
-       &omap44xx_l3_main_2__l4_per,
-};
-
 static struct omap_hwmod omap44xx_l4_per_hwmod = {
        .name           = "l4_per",
        .class          = &omap44xx_l4_hwmod_class,
@@ -611,24 +211,9 @@ static struct omap_hwmod omap44xx_l4_per_hwmod = {
                        .context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_l4_per_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l4_per_slaves),
 };
 
 /* l4_wkup */
-/* l4_cfg -> l4_wkup */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_l4_wkup_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* l4_wkup slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_l4_wkup_slaves[] = {
-       &omap44xx_l4_cfg__l4_wkup,
-};
-
 static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
        .name           = "l4_wkup",
        .class          = &omap44xx_l4_hwmod_class,
@@ -639,8 +224,6 @@ static struct omap_hwmod omap44xx_l4_wkup_hwmod = {
                        .context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_l4_wkup_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_l4_wkup_slaves),
 };
 
 /*
@@ -652,25 +235,10 @@ static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {
 };
 
 /* mpu_private */
-/* mpu -> mpu_private */
-static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
-       .master         = &omap44xx_mpu_hwmod,
-       .slave          = &omap44xx_mpu_private_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mpu_private slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mpu_private_slaves[] = {
-       &omap44xx_mpu__mpu_private,
-};
-
 static struct omap_hwmod omap44xx_mpu_private_hwmod = {
        .name           = "mpu_private",
        .class          = &omap44xx_mpu_bus_hwmod_class,
        .clkdm_name     = "mpuss_clkdm",
-       .slaves         = omap44xx_mpu_private_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mpu_private_slaves),
 };
 
 /*
@@ -756,53 +324,6 @@ static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-/* aess master ports */
-static struct omap_hwmod_ocp_if *omap44xx_aess_masters[] = {
-       &omap44xx_aess__l4_abe,
-};
-
-static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
-       {
-               .pa_start       = 0x401f1000,
-               .pa_end         = 0x401f13ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> aess */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_aess_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_aess_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
-       {
-               .pa_start       = 0x490f1000,
-               .pa_end         = 0x490f13ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> aess (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_aess_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_aess_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* aess slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_aess_slaves[] = {
-       &omap44xx_l4_abe__aess,
-       &omap44xx_l4_abe__aess_dma,
-};
-
 static struct omap_hwmod omap44xx_aess_hwmod = {
        .name           = "aess",
        .class          = &omap44xx_aess_hwmod_class,
@@ -817,37 +338,6 @@ static struct omap_hwmod omap44xx_aess_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_aess_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_aess_slaves),
-       .masters        = omap44xx_aess_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_aess_masters),
-};
-
-/*
- * 'bandgap' class
- * bangap reference for ldo regulators
- */
-
-static struct omap_hwmod_class omap44xx_bandgap_hwmod_class = {
-       .name   = "bandgap",
-};
-
-/* bandgap */
-static struct omap_hwmod_opt_clk bandgap_opt_clks[] = {
-       { .role = "fclk", .clk = "bandgap_fclk" },
-};
-
-static struct omap_hwmod omap44xx_bandgap_hwmod = {
-       .name           = "bandgap",
-       .class          = &omap44xx_bandgap_hwmod_class,
-       .clkdm_name     = "l4_wkup_clkdm",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET,
-               },
-       },
-       .opt_clks       = bandgap_opt_clks,
-       .opt_clks_cnt   = ARRAY_SIZE(bandgap_opt_clks),
 };
 
 /*
@@ -870,30 +360,6 @@ static struct omap_hwmod_class omap44xx_counter_hwmod_class = {
 };
 
 /* counter_32k */
-static struct omap_hwmod omap44xx_counter_32k_hwmod;
-static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
-       {
-               .pa_start       = 0x4a304000,
-               .pa_end         = 0x4a30401f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_wkup -> counter_32k */
-static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
-       .master         = &omap44xx_l4_wkup_hwmod,
-       .slave          = &omap44xx_counter_32k_hwmod,
-       .clk            = "l4_wkup_clk_mux_ck",
-       .addr           = omap44xx_counter_32k_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* counter_32k slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_counter_32k_slaves[] = {
-       &omap44xx_l4_wkup__counter_32k,
-};
-
 static struct omap_hwmod omap44xx_counter_32k_hwmod = {
        .name           = "counter_32k",
        .class          = &omap44xx_counter_hwmod_class,
@@ -906,8 +372,6 @@ static struct omap_hwmod omap44xx_counter_32k_hwmod = {
                        .context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_counter_32k_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_counter_32k_slaves),
 };
 
 /*
@@ -950,34 +414,6 @@ static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {
        { .irq = -1 }
 };
 
-/* dma_system master ports */
-static struct omap_hwmod_ocp_if *omap44xx_dma_system_masters[] = {
-       &omap44xx_dma_system__l3_main_2,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
-       {
-               .pa_start       = 0x4a056000,
-               .pa_end         = 0x4a056fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> dma_system */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_dma_system_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dma_system_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dma_system slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dma_system_slaves[] = {
-       &omap44xx_l4_cfg__dma_system,
-};
-
 static struct omap_hwmod omap44xx_dma_system_hwmod = {
        .name           = "dma_system",
        .class          = &omap44xx_dma_hwmod_class,
@@ -991,10 +427,6 @@ static struct omap_hwmod omap44xx_dma_system_hwmod = {
                },
        },
        .dev_attr       = &dma_dev_attr,
-       .slaves         = omap44xx_dma_system_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dma_system_slaves),
-       .masters        = omap44xx_dma_system_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_dma_system_masters),
 };
 
 /*
@@ -1018,7 +450,6 @@ static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {
 };
 
 /* dmic */
-static struct omap_hwmod omap44xx_dmic_hwmod;
 static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {
        { .irq = 114 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -1029,66 +460,20 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
-       {
-               .name           = "mpu",
-               .pa_start       = 0x4012e000,
-               .pa_end         = 0x4012e07f,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap44xx_dmic_hwmod = {
+       .name           = "dmic",
+       .class          = &omap44xx_dmic_hwmod_class,
+       .clkdm_name     = "abe_clkdm",
+       .mpu_irqs       = omap44xx_dmic_irqs,
+       .sdma_reqs      = omap44xx_dmic_sdma_reqs,
+       .main_clk       = "dmic_fck",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
        },
-       { }
-};
-
-/* l4_abe -> dmic */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_dmic_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_dmic_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
-       {
-               .name           = "dma",
-               .pa_start       = 0x4902e000,
-               .pa_end         = 0x4902e07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> dmic (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_dmic_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_dmic_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* dmic slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dmic_slaves[] = {
-       &omap44xx_l4_abe__dmic,
-       &omap44xx_l4_abe__dmic_dma,
-};
-
-static struct omap_hwmod omap44xx_dmic_hwmod = {
-       .name           = "dmic",
-       .class          = &omap44xx_dmic_hwmod_class,
-       .clkdm_name     = "abe_clkdm",
-       .mpu_irqs       = omap44xx_dmic_irqs,
-       .sdma_reqs      = omap44xx_dmic_sdma_reqs,
-       .main_clk       = "dmic_fck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .slaves         = omap44xx_dmic_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dmic_slaves),
 };
 
 /*
@@ -1107,53 +492,8 @@ static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {
 };
 
 static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = {
-       { .name = "mmu_cache", .rst_shift = 1 },
-};
-
-static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = {
        { .name = "dsp", .rst_shift = 0 },
-};
-
-/* dsp -> iva */
-static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
-       .master         = &omap44xx_dsp_hwmod,
-       .slave          = &omap44xx_iva_hwmod,
-       .clk            = "dpll_iva_m5x2_ck",
-};
-
-/* dsp master ports */
-static struct omap_hwmod_ocp_if *omap44xx_dsp_masters[] = {
-       &omap44xx_dsp__l3_main_1,
-       &omap44xx_dsp__l4_abe,
-       &omap44xx_dsp__iva,
-};
-
-/* l4_cfg -> dsp */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_dsp_hwmod,
-       .clk            = "l4_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* dsp slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = {
-       &omap44xx_l4_cfg__dsp,
-};
-
-/* Pseudo hwmod for reset control purpose only */
-static struct omap_hwmod omap44xx_dsp_c0_hwmod = {
-       .name           = "dsp_c0",
-       .class          = &omap44xx_dsp_hwmod_class,
-       .clkdm_name     = "tesla_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .rst_lines      = omap44xx_dsp_c0_resets,
-       .rst_lines_cnt  = ARRAY_SIZE(omap44xx_dsp_c0_resets),
-       .prcm = {
-               .omap4 = {
-                       .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET,
-               },
-       },
+       { .name = "mmu_cache", .rst_shift = 1 },
 };
 
 static struct omap_hwmod omap44xx_dsp_hwmod = {
@@ -1172,10 +512,6 @@ static struct omap_hwmod omap44xx_dsp_hwmod = {
                        .modulemode   = MODULEMODE_HWCTRL,
                },
        },
-       .slaves         = omap44xx_dsp_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dsp_slaves),
-       .masters        = omap44xx_dsp_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_dsp_masters),
 };
 
 /*
@@ -1196,53 +532,6 @@ static struct omap_hwmod_class omap44xx_dss_hwmod_class = {
 };
 
 /* dss */
-/* dss master ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = {
-       &omap44xx_dss__l3_main_1,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
-       {
-               .pa_start       = 0x58000000,
-               .pa_end         = 0x5800007f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_dss_hwmod,
-       .clk            = "dss_fck",
-       .addr           = omap44xx_dss_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
-       {
-               .pa_start       = 0x48040000,
-               .pa_end         = 0x4804007f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
-       &omap44xx_l3_main_2__dss,
-       &omap44xx_l4_per__dss,
-};
-
 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
        { .role = "sys_clk", .clk = "dss_sys_clk" },
        { .role = "tv_clk", .clk = "dss_tv_clk" },
@@ -1263,10 +552,6 @@ static struct omap_hwmod omap44xx_dss_hwmod = {
        },
        .opt_clks       = dss_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_opt_clks),
-       .slaves         = omap44xx_dss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_slaves),
-       .masters        = omap44xx_dss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_dss_masters),
 };
 
 /*
@@ -1293,7 +578,6 @@ static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {
 };
 
 /* dss_dispc */
-static struct omap_hwmod omap44xx_dss_dispc_hwmod;
 static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {
        { .irq = 25 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -1304,53 +588,11 @@ static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
-       {
-               .pa_start       = 0x58001000,
-               .pa_end         = 0x58001fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_dispc */
-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",
-       .addr           = omap44xx_dss_dispc_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
-       {
-               .pa_start       = 0x48041000,
-               .pa_end         = 0x48041fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
 static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {
        .manager_count          = 3,
        .has_framedonetv_irq    = 1
 };
 
-/* l4_per -> dss_dispc */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_dispc_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_dispc_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_dispc slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
-       &omap44xx_l3_main_2__dss_dispc,
-       &omap44xx_l4_per__dss_dispc,
-};
-
 static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
        .name           = "dss_dispc",
        .class          = &omap44xx_dispc_hwmod_class,
@@ -1364,8 +606,6 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
                        .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_dss_dispc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dispc_slaves),
        .dev_attr       = &omap44xx_dss_dispc_dev_attr
 };
 
@@ -1391,7 +631,6 @@ static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {
 };
 
 /* dss_dsi1 */
-static struct omap_hwmod omap44xx_dss_dsi1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {
        { .irq = 53 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -1402,48 +641,6 @@ static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
-       {
-               .pa_start       = 0x58004000,
-               .pa_end         = 0x580041ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_dsi1 */
-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",
-       .addr           = omap44xx_dss_dsi1_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
-       {
-               .pa_start       = 0x48044000,
-               .pa_end         = 0x480441ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss_dsi1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_dsi1_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_dsi1_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_dsi1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
-       &omap44xx_l3_main_2__dss_dsi1,
-       &omap44xx_l4_per__dss_dsi1,
-};
-
 static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
        { .role = "sys_clk", .clk = "dss_sys_clk" },
 };
@@ -1463,12 +660,9 @@ static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
        },
        .opt_clks       = dss_dsi1_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi1_opt_clks),
-       .slaves         = omap44xx_dss_dsi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dsi1_slaves),
 };
 
 /* dss_dsi2 */
-static struct omap_hwmod omap44xx_dss_dsi2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {
        { .irq = 84 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -1479,48 +673,6 @@ static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
-       {
-               .pa_start       = 0x58005000,
-               .pa_end         = 0x580051ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_dsi2 */
-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",
-       .addr           = omap44xx_dss_dsi2_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
-       {
-               .pa_start       = 0x48045000,
-               .pa_end         = 0x480451ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss_dsi2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_dsi2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_dsi2_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_dsi2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
-       &omap44xx_l3_main_2__dss_dsi2,
-       &omap44xx_l4_per__dss_dsi2,
-};
-
 static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
        { .role = "sys_clk", .clk = "dss_sys_clk" },
 };
@@ -1540,8 +692,6 @@ static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
        },
        .opt_clks       = dss_dsi2_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_dsi2_opt_clks),
-       .slaves         = omap44xx_dss_dsi2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_dsi2_slaves),
 };
 
 /*
@@ -1565,7 +715,6 @@ static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {
 };
 
 /* dss_hdmi */
-static struct omap_hwmod omap44xx_dss_hdmi_hwmod;
 static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {
        { .irq = 101 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -1576,50 +725,8 @@ static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
-       {
-               .pa_start       = 0x58006000,
-               .pa_end         = 0x58006fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_hdmi */
-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",
-       .addr           = omap44xx_dss_hdmi_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
-       {
-               .pa_start       = 0x48046000,
-               .pa_end         = 0x48046fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss_hdmi */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_hdmi_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_hdmi_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_hdmi slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
-       &omap44xx_l3_main_2__dss_hdmi,
-       &omap44xx_l4_per__dss_hdmi,
-};
-
-static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
-       { .role = "sys_clk", .clk = "dss_sys_clk" },
+static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
+       { .role = "sys_clk", .clk = "dss_sys_clk" },
 };
 
 static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
@@ -1637,8 +744,6 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
        },
        .opt_clks       = dss_hdmi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_hdmi_opt_clks),
-       .slaves         = omap44xx_dss_hdmi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_hdmi_slaves),
 };
 
 /*
@@ -1662,54 +767,11 @@ static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {
 };
 
 /* dss_rfbi */
-static struct omap_hwmod omap44xx_dss_rfbi_hwmod;
 static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {
        { .dma_req = 13 + OMAP44XX_DMA_REQ_START },
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
-       {
-               .pa_start       = 0x58002000,
-               .pa_end         = 0x580020ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_rfbi */
-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",
-       .addr           = omap44xx_dss_rfbi_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
-       {
-               .pa_start       = 0x48042000,
-               .pa_end         = 0x480420ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss_rfbi */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_rfbi_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_rfbi_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_rfbi slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
-       &omap44xx_l3_main_2__dss_rfbi,
-       &omap44xx_l4_per__dss_rfbi,
-};
-
 static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
        { .role = "ick", .clk = "dss_fck" },
 };
@@ -1728,8 +790,6 @@ static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
        },
        .opt_clks       = dss_rfbi_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(dss_rfbi_opt_clks),
-       .slaves         = omap44xx_dss_rfbi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_rfbi_slaves),
 };
 
 /*
@@ -1742,49 +802,6 @@ static struct omap_hwmod_class omap44xx_venc_hwmod_class = {
 };
 
 /* dss_venc */
-static struct omap_hwmod omap44xx_dss_venc_hwmod;
-static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
-       {
-               .pa_start       = 0x58003000,
-               .pa_end         = 0x580030ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> dss_venc */
-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",
-       .addr           = omap44xx_dss_venc_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
-       {
-               .pa_start       = 0x48043000,
-               .pa_end         = 0x480430ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> dss_venc */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_dss_venc_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_dss_venc_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* dss_venc slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
-       &omap44xx_l3_main_2__dss_venc,
-       &omap44xx_l4_per__dss_venc,
-};
-
 static struct omap_hwmod omap44xx_dss_venc_hwmod = {
        .name           = "dss_venc",
        .class          = &omap44xx_venc_hwmod_class,
@@ -1796,8 +813,6 @@ static struct omap_hwmod omap44xx_dss_venc_hwmod = {
                        .context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_dss_venc_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_dss_venc_slaves),
 };
 
 /*
@@ -1830,35 +845,11 @@ static struct omap_gpio_dev_attr gpio_dev_attr = {
 };
 
 /* gpio1 */
-static struct omap_hwmod omap44xx_gpio1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {
        { .irq = 29 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
-       {
-               .pa_start       = 0x4a310000,
-               .pa_end         = 0x4a3101ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_wkup -> gpio1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
-       .master         = &omap44xx_l4_wkup_hwmod,
-       .slave          = &omap44xx_gpio1_hwmod,
-       .clk            = "l4_wkup_clk_mux_ck",
-       .addr           = omap44xx_gpio1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio1_slaves[] = {
-       &omap44xx_l4_wkup__gpio1,
-};
-
 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio1_dbclk" },
 };
@@ -1879,40 +870,14 @@ static struct omap_hwmod omap44xx_gpio1_hwmod = {
        .opt_clks       = gpio1_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio1_slaves),
 };
 
 /* gpio2 */
-static struct omap_hwmod omap44xx_gpio2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {
        { .irq = 30 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
-       {
-               .pa_start       = 0x48055000,
-               .pa_end         = 0x480551ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> gpio2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_gpio2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_gpio2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio2_slaves[] = {
-       &omap44xx_l4_per__gpio2,
-};
-
 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio2_dbclk" },
 };
@@ -1934,40 +899,14 @@ static struct omap_hwmod omap44xx_gpio2_hwmod = {
        .opt_clks       = gpio2_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio2_slaves),
 };
 
 /* gpio3 */
-static struct omap_hwmod omap44xx_gpio3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {
        { .irq = 31 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
-       {
-               .pa_start       = 0x48057000,
-               .pa_end         = 0x480571ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> gpio3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_gpio3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_gpio3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio3_slaves[] = {
-       &omap44xx_l4_per__gpio3,
-};
-
 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio3_dbclk" },
 };
@@ -1989,40 +928,14 @@ static struct omap_hwmod omap44xx_gpio3_hwmod = {
        .opt_clks       = gpio3_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio3_slaves),
 };
 
 /* gpio4 */
-static struct omap_hwmod omap44xx_gpio4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {
        { .irq = 32 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
-       {
-               .pa_start       = 0x48059000,
-               .pa_end         = 0x480591ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> gpio4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_gpio4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_gpio4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio4_slaves[] = {
-       &omap44xx_l4_per__gpio4,
-};
-
 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio4_dbclk" },
 };
@@ -2044,40 +957,14 @@ static struct omap_hwmod omap44xx_gpio4_hwmod = {
        .opt_clks       = gpio4_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio4_slaves),
 };
 
 /* gpio5 */
-static struct omap_hwmod omap44xx_gpio5_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {
        { .irq = 33 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
-       {
-               .pa_start       = 0x4805b000,
-               .pa_end         = 0x4805b1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> gpio5 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_gpio5_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_gpio5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio5 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio5_slaves[] = {
-       &omap44xx_l4_per__gpio5,
-};
-
 static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio5_dbclk" },
 };
@@ -2099,40 +986,14 @@ static struct omap_hwmod omap44xx_gpio5_hwmod = {
        .opt_clks       = gpio5_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio5_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio5_slaves),
 };
 
 /* gpio6 */
-static struct omap_hwmod omap44xx_gpio6_hwmod;
 static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {
        { .irq = 34 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
-       {
-               .pa_start       = 0x4805d000,
-               .pa_end         = 0x4805d1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> gpio6 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_gpio6_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_gpio6_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* gpio6 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_gpio6_slaves[] = {
-       &omap44xx_l4_per__gpio6,
-};
-
 static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio6_dbclk" },
 };
@@ -2154,8 +1015,6 @@ static struct omap_hwmod omap44xx_gpio6_hwmod = {
        .opt_clks       = gpio6_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio6_opt_clks),
        .dev_attr       = &gpio_dev_attr,
-       .slaves         = omap44xx_gpio6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_gpio6_slaves),
 };
 
 /*
@@ -2190,51 +1049,19 @@ static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {
        { .irq = -1 }
 };
 
-/* hsi master ports */
-static struct omap_hwmod_ocp_if *omap44xx_hsi_masters[] = {
-       &omap44xx_hsi__l3_main_2,
-};
-
-static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
-       {
-               .pa_start       = 0x4a058000,
-               .pa_end         = 0x4a05bfff,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap44xx_hsi_hwmod = {
+       .name           = "hsi",
+       .class          = &omap44xx_hsi_hwmod_class,
+       .clkdm_name     = "l3_init_clkdm",
+       .mpu_irqs       = omap44xx_hsi_irqs,
+       .main_clk       = "hsi_fck",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_HWCTRL,
+               },
        },
-       { }
-};
-
-/* l4_cfg -> hsi */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_hsi_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_hsi_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* hsi slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_hsi_slaves[] = {
-       &omap44xx_l4_cfg__hsi,
-};
-
-static struct omap_hwmod omap44xx_hsi_hwmod = {
-       .name           = "hsi",
-       .class          = &omap44xx_hsi_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .mpu_irqs       = omap44xx_hsi_irqs,
-       .main_clk       = "hsi_fck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_HWCTRL,
-               },
-       },
-       .slaves         = omap44xx_hsi_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_hsi_slaves),
-       .masters        = omap44xx_hsi_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_hsi_masters),
 };
 
 /*
@@ -2266,7 +1093,6 @@ static struct omap_i2c_dev_attr i2c_dev_attr = {
 };
 
 /* i2c1 */
-static struct omap_hwmod omap44xx_i2c1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {
        { .irq = 56 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -2278,29 +1104,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
-       {
-               .pa_start       = 0x48070000,
-               .pa_end         = 0x480700ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> i2c1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_i2c1_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_i2c1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* i2c1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_i2c1_slaves[] = {
-       &omap44xx_l4_per__i2c1,
-};
-
 static struct omap_hwmod omap44xx_i2c1_hwmod = {
        .name           = "i2c1",
        .class          = &omap44xx_i2c_hwmod_class,
@@ -2316,13 +1119,10 @@ static struct omap_hwmod omap44xx_i2c1_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_i2c1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_i2c1_slaves),
        .dev_attr       = &i2c_dev_attr,
 };
 
 /* i2c2 */
-static struct omap_hwmod omap44xx_i2c2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {
        { .irq = 57 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -2334,29 +1134,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
-       {
-               .pa_start       = 0x48072000,
-               .pa_end         = 0x480720ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> i2c2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_i2c2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_i2c2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* i2c2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_i2c2_slaves[] = {
-       &omap44xx_l4_per__i2c2,
-};
-
 static struct omap_hwmod omap44xx_i2c2_hwmod = {
        .name           = "i2c2",
        .class          = &omap44xx_i2c_hwmod_class,
@@ -2372,13 +1149,10 @@ static struct omap_hwmod omap44xx_i2c2_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_i2c2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_i2c2_slaves),
        .dev_attr       = &i2c_dev_attr,
 };
 
 /* i2c3 */
-static struct omap_hwmod omap44xx_i2c3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {
        { .irq = 61 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -2390,29 +1164,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
-       {
-               .pa_start       = 0x48060000,
-               .pa_end         = 0x480600ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> i2c3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_i2c3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_i2c3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* i2c3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_i2c3_slaves[] = {
-       &omap44xx_l4_per__i2c3,
-};
-
 static struct omap_hwmod omap44xx_i2c3_hwmod = {
        .name           = "i2c3",
        .class          = &omap44xx_i2c_hwmod_class,
@@ -2428,13 +1179,10 @@ static struct omap_hwmod omap44xx_i2c3_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_i2c3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_i2c3_slaves),
        .dev_attr       = &i2c_dev_attr,
 };
 
 /* i2c4 */
-static struct omap_hwmod omap44xx_i2c4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {
        { .irq = 62 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -2446,29 +1194,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
-       {
-               .pa_start       = 0x48350000,
-               .pa_end         = 0x483500ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> i2c4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_i2c4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_i2c4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* i2c4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_i2c4_slaves[] = {
-       &omap44xx_l4_per__i2c4,
-};
-
 static struct omap_hwmod omap44xx_i2c4_hwmod = {
        .name           = "i2c4",
        .class          = &omap44xx_i2c_hwmod_class,
@@ -2484,8 +1209,6 @@ static struct omap_hwmod omap44xx_i2c4_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_i2c4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_i2c4_slaves),
        .dev_attr       = &i2c_dev_attr,
 };
 
@@ -2504,66 +1227,12 @@ static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {
        { .irq = -1 }
 };
 
-static struct omap_hwmod_rst_info omap44xx_ipu_c0_resets[] = {
+static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
        { .name = "cpu0", .rst_shift = 0 },
-};
-
-static struct omap_hwmod_rst_info omap44xx_ipu_c1_resets[] = {
        { .name = "cpu1", .rst_shift = 1 },
-};
-
-static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {
        { .name = "mmu_cache", .rst_shift = 2 },
 };
 
-/* ipu master ports */
-static struct omap_hwmod_ocp_if *omap44xx_ipu_masters[] = {
-       &omap44xx_ipu__l3_main_2,
-};
-
-/* l3_main_2 -> ipu */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_ipu_hwmod,
-       .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* ipu slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_ipu_slaves[] = {
-       &omap44xx_l3_main_2__ipu,
-};
-
-/* Pseudo hwmod for reset control purpose only */
-static struct omap_hwmod omap44xx_ipu_c0_hwmod = {
-       .name           = "ipu_c0",
-       .class          = &omap44xx_ipu_hwmod_class,
-       .clkdm_name     = "ducati_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .rst_lines      = omap44xx_ipu_c0_resets,
-       .rst_lines_cnt  = ARRAY_SIZE(omap44xx_ipu_c0_resets),
-       .prcm = {
-               .omap4 = {
-                       .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
-               },
-       },
-};
-
-/* Pseudo hwmod for reset control purpose only */
-static struct omap_hwmod omap44xx_ipu_c1_hwmod = {
-       .name           = "ipu_c1",
-       .class          = &omap44xx_ipu_hwmod_class,
-       .clkdm_name     = "ducati_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .rst_lines      = omap44xx_ipu_c1_resets,
-       .rst_lines_cnt  = ARRAY_SIZE(omap44xx_ipu_c1_resets),
-       .prcm = {
-               .omap4 = {
-                       .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET,
-               },
-       },
-};
-
 static struct omap_hwmod omap44xx_ipu_hwmod = {
        .name           = "ipu",
        .class          = &omap44xx_ipu_hwmod_class,
@@ -2580,10 +1249,6 @@ static struct omap_hwmod omap44xx_ipu_hwmod = {
                        .modulemode   = MODULEMODE_HWCTRL,
                },
        },
-       .slaves         = omap44xx_ipu_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_ipu_slaves),
-       .masters        = omap44xx_ipu_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_ipu_masters),
 };
 
 /*
@@ -2630,34 +1295,6 @@ static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-/* iss master ports */
-static struct omap_hwmod_ocp_if *omap44xx_iss_masters[] = {
-       &omap44xx_iss__l3_main_2,
-};
-
-static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
-       {
-               .pa_start       = 0x52000000,
-               .pa_end         = 0x520000ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> iss */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_iss_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_iss_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* iss slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_iss_slaves[] = {
-       &omap44xx_l3_main_2__iss,
-};
-
 static struct omap_hwmod_opt_clk iss_opt_clks[] = {
        { .role = "ctrlclk", .clk = "iss_ctrlclk" },
 };
@@ -2678,10 +1315,6 @@ static struct omap_hwmod omap44xx_iss_hwmod = {
        },
        .opt_clks       = iss_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(iss_opt_clks),
-       .slaves         = omap44xx_iss_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_iss_slaves),
-       .masters        = omap44xx_iss_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_iss_masters),
 };
 
 /*
@@ -2702,75 +1335,9 @@ static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {
 };
 
 static struct omap_hwmod_rst_info omap44xx_iva_resets[] = {
-       { .name = "logic", .rst_shift = 2 },
-};
-
-static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = {
        { .name = "seq0", .rst_shift = 0 },
-};
-
-static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = {
        { .name = "seq1", .rst_shift = 1 },
-};
-
-/* iva master ports */
-static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = {
-       &omap44xx_iva__l3_main_2,
-       &omap44xx_iva__l3_instr,
-};
-
-static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
-       {
-               .pa_start       = 0x5a000000,
-               .pa_end         = 0x5a07ffff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l3_main_2 -> iva */
-static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
-       .master         = &omap44xx_l3_main_2_hwmod,
-       .slave          = &omap44xx_iva_hwmod,
-       .clk            = "l3_div_ck",
-       .addr           = omap44xx_iva_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-/* iva slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_iva_slaves[] = {
-       &omap44xx_dsp__iva,
-       &omap44xx_l3_main_2__iva,
-};
-
-/* Pseudo hwmod for reset control purpose only */
-static struct omap_hwmod omap44xx_iva_seq0_hwmod = {
-       .name           = "iva_seq0",
-       .class          = &omap44xx_iva_hwmod_class,
-       .clkdm_name     = "ivahd_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .rst_lines      = omap44xx_iva_seq0_resets,
-       .rst_lines_cnt  = ARRAY_SIZE(omap44xx_iva_seq0_resets),
-       .prcm = {
-               .omap4 = {
-                       .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
-               },
-       },
-};
-
-/* Pseudo hwmod for reset control purpose only */
-static struct omap_hwmod omap44xx_iva_seq1_hwmod = {
-       .name           = "iva_seq1",
-       .class          = &omap44xx_iva_hwmod_class,
-       .clkdm_name     = "ivahd_clkdm",
-       .flags          = HWMOD_INIT_NO_RESET,
-       .rst_lines      = omap44xx_iva_seq1_resets,
-       .rst_lines_cnt  = ARRAY_SIZE(omap44xx_iva_seq1_resets),
-       .prcm = {
-               .omap4 = {
-                       .rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET,
-               },
-       },
+       { .name = "logic", .rst_shift = 2 },
 };
 
 static struct omap_hwmod omap44xx_iva_hwmod = {
@@ -2789,10 +1356,6 @@ static struct omap_hwmod omap44xx_iva_hwmod = {
                        .modulemode   = MODULEMODE_HWCTRL,
                },
        },
-       .slaves         = omap44xx_iva_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_iva_slaves),
-       .masters        = omap44xx_iva_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_iva_masters),
 };
 
 /*
@@ -2818,35 +1381,11 @@ static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {
 };
 
 /* kbd */
-static struct omap_hwmod omap44xx_kbd_hwmod;
 static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {
        { .irq = 120 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
-       {
-               .pa_start       = 0x4a31c000,
-               .pa_end         = 0x4a31c07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_wkup -> kbd */
-static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
-       .master         = &omap44xx_l4_wkup_hwmod,
-       .slave          = &omap44xx_kbd_hwmod,
-       .clk            = "l4_wkup_clk_mux_ck",
-       .addr           = omap44xx_kbd_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* kbd slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_kbd_slaves[] = {
-       &omap44xx_l4_wkup__kbd,
-};
-
 static struct omap_hwmod omap44xx_kbd_hwmod = {
        .name           = "kbd",
        .class          = &omap44xx_kbd_hwmod_class,
@@ -2860,8 +1399,6 @@ static struct omap_hwmod omap44xx_kbd_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_kbd_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_kbd_slaves),
 };
 
 /*
@@ -2885,35 +1422,11 @@ static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {
 };
 
 /* mailbox */
-static struct omap_hwmod omap44xx_mailbox_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {
        { .irq = 26 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
-       {
-               .pa_start       = 0x4a0f4000,
-               .pa_end         = 0x4a0f41ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> mailbox */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_mailbox_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mailbox_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mailbox slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mailbox_slaves[] = {
-       &omap44xx_l4_cfg__mailbox,
-};
-
 static struct omap_hwmod omap44xx_mailbox_hwmod = {
        .name           = "mailbox",
        .class          = &omap44xx_mailbox_hwmod_class,
@@ -2925,8 +1438,6 @@ static struct omap_hwmod omap44xx_mailbox_hwmod = {
                        .context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_mailbox_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mailbox_slaves),
 };
 
 /*
@@ -2949,7 +1460,6 @@ static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {
 };
 
 /* mcbsp1 */
-static struct omap_hwmod omap44xx_mcbsp1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = {
        { .irq = 17 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -2961,50 +1471,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
-       {
-               .name           = "mpu",
-               .pa_start       = 0x40122000,
-               .pa_end         = 0x401220ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp1_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp1_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
-       {
-               .name           = "dma",
-               .pa_start       = 0x49022000,
-               .pa_end         = 0x490220ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp1 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp1_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp1_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* mcbsp1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcbsp1_slaves[] = {
-       &omap44xx_l4_abe__mcbsp1,
-       &omap44xx_l4_abe__mcbsp1_dma,
-};
-
 static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {
        { .role = "pad_fck", .clk = "pad_clks_ck" },
        { .role = "prcm_clk", .clk = "mcbsp1_sync_mux_ck" },
@@ -3024,14 +1490,11 @@ static struct omap_hwmod omap44xx_mcbsp1_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mcbsp1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcbsp1_slaves),
        .opt_clks       = mcbsp1_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(mcbsp1_opt_clks),
 };
 
 /* mcbsp2 */
-static struct omap_hwmod omap44xx_mcbsp2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = {
        { .irq = 22 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3043,50 +1506,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
-       {
-               .name           = "mpu",
-               .pa_start       = 0x40124000,
-               .pa_end         = 0x401240ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp2_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp2_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
-       {
-               .name           = "dma",
-               .pa_start       = 0x49024000,
-               .pa_end         = 0x490240ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp2 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp2_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp2_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* mcbsp2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcbsp2_slaves[] = {
-       &omap44xx_l4_abe__mcbsp2,
-       &omap44xx_l4_abe__mcbsp2_dma,
-};
-
 static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {
        { .role = "pad_fck", .clk = "pad_clks_ck" },
        { .role = "prcm_clk", .clk = "mcbsp2_sync_mux_ck" },
@@ -3106,14 +1525,11 @@ static struct omap_hwmod omap44xx_mcbsp2_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mcbsp2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcbsp2_slaves),
        .opt_clks       = mcbsp2_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(mcbsp2_opt_clks),
 };
 
 /* mcbsp3 */
-static struct omap_hwmod omap44xx_mcbsp3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = {
        { .irq = 23 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3125,50 +1541,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
-       {
-               .name           = "mpu",
-               .pa_start       = 0x40126000,
-               .pa_end         = 0x401260ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp3_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp3_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
-       {
-               .name           = "dma",
-               .pa_start       = 0x49026000,
-               .pa_end         = 0x490260ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcbsp3 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcbsp3_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcbsp3_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* mcbsp3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcbsp3_slaves[] = {
-       &omap44xx_l4_abe__mcbsp3,
-       &omap44xx_l4_abe__mcbsp3_dma,
-};
-
 static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {
        { .role = "pad_fck", .clk = "pad_clks_ck" },
        { .role = "prcm_clk", .clk = "mcbsp3_sync_mux_ck" },
@@ -3188,14 +1560,11 @@ static struct omap_hwmod omap44xx_mcbsp3_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mcbsp3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcbsp3_slaves),
        .opt_clks       = mcbsp3_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(mcbsp3_opt_clks),
 };
 
 /* mcbsp4 */
-static struct omap_hwmod omap44xx_mcbsp4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = {
        { .irq = 16 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3207,29 +1576,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
-       {
-               .pa_start       = 0x48096000,
-               .pa_end         = 0x480960ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mcbsp4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcbsp4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mcbsp4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcbsp4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcbsp4_slaves[] = {
-       &omap44xx_l4_per__mcbsp4,
-};
-
 static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {
        { .role = "pad_fck", .clk = "pad_clks_ck" },
        { .role = "prcm_clk", .clk = "mcbsp4_sync_mux_ck" },
@@ -3249,8 +1595,6 @@ static struct omap_hwmod omap44xx_mcbsp4_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mcbsp4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcbsp4_slaves),
        .opt_clks       = mcbsp4_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(mcbsp4_opt_clks),
 };
@@ -3277,7 +1621,6 @@ static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {
 };
 
 /* mcpdm */
-static struct omap_hwmod omap44xx_mcpdm_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {
        { .irq = 112 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3289,48 +1632,6 @@ static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
-       {
-               .pa_start       = 0x40132000,
-               .pa_end         = 0x4013207f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcpdm */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcpdm_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcpdm_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
-       {
-               .pa_start       = 0x49032000,
-               .pa_end         = 0x4903207f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> mcpdm (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_mcpdm_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_mcpdm_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* mcpdm slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcpdm_slaves[] = {
-       &omap44xx_l4_abe__mcpdm,
-       &omap44xx_l4_abe__mcpdm_dma,
-};
-
 static struct omap_hwmod omap44xx_mcpdm_hwmod = {
        .name           = "mcpdm",
        .class          = &omap44xx_mcpdm_hwmod_class,
@@ -3345,8 +1646,6 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mcpdm_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcpdm_slaves),
 };
 
 /*
@@ -3372,7 +1671,6 @@ static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {
 };
 
 /* mcspi1 */
-static struct omap_hwmod omap44xx_mcspi1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {
        { .irq = 65 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3390,29 +1688,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
-       {
-               .pa_start       = 0x48098000,
-               .pa_end         = 0x480981ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mcspi1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcspi1_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mcspi1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcspi1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcspi1_slaves[] = {
-       &omap44xx_l4_per__mcspi1,
-};
-
 /* mcspi1 dev_attr */
 static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {
        .num_chipselect = 4,
@@ -3433,12 +1708,9 @@ static struct omap_hwmod omap44xx_mcspi1_hwmod = {
                },
        },
        .dev_attr       = &mcspi1_dev_attr,
-       .slaves         = omap44xx_mcspi1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcspi1_slaves),
 };
 
 /* mcspi2 */
-static struct omap_hwmod omap44xx_mcspi2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {
        { .irq = 66 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3452,29 +1724,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
-       {
-               .pa_start       = 0x4809a000,
-               .pa_end         = 0x4809a1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mcspi2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcspi2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mcspi2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcspi2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcspi2_slaves[] = {
-       &omap44xx_l4_per__mcspi2,
-};
-
 /* mcspi2 dev_attr */
 static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {
        .num_chipselect = 2,
@@ -3495,12 +1744,9 @@ static struct omap_hwmod omap44xx_mcspi2_hwmod = {
                },
        },
        .dev_attr       = &mcspi2_dev_attr,
-       .slaves         = omap44xx_mcspi2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcspi2_slaves),
 };
 
 /* mcspi3 */
-static struct omap_hwmod omap44xx_mcspi3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {
        { .irq = 91 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3514,32 +1760,9 @@ static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
-       {
-               .pa_start       = 0x480b8000,
-               .pa_end         = 0x480b81ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mcspi3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcspi3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mcspi3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcspi3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcspi3_slaves[] = {
-       &omap44xx_l4_per__mcspi3,
-};
-
-/* mcspi3 dev_attr */
-static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
-       .num_chipselect = 2,
+/* mcspi3 dev_attr */
+static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {
+       .num_chipselect = 2,
 };
 
 static struct omap_hwmod omap44xx_mcspi3_hwmod = {
@@ -3557,12 +1780,9 @@ static struct omap_hwmod omap44xx_mcspi3_hwmod = {
                },
        },
        .dev_attr       = &mcspi3_dev_attr,
-       .slaves         = omap44xx_mcspi3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcspi3_slaves),
 };
 
 /* mcspi4 */
-static struct omap_hwmod omap44xx_mcspi4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {
        { .irq = 48 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3574,29 +1794,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
-       {
-               .pa_start       = 0x480ba000,
-               .pa_end         = 0x480ba1ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mcspi4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mcspi4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mcspi4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mcspi4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mcspi4_slaves[] = {
-       &omap44xx_l4_per__mcspi4,
-};
-
 /* mcspi4 dev_attr */
 static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {
        .num_chipselect = 1,
@@ -3617,8 +1814,6 @@ static struct omap_hwmod omap44xx_mcspi4_hwmod = {
                },
        },
        .dev_attr       = &mcspi4_dev_attr,
-       .slaves         = omap44xx_mcspi4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mcspi4_slaves),
 };
 
 /*
@@ -3655,34 +1850,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-/* mmc1 master ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc1_masters[] = {
-       &omap44xx_mmc1__l3_main_1,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
-       {
-               .pa_start       = 0x4809c000,
-               .pa_end         = 0x4809c3ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mmc1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mmc1_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mmc1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = {
-       &omap44xx_l4_per__mmc1,
-};
-
 /* mmc1 dev_attr */
 static struct omap_mmc_dev_attr mmc1_dev_attr = {
        .flags  = OMAP_HSMMC_SUPPORTS_DUAL_VOLT,
@@ -3703,10 +1870,6 @@ static struct omap_hwmod omap44xx_mmc1_hwmod = {
                },
        },
        .dev_attr       = &mmc1_dev_attr,
-       .slaves         = omap44xx_mmc1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc1_slaves),
-       .masters        = omap44xx_mmc1_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_mmc1_masters),
 };
 
 /* mmc2 */
@@ -3721,34 +1884,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-/* mmc2 master ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc2_masters[] = {
-       &omap44xx_mmc2__l3_main_1,
-};
-
-static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
-       {
-               .pa_start       = 0x480b4000,
-               .pa_end         = 0x480b43ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mmc2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mmc2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mmc2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc2_slaves[] = {
-       &omap44xx_l4_per__mmc2,
-};
-
 static struct omap_hwmod omap44xx_mmc2_hwmod = {
        .name           = "mmc2",
        .class          = &omap44xx_mmc_hwmod_class,
@@ -3763,14 +1898,9 @@ static struct omap_hwmod omap44xx_mmc2_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mmc2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc2_slaves),
-       .masters        = omap44xx_mmc2_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_mmc2_masters),
 };
 
 /* mmc3 */
-static struct omap_hwmod omap44xx_mmc3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {
        { .irq = 94 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3782,29 +1912,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
-       {
-               .pa_start       = 0x480ad000,
-               .pa_end         = 0x480ad3ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mmc3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mmc3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mmc3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc3_slaves[] = {
-       &omap44xx_l4_per__mmc3,
-};
-
 static struct omap_hwmod omap44xx_mmc3_hwmod = {
        .name           = "mmc3",
        .class          = &omap44xx_mmc_hwmod_class,
@@ -3819,12 +1926,9 @@ static struct omap_hwmod omap44xx_mmc3_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mmc3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc3_slaves),
 };
 
 /* mmc4 */
-static struct omap_hwmod omap44xx_mmc4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {
        { .irq = 96 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3836,35 +1940,11 @@ static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
-       {
-               .pa_start       = 0x480d1000,
-               .pa_end         = 0x480d13ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mmc4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mmc4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mmc4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc4_slaves[] = {
-       &omap44xx_l4_per__mmc4,
-};
-
 static struct omap_hwmod omap44xx_mmc4_hwmod = {
        .name           = "mmc4",
        .class          = &omap44xx_mmc_hwmod_class,
        .clkdm_name     = "l4_per_clkdm",
        .mpu_irqs       = omap44xx_mmc4_irqs,
-
        .sdma_reqs      = omap44xx_mmc4_sdma_reqs,
        .main_clk       = "mmc4_fck",
        .prcm = {
@@ -3874,12 +1954,9 @@ static struct omap_hwmod omap44xx_mmc4_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mmc4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc4_slaves),
 };
 
 /* mmc5 */
-static struct omap_hwmod omap44xx_mmc5_hwmod;
 static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {
        { .irq = 59 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -3891,29 +1968,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
-       {
-               .pa_start       = 0x480d5000,
-               .pa_end         = 0x480d53ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> mmc5 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_mmc5_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_mmc5_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* mmc5 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_mmc5_slaves[] = {
-       &omap44xx_l4_per__mmc5,
-};
-
 static struct omap_hwmod omap44xx_mmc5_hwmod = {
        .name           = "mmc5",
        .class          = &omap44xx_mmc_hwmod_class,
@@ -3928,8 +1982,6 @@ static struct omap_hwmod omap44xx_mmc5_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_mmc5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_mmc5_slaves),
 };
 
 /*
@@ -3949,13 +2001,6 @@ static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {
        { .irq = -1 }
 };
 
-/* mpu master ports */
-static struct omap_hwmod_ocp_if *omap44xx_mpu_masters[] = {
-       &omap44xx_mpu__l3_main_1,
-       &omap44xx_mpu__l4_abe,
-       &omap44xx_mpu__dmm,
-};
-
 static struct omap_hwmod omap44xx_mpu_hwmod = {
        .name           = "mpu",
        .class          = &omap44xx_mpu_hwmod_class,
@@ -3969,8 +2014,6 @@ static struct omap_hwmod omap44xx_mpu_hwmod = {
                        .context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
                },
        },
-       .masters        = omap44xx_mpu_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_mpu_masters),
 };
 
 /*
@@ -4004,35 +2047,11 @@ static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {
        .sensor_voltdm_name   = "core",
 };
 
-static struct omap_hwmod omap44xx_smartreflex_core_hwmod;
 static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
        { .irq = 19 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
-       {
-               .pa_start       = 0x4a0dd000,
-               .pa_end         = 0x4a0dd03f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> smartreflex_core */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_smartreflex_core_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_smartreflex_core_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* smartreflex_core slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_smartreflex_core_slaves[] = {
-       &omap44xx_l4_cfg__smartreflex_core,
-};
-
 static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
        .name           = "smartreflex_core",
        .class          = &omap44xx_smartreflex_hwmod_class,
@@ -4047,8 +2066,6 @@ static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_smartreflex_core_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_smartreflex_core_slaves),
        .dev_attr       = &smartreflex_core_dev_attr,
 };
 
@@ -4057,35 +2074,11 @@ static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {
        .sensor_voltdm_name     = "iva",
 };
 
-static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;
 static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
        { .irq = 102 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
-       {
-               .pa_start       = 0x4a0db000,
-               .pa_end         = 0x4a0db03f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> smartreflex_iva */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_smartreflex_iva_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_smartreflex_iva_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* smartreflex_iva slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_smartreflex_iva_slaves[] = {
-       &omap44xx_l4_cfg__smartreflex_iva,
-};
-
 static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
        .name           = "smartreflex_iva",
        .class          = &omap44xx_smartreflex_hwmod_class,
@@ -4099,8 +2092,6 @@ static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_smartreflex_iva_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),
        .dev_attr       = &smartreflex_iva_dev_attr,
 };
 
@@ -4109,35 +2100,11 @@ static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {
        .sensor_voltdm_name     = "mpu",
 };
 
-static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;
 static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
        { .irq = 18 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
-       {
-               .pa_start       = 0x4a0d9000,
-               .pa_end         = 0x4a0d903f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> smartreflex_mpu */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_smartreflex_mpu_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_smartreflex_mpu_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* smartreflex_mpu slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_smartreflex_mpu_slaves[] = {
-       &omap44xx_l4_cfg__smartreflex_mpu,
-};
-
 static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
        .name           = "smartreflex_mpu",
        .class          = &omap44xx_smartreflex_hwmod_class,
@@ -4151,8 +2118,6 @@ static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_smartreflex_mpu_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),
        .dev_attr       = &smartreflex_mpu_dev_attr,
 };
 
@@ -4180,30 +2145,6 @@ static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {
 };
 
 /* spinlock */
-static struct omap_hwmod omap44xx_spinlock_hwmod;
-static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
-       {
-               .pa_start       = 0x4a0f6000,
-               .pa_end         = 0x4a0f6fff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> spinlock */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_spinlock_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_spinlock_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* spinlock slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_spinlock_slaves[] = {
-       &omap44xx_l4_cfg__spinlock,
-};
-
 static struct omap_hwmod omap44xx_spinlock_hwmod = {
        .name           = "spinlock",
        .class          = &omap44xx_spinlock_hwmod_class,
@@ -4214,8 +2155,6 @@ static struct omap_hwmod omap44xx_spinlock_hwmod = {
                        .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,
                },
        },
-       .slaves         = omap44xx_spinlock_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_spinlock_slaves),
 };
 
 /*
@@ -4267,35 +2206,11 @@ static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {
 };
 
 /* timer1 */
-static struct omap_hwmod omap44xx_timer1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {
        { .irq = 37 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
-       {
-               .pa_start       = 0x4a318000,
-               .pa_end         = 0x4a31807f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_wkup -> timer1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
-       .master         = &omap44xx_l4_wkup_hwmod,
-       .slave          = &omap44xx_timer1_hwmod,
-       .clk            = "l4_wkup_clk_mux_ck",
-       .addr           = omap44xx_timer1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer1_slaves[] = {
-       &omap44xx_l4_wkup__timer1,
-};
-
 static struct omap_hwmod omap44xx_timer1_hwmod = {
        .name           = "timer1",
        .class          = &omap44xx_timer_1ms_hwmod_class,
@@ -4310,40 +2225,14 @@ static struct omap_hwmod omap44xx_timer1_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer1_slaves),
 };
 
 /* timer2 */
-static struct omap_hwmod omap44xx_timer2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {
        { .irq = 38 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
-       {
-               .pa_start       = 0x48032000,
-               .pa_end         = 0x4803207f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer2_slaves[] = {
-       &omap44xx_l4_per__timer2,
-};
-
 static struct omap_hwmod omap44xx_timer2_hwmod = {
        .name           = "timer2",
        .class          = &omap44xx_timer_1ms_hwmod_class,
@@ -4358,40 +2247,14 @@ static struct omap_hwmod omap44xx_timer2_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer2_slaves),
 };
 
 /* timer3 */
-static struct omap_hwmod omap44xx_timer3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {
        { .irq = 39 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
-       {
-               .pa_start       = 0x48034000,
-               .pa_end         = 0x4803407f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer3_slaves[] = {
-       &omap44xx_l4_per__timer3,
-};
-
 static struct omap_hwmod omap44xx_timer3_hwmod = {
        .name           = "timer3",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4406,40 +2269,14 @@ static struct omap_hwmod omap44xx_timer3_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer3_slaves),
 };
 
 /* timer4 */
-static struct omap_hwmod omap44xx_timer4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {
        { .irq = 40 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
-       {
-               .pa_start       = 0x48036000,
-               .pa_end         = 0x4803607f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer4_slaves[] = {
-       &omap44xx_l4_per__timer4,
-};
-
 static struct omap_hwmod omap44xx_timer4_hwmod = {
        .name           = "timer4",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4454,59 +2291,14 @@ static struct omap_hwmod omap44xx_timer4_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer4_slaves),
 };
 
 /* timer5 */
-static struct omap_hwmod omap44xx_timer5_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {
        { .irq = 41 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
-       {
-               .pa_start       = 0x40138000,
-               .pa_end         = 0x4013807f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer5 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer5_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer5_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
-       {
-               .pa_start       = 0x49038000,
-               .pa_end         = 0x4903807f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer5 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer5_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer5_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* timer5 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer5_slaves[] = {
-       &omap44xx_l4_abe__timer5,
-       &omap44xx_l4_abe__timer5_dma,
-};
-
 static struct omap_hwmod omap44xx_timer5_hwmod = {
        .name           = "timer5",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4521,59 +2313,14 @@ static struct omap_hwmod omap44xx_timer5_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer5_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer5_slaves),
 };
 
 /* timer6 */
-static struct omap_hwmod omap44xx_timer6_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {
        { .irq = 42 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
-       {
-               .pa_start       = 0x4013a000,
-               .pa_end         = 0x4013a07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer6 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer6_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer6_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
-       {
-               .pa_start       = 0x4903a000,
-               .pa_end         = 0x4903a07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer6 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer6_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer6_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* timer6 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer6_slaves[] = {
-       &omap44xx_l4_abe__timer6,
-       &omap44xx_l4_abe__timer6_dma,
-};
-
 static struct omap_hwmod omap44xx_timer6_hwmod = {
        .name           = "timer6",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4589,59 +2336,14 @@ static struct omap_hwmod omap44xx_timer6_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer6_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer6_slaves),
 };
 
 /* timer7 */
-static struct omap_hwmod omap44xx_timer7_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {
        { .irq = 43 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
-       {
-               .pa_start       = 0x4013c000,
-               .pa_end         = 0x4013c07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer7 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer7_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer7_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
-       {
-               .pa_start       = 0x4903c000,
-               .pa_end         = 0x4903c07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer7 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer7_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer7_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* timer7 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer7_slaves[] = {
-       &omap44xx_l4_abe__timer7,
-       &omap44xx_l4_abe__timer7_dma,
-};
-
 static struct omap_hwmod omap44xx_timer7_hwmod = {
        .name           = "timer7",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4656,59 +2358,14 @@ static struct omap_hwmod omap44xx_timer7_hwmod = {
                },
        },
        .dev_attr       = &capability_alwon_dev_attr,
-       .slaves         = omap44xx_timer7_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer7_slaves),
 };
 
 /* timer8 */
-static struct omap_hwmod omap44xx_timer8_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {
        { .irq = 44 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
-       {
-               .pa_start       = 0x4013e000,
-               .pa_end         = 0x4013e07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer8 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer8_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer8_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
-       {
-               .pa_start       = 0x4903e000,
-               .pa_end         = 0x4903e07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> timer8 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_timer8_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_timer8_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* timer8 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer8_slaves[] = {
-       &omap44xx_l4_abe__timer8,
-       &omap44xx_l4_abe__timer8_dma,
-};
-
 static struct omap_hwmod omap44xx_timer8_hwmod = {
        .name           = "timer8",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4723,40 +2380,14 @@ static struct omap_hwmod omap44xx_timer8_hwmod = {
                },
        },
        .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap44xx_timer8_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer8_slaves),
 };
 
 /* timer9 */
-static struct omap_hwmod omap44xx_timer9_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {
        { .irq = 45 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
-       {
-               .pa_start       = 0x4803e000,
-               .pa_end         = 0x4803e07f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer9 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer9_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer9_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer9 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer9_slaves[] = {
-       &omap44xx_l4_per__timer9,
-};
-
 static struct omap_hwmod omap44xx_timer9_hwmod = {
        .name           = "timer9",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4771,88 +2402,36 @@ static struct omap_hwmod omap44xx_timer9_hwmod = {
                },
        },
        .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap44xx_timer9_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer9_slaves),
 };
 
 /* timer10 */
-static struct omap_hwmod omap44xx_timer10_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {
        { .irq = 46 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
-       {
-               .pa_start       = 0x48086000,
-               .pa_end         = 0x4808607f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer10 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer10_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer10_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer10 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer10_slaves[] = {
-       &omap44xx_l4_per__timer10,
-};
-
-static struct omap_hwmod omap44xx_timer10_hwmod = {
-       .name           = "timer10",
-       .class          = &omap44xx_timer_1ms_hwmod_class,
-       .clkdm_name     = "l4_per_clkdm",
-       .mpu_irqs       = omap44xx_timer10_irqs,
-       .main_clk       = "timer10_fck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
+static struct omap_hwmod omap44xx_timer10_hwmod = {
+       .name           = "timer10",
+       .class          = &omap44xx_timer_1ms_hwmod_class,
+       .clkdm_name     = "l4_per_clkdm",
+       .mpu_irqs       = omap44xx_timer10_irqs,
+       .main_clk       = "timer10_fck",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
        },
        .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap44xx_timer10_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer10_slaves),
 };
 
 /* timer11 */
-static struct omap_hwmod omap44xx_timer11_hwmod;
 static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {
        { .irq = 47 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
-       {
-               .pa_start       = 0x48088000,
-               .pa_end         = 0x4808807f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> timer11 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_timer11_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_timer11_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* timer11 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_timer11_slaves[] = {
-       &omap44xx_l4_per__timer11,
-};
-
 static struct omap_hwmod omap44xx_timer11_hwmod = {
        .name           = "timer11",
        .class          = &omap44xx_timer_hwmod_class,
@@ -4867,8 +2446,6 @@ static struct omap_hwmod omap44xx_timer11_hwmod = {
                },
        },
        .dev_attr       = &capability_pwm_dev_attr,
-       .slaves         = omap44xx_timer11_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_timer11_slaves),
 };
 
 /*
@@ -4894,7 +2471,6 @@ static struct omap_hwmod_class omap44xx_uart_hwmod_class = {
 };
 
 /* uart1 */
-static struct omap_hwmod omap44xx_uart1_hwmod;
 static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {
        { .irq = 72 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -4906,29 +2482,6 @@ static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
-       {
-               .pa_start       = 0x4806a000,
-               .pa_end         = 0x4806a0ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> uart1 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_uart1_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_uart1_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* uart1 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_uart1_slaves[] = {
-       &omap44xx_l4_per__uart1,
-};
-
 static struct omap_hwmod omap44xx_uart1_hwmod = {
        .name           = "uart1",
        .class          = &omap44xx_uart_hwmod_class,
@@ -4943,12 +2496,9 @@ static struct omap_hwmod omap44xx_uart1_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_uart1_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_uart1_slaves),
 };
 
 /* uart2 */
-static struct omap_hwmod omap44xx_uart2_hwmod;
 static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {
        { .irq = 73 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -4960,29 +2510,6 @@ static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
-       {
-               .pa_start       = 0x4806c000,
-               .pa_end         = 0x4806c0ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> uart2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_uart2_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_uart2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* uart2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_uart2_slaves[] = {
-       &omap44xx_l4_per__uart2,
-};
-
 static struct omap_hwmod omap44xx_uart2_hwmod = {
        .name           = "uart2",
        .class          = &omap44xx_uart_hwmod_class,
@@ -4997,12 +2524,9 @@ static struct omap_hwmod omap44xx_uart2_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_uart2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_uart2_slaves),
 };
 
 /* uart3 */
-static struct omap_hwmod omap44xx_uart3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {
        { .irq = 74 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -5014,29 +2538,6 @@ static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
-       {
-               .pa_start       = 0x48020000,
-               .pa_end         = 0x480200ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> uart3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_uart3_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_uart3_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* uart3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_uart3_slaves[] = {
-       &omap44xx_l4_per__uart3,
-};
-
 static struct omap_hwmod omap44xx_uart3_hwmod = {
        .name           = "uart3",
        .class          = &omap44xx_uart_hwmod_class,
@@ -5052,12 +2553,9 @@ static struct omap_hwmod omap44xx_uart3_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_uart3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_uart3_slaves),
 };
 
 /* uart4 */
-static struct omap_hwmod omap44xx_uart4_hwmod;
 static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {
        { .irq = 70 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
@@ -5069,29 +2567,6 @@ static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {
        { .dma_req = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
-       {
-               .pa_start       = 0x4806e000,
-               .pa_end         = 0x4806e0ff,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_per -> uart4 */
-static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
-       .master         = &omap44xx_l4_per_hwmod,
-       .slave          = &omap44xx_uart4_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_uart4_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* uart4 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_uart4_slaves[] = {
-       &omap44xx_l4_per__uart4,
-};
-
 static struct omap_hwmod omap44xx_uart4_hwmod = {
        .name           = "uart4",
        .class          = &omap44xx_uart_hwmod_class,
@@ -5106,8 +2581,98 @@ static struct omap_hwmod omap44xx_uart4_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_uart4_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_uart4_slaves),
+};
+
+/*
+ * 'usb_host_hs' class
+ * high-speed multi-port usb host controller
+ */
+
+static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_SOFTRESET),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                          SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
+                          MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
+       .sysc_fields    = &omap_hwmod_sysc_type2,
+};
+
+static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
+       .name   = "usb_host_hs",
+       .sysc   = &omap44xx_usb_host_hs_sysc,
+};
+
+/* usb_host_hs */
+static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
+       { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
+       { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
+       { .irq = -1 }
+};
+
+static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
+       .name           = "usb_host_hs",
+       .class          = &omap44xx_usb_host_hs_hwmod_class,
+       .clkdm_name     = "l3_init_clkdm",
+       .main_clk       = "usb_host_hs_fck",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_SWCTRL,
+               },
+       },
+       .mpu_irqs       = omap44xx_usb_host_hs_irqs,
+
+       /*
+        * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
+        * id: i660
+        *
+        * Description:
+        * In the following configuration :
+        * - USBHOST module is set to smart-idle mode
+        * - PRCM asserts idle_req to the USBHOST module ( This typically
+        *   happens when the system is going to a low power mode : all ports
+        *   have been suspended, the master part of the USBHOST module has
+        *   entered the standby state, and SW has cut the functional clocks)
+        * - an USBHOST interrupt occurs before the module is able to answer
+        *   idle_ack, typically a remote wakeup IRQ.
+        * Then the USB HOST module will enter a deadlock situation where it
+        * is no more accessible nor functional.
+        *
+        * Workaround:
+        * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
+        */
+
+       /*
+        * Errata: USB host EHCI may stall when entering smart-standby mode
+        * Id: i571
+        *
+        * Description:
+        * When the USBHOST module is set to smart-standby mode, and when it is
+        * ready to enter the standby state (i.e. all ports are suspended and
+        * all attached devices are in suspend mode), then it can wrongly assert
+        * the Mstandby signal too early while there are still some residual OCP
+        * transactions ongoing. If this condition occurs, the internal state
+        * machine may go to an undefined state and the USB link may be stuck
+        * upon the next resume.
+        *
+        * Workaround:
+        * Don't use smart standby; use only force standby,
+        * hence HWMOD_SWSUP_MSTANDBY
+        */
+
+       /*
+        * During system boot; If the hwmod framework resets the module
+        * the module will have smart idle settings; which can lead to deadlock
+        * (above Errata Id:i660); so, dont reset the module during boot;
+        * Use HWMOD_INIT_NO_RESET.
+        */
+
+       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
+                         HWMOD_INIT_NO_RESET,
 };
 
 /*
@@ -5140,34 +2705,6 @@ static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {
        { .irq = -1 }
 };
 
-/* usb_otg_hs master ports */
-static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_masters[] = {
-       &omap44xx_usb_otg_hs__l3_main_2,
-};
-
-static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
-       {
-               .pa_start       = 0x4a0ab000,
-               .pa_end         = 0x4a0ab003,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_cfg -> usb_otg_hs */
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
-       .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_usb_otg_hs_hwmod,
-       .clk            = "l4_div_ck",
-       .addr           = omap44xx_usb_otg_hs_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
-};
-
-/* usb_otg_hs slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_slaves[] = {
-       &omap44xx_l4_cfg__usb_otg_hs,
-};
-
 static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {
        { .role = "xclk", .clk = "usb_otg_hs_xclk" },
 };
@@ -5188,63 +2725,76 @@ static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {
        },
        .opt_clks       = usb_otg_hs_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(usb_otg_hs_opt_clks),
-       .slaves         = omap44xx_usb_otg_hs_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_usb_otg_hs_slaves),
-       .masters        = omap44xx_usb_otg_hs_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_usb_otg_hs_masters),
 };
 
 /*
- * 'wd_timer' class
- * 32-bit watchdog upward counter that generates a pulse on the reset pin on
- * overflow condition
+ * 'usb_tll_hs' class
+ * usb_tll_hs module is the adapter on the usb_host_hs ports
  */
 
-static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
+static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
        .rev_offs       = 0x0000,
        .sysc_offs      = 0x0010,
        .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP),
+       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
+                          SYSC_HAS_AUTOIDLE),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
        .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
-       .name           = "wd_timer",
-       .sysc           = &omap44xx_wd_timer_sysc,
-       .pre_shutdown   = &omap2_wd_timer_disable,
+static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
+       .name   = "usb_tll_hs",
+       .sysc   = &omap44xx_usb_tll_hs_sysc,
 };
 
-/* wd_timer2 */
-static struct omap_hwmod omap44xx_wd_timer2_hwmod;
-static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
-       { .irq = 80 + OMAP44XX_IRQ_GIC_START },
+static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
+       { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
-       {
-               .pa_start       = 0x4a314000,
-               .pa_end         = 0x4a31407f,
-               .flags          = ADDR_TYPE_RT
+static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
+       .name           = "usb_tll_hs",
+       .class          = &omap44xx_usb_tll_hs_hwmod_class,
+       .clkdm_name     = "l3_init_clkdm",
+       .mpu_irqs       = omap44xx_usb_tll_hs_irqs,
+       .main_clk       = "usb_tll_hs_ick",
+       .prcm = {
+               .omap4 = {
+                       .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
+                       .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
+                       .modulemode   = MODULEMODE_HWCTRL,
+               },
        },
-       { }
 };
 
-/* l4_wkup -> wd_timer2 */
-static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
-       .master         = &omap44xx_l4_wkup_hwmod,
-       .slave          = &omap44xx_wd_timer2_hwmod,
-       .clk            = "l4_wkup_clk_mux_ck",
-       .addr           = omap44xx_wd_timer2_addrs,
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+/*
+ * 'wd_timer' class
+ * 32-bit watchdog upward counter that generates a pulse on the reset pin on
+ * overflow condition
+ */
+
+static struct omap_hwmod_class_sysconfig omap44xx_wd_timer_sysc = {
+       .rev_offs       = 0x0000,
+       .sysc_offs      = 0x0010,
+       .syss_offs      = 0x0014,
+       .sysc_flags     = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE |
+                          SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS),
+       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
+                          SIDLE_SMART_WKUP),
+       .sysc_fields    = &omap_hwmod_sysc_type1,
 };
 
-/* wd_timer2 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = {
-       &omap44xx_l4_wkup__wd_timer2,
+static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {
+       .name           = "wd_timer",
+       .sysc           = &omap44xx_wd_timer_sysc,
+       .pre_shutdown   = &omap2_wd_timer_disable,
+};
+
+/* wd_timer2 */
+static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {
+       { .irq = 80 + OMAP44XX_IRQ_GIC_START },
+       { .irq = -1 }
 };
 
 static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
@@ -5260,59 +2810,14 @@ static struct omap_hwmod omap44xx_wd_timer2_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_wd_timer2_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_wd_timer2_slaves),
 };
 
 /* wd_timer3 */
-static struct omap_hwmod omap44xx_wd_timer3_hwmod;
 static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {
        { .irq = 36 + OMAP44XX_IRQ_GIC_START },
        { .irq = -1 }
 };
 
-static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
-       {
-               .pa_start       = 0x40130000,
-               .pa_end         = 0x4013007f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> wd_timer3 */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_wd_timer3_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_wd_timer3_addrs,
-       .user           = OCP_USER_MPU,
-};
-
-static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
-       {
-               .pa_start       = 0x49030000,
-               .pa_end         = 0x4903007f,
-               .flags          = ADDR_TYPE_RT
-       },
-       { }
-};
-
-/* l4_abe -> wd_timer3 (dma) */
-static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
-       .master         = &omap44xx_l4_abe_hwmod,
-       .slave          = &omap44xx_wd_timer3_hwmod,
-       .clk            = "ocp_abe_iclk",
-       .addr           = omap44xx_wd_timer3_dma_addrs,
-       .user           = OCP_USER_SDMA,
-};
-
-/* wd_timer3 slave ports */
-static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = {
-       &omap44xx_l4_abe__wd_timer3,
-       &omap44xx_l4_abe__wd_timer3_dma,
-};
-
 static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
        .name           = "wd_timer3",
        .class          = &omap44xx_wd_timer_hwmod_class,
@@ -5326,170 +2831,1772 @@ static struct omap_hwmod omap44xx_wd_timer3_hwmod = {
                        .modulemode   = MODULEMODE_SWCTRL,
                },
        },
-       .slaves         = omap44xx_wd_timer3_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_wd_timer3_slaves),
 };
 
+
 /*
- * 'usb_host_hs' class
- * high-speed multi-port usb host controller
+ * interfaces
  */
-static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
-       .master         = &omap44xx_usb_host_hs_hwmod,
-       .slave          = &omap44xx_l3_main_2_hwmod,
+
+/* l3_main_1 -> dmm */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = {
+       .master         = &omap44xx_l3_main_1_hwmod,
+       .slave          = &omap44xx_dmm_hwmod,
        .clk            = "l3_div_ck",
-       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+       .user           = OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_SOFTRESET),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
-                          SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO |
-                          MSTANDBY_SMART | MSTANDBY_SMART_WKUP),
-       .sysc_fields    = &omap_hwmod_sysc_type2,
+static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = {
+       {
+               .pa_start       = 0x4e000000,
+               .pa_end         = 0x4e0007ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = {
-       .name = "usb_host_hs",
-       .sysc = &omap44xx_usb_host_hs_sysc,
+/* mpu -> dmm */
+static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = {
+       .master         = &omap44xx_mpu_hwmod,
+       .slave          = &omap44xx_dmm_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_dmm_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_ocp_if *omap44xx_usb_host_hs_masters[] = {
-       &omap44xx_usb_host_hs__l3_main_2,
+/* dmm -> emif_fw */
+static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = {
+       .master         = &omap44xx_dmm_hwmod,
+       .slave          = &omap44xx_emif_fw_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
+static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = {
        {
-               .name           = "uhh",
-               .pa_start       = 0x4a064000,
-               .pa_end         = 0x4a0647ff,
+               .pa_start       = 0x4a20c000,
+               .pa_end         = 0x4a20c0ff,
                .flags          = ADDR_TYPE_RT
        },
-       {
-               .name           = "ohci",
-               .pa_start       = 0x4a064800,
-               .pa_end         = 0x4a064bff,
-       },
-       {
-               .name           = "ehci",
-               .pa_start       = 0x4a064c00,
-               .pa_end         = 0x4a064fff,
-       },
-       {}
+       { }
 };
 
-static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = {
-       { .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START },
-       { .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START },
-       { .irq = -1 }
+/* l4_cfg -> emif_fw */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_emif_fw_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_emif_fw_addrs,
+       .user           = OCP_USER_MPU,
 };
 
-static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
+/* iva -> l3_instr */
+static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = {
+       .master         = &omap44xx_iva_hwmod,
+       .slave          = &omap44xx_l3_instr_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_3 -> l3_instr */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = {
+       .master         = &omap44xx_l3_main_3_hwmod,
+       .slave          = &omap44xx_l3_instr_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* dsp -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = {
+       .master         = &omap44xx_dsp_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* dss -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = {
+       .master         = &omap44xx_dss_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_2 -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_cfg -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = {
        .master         = &omap44xx_l4_cfg_hwmod,
-       .slave          = &omap44xx_usb_host_hs_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
        .clk            = "l4_div_ck",
-       .addr           = omap44xx_usb_host_hs_addrs,
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap44xx_usb_host_hs_slaves[] = {
-       &omap44xx_l4_cfg__usb_host_hs,
+/* mmc1 -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = {
+       .master         = &omap44xx_mmc1_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod omap44xx_usb_host_hs_hwmod = {
-       .name           = "usb_host_hs",
-       .class          = &omap44xx_usb_host_hs_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .main_clk       = "usb_host_hs_fck",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_SWCTRL,
-               },
-       },
-       .mpu_irqs       = omap44xx_usb_host_hs_irqs,
-       .slaves         = omap44xx_usb_host_hs_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_usb_host_hs_slaves),
-       .masters        = omap44xx_usb_host_hs_masters,
-       .masters_cnt    = ARRAY_SIZE(omap44xx_usb_host_hs_masters),
+/* mmc2 -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = {
+       .master         = &omap44xx_mmc2_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
-       /*
-        * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock
-        * id: i660
-        *
-        * Description:
-        * In the following configuration :
-        * - USBHOST module is set to smart-idle mode
-        * - PRCM asserts idle_req to the USBHOST module ( This typically
-        *   happens when the system is going to a low power mode : all ports
-        *   have been suspended, the master part of the USBHOST module has
-        *   entered the standby state, and SW has cut the functional clocks)
-        * - an USBHOST interrupt occurs before the module is able to answer
-        *   idle_ack, typically a remote wakeup IRQ.
-        * Then the USB HOST module will enter a deadlock situation where it
-        * is no more accessible nor functional.
-        *
-        * Workaround:
-        * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE
-        */
+static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = {
+       {
+               .pa_start       = 0x44000000,
+               .pa_end         = 0x44000fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* mpu -> l3_main_1 */
+static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = {
+       .master         = &omap44xx_mpu_hwmod,
+       .slave          = &omap44xx_l3_main_1_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_l3_main_1_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+/* dma_system -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = {
+       .master         = &omap44xx_dma_system_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* hsi -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = {
+       .master         = &omap44xx_hsi_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* ipu -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = {
+       .master         = &omap44xx_ipu_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* iss -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = {
+       .master         = &omap44xx_iss_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* iva -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = {
+       .master         = &omap44xx_iva_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = {
+       {
+               .pa_start       = 0x44800000,
+               .pa_end         = 0x44801fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_1 -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = {
+       .master         = &omap44xx_l3_main_1_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_l3_main_2_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+/* l4_cfg -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l4_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* usb_host_hs -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = {
+       .master         = &omap44xx_usb_host_hs_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* usb_otg_hs -> l3_main_2 */
+static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = {
+       .master         = &omap44xx_usb_otg_hs_hwmod,
+       .slave          = &omap44xx_l3_main_2_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = {
+       {
+               .pa_start       = 0x45000000,
+               .pa_end         = 0x45000fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_1 -> l3_main_3 */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = {
+       .master         = &omap44xx_l3_main_1_hwmod,
+       .slave          = &omap44xx_l3_main_3_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_l3_main_3_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+/* l3_main_2 -> l3_main_3 */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_l3_main_3_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_cfg -> l3_main_3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_l3_main_3_hwmod,
+       .clk            = "l4_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* aess -> l4_abe */
+static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = {
+       .master         = &omap44xx_aess_hwmod,
+       .slave          = &omap44xx_l4_abe_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* dsp -> l4_abe */
+static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = {
+       .master         = &omap44xx_dsp_hwmod,
+       .slave          = &omap44xx_l4_abe_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_1 -> l4_abe */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = {
+       .master         = &omap44xx_l3_main_1_hwmod,
+       .slave          = &omap44xx_l4_abe_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* mpu -> l4_abe */
+static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = {
+       .master         = &omap44xx_mpu_hwmod,
+       .slave          = &omap44xx_l4_abe_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_1 -> l4_cfg */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = {
+       .master         = &omap44xx_l3_main_1_hwmod,
+       .slave          = &omap44xx_l4_cfg_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_2 -> l4_per */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_l4_per_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l4_cfg -> l4_wkup */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_l4_wkup_hwmod,
+       .clk            = "l4_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* mpu -> mpu_private */
+static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = {
+       .master         = &omap44xx_mpu_hwmod,
+       .slave          = &omap44xx_mpu_private_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = {
+       {
+               .pa_start       = 0x401f1000,
+               .pa_end         = 0x401f13ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> aess */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_aess_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_aess_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {
+       {
+               .pa_start       = 0x490f1000,
+               .pa_end         = 0x490f13ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> aess (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_aess_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_aess_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = {
+       {
+               .pa_start       = 0x4a304000,
+               .pa_end         = 0x4a30401f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_wkup -> counter_32k */
+static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = {
+       .master         = &omap44xx_l4_wkup_hwmod,
+       .slave          = &omap44xx_counter_32k_hwmod,
+       .clk            = "l4_wkup_clk_mux_ck",
+       .addr           = omap44xx_counter_32k_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = {
+       {
+               .pa_start       = 0x4a056000,
+               .pa_end         = 0x4a056fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> dma_system */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_dma_system_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dma_system_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x4012e000,
+               .pa_end         = 0x4012e07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> dmic */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_dmic_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_dmic_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
+       {
+               .name           = "dma",
+               .pa_start       = 0x4902e000,
+               .pa_end         = 0x4902e07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> dmic (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_dmic_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_dmic_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+/* dsp -> iva */
+static struct omap_hwmod_ocp_if omap44xx_dsp__iva = {
+       .master         = &omap44xx_dsp_hwmod,
+       .slave          = &omap44xx_iva_hwmod,
+       .clk            = "dpll_iva_m5x2_ck",
+       .user           = OCP_USER_DSP,
+};
+
+/* l4_cfg -> dsp */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_dsp_hwmod,
+       .clk            = "l4_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {
+       {
+               .pa_start       = 0x58000000,
+               .pa_end         = 0x5800007f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_dss_hwmod,
+       .clk            = "dss_fck",
+       .addr           = omap44xx_dss_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {
+       {
+               .pa_start       = 0x48040000,
+               .pa_end         = 0x4804007f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = {
+       {
+               .pa_start       = 0x58001000,
+               .pa_end         = 0x58001fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_dispc */
+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",
+       .addr           = omap44xx_dss_dispc_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = {
+       {
+               .pa_start       = 0x48041000,
+               .pa_end         = 0x48041fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_dispc */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_dispc_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_dispc_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = {
+       {
+               .pa_start       = 0x58004000,
+               .pa_end         = 0x580041ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_dsi1 */
+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",
+       .addr           = omap44xx_dss_dsi1_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = {
+       {
+               .pa_start       = 0x48044000,
+               .pa_end         = 0x480441ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_dsi1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_dsi1_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_dsi1_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = {
+       {
+               .pa_start       = 0x58005000,
+               .pa_end         = 0x580051ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_dsi2 */
+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",
+       .addr           = omap44xx_dss_dsi2_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = {
+       {
+               .pa_start       = 0x48045000,
+               .pa_end         = 0x480451ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_dsi2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_dsi2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_dsi2_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = {
+       {
+               .pa_start       = 0x58006000,
+               .pa_end         = 0x58006fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_hdmi */
+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",
+       .addr           = omap44xx_dss_hdmi_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = {
+       {
+               .pa_start       = 0x48046000,
+               .pa_end         = 0x48046fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_hdmi */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_hdmi_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_hdmi_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = {
+       {
+               .pa_start       = 0x58002000,
+               .pa_end         = 0x580020ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_rfbi */
+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",
+       .addr           = omap44xx_dss_rfbi_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = {
+       {
+               .pa_start       = 0x48042000,
+               .pa_end         = 0x480420ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_rfbi */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_rfbi_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_rfbi_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = {
+       {
+               .pa_start       = 0x58003000,
+               .pa_end         = 0x580030ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> dss_venc */
+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",
+       .addr           = omap44xx_dss_venc_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = {
+       {
+               .pa_start       = 0x48043000,
+               .pa_end         = 0x480430ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> dss_venc */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_dss_venc_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_dss_venc_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = {
+       {
+               .pa_start       = 0x4a310000,
+               .pa_end         = 0x4a3101ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_wkup -> gpio1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = {
+       .master         = &omap44xx_l4_wkup_hwmod,
+       .slave          = &omap44xx_gpio1_hwmod,
+       .clk            = "l4_wkup_clk_mux_ck",
+       .addr           = omap44xx_gpio1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = {
+       {
+               .pa_start       = 0x48055000,
+               .pa_end         = 0x480551ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> gpio2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_gpio2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_gpio2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = {
+       {
+               .pa_start       = 0x48057000,
+               .pa_end         = 0x480571ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> gpio3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_gpio3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_gpio3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = {
+       {
+               .pa_start       = 0x48059000,
+               .pa_end         = 0x480591ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> gpio4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_gpio4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_gpio4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = {
+       {
+               .pa_start       = 0x4805b000,
+               .pa_end         = 0x4805b1ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> gpio5 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_gpio5_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_gpio5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {
+       {
+               .pa_start       = 0x4805d000,
+               .pa_end         = 0x4805d1ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> gpio6 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_gpio6_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_gpio6_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = {
+       {
+               .pa_start       = 0x4a058000,
+               .pa_end         = 0x4a05bfff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> hsi */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_hsi_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_hsi_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = {
+       {
+               .pa_start       = 0x48070000,
+               .pa_end         = 0x480700ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> i2c1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_i2c1_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_i2c1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = {
+       {
+               .pa_start       = 0x48072000,
+               .pa_end         = 0x480720ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> i2c2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_i2c2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_i2c2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = {
+       {
+               .pa_start       = 0x48060000,
+               .pa_end         = 0x480600ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> i2c3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_i2c3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_i2c3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = {
+       {
+               .pa_start       = 0x48350000,
+               .pa_end         = 0x483500ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> i2c4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_i2c4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_i2c4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+/* l3_main_2 -> ipu */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_ipu_hwmod,
+       .clk            = "l3_div_ck",
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = {
+       {
+               .pa_start       = 0x52000000,
+               .pa_end         = 0x520000ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> iss */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_iss_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_iss_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = {
+       {
+               .pa_start       = 0x5a000000,
+               .pa_end         = 0x5a07ffff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l3_main_2 -> iva */
+static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = {
+       .master         = &omap44xx_l3_main_2_hwmod,
+       .slave          = &omap44xx_iva_hwmod,
+       .clk            = "l3_div_ck",
+       .addr           = omap44xx_iva_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = {
+       {
+               .pa_start       = 0x4a31c000,
+               .pa_end         = 0x4a31c07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_wkup -> kbd */
+static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = {
+       .master         = &omap44xx_l4_wkup_hwmod,
+       .slave          = &omap44xx_kbd_hwmod,
+       .clk            = "l4_wkup_clk_mux_ck",
+       .addr           = omap44xx_kbd_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = {
+       {
+               .pa_start       = 0x4a0f4000,
+               .pa_end         = 0x4a0f41ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> mailbox */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_mailbox_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mailbox_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x40122000,
+               .pa_end         = 0x401220ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp1_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp1_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = {
+       {
+               .name           = "dma",
+               .pa_start       = 0x49022000,
+               .pa_end         = 0x490220ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp1 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp1_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp1_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x40124000,
+               .pa_end         = 0x401240ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp2_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp2_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = {
+       {
+               .name           = "dma",
+               .pa_start       = 0x49024000,
+               .pa_end         = 0x490240ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp2 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp2_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp2_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = {
+       {
+               .name           = "mpu",
+               .pa_start       = 0x40126000,
+               .pa_end         = 0x401260ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp3_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp3_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = {
+       {
+               .name           = "dma",
+               .pa_start       = 0x49026000,
+               .pa_end         = 0x490260ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcbsp3 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcbsp3_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcbsp3_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = {
+       {
+               .pa_start       = 0x48096000,
+               .pa_end         = 0x480960ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mcbsp4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mcbsp4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mcbsp4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = {
+       {
+               .pa_start       = 0x40132000,
+               .pa_end         = 0x4013207f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcpdm */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcpdm_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcpdm_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = {
+       {
+               .pa_start       = 0x49032000,
+               .pa_end         = 0x4903207f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> mcpdm (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_mcpdm_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_mcpdm_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = {
+       {
+               .pa_start       = 0x48098000,
+               .pa_end         = 0x480981ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mcspi1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mcspi1_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mcspi1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = {
+       {
+               .pa_start       = 0x4809a000,
+               .pa_end         = 0x4809a1ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mcspi2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mcspi2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mcspi2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = {
+       {
+               .pa_start       = 0x480b8000,
+               .pa_end         = 0x480b81ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mcspi3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mcspi3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mcspi3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = {
+       {
+               .pa_start       = 0x480ba000,
+               .pa_end         = 0x480ba1ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mcspi4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mcspi4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mcspi4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = {
+       {
+               .pa_start       = 0x4809c000,
+               .pa_end         = 0x4809c3ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mmc1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mmc1_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mmc1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = {
+       {
+               .pa_start       = 0x480b4000,
+               .pa_end         = 0x480b43ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mmc2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mmc2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mmc2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = {
+       {
+               .pa_start       = 0x480ad000,
+               .pa_end         = 0x480ad3ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mmc3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mmc3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mmc3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = {
+       {
+               .pa_start       = 0x480d1000,
+               .pa_end         = 0x480d13ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mmc4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mmc4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mmc4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = {
+       {
+               .pa_start       = 0x480d5000,
+               .pa_end         = 0x480d53ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> mmc5 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_mmc5_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_mmc5_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
+       {
+               .pa_start       = 0x4a0dd000,
+               .pa_end         = 0x4a0dd03f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> smartreflex_core */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_smartreflex_core_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_smartreflex_core_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
+       {
+               .pa_start       = 0x4a0db000,
+               .pa_end         = 0x4a0db03f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> smartreflex_iva */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_smartreflex_iva_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_smartreflex_iva_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
+       {
+               .pa_start       = 0x4a0d9000,
+               .pa_end         = 0x4a0d903f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> smartreflex_mpu */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_smartreflex_mpu_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_smartreflex_mpu_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = {
+       {
+               .pa_start       = 0x4a0f6000,
+               .pa_end         = 0x4a0f6fff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_cfg -> spinlock */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_spinlock_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_spinlock_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = {
+       {
+               .pa_start       = 0x4a318000,
+               .pa_end         = 0x4a31807f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_wkup -> timer1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = {
+       .master         = &omap44xx_l4_wkup_hwmod,
+       .slave          = &omap44xx_timer1_hwmod,
+       .clk            = "l4_wkup_clk_mux_ck",
+       .addr           = omap44xx_timer1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = {
+       {
+               .pa_start       = 0x48032000,
+               .pa_end         = 0x4803207f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = {
+       {
+               .pa_start       = 0x48034000,
+               .pa_end         = 0x4803407f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = {
+       {
+               .pa_start       = 0x48036000,
+               .pa_end         = 0x4803607f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = {
+       {
+               .pa_start       = 0x40138000,
+               .pa_end         = 0x4013807f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer5 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer5_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer5_addrs,
+       .user           = OCP_USER_MPU,
+};
 
-       /*
-        * Errata: USB host EHCI may stall when entering smart-standby mode
-        * Id: i571
-        *
-        * Description:
-        * When the USBHOST module is set to smart-standby mode, and when it is
-        * ready to enter the standby state (i.e. all ports are suspended and
-        * all attached devices are in suspend mode), then it can wrongly assert
-        * the Mstandby signal too early while there are still some residual OCP
-        * transactions ongoing. If this condition occurs, the internal state
-        * machine may go to an undefined state and the USB link may be stuck
-        * upon the next resume.
-        *
-        * Workaround:
-        * Don't use smart standby; use only force standby,
-        * hence HWMOD_SWSUP_MSTANDBY
-        */
+static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = {
+       {
+               .pa_start       = 0x49038000,
+               .pa_end         = 0x4903807f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer5 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer5_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer5_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = {
+       {
+               .pa_start       = 0x4013a000,
+               .pa_end         = 0x4013a07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer6 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer6_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer6_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = {
+       {
+               .pa_start       = 0x4903a000,
+               .pa_end         = 0x4903a07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer6 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer6_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer6_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = {
+       {
+               .pa_start       = 0x4013c000,
+               .pa_end         = 0x4013c07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer7 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer7_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer7_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = {
+       {
+               .pa_start       = 0x4903c000,
+               .pa_end         = 0x4903c07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer7 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer7_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer7_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = {
+       {
+               .pa_start       = 0x4013e000,
+               .pa_end         = 0x4013e07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer8 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer8_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer8_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = {
+       {
+               .pa_start       = 0x4903e000,
+               .pa_end         = 0x4903e07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> timer8 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_timer8_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_timer8_dma_addrs,
+       .user           = OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = {
+       {
+               .pa_start       = 0x4803e000,
+               .pa_end         = 0x4803e07f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer9 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer9_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer9_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = {
+       {
+               .pa_start       = 0x48086000,
+               .pa_end         = 0x4808607f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer10 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer10_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer10_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = {
+       {
+               .pa_start       = 0x48088000,
+               .pa_end         = 0x4808807f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> timer11 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_timer11_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_timer11_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = {
+       {
+               .pa_start       = 0x4806a000,
+               .pa_end         = 0x4806a0ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> uart1 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_uart1_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_uart1_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = {
+       {
+               .pa_start       = 0x4806c000,
+               .pa_end         = 0x4806c0ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> uart2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_uart2_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_uart2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = {
+       {
+               .pa_start       = 0x48020000,
+               .pa_end         = 0x480200ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_per -> uart3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_uart3_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_uart3_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = {
+       {
+               .pa_start       = 0x4806e000,
+               .pa_end         = 0x4806e0ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
 
-       /*
-        * During system boot; If the hwmod framework resets the module
-        * the module will have smart idle settings; which can lead to deadlock
-        * (above Errata Id:i660); so, dont reset the module during boot;
-        * Use HWMOD_INIT_NO_RESET.
-        */
+/* l4_per -> uart4 */
+static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = {
+       .master         = &omap44xx_l4_per_hwmod,
+       .slave          = &omap44xx_uart4_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_uart4_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
 
-       .flags          = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY |
-                         HWMOD_INIT_NO_RESET,
+static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = {
+       {
+               .name           = "uhh",
+               .pa_start       = 0x4a064000,
+               .pa_end         = 0x4a0647ff,
+               .flags          = ADDR_TYPE_RT
+       },
+       {
+               .name           = "ohci",
+               .pa_start       = 0x4a064800,
+               .pa_end         = 0x4a064bff,
+       },
+       {
+               .name           = "ehci",
+               .pa_start       = 0x4a064c00,
+               .pa_end         = 0x4a064fff,
+       },
+       {}
 };
 
-/*
- * 'usb_tll_hs' class
- * usb_tll_hs module is the adapter on the usb_host_hs ports
- */
-static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = {
-       .rev_offs       = 0x0000,
-       .sysc_offs      = 0x0010,
-       .syss_offs      = 0x0014,
-       .sysc_flags     = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE |
-                          SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET |
-                          SYSC_HAS_AUTOIDLE),
-       .idlemodes      = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
-       .sysc_fields    = &omap_hwmod_sysc_type1,
+/* l4_cfg -> usb_host_hs */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_usb_host_hs_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_usb_host_hs_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = {
-       .name = "usb_tll_hs",
-       .sysc = &omap44xx_usb_tll_hs_sysc,
+static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = {
+       {
+               .pa_start       = 0x4a0ab000,
+               .pa_end         = 0x4a0ab003,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = {
-       { .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START },
-       { .irq = -1 }
+/* l4_cfg -> usb_otg_hs */
+static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = {
+       .master         = &omap44xx_l4_cfg_hwmod,
+       .slave          = &omap44xx_usb_otg_hs_hwmod,
+       .clk            = "l4_div_ck",
+       .addr           = omap44xx_usb_otg_hs_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
 static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
@@ -5502,6 +4609,7 @@ static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = {
        {}
 };
 
+/* l4_cfg -> usb_tll_hs */
 static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
        .master         = &omap44xx_l4_cfg_hwmod,
        .slave          = &omap44xx_usb_tll_hs_hwmod,
@@ -5510,181 +4618,184 @@ static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = {
        .user           = OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-static struct omap_hwmod_ocp_if *omap44xx_usb_tll_hs_slaves[] = {
-       &omap44xx_l4_cfg__usb_tll_hs,
+static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = {
+       {
+               .pa_start       = 0x4a314000,
+               .pa_end         = 0x4a31407f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
 };
 
-static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = {
-       .name           = "usb_tll_hs",
-       .class          = &omap44xx_usb_tll_hs_hwmod_class,
-       .clkdm_name     = "l3_init_clkdm",
-       .main_clk       = "usb_tll_hs_ick",
-       .prcm = {
-               .omap4 = {
-                       .clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET,
-                       .context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET,
-                       .modulemode   = MODULEMODE_HWCTRL,
-               },
+/* l4_wkup -> wd_timer2 */
+static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = {
+       .master         = &omap44xx_l4_wkup_hwmod,
+       .slave          = &omap44xx_wd_timer2_hwmod,
+       .clk            = "l4_wkup_clk_mux_ck",
+       .addr           = omap44xx_wd_timer2_addrs,
+       .user           = OCP_USER_MPU | OCP_USER_SDMA,
+};
+
+static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = {
+       {
+               .pa_start       = 0x40130000,
+               .pa_end         = 0x4013007f,
+               .flags          = ADDR_TYPE_RT
        },
-       .mpu_irqs       = omap44xx_usb_tll_hs_irqs,
-       .slaves         = omap44xx_usb_tll_hs_slaves,
-       .slaves_cnt     = ARRAY_SIZE(omap44xx_usb_tll_hs_slaves),
+       { }
+};
+
+/* l4_abe -> wd_timer3 */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_wd_timer3_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_wd_timer3_addrs,
+       .user           = OCP_USER_MPU,
+};
+
+static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = {
+       {
+               .pa_start       = 0x49030000,
+               .pa_end         = 0x4903007f,
+               .flags          = ADDR_TYPE_RT
+       },
+       { }
+};
+
+/* l4_abe -> wd_timer3 (dma) */
+static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = {
+       .master         = &omap44xx_l4_abe_hwmod,
+       .slave          = &omap44xx_wd_timer3_hwmod,
+       .clk            = "ocp_abe_iclk",
+       .addr           = omap44xx_wd_timer3_dma_addrs,
+       .user           = OCP_USER_SDMA,
 };
 
-static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
-
-       /* dmm class */
-       &omap44xx_dmm_hwmod,
-
-       /* emif_fw class */
-       &omap44xx_emif_fw_hwmod,
-
-       /* l3 class */
-       &omap44xx_l3_instr_hwmod,
-       &omap44xx_l3_main_1_hwmod,
-       &omap44xx_l3_main_2_hwmod,
-       &omap44xx_l3_main_3_hwmod,
-
-       /* l4 class */
-       &omap44xx_l4_abe_hwmod,
-       &omap44xx_l4_cfg_hwmod,
-       &omap44xx_l4_per_hwmod,
-       &omap44xx_l4_wkup_hwmod,
-
-       /* mpu_bus class */
-       &omap44xx_mpu_private_hwmod,
-
-       /* aess class */
-/*     &omap44xx_aess_hwmod, */
-
-       /* bandgap class */
-       &omap44xx_bandgap_hwmod,
-
-       /* counter class */
-/*     &omap44xx_counter_32k_hwmod, */
-
-       /* dma class */
-       &omap44xx_dma_system_hwmod,
-
-       /* dmic class */
-       &omap44xx_dmic_hwmod,
-
-       /* dsp class */
-       &omap44xx_dsp_hwmod,
-       &omap44xx_dsp_c0_hwmod,
-
-       /* dss class */
-       &omap44xx_dss_hwmod,
-       &omap44xx_dss_dispc_hwmod,
-       &omap44xx_dss_dsi1_hwmod,
-       &omap44xx_dss_dsi2_hwmod,
-       &omap44xx_dss_hdmi_hwmod,
-       &omap44xx_dss_rfbi_hwmod,
-       &omap44xx_dss_venc_hwmod,
-
-       /* gpio class */
-       &omap44xx_gpio1_hwmod,
-       &omap44xx_gpio2_hwmod,
-       &omap44xx_gpio3_hwmod,
-       &omap44xx_gpio4_hwmod,
-       &omap44xx_gpio5_hwmod,
-       &omap44xx_gpio6_hwmod,
-
-       /* hsi class */
-/*     &omap44xx_hsi_hwmod, */
-
-       /* i2c class */
-       &omap44xx_i2c1_hwmod,
-       &omap44xx_i2c2_hwmod,
-       &omap44xx_i2c3_hwmod,
-       &omap44xx_i2c4_hwmod,
-
-       /* ipu class */
-       &omap44xx_ipu_hwmod,
-       &omap44xx_ipu_c0_hwmod,
-       &omap44xx_ipu_c1_hwmod,
-
-       /* iss class */
-/*     &omap44xx_iss_hwmod, */
-
-       /* iva class */
-       &omap44xx_iva_hwmod,
-       &omap44xx_iva_seq0_hwmod,
-       &omap44xx_iva_seq1_hwmod,
-
-       /* kbd class */
-       &omap44xx_kbd_hwmod,
-
-       /* mailbox class */
-       &omap44xx_mailbox_hwmod,
-
-       /* mcbsp class */
-       &omap44xx_mcbsp1_hwmod,
-       &omap44xx_mcbsp2_hwmod,
-       &omap44xx_mcbsp3_hwmod,
-       &omap44xx_mcbsp4_hwmod,
-
-       /* mcpdm class */
-       &omap44xx_mcpdm_hwmod,
-
-       /* mcspi class */
-       &omap44xx_mcspi1_hwmod,
-       &omap44xx_mcspi2_hwmod,
-       &omap44xx_mcspi3_hwmod,
-       &omap44xx_mcspi4_hwmod,
-
-       /* mmc class */
-       &omap44xx_mmc1_hwmod,
-       &omap44xx_mmc2_hwmod,
-       &omap44xx_mmc3_hwmod,
-       &omap44xx_mmc4_hwmod,
-       &omap44xx_mmc5_hwmod,
-
-       /* mpu class */
-       &omap44xx_mpu_hwmod,
-
-       /* smartreflex class */
-       &omap44xx_smartreflex_core_hwmod,
-       &omap44xx_smartreflex_iva_hwmod,
-       &omap44xx_smartreflex_mpu_hwmod,
-
-       /* spinlock class */
-       &omap44xx_spinlock_hwmod,
-
-       /* timer class */
-       &omap44xx_timer1_hwmod,
-       &omap44xx_timer2_hwmod,
-       &omap44xx_timer3_hwmod,
-       &omap44xx_timer4_hwmod,
-       &omap44xx_timer5_hwmod,
-       &omap44xx_timer6_hwmod,
-       &omap44xx_timer7_hwmod,
-       &omap44xx_timer8_hwmod,
-       &omap44xx_timer9_hwmod,
-       &omap44xx_timer10_hwmod,
-       &omap44xx_timer11_hwmod,
-
-       /* uart class */
-       &omap44xx_uart1_hwmod,
-       &omap44xx_uart2_hwmod,
-       &omap44xx_uart3_hwmod,
-       &omap44xx_uart4_hwmod,
-
-       /* usb host class */
-       &omap44xx_usb_host_hs_hwmod,
-       &omap44xx_usb_tll_hs_hwmod,
-
-       /* usb_otg_hs class */
-       &omap44xx_usb_otg_hs_hwmod,
-
-       /* wd_timer class */
-       &omap44xx_wd_timer2_hwmod,
-       &omap44xx_wd_timer3_hwmod,
+static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = {
+       &omap44xx_l3_main_1__dmm,
+       &omap44xx_mpu__dmm,
+       &omap44xx_dmm__emif_fw,
+       &omap44xx_l4_cfg__emif_fw,
+       &omap44xx_iva__l3_instr,
+       &omap44xx_l3_main_3__l3_instr,
+       &omap44xx_dsp__l3_main_1,
+       &omap44xx_dss__l3_main_1,
+       &omap44xx_l3_main_2__l3_main_1,
+       &omap44xx_l4_cfg__l3_main_1,
+       &omap44xx_mmc1__l3_main_1,
+       &omap44xx_mmc2__l3_main_1,
+       &omap44xx_mpu__l3_main_1,
+       &omap44xx_dma_system__l3_main_2,
+       &omap44xx_hsi__l3_main_2,
+       &omap44xx_ipu__l3_main_2,
+       &omap44xx_iss__l3_main_2,
+       &omap44xx_iva__l3_main_2,
+       &omap44xx_l3_main_1__l3_main_2,
+       &omap44xx_l4_cfg__l3_main_2,
+       &omap44xx_usb_host_hs__l3_main_2,
+       &omap44xx_usb_otg_hs__l3_main_2,
+       &omap44xx_l3_main_1__l3_main_3,
+       &omap44xx_l3_main_2__l3_main_3,
+       &omap44xx_l4_cfg__l3_main_3,
+       &omap44xx_aess__l4_abe,
+       &omap44xx_dsp__l4_abe,
+       &omap44xx_l3_main_1__l4_abe,
+       &omap44xx_mpu__l4_abe,
+       &omap44xx_l3_main_1__l4_cfg,
+       &omap44xx_l3_main_2__l4_per,
+       &omap44xx_l4_cfg__l4_wkup,
+       &omap44xx_mpu__mpu_private,
+       &omap44xx_l4_abe__aess,
+       &omap44xx_l4_abe__aess_dma,
+       &omap44xx_l4_wkup__counter_32k,
+       &omap44xx_l4_cfg__dma_system,
+       &omap44xx_l4_abe__dmic,
+       &omap44xx_l4_abe__dmic_dma,
+       &omap44xx_dsp__iva,
+       &omap44xx_l4_cfg__dsp,
+       &omap44xx_l3_main_2__dss,
+       &omap44xx_l4_per__dss,
+       &omap44xx_l3_main_2__dss_dispc,
+       &omap44xx_l4_per__dss_dispc,
+       &omap44xx_l3_main_2__dss_dsi1,
+       &omap44xx_l4_per__dss_dsi1,
+       &omap44xx_l3_main_2__dss_dsi2,
+       &omap44xx_l4_per__dss_dsi2,
+       &omap44xx_l3_main_2__dss_hdmi,
+       &omap44xx_l4_per__dss_hdmi,
+       &omap44xx_l3_main_2__dss_rfbi,
+       &omap44xx_l4_per__dss_rfbi,
+       &omap44xx_l3_main_2__dss_venc,
+       &omap44xx_l4_per__dss_venc,
+       &omap44xx_l4_wkup__gpio1,
+       &omap44xx_l4_per__gpio2,
+       &omap44xx_l4_per__gpio3,
+       &omap44xx_l4_per__gpio4,
+       &omap44xx_l4_per__gpio5,
+       &omap44xx_l4_per__gpio6,
+       &omap44xx_l4_cfg__hsi,
+       &omap44xx_l4_per__i2c1,
+       &omap44xx_l4_per__i2c2,
+       &omap44xx_l4_per__i2c3,
+       &omap44xx_l4_per__i2c4,
+       &omap44xx_l3_main_2__ipu,
+       &omap44xx_l3_main_2__iss,
+       &omap44xx_l3_main_2__iva,
+       &omap44xx_l4_wkup__kbd,
+       &omap44xx_l4_cfg__mailbox,
+       &omap44xx_l4_abe__mcbsp1,
+       &omap44xx_l4_abe__mcbsp1_dma,
+       &omap44xx_l4_abe__mcbsp2,
+       &omap44xx_l4_abe__mcbsp2_dma,
+       &omap44xx_l4_abe__mcbsp3,
+       &omap44xx_l4_abe__mcbsp3_dma,
+       &omap44xx_l4_per__mcbsp4,
+       &omap44xx_l4_abe__mcpdm,
+       &omap44xx_l4_abe__mcpdm_dma,
+       &omap44xx_l4_per__mcspi1,
+       &omap44xx_l4_per__mcspi2,
+       &omap44xx_l4_per__mcspi3,
+       &omap44xx_l4_per__mcspi4,
+       &omap44xx_l4_per__mmc1,
+       &omap44xx_l4_per__mmc2,
+       &omap44xx_l4_per__mmc3,
+       &omap44xx_l4_per__mmc4,
+       &omap44xx_l4_per__mmc5,
+       &omap44xx_l4_cfg__smartreflex_core,
+       &omap44xx_l4_cfg__smartreflex_iva,
+       &omap44xx_l4_cfg__smartreflex_mpu,
+       &omap44xx_l4_cfg__spinlock,
+       &omap44xx_l4_wkup__timer1,
+       &omap44xx_l4_per__timer2,
+       &omap44xx_l4_per__timer3,
+       &omap44xx_l4_per__timer4,
+       &omap44xx_l4_abe__timer5,
+       &omap44xx_l4_abe__timer5_dma,
+       &omap44xx_l4_abe__timer6,
+       &omap44xx_l4_abe__timer6_dma,
+       &omap44xx_l4_abe__timer7,
+       &omap44xx_l4_abe__timer7_dma,
+       &omap44xx_l4_abe__timer8,
+       &omap44xx_l4_abe__timer8_dma,
+       &omap44xx_l4_per__timer9,
+       &omap44xx_l4_per__timer10,
+       &omap44xx_l4_per__timer11,
+       &omap44xx_l4_per__uart1,
+       &omap44xx_l4_per__uart2,
+       &omap44xx_l4_per__uart3,
+       &omap44xx_l4_per__uart4,
+       &omap44xx_l4_cfg__usb_host_hs,
+       &omap44xx_l4_cfg__usb_otg_hs,
+       &omap44xx_l4_cfg__usb_tll_hs,
+       &omap44xx_l4_wkup__wd_timer2,
+       &omap44xx_l4_abe__wd_timer3,
+       &omap44xx_l4_abe__wd_timer3_dma,
        NULL,
 };
 
 int __init omap44xx_hwmod_init(void)
 {
-       return omap_hwmod_register(omap44xx_hwmods);
+       return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);
 }
 
index ad5d8f04c0b8803edeac09dff53686c156365b91..7aa9156d50ab8dac424a97a53b6c248680996245 100644 (file)
 #include "display.h"
 
 /* Common address space across OMAP2xxx */
-extern struct omap_hwmod_addr_space omap2xxx_uart1_addr_space[];
-extern struct omap_hwmod_addr_space omap2xxx_uart2_addr_space[];
-extern struct omap_hwmod_addr_space omap2xxx_uart3_addr_space[];
-extern struct omap_hwmod_addr_space omap2xxx_timer2_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer3_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer4_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer5_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer6_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer7_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer8_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer9_addrs[];
-extern struct omap_hwmod_addr_space omap2xxx_timer12_addrs[];
 extern struct omap_hwmod_addr_space omap2xxx_mcbsp2_addrs[];
 
 /* Common address space across OMAP2xxx/3xxx */
@@ -54,6 +42,64 @@ extern struct omap_hwmod_addr_space omap2_mcbsp1_addrs[];
 /* Common IP block data across OMAP2xxx */
 extern struct omap_hwmod_irq_info omap2xxx_timer12_mpu_irqs[];
 extern struct omap_hwmod_dma_info omap2xxx_dss_sdma_chs[];
+extern struct omap_gpio_dev_attr omap2xxx_gpio_dev_attr;
+extern struct omap_hwmod omap2xxx_l3_main_hwmod;
+extern struct omap_hwmod omap2xxx_l4_core_hwmod;
+extern struct omap_hwmod omap2xxx_l4_wkup_hwmod;
+extern struct omap_hwmod omap2xxx_mpu_hwmod;
+extern struct omap_hwmod omap2xxx_iva_hwmod;
+extern struct omap_hwmod omap2xxx_timer1_hwmod;
+extern struct omap_hwmod omap2xxx_timer2_hwmod;
+extern struct omap_hwmod omap2xxx_timer3_hwmod;
+extern struct omap_hwmod omap2xxx_timer4_hwmod;
+extern struct omap_hwmod omap2xxx_timer5_hwmod;
+extern struct omap_hwmod omap2xxx_timer6_hwmod;
+extern struct omap_hwmod omap2xxx_timer7_hwmod;
+extern struct omap_hwmod omap2xxx_timer8_hwmod;
+extern struct omap_hwmod omap2xxx_timer9_hwmod;
+extern struct omap_hwmod omap2xxx_timer10_hwmod;
+extern struct omap_hwmod omap2xxx_timer11_hwmod;
+extern struct omap_hwmod omap2xxx_timer12_hwmod;
+extern struct omap_hwmod omap2xxx_wd_timer2_hwmod;
+extern struct omap_hwmod omap2xxx_uart1_hwmod;
+extern struct omap_hwmod omap2xxx_uart2_hwmod;
+extern struct omap_hwmod omap2xxx_uart3_hwmod;
+extern struct omap_hwmod omap2xxx_dss_core_hwmod;
+extern struct omap_hwmod omap2xxx_dss_dispc_hwmod;
+extern struct omap_hwmod omap2xxx_dss_rfbi_hwmod;
+extern struct omap_hwmod omap2xxx_dss_venc_hwmod;
+extern struct omap_hwmod omap2xxx_gpio1_hwmod;
+extern struct omap_hwmod omap2xxx_gpio2_hwmod;
+extern struct omap_hwmod omap2xxx_gpio3_hwmod;
+extern struct omap_hwmod omap2xxx_gpio4_hwmod;
+extern struct omap_hwmod omap2xxx_mcspi1_hwmod;
+extern struct omap_hwmod omap2xxx_mcspi2_hwmod;
+
+/* Common interface data across OMAP2xxx */
+extern struct omap_hwmod_ocp_if omap2xxx_l3_main__l4_core;
+extern struct omap_hwmod_ocp_if omap2xxx_mpu__l3_main;
+extern struct omap_hwmod_ocp_if omap2xxx_dss__l3;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__l4_wkup;
+extern struct omap_hwmod_ocp_if omap2_l4_core__uart1;
+extern struct omap_hwmod_ocp_if omap2_l4_core__uart2;
+extern struct omap_hwmod_ocp_if omap2_l4_core__uart3;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi1;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__mcspi2;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer2;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer3;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer4;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer5;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer6;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer7;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer8;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer9;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer10;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer11;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__timer12;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_dispc;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_rfbi;
+extern struct omap_hwmod_ocp_if omap2xxx_l4_core__dss_venc;
 
 /* Common IP block data */
 extern struct omap_hwmod_dma_info omap2_uart1_sdma_reqs[];
@@ -94,6 +140,7 @@ extern struct omap_hwmod_irq_info omap2_gpio4_irqs[];
 extern struct omap_hwmod_irq_info omap2_dma_system_irqs[];
 extern struct omap_hwmod_irq_info omap2_mcspi1_mpu_irqs[];
 extern struct omap_hwmod_irq_info omap2_mcspi2_mpu_irqs[];
+extern struct omap_hwmod_addr_space omap2xxx_timer12_addrs[];
 
 /* OMAP hwmod classes - forward declarations */
 extern struct omap_hwmod_class l3_hwmod_class;
index 95442b69ae27111fc4bf5dba66eaaa8e01c6547a..facfffca9eacb33471413136e61bea8fd3c9e6cb 100644 (file)
@@ -171,8 +171,6 @@ static int omap2_allow_mpu_retention(void)
 
 static void omap2_enter_mpu_retention(void)
 {
-       int only_idle = 0;
-
        /* Putting MPU into the WFI state while a transfer is active
         * seems to cause the I2C block to timeout. Why? Good question. */
        if (omap2_i2c_active())
@@ -195,7 +193,6 @@ static void omap2_enter_mpu_retention(void)
 
                omap2_prm_write_mod_reg(OMAP_LOGICRETSTATE_MASK, MPU_MOD,
                                                 OMAP2_PM_PWSTCTRL);
-               only_idle = 1;
        }
 
        omap2_sram_idle();
index 703bd10992591ce2a05635052c9cb685dd5c9c83..8b43aefba0eae19b85a574f7324ed672d6670677 100644 (file)
@@ -273,7 +273,7 @@ void omap_sram_idle(void)
        int per_next_state = PWRDM_POWER_ON;
        int core_next_state = PWRDM_POWER_ON;
        int per_going_off;
-       int core_prev_state, per_prev_state;
+       int core_prev_state;
        u32 sdrc_pwr = 0;
 
        mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
@@ -375,10 +375,8 @@ void omap_sram_idle(void)
        pwrdm_post_transition();
 
        /* PER */
-       if (per_next_state < PWRDM_POWER_ON) {
-               per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
+       if (per_next_state < PWRDM_POWER_ON)
                omap2_gpio_resume_after_idle();
-       }
 
        /* Disable IO-PAD and IO-CHAIN wakeup */
        if (omap3_has_io_wakeup() &&
@@ -702,7 +700,7 @@ static void __init pm_errata_configure(void)
 static int __init omap3_pm_init(void)
 {
        struct power_state *pwrst, *tmp;
-       struct clockdomain *neon_clkdm, *per_clkdm, *mpu_clkdm, *core_clkdm;
+       struct clockdomain *neon_clkdm, *mpu_clkdm;
        int ret;
 
        if (!cpu_is_omap34xx())
@@ -757,8 +755,6 @@ static int __init omap3_pm_init(void)
 
        neon_clkdm = clkdm_lookup("neon_clkdm");
        mpu_clkdm = clkdm_lookup("mpu_clkdm");
-       per_clkdm = clkdm_lookup("per_clkdm");
-       core_clkdm = clkdm_lookup("core_clkdm");
 
 #ifdef CONFIG_SUSPEND
        omap_pm_suspend = omap3_pm_suspend;
index d28f848897d62083e339d493263032249a2760bd..dfe00ddb5c60f6d3beda1e5955251c459e0e0c7a 100644 (file)
@@ -237,7 +237,7 @@ void omap_prcm_irq_complete(void)
  */
 int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
 {
-       int nr_regs = irq_setup->nr_regs;
+       int nr_regs;
        u32 mask[OMAP_PRCM_MAX_NR_PENDING_REG];
        int offset, i;
        struct irq_chip_generic *gc;
@@ -246,6 +246,8 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
        if (!irq_setup)
                return -EINVAL;
 
+       nr_regs = irq_setup->nr_regs;
+
        if (prcm_irq_setup) {
                pr_err("PRCM: already initialized; won't reinitialize\n");
                return -EINVAL;
index 9fc2f44188cbb5fa0657f45ee5b5f3e14662569b..678dd1d612e540d6c0c18b5904ecd6f839e64381 100644 (file)
@@ -133,7 +133,7 @@ static void omap_serial_fill_default_pads(struct omap_board_data *bdata)
 static void omap_serial_fill_default_pads(struct omap_board_data *bdata) {}
 #endif
 
-char *cmdline_find_option(char *str)
+static char *cmdline_find_option(char *str)
 {
        extern char *saved_command_line;
 
index c512bac69ec587a12137071cf3b60297955583bb..ecec873e78cdf79a4df1ce9a25e8e160940fc5e6 100644 (file)
@@ -145,8 +145,10 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
 {
        char name[10]; /* 10 = sizeof("gptXX_Xck0") */
        struct omap_hwmod *oh;
+       struct resource irq_rsrc, mem_rsrc;
        size_t size;
        int res = 0;
+       int r;
 
        sprintf(name, "timer%d", gptimer_id);
        omap_hwmod_setup_one(name);
@@ -154,9 +156,16 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
        if (!oh)
                return -ENODEV;
 
-       timer->irq = oh->mpu_irqs[0].irq;
-       timer->phys_base = oh->slaves[0]->addr->pa_start;
-       size = oh->slaves[0]->addr->pa_end - timer->phys_base;
+       r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, &irq_rsrc);
+       if (r)
+               return -ENXIO;
+       timer->irq = irq_rsrc.start;
+
+       r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, &mem_rsrc);
+       if (r)
+               return -ENXIO;
+       timer->phys_base = mem_rsrc.start;
+       size = mem_rsrc.end - mem_rsrc.start;
 
        /* Static mapping, never released */
        timer->io_base = ioremap(timer->phys_base, size);
index 994d8f591a1d623b5afc3b7e2602e08636cf4a84..db84a46ce7fd6da27ca899d3fcf326cae0a3ee79 100644 (file)
@@ -126,7 +126,7 @@ static int tusb_set_sync_mode(unsigned sysclk_ps, unsigned fclk_ps)
        tmp = (t.sync_clk + fclk_ps - 1) / fclk_ps;
        if (tmp > 4)
                return -ERANGE;
-       if (tmp <= 0)
+       if (tmp == 0)
                tmp = 1;
        t.page_burst_access = (fclk_ps * tmp) / 1000;
 
index ef7099eea0f29a6a593106c482154b37a2d1a4e5..0e8470a3fbeb28f5e60ff16d90d2e41b31f093e5 100644 (file)
@@ -10,10 +10,6 @@ config UX500_SOC_COMMON
        select ARM_ERRATA_764369
        select CACHE_L2X0
 
-config UX500_SOC_DB5500
-       bool
-       select MFD_DB5500_PRCMU
-
 config UX500_SOC_DB8500
        bool
        select MFD_DB8500_PRCMU
@@ -45,15 +41,8 @@ config MACH_SNOWBALL
        help
          Include support for the snowball development platform.
 
-config MACH_U5500
-       bool "U5500 Development platform"
-       select UX500_SOC_DB5500
-       help
-         Include support for the U5500 development platform.
-
 config UX500_AUTO_PLATFORM
        def_bool y
-       depends on !MACH_U5500
        select MACH_MOP500
        help
          At least one platform needs to be selected in order to build
@@ -74,18 +63,4 @@ config UX500_DEBUG_UART
          Choose the UART on which kernel low-level debug messages should be
          output.
 
-config U5500_MODEM_IRQ
-       bool "Modem IRQ support"
-       depends on UX500_SOC_DB5500
-       default y
-       help
-         Add support for handling IRQ:s from modem side
-
-config U5500_MBOX
-       bool "Mailbox support"
-       depends on U5500_MODEM_IRQ
-       default y
-       help
-         Add support for U5500 mailbox communication with modem side
-
 endif
index 465b9ec9510a298c336d3aa4c974f16df191310b..fc7db5df970bb93120d7584cec99efaff322342a 100644 (file)
@@ -5,16 +5,11 @@
 obj-y                          := clock.o cpu.o devices.o devices-common.o \
                                   id.o usb.o timer.o
 obj-$(CONFIG_CACHE_L2X0)       += cache-l2x0.o
-obj-$(CONFIG_UX500_SOC_DB5500) += cpu-db5500.o dma-db5500.o
 obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o
 obj-$(CONFIG_MACH_MOP500)      += board-mop500.o board-mop500-sdi.o \
                                board-mop500-regulators.o \
                                board-mop500-uib.o board-mop500-stuib.o \
                                board-mop500-u8500uib.o \
                                board-mop500-pins.o
-obj-$(CONFIG_MACH_U5500)       += board-u5500.o board-u5500-sdi.o
 obj-$(CONFIG_SMP)              += platsmp.o headsmp.o
 obj-$(CONFIG_HOTPLUG_CPU)      += hotplug.o
-obj-$(CONFIG_U5500_MODEM_IRQ)  += modem-irq-db5500.o
-obj-$(CONFIG_U5500_MBOX)       += mbox-db5500.o
-
diff --git a/arch/arm/mach-ux500/board-u5500-sdi.c b/arch/arm/mach-ux500/board-u5500-sdi.c
deleted file mode 100644 (file)
index 836112e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Hanumath Prasad <ulf.hansson@stericsson.com>
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#include <linux/amba/mmci.h>
-#include <linux/mmc/host.h>
-
-#include <plat/pincfg.h>
-#include <plat/gpio-nomadik.h>
-#include <mach/db5500-regs.h>
-#include <plat/ste_dma40.h>
-
-#include "pins-db5500.h"
-#include "devices-db5500.h"
-#include "ste-dma40-db5500.h"
-
-static pin_cfg_t u5500_sdi_pins[] = {
-       /* SDI0 (POP eMMC) */
-       GPIO5_MC0_DAT0          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO6_MC0_DAT1          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO7_MC0_DAT2          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO8_MC0_DAT3          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO9_MC0_DAT4          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO10_MC0_DAT5         | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO11_MC0_DAT6         | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO12_MC0_DAT7         | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO13_MC0_CMD          | PIN_DIR_INPUT | PIN_PULL_UP,
-       GPIO14_MC0_CLK          | PIN_DIR_OUTPUT | PIN_VAL_LOW,
-};
-
-#ifdef CONFIG_STE_DMA40
-struct stedma40_chan_cfg u5500_sdi0_dma_cfg_rx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = STEDMA40_PERIPH_TO_MEM,
-       .src_dev_type = DB5500_DMA_DEV24_SDMMC0_RX,
-       .dst_dev_type = STEDMA40_DEV_DST_MEMORY,
-       .src_info.data_width = STEDMA40_WORD_WIDTH,
-       .dst_info.data_width = STEDMA40_WORD_WIDTH,
-};
-
-static struct stedma40_chan_cfg u5500_sdi0_dma_cfg_tx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = STEDMA40_MEM_TO_PERIPH,
-       .src_dev_type = STEDMA40_DEV_SRC_MEMORY,
-       .dst_dev_type = DB5500_DMA_DEV24_SDMMC0_TX,
-       .src_info.data_width = STEDMA40_WORD_WIDTH,
-       .dst_info.data_width = STEDMA40_WORD_WIDTH,
-};
-#endif
-
-static struct mmci_platform_data u5500_sdi0_data = {
-       .ocr_mask       = MMC_VDD_165_195,
-       .f_max          = 50000000,
-       .capabilities   = MMC_CAP_4_BIT_DATA |
-                               MMC_CAP_8_BIT_DATA |
-                               MMC_CAP_MMC_HIGHSPEED,
-       .gpio_cd        = -1,
-       .gpio_wp        = -1,
-#ifdef CONFIG_STE_DMA40
-       .dma_filter     = stedma40_filter,
-       .dma_rx_param   = &u5500_sdi0_dma_cfg_rx,
-       .dma_tx_param   = &u5500_sdi0_dma_cfg_tx,
-#endif
-};
-
-void __init u5500_sdi_init(struct device *parent)
-{
-       nmk_config_pins(u5500_sdi_pins, ARRAY_SIZE(u5500_sdi_pins));
-
-       db5500_add_sdi0(parent, &u5500_sdi0_data);
-}
diff --git a/arch/arm/mach-ux500/board-u5500.c b/arch/arm/mach-ux500/board-u5500.c
deleted file mode 100644 (file)
index 0ff4be7..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/amba/bus.h>
-#include <linux/irq.h>
-#include <linux/i2c.h>
-#include <linux/mfd/abx500/ab5500.h>
-
-#include <asm/hardware/gic.h>
-#include <asm/mach/arch.h>
-#include <asm/mach-types.h>
-
-#include <plat/pincfg.h>
-#include <plat/i2c.h>
-#include <plat/gpio-nomadik.h>
-
-#include <mach/hardware.h>
-#include <mach/devices.h>
-#include <mach/setup.h>
-
-#include "pins-db5500.h"
-#include "devices-db5500.h"
-#include <linux/led-lm3530.h>
-
-/*
- * GPIO
- */
-
-static pin_cfg_t u5500_pins[] = {
-       /* I2C */
-       GPIO218_I2C2_SCL        | PIN_INPUT_PULLUP,
-       GPIO219_I2C2_SDA        | PIN_INPUT_PULLUP,
-
-       /* DISPLAY_ENABLE */
-       GPIO226_GPIO        | PIN_OUTPUT_LOW,
-
-       /* Backlight Enbale */
-       GPIO224_GPIO        | PIN_OUTPUT_HIGH,
-};
-/*
- * I2C
- */
-
-#define U5500_I2C_CONTROLLER(id, _slsu, _tft, _rft, clk, _sm) \
-static struct nmk_i2c_controller u5500_i2c##id##_data = { \
-       /*                              \
-        * slave data setup time, which is      \
-        * 250 ns,100ns,10ns which is 14,6,2    \
-        * respectively for a 48 Mhz    \
-        * i2c clock                    \
-        */                             \
-       .slsu           = _slsu,        \
-       /* Tx FIFO threshold */         \
-       .tft            = _tft,         \
-       /* Rx FIFO threshold */         \
-       .rft            = _rft,         \
-       /* std. mode operation */       \
-       .clk_freq       = clk,          \
-       .sm             = _sm,          \
-}
-/*
- * The board uses TODO <3> i2c controllers, initialize all of
- * them with slave data setup time of 250 ns,
- * Tx & Rx FIFO threshold values as 1 and standard
- * mode of operation
- */
-
-U5500_I2C_CONTROLLER(2,        0xe, 1, 1, 400000, I2C_FREQ_MODE_FAST);
-
-static struct lm3530_platform_data u5500_als_platform_data = {
-       .mode = LM3530_BL_MODE_MANUAL,
-       .als_input_mode = LM3530_INPUT_ALS1,
-       .max_current = LM3530_FS_CURR_26mA,
-       .pwm_pol_hi = true,
-       .als_avrg_time = LM3530_ALS_AVRG_TIME_512ms,
-       .brt_ramp_law = 1,      /* Linear */
-       .brt_ramp_fall = LM3530_RAMP_TIME_8s,
-       .brt_ramp_rise = LM3530_RAMP_TIME_8s,
-       .als1_resistor_sel = LM3530_ALS_IMPD_13_53kOhm,
-       .als2_resistor_sel = LM3530_ALS_IMPD_Z,
-       .als_vmin = 730,        /* mV */
-       .als_vmax = 1020,       /* mV */
-       .brt_val = 0x7F,        /* Max brightness */
-};
-
-static struct i2c_board_info __initdata u5500_i2c2_devices[] = {
-       {
-               /* Backlight */
-               I2C_BOARD_INFO("lm3530-led", 0x36),
-               .platform_data = &u5500_als_platform_data,
-       },
-};
-
-static void __init u5500_i2c_init(struct device *parent)
-{
-       db5500_add_i2c2(parent, &u5500_i2c2_data);
-       i2c_register_board_info(2, ARRAY_AND_SIZE(u5500_i2c2_devices));
-}
-
-static struct ab5500_platform_data ab5500_plf_data = {
-       .irq = {
-               .base = 0,
-               .count = 0,
-       },
-       .init_settings = NULL,
-       .init_settings_sz = 0,
-       .pm_power_off = false,
-};
-
-static struct platform_device ab5500_device = {
-       .name = "ab5500-core",
-       .id = 0,
-       .dev = {
-               .platform_data = &ab5500_plf_data,
-       },
-       .num_resources = 0,
-};
-
-static struct platform_device *u5500_platform_devices[] __initdata = {
-       &ab5500_device,
-};
-
-static void __init u5500_uart_init(struct device *parent)
-{
-       db5500_add_uart0(parent, NULL);
-       db5500_add_uart1(parent, NULL);
-       db5500_add_uart2(parent, NULL);
-}
-
-static void __init u5500_init_machine(void)
-{
-       struct device *parent = NULL;
-       int i;
-
-       parent = u5500_init_devices();
-       nmk_config_pins(u5500_pins, ARRAY_SIZE(u5500_pins));
-
-       u5500_i2c_init(parent);
-       u5500_sdi_init(parent);
-       u5500_uart_init(parent);
-
-       for (i = 0; i < ARRAY_SIZE(u5500_platform_devices); i++)
-               u5500_platform_devices[i]->dev.parent = parent;
-
-       platform_add_devices(u5500_platform_devices,
-               ARRAY_SIZE(u5500_platform_devices));
-}
-
-MACHINE_START(U5500, "ST-Ericsson U5500 Platform")
-       .atag_offset    = 0x100,
-       .map_io         = u5500_map_io,
-       .init_irq       = ux500_init_irq,
-       .timer          = &ux500_timer,
-       .handle_irq     = gic_handle_irq,
-       .init_machine   = u5500_init_machine,
-MACHINE_END
index 77a75ed0df6729ff85452ce216ab1ef9f354fd57..df91344aa2db46db7504522ddd8b541d85849a8b 100644 (file)
@@ -36,9 +36,7 @@ static int __init ux500_l2x0_unlock(void)
 
 static int __init ux500_l2x0_init(void)
 {
-       if (cpu_is_u5500())
-               l2x0_base = __io_address(U5500_L2CC_BASE);
-       else if (cpu_is_u8500())
+       if (cpu_is_u8500())
                l2x0_base = __io_address(U8500_L2CC_BASE);
        else
                ux500_unknown_soc();
index ec35f0aa5665a99d23f11c73ec552ab6e83f3aca..9feb6bc7f20edda71763f470a9baae1db0c99e49 100644 (file)
@@ -149,9 +149,7 @@ static unsigned long clk_mtu_get_rate(struct clk *clk)
        unsigned long mturate;
        unsigned long retclk;
 
-       if (cpu_is_u5500())
-               addr = __io_address(U5500_PRCMU_BASE);
-       else if (cpu_is_u8500())
+       if (cpu_is_u8500())
                addr = __io_address(U8500_PRCMU_BASE);
        else
                ux500_unknown_soc();
@@ -705,14 +703,6 @@ late_initcall(clk_init_smp_twd_cpufreq);
 
 int __init clk_init(void)
 {
-       if (cpu_is_u5500()) {
-               /* Clock tree for U5500 not implemented yet */
-               clk_prcc_ops.enable = clk_prcc_ops.disable = NULL;
-               clk_prcmu_ops.enable = clk_prcmu_ops.disable = NULL;
-               clk_uartclk.rate = 36360000;
-               clk_sdmmcclk.rate = 99900000;
-       }
-
        clkdev_add_table(u8500_clks, ARRAY_SIZE(u8500_clks));
        clkdev_add(&clk_smp_twd_lookup);
 
diff --git a/arch/arm/mach-ux500/cpu-db5500.c b/arch/arm/mach-ux500/cpu-db5500.c
deleted file mode 100644 (file)
index bca47f3..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#include <linux/platform_device.h>
-#include <linux/amba/bus.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-
-#include <asm/mach/map.h>
-#include <asm/pmu.h>
-
-#include <plat/gpio-nomadik.h>
-
-#include <mach/hardware.h>
-#include <mach/devices.h>
-#include <mach/setup.h>
-#include <mach/irqs.h>
-#include <mach/usb.h>
-
-#include "devices-db5500.h"
-#include "ste-dma40-db5500.h"
-
-static struct map_desc u5500_uart_io_desc[] __initdata = {
-       __IO_DEV_DESC(U5500_UART0_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_UART2_BASE, SZ_4K),
-};
-
-static struct map_desc u5500_io_desc[] __initdata = {
-       /* SCU base also covers GIC CPU BASE and TWD with its 4K page */
-       __IO_DEV_DESC(U5500_SCU_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_GIC_DIST_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_L2CC_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_MTU0_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_BACKUPRAM0_BASE, SZ_8K),
-
-       __IO_DEV_DESC(U5500_GPIO0_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_GPIO1_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_GPIO2_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_GPIO3_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_GPIO4_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_PRCMU_BASE, SZ_4K),
-       __IO_DEV_DESC(U5500_PRCMU_TCDM_BASE, SZ_4K),
-};
-
-static struct resource mbox0_resources[] = {
-       {
-               .name = "mbox_peer",
-               .start = U5500_MBOX0_PEER_START,
-               .end = U5500_MBOX0_PEER_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_local",
-               .start = U5500_MBOX0_LOCAL_START,
-               .end = U5500_MBOX0_LOCAL_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_irq",
-               .start = MBOX_PAIR0_VIRT_IRQ,
-               .end = MBOX_PAIR0_VIRT_IRQ,
-               .flags = IORESOURCE_IRQ,
-       }
-};
-
-static struct resource mbox1_resources[] = {
-       {
-               .name = "mbox_peer",
-               .start = U5500_MBOX1_PEER_START,
-               .end = U5500_MBOX1_PEER_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_local",
-               .start = U5500_MBOX1_LOCAL_START,
-               .end = U5500_MBOX1_LOCAL_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_irq",
-               .start = MBOX_PAIR1_VIRT_IRQ,
-               .end = MBOX_PAIR1_VIRT_IRQ,
-               .flags = IORESOURCE_IRQ,
-       }
-};
-
-static struct resource mbox2_resources[] = {
-       {
-               .name = "mbox_peer",
-               .start = U5500_MBOX2_PEER_START,
-               .end = U5500_MBOX2_PEER_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_local",
-               .start = U5500_MBOX2_LOCAL_START,
-               .end = U5500_MBOX2_LOCAL_END,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name = "mbox_irq",
-               .start = MBOX_PAIR2_VIRT_IRQ,
-               .end = MBOX_PAIR2_VIRT_IRQ,
-               .flags = IORESOURCE_IRQ,
-       }
-};
-
-static struct platform_device mbox0_device = {
-       .id = 0,
-       .name = "mbox",
-       .resource = mbox0_resources,
-       .num_resources = ARRAY_SIZE(mbox0_resources),
-};
-
-static struct platform_device mbox1_device = {
-       .id = 1,
-       .name = "mbox",
-       .resource = mbox1_resources,
-       .num_resources = ARRAY_SIZE(mbox1_resources),
-};
-
-static struct platform_device mbox2_device = {
-       .id = 2,
-       .name = "mbox",
-       .resource = mbox2_resources,
-       .num_resources = ARRAY_SIZE(mbox2_resources),
-};
-
-static struct platform_device *db5500_platform_devs[] __initdata = {
-       &mbox0_device,
-       &mbox1_device,
-       &mbox2_device,
-};
-
-static resource_size_t __initdata db5500_gpio_base[] = {
-       U5500_GPIOBANK0_BASE,
-       U5500_GPIOBANK1_BASE,
-       U5500_GPIOBANK2_BASE,
-       U5500_GPIOBANK3_BASE,
-       U5500_GPIOBANK4_BASE,
-       U5500_GPIOBANK5_BASE,
-       U5500_GPIOBANK6_BASE,
-       U5500_GPIOBANK7_BASE,
-};
-
-static void __init db5500_add_gpios(struct device *parent)
-{
-       struct nmk_gpio_platform_data pdata = {
-               /* No custom data yet */
-       };
-
-       dbx500_add_gpios(parent, ARRAY_AND_SIZE(db5500_gpio_base),
-                        IRQ_DB5500_GPIO0, &pdata);
-}
-
-void __init u5500_map_io(void)
-{
-       /*
-        * Map the UARTs early so that the DEBUG_LL stuff continues to work.
-        */
-       iotable_init(u5500_uart_io_desc, ARRAY_SIZE(u5500_uart_io_desc));
-
-       ux500_map_io();
-
-       iotable_init(u5500_io_desc, ARRAY_SIZE(u5500_io_desc));
-
-       _PRCMU_BASE = __io_address(U5500_PRCMU_BASE);
-}
-
-static void __init db5500_pmu_init(void)
-{
-       struct resource res[] = {
-               [0] = {
-                       .start          = IRQ_DB5500_PMU0,
-                       .end            = IRQ_DB5500_PMU0,
-                       .flags          = IORESOURCE_IRQ,
-               },
-               [1] = {
-                       .start          = IRQ_DB5500_PMU1,
-                       .end            = IRQ_DB5500_PMU1,
-                       .flags          = IORESOURCE_IRQ,
-               },
-       };
-
-       platform_device_register_simple("arm-pmu", ARM_PMU_DEVICE_CPU,
-                                       res, ARRAY_SIZE(res));
-}
-
-static int usb_db5500_rx_dma_cfg[] = {
-       DB5500_DMA_DEV4_USB_OTG_IEP_1_9,
-       DB5500_DMA_DEV5_USB_OTG_IEP_2_10,
-       DB5500_DMA_DEV6_USB_OTG_IEP_3_11,
-       DB5500_DMA_DEV20_USB_OTG_IEP_4_12,
-       DB5500_DMA_DEV21_USB_OTG_IEP_5_13,
-       DB5500_DMA_DEV22_USB_OTG_IEP_6_14,
-       DB5500_DMA_DEV23_USB_OTG_IEP_7_15,
-       DB5500_DMA_DEV38_USB_OTG_IEP_8
-};
-
-static int usb_db5500_tx_dma_cfg[] = {
-       DB5500_DMA_DEV4_USB_OTG_OEP_1_9,
-       DB5500_DMA_DEV5_USB_OTG_OEP_2_10,
-       DB5500_DMA_DEV6_USB_OTG_OEP_3_11,
-       DB5500_DMA_DEV20_USB_OTG_OEP_4_12,
-       DB5500_DMA_DEV21_USB_OTG_OEP_5_13,
-       DB5500_DMA_DEV22_USB_OTG_OEP_6_14,
-       DB5500_DMA_DEV23_USB_OTG_OEP_7_15,
-       DB5500_DMA_DEV38_USB_OTG_OEP_8
-};
-
-static const char *db5500_read_soc_id(void)
-{
-       return kasprintf(GFP_KERNEL, "u5500 currently unsupported\n");
-}
-
-static struct device * __init db5500_soc_device_init(void)
-{
-       const char *soc_id = db5500_read_soc_id();
-
-       return ux500_soc_device_init(soc_id);
-}
-
-struct device * __init u5500_init_devices(void)
-{
-       struct device *parent;
-       int i;
-
-       parent = db5500_soc_device_init();
-
-       db5500_add_gpios(parent);
-       db5500_pmu_init();
-       db5500_dma_init(parent);
-       db5500_add_rtc(parent);
-       db5500_add_usb(parent, usb_db5500_rx_dma_cfg, usb_db5500_tx_dma_cfg);
-
-       for (i = 0; i < ARRAY_SIZE(db5500_platform_devs); i++)
-               db5500_platform_devs[i]->dev.parent = parent;
-
-       platform_add_devices(db5500_platform_devs,
-                            ARRAY_SIZE(db5500_platform_devs));
-
-       return parent;
-}
index d11f3892a27dffe6a596a5c279ecdd355b44f280..4b4e59b30d814f173d5e76d924da0345beebca76 100644 (file)
@@ -10,7 +10,6 @@
 #include <linux/io.h>
 #include <linux/clk.h>
 #include <linux/mfd/db8500-prcmu.h>
-#include <linux/mfd/db5500-prcmu.h>
 #include <linux/clksrc-dbx500-prcmu.h>
 #include <linux/sys_soc.h>
 #include <linux/err.h>
@@ -40,10 +39,7 @@ void __init ux500_init_irq(void)
        void __iomem *dist_base;
        void __iomem *cpu_base;
 
-       if (cpu_is_u5500()) {
-               dist_base = __io_address(U5500_GIC_DIST_BASE);
-               cpu_base = __io_address(U5500_GIC_CPU_BASE);
-       } else if (cpu_is_u8500()) {
+       if (cpu_is_u8500()) {
                dist_base = __io_address(U8500_GIC_DIST_BASE);
                cpu_base = __io_address(U8500_GIC_CPU_BASE);
        } else
@@ -60,8 +56,6 @@ void __init ux500_init_irq(void)
         * Init clocks here so that they are available for system timer
         * initialization.
         */
-       if (cpu_is_u5500())
-               db5500_prcmu_early_init();
        if (cpu_is_u8500())
                db8500_prcmu_early_init();
        clk_init();
diff --git a/arch/arm/mach-ux500/devices-db5500.h b/arch/arm/mach-ux500/devices-db5500.h
deleted file mode 100644 (file)
index e709555..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-#ifndef __DEVICES_DB5500_H
-#define __DEVICES_DB5500_H
-
-#include "devices-common.h"
-
-#define db5500_add_i2c1(parent, pdata) \
-       dbx500_add_i2c(parent, 1, U5500_I2C1_BASE, IRQ_DB5500_I2C1, pdata)
-#define db5500_add_i2c2(parent, pdata) \
-       dbx500_add_i2c(parent, 2, U5500_I2C2_BASE, IRQ_DB5500_I2C2, pdata)
-#define db5500_add_i2c3(parent, pdata) \
-       dbx500_add_i2c(parent, 3, U5500_I2C3_BASE, IRQ_DB5500_I2C3, pdata)
-
-#define db5500_add_msp0_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp0", U5500_MSP0_BASE, \
-                          IRQ_DB5500_MSP0, pdata)
-#define db5500_add_msp1_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp1", U5500_MSP1_BASE, \
-                          IRQ_DB5500_MSP1, pdata)
-#define db5500_add_msp2_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp2", U5500_MSP2_BASE, \
-                          IRQ_DB5500_MSP2, pdata)
-
-#define db5500_add_msp0_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp0", U5500_MSP0_BASE, \
-                         IRQ_DB5500_MSP0, pdata)
-#define db5500_add_msp1_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp1", U5500_MSP1_BASE, \
-                         IRQ_DB5500_MSP1, pdata)
-#define db5500_add_msp2_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp2", U5500_MSP2_BASE, \
-                         IRQ_DB5500_MSP2, pdata)
-
-#define db5500_add_rtc(parent) \
-       dbx500_add_rtc(parent, U5500_RTC_BASE, IRQ_DB5500_RTC);
-
-#define db5500_add_usb(parent, rx_cfg, tx_cfg) \
-       ux500_add_usb(parent, U5500_USBOTG_BASE, \
-                     IRQ_DB5500_USBOTG, rx_cfg, tx_cfg)
-
-#define db5500_add_sdi0(parent, pdata) \
-       dbx500_add_sdi(parent, "sdi0", U5500_SDI0_BASE, \
-                      IRQ_DB5500_SDMMC0, pdata,        \
-                      0x10480180)
-#define db5500_add_sdi1(parent, pdata) \
-       dbx500_add_sdi(parent, "sdi1", U5500_SDI1_BASE, \
-                      IRQ_DB5500_SDMMC1, pdata,        \
-                      0x10480180)
-#define db5500_add_sdi2(parent, pdata) \
-       dbx500_add_sdi(parent, "sdi2", U5500_SDI2_BASE, \
-                      IRQ_DB5500_SDMMC2, pdata         \
-                      0x10480180)
-#define db5500_add_sdi3(parent, pdata) \
-       dbx500_add_sdi(parent, "sdi3", U5500_SDI3_BASE, \
-                      IRQ_DB5500_SDMMC3, pdata         \
-                      0x10480180)
-#define db5500_add_sdi4(parent, pdata) \
-       dbx500_add_sdi(parent, "sdi4", U5500_SDI4_BASE, \
-                      IRQ_DB5500_SDMMC4, pdata         \
-                      0x10480180)
-
-/* This one has a bad peripheral ID in the U5500 silicon */
-#define db5500_add_spi0(parent, pdata) \
-       dbx500_add_spi(parent, "spi0", U5500_SPI0_BASE, \
-                      IRQ_DB5500_SPI0, pdata,          \
-                      0x10080023)
-#define db5500_add_spi1(parent, pdata) \
-       dbx500_add_spi(parent, "spi1", U5500_SPI1_BASE, \
-                      IRQ_DB5500_SPI1, pdata,          \
-                      0x10080023)
-#define db5500_add_spi2(parent, pdata) \
-       dbx500_add_spi(parent, "spi2", U5500_SPI2_BASE, \
-                      IRQ_DB5500_SPI2, pdata           \
-                      0x10080023)
-#define db5500_add_spi3(parent, pdata) \
-       dbx500_add_spi(parent, "spi3", U5500_SPI3_BASE, \
-                      IRQ_DB5500_SPI3, pdata           \
-                      0x10080023)
-
-#define db5500_add_uart0(parent, plat) \
-       dbx500_add_uart(parent, "uart0", U5500_UART0_BASE, \
-                       IRQ_DB5500_UART0, plat)
-#define db5500_add_uart1(parent, plat) \
-       dbx500_add_uart(parent, "uart1", U5500_UART1_BASE, \
-                       IRQ_DB5500_UART1, plat)
-#define db5500_add_uart2(parent, plat) \
-       dbx500_add_uart(parent, "uart2", U5500_UART2_BASE, \
-                       IRQ_DB5500_UART2, plat)
-#define db5500_add_uart3(parent, plat) \
-       dbx500_add_uart(parent, "uart3", U5500_UART3_BASE, \
-                       IRQ_DB5500_UART3, plat)
-
-#endif
diff --git a/arch/arm/mach-ux500/dma-db5500.c b/arch/arm/mach-ux500/dma-db5500.c
deleted file mode 100644 (file)
index 41e9470..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Per Forlin <per.forlin@stericsson.com> for ST-Ericsson
- * Author: Jonas Aaberg <jonas.aberg@stericsson.com> for ST-Ericsson
- * Author: Rabin Vincent <rabinv.vincent@stericsson.com> for ST-Ericsson
- *
- * License terms: GNU General Public License (GPL), version 2
- */
-
-#include <linux/kernel.h>
-#include <linux/platform_device.h>
-
-#include <plat/ste_dma40.h>
-#include <mach/setup.h>
-#include <mach/hardware.h>
-
-#include "ste-dma40-db5500.h"
-
-static struct resource dma40_resources[] = {
-       [0] = {
-               .start = U5500_DMA_BASE,
-               .end   = U5500_DMA_BASE + SZ_4K - 1,
-               .flags = IORESOURCE_MEM,
-               .name  = "base",
-       },
-       [1] = {
-               .start = U5500_DMA_LCPA_BASE,
-               .end   = U5500_DMA_LCPA_BASE + 2 * SZ_1K - 1,
-               .flags = IORESOURCE_MEM,
-               .name  = "lcpa",
-       },
-       [2] = {
-               .start = IRQ_DB5500_DMA,
-               .end   = IRQ_DB5500_DMA,
-               .flags = IORESOURCE_IRQ
-       }
-};
-
-/* Default configuration for physical memcpy */
-static struct stedma40_chan_cfg dma40_memcpy_conf_phy = {
-       .mode = STEDMA40_MODE_PHYSICAL,
-       .dir = STEDMA40_MEM_TO_MEM,
-
-       .src_info.data_width = STEDMA40_BYTE_WIDTH,
-       .src_info.psize = STEDMA40_PSIZE_PHY_1,
-       .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL,
-
-       .dst_info.data_width = STEDMA40_BYTE_WIDTH,
-       .dst_info.psize = STEDMA40_PSIZE_PHY_1,
-       .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL,
-};
-
-/* Default configuration for logical memcpy */
-static struct stedma40_chan_cfg dma40_memcpy_conf_log = {
-       .dir = STEDMA40_MEM_TO_MEM,
-
-       .src_info.data_width = STEDMA40_BYTE_WIDTH,
-       .src_info.psize = STEDMA40_PSIZE_LOG_1,
-       .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL,
-
-       .dst_info.data_width = STEDMA40_BYTE_WIDTH,
-       .dst_info.psize = STEDMA40_PSIZE_LOG_1,
-       .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL,
-};
-
-/*
- * Mapping between soruce event lines and physical device address This was
- * created assuming that the event line is tied to a device and therefore the
- * address is constant, however this is not true for at least USB, and the
- * values are just placeholders for USB.  This table is preserved and used for
- * now.
- */
-static const dma_addr_t dma40_rx_map[DB5500_DMA_NR_DEV] = {
-       [DB5500_DMA_DEV24_SDMMC0_RX] = -1,
-       [DB5500_DMA_DEV38_USB_OTG_IEP_8] = -1,
-       [DB5500_DMA_DEV23_USB_OTG_IEP_7_15] = -1,
-       [DB5500_DMA_DEV22_USB_OTG_IEP_6_14] = -1,
-       [DB5500_DMA_DEV21_USB_OTG_IEP_5_13] = -1,
-       [DB5500_DMA_DEV20_USB_OTG_IEP_4_12] = -1,
-       [DB5500_DMA_DEV6_USB_OTG_IEP_3_11] = -1,
-       [DB5500_DMA_DEV5_USB_OTG_IEP_2_10] = -1,
-       [DB5500_DMA_DEV4_USB_OTG_IEP_1_9] = -1,
-};
-
-/* Mapping between destination event lines and physical device address */
-static const dma_addr_t dma40_tx_map[DB5500_DMA_NR_DEV] = {
-       [DB5500_DMA_DEV24_SDMMC0_TX] = -1,
-       [DB5500_DMA_DEV38_USB_OTG_OEP_8] = -1,
-       [DB5500_DMA_DEV23_USB_OTG_OEP_7_15] = -1,
-       [DB5500_DMA_DEV22_USB_OTG_OEP_6_14] = -1,
-       [DB5500_DMA_DEV21_USB_OTG_OEP_5_13] = -1,
-       [DB5500_DMA_DEV20_USB_OTG_OEP_4_12] = -1,
-       [DB5500_DMA_DEV6_USB_OTG_OEP_3_11] = -1,
-       [DB5500_DMA_DEV5_USB_OTG_OEP_2_10] = -1,
-       [DB5500_DMA_DEV4_USB_OTG_OEP_1_9] = -1,
-};
-
-static int dma40_memcpy_event[] = {
-       DB5500_DMA_MEMCPY_TX_1,
-       DB5500_DMA_MEMCPY_TX_2,
-       DB5500_DMA_MEMCPY_TX_3,
-       DB5500_DMA_MEMCPY_TX_4,
-       DB5500_DMA_MEMCPY_TX_5,
-};
-
-static struct stedma40_platform_data dma40_plat_data = {
-       .dev_len                = ARRAY_SIZE(dma40_rx_map),
-       .dev_rx                 = dma40_rx_map,
-       .dev_tx                 = dma40_tx_map,
-       .memcpy                 = dma40_memcpy_event,
-       .memcpy_len             = ARRAY_SIZE(dma40_memcpy_event),
-       .memcpy_conf_phy        = &dma40_memcpy_conf_phy,
-       .memcpy_conf_log        = &dma40_memcpy_conf_log,
-       .disabled_channels      = {-1},
-};
-
-static struct platform_device dma40_device = {
-       .dev = {
-               .platform_data = &dma40_plat_data,
-       },
-       .name           = "dma40",
-       .id             = 0,
-       .num_resources  = ARRAY_SIZE(dma40_resources),
-       .resource       = dma40_resources
-};
-
-void __init db5500_dma_init(struct device *parent)
-{
-       int ret;
-
-       dma40_device.dev.parent = parent;
-       ret = platform_device_register(&dma40_device);
-       if (ret)
-               dev_err(&dma40_device.dev, "unable to register device: %d\n", ret);
-
-}
diff --git a/arch/arm/mach-ux500/include/mach/db5500-regs.h b/arch/arm/mach-ux500/include/mach/db5500-regs.h
deleted file mode 100644 (file)
index 8e714bc..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#ifndef __MACH_DB5500_REGS_H
-#define __MACH_DB5500_REGS_H
-
-#define U5500_PER1_BASE                0xA0020000
-#define U5500_PER2_BASE                0xA0010000
-#define U5500_PER3_BASE                0x80140000
-#define U5500_PER4_BASE                0x80150000
-#define U5500_PER5_BASE                0x80100000
-#define U5500_PER6_BASE                0x80120000
-
-#define U5500_GIC_DIST_BASE    0xA0411000
-#define U5500_GIC_CPU_BASE     0xA0410100
-#define U5500_DMA_BASE         0x90030000
-#define U5500_STM_BASE         0x90020000
-#define U5500_STM_REG_BASE     (U5500_STM_BASE + 0xF000)
-#define U5500_MCDE_BASE                0xA0400000
-#define U5500_MODEM_BASE       0xB0000000
-#define U5500_L2CC_BASE                0xA0412000
-#define U5500_SCU_BASE         0xA0410000
-#define U5500_DSI1_BASE                0xA0401000
-#define U5500_DSI2_BASE                0xA0402000
-#define U5500_SIA_BASE         0xA0100000
-#define U5500_SVA_BASE         0x80200000
-#define U5500_HSEM_BASE                0xA0000000
-#define U5500_NAND0_BASE       0x60000000
-#define U5500_NAND1_BASE       0x70000000
-#define U5500_TWD_BASE         0xa0410600
-#define U5500_ICN_BASE         0xA0040000
-#define U5500_B2R2_BASE                0xa0200000
-#define U5500_BOOT_ROM_BASE    0x90000000
-
-#define U5500_FSMC_BASE                (U5500_PER1_BASE + 0x0000)
-#define U5500_SDI0_BASE                (U5500_PER1_BASE + 0x1000)
-#define U5500_SDI2_BASE                (U5500_PER1_BASE + 0x2000)
-#define U5500_UART0_BASE       (U5500_PER1_BASE + 0x3000)
-#define U5500_I2C1_BASE                (U5500_PER1_BASE + 0x4000)
-#define U5500_MSP0_BASE                (U5500_PER1_BASE + 0x5000)
-#define U5500_GPIO0_BASE       (U5500_PER1_BASE + 0xE000)
-#define U5500_CLKRST1_BASE     (U5500_PER1_BASE + 0xF000)
-
-#define U5500_USBOTG_BASE      (U5500_PER2_BASE + 0x0000)
-#define U5500_GPIO1_BASE       (U5500_PER2_BASE + 0xE000)
-#define U5500_CLKRST2_BASE     (U5500_PER2_BASE + 0xF000)
-
-#define U5500_KEYPAD_BASE      (U5500_PER3_BASE + 0x0000)
-#define U5500_PWM_BASE         (U5500_PER3_BASE + 0x1000)
-#define U5500_GPIO3_BASE       (U5500_PER3_BASE + 0xE000)
-#define U5500_CLKRST3_BASE     (U5500_PER3_BASE + 0xF000)
-
-#define U5500_BACKUPRAM0_BASE  (U5500_PER4_BASE + 0x0000)
-#define U5500_BACKUPRAM1_BASE  (U5500_PER4_BASE + 0x1000)
-#define U5500_RTT0_BASE                (U5500_PER4_BASE + 0x2000)
-#define U5500_RTT1_BASE                (U5500_PER4_BASE + 0x3000)
-#define U5500_RTC_BASE         (U5500_PER4_BASE + 0x4000)
-#define U5500_SCR_BASE         (U5500_PER4_BASE + 0x5000)
-#define U5500_DMC_BASE         (U5500_PER4_BASE + 0x6000)
-#define U5500_PRCMU_BASE       (U5500_PER4_BASE + 0x7000)
-#define U5500_PRCMU_TIMER_3_BASE (U5500_PER4_BASE + 0x07338)
-#define U5500_PRCMU_TIMER_4_BASE (U5500_PER4_BASE + 0x07450)
-#define U5500_MSP1_BASE                (U5500_PER4_BASE + 0x9000)
-#define U5500_GPIO2_BASE       (U5500_PER4_BASE + 0xA000)
-#define U5500_MTIMER_BASE      (U5500_PER4_BASE + 0xC000)
-#define U5500_CDETECT_BASE     (U5500_PER4_BASE + 0xF000)
-#define U5500_PRCMU_TCDM_BASE  (U5500_PER4_BASE + 0x18000)
-#define U5500_PRCMU_TCPM_BASE  (U5500_PER4_BASE + 0x10000)
-#define U5500_TPIU_BASE                (U5500_PER4_BASE + 0x50000)
-
-#define U5500_SPI0_BASE                (U5500_PER5_BASE + 0x0000)
-#define U5500_SPI1_BASE                (U5500_PER5_BASE + 0x1000)
-#define U5500_SPI2_BASE                (U5500_PER5_BASE + 0x2000)
-#define U5500_SPI3_BASE                (U5500_PER5_BASE + 0x3000)
-#define U5500_UART1_BASE       (U5500_PER5_BASE + 0x4000)
-#define U5500_UART2_BASE       (U5500_PER5_BASE + 0x5000)
-#define U5500_UART3_BASE       (U5500_PER5_BASE + 0x6000)
-#define U5500_SDI1_BASE                (U5500_PER5_BASE + 0x7000)
-#define U5500_SDI3_BASE                (U5500_PER5_BASE + 0x8000)
-#define U5500_SDI4_BASE                (U5500_PER5_BASE + 0x9000)
-#define U5500_I2C2_BASE                (U5500_PER5_BASE + 0xA000)
-#define U5500_I2C3_BASE                (U5500_PER5_BASE + 0xB000)
-#define U5500_MSP2_BASE                (U5500_PER5_BASE + 0xC000)
-#define U5500_IRDA_BASE                (U5500_PER5_BASE + 0xD000)
-#define U5500_IRRC_BASE                (U5500_PER5_BASE + 0x10000)
-#define U5500_GPIO4_BASE       (U5500_PER5_BASE + 0x1E000)
-#define U5500_CLKRST5_BASE     (U5500_PER5_BASE + 0x1F000)
-
-#define U5500_RNG_BASE         (U5500_PER6_BASE + 0x0000)
-#define U5500_HASH0_BASE       (U5500_PER6_BASE + 0x1000)
-#define U5500_HASH1_BASE       (U5500_PER6_BASE + 0x2000)
-#define U5500_PKA_BASE         (U5500_PER6_BASE + 0x4000)
-#define U5500_PKAM_BASE                (U5500_PER6_BASE + 0x5100)
-#define U5500_MTU0_BASE                (U5500_PER6_BASE + 0x6000)
-#define U5500_MTU1_BASE                (U5500_PER6_BASE + 0x7000)
-#define U5500_CR_BASE          (U5500_PER6_BASE + 0x8000)
-#define U5500_CRYP0_BASE       (U5500_PER6_BASE + 0xA000)
-#define U5500_CRYP1_BASE       (U5500_PER6_BASE + 0xB000)
-#define U5500_CLKRST6_BASE     (U5500_PER6_BASE + 0xF000)
-
-#define U5500_GPIOBANK0_BASE   U5500_GPIO0_BASE
-#define U5500_GPIOBANK1_BASE   (U5500_GPIO0_BASE + 0x80)
-#define U5500_GPIOBANK2_BASE   U5500_GPIO1_BASE
-#define U5500_GPIOBANK3_BASE   U5500_GPIO2_BASE
-#define U5500_GPIOBANK4_BASE   U5500_GPIO3_BASE
-#define U5500_GPIOBANK5_BASE   U5500_GPIO4_BASE
-#define U5500_GPIOBANK6_BASE   (U5500_GPIO4_BASE + 0x80)
-#define U5500_GPIOBANK7_BASE   (U5500_GPIO4_BASE + 0x100)
-
-#define U5500_MBOX_BASE                (U5500_MODEM_BASE + 0xFFD1000)
-#define U5500_MBOX0_PEER_START (U5500_MBOX_BASE + 0x40)
-#define U5500_MBOX0_PEER_END   (U5500_MBOX_BASE + 0x5F)
-#define U5500_MBOX0_LOCAL_START        (U5500_MBOX_BASE + 0x60)
-#define U5500_MBOX0_LOCAL_END  (U5500_MBOX_BASE + 0x7F)
-#define U5500_MBOX1_PEER_START (U5500_MBOX_BASE + 0x80)
-#define U5500_MBOX1_PEER_END   (U5500_MBOX_BASE + 0x9F)
-#define U5500_MBOX1_LOCAL_START        (U5500_MBOX_BASE + 0xA0)
-#define U5500_MBOX1_LOCAL_END  (U5500_MBOX_BASE + 0xBF)
-#define U5500_MBOX2_PEER_START (U5500_MBOX_BASE + 0x00)
-#define U5500_MBOX2_PEER_END   (U5500_MBOX_BASE + 0x1F)
-#define U5500_MBOX2_LOCAL_START        (U5500_MBOX_BASE + 0x20)
-#define U5500_MBOX2_LOCAL_END  (U5500_MBOX_BASE + 0x3F)
-
-#define U5500_ACCCON_BASE_SEC  (0xBFFF0000)
-#define U5500_ACCCON_BASE              (0xBFFF1000)
-#define U5500_ACCCON_CPUVEC_RESET_ADDR_OFFSET (0x00000020)
-#define U5500_ACCCON_ACC_CPU_CTRL_OFFSET (0x000000BC)
-#define U5500_INTCON_MBOX1_INT_RESET_ADDR      (0xBFFD31A4)
-
-#define U5500_ESRAM_BASE               0x40000000
-#define U5500_ESRAM_DMA_LCPA_OFFSET    0x10000
-#define U5500_DMA_LCPA_BASE    (U5500_ESRAM_BASE + U5500_ESRAM_DMA_LCPA_OFFSET)
-
-#define U5500_MCDE_SIZE                0x1000
-#define U5500_DSI_LINK_SIZE    0x1000
-#define U5500_DSI_LINK_COUNT   0x2
-#define U5500_DSI_LINK1_BASE   (U5500_MCDE_BASE + U5500_MCDE_SIZE)
-#define U5500_DSI_LINK2_BASE   (U5500_DSI_LINK1_BASE + U5500_DSI_LINK_SIZE)
-
-#endif
index 8d74d927d4e2bda230f785df35c0c150079bb348..67035223334ab824f93ae1a8c178223600a8450d 100644 (file)
  * built, so that there's some hint during the build that something is wrong.
  */
 
-#ifdef CONFIG_UX500_SOC_DB5500
-#define __UX500_UART(n)        U5500_UART##n##_BASE
-#endif
-
 #ifdef CONFIG_UX500_SOC_DB8500
 #define __UX500_UART(n)        U8500_UART##n##_BASE
 #endif
index 5f6cb71fc62d88e86ea927aa31b1fd037f4296ee..9b5eb69a0154a664828a6744f44d7300b4895eef 100644 (file)
@@ -10,7 +10,6 @@
 struct platform_device;
 struct amba_device;
 
-extern struct platform_device u5500_gpio_devs[];
 extern struct platform_device u8500_gpio_devs[];
 
 extern struct amba_device ux500_pl031_device;
index f84698936d360d198aeba20313ddbce4b936ff67..cf6fac3d1eeb49fe553df517f62525401cff9acd 100644 (file)
@@ -28,7 +28,6 @@
 #define io_p2v(n)              __io_address(n)
 
 #include <mach/db8500-regs.h>
-#include <mach/db5500-regs.h>
 
 #define MSP_TX_RX_REG_OFFSET   0
 
diff --git a/arch/arm/mach-ux500/include/mach/irqs-board-u5500.h b/arch/arm/mach-ux500/include/mach/irqs-board-u5500.h
deleted file mode 100644 (file)
index 29d972c..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#ifndef __MACH_IRQS_BOARD_U5500_H
-#define __MACH_IRQS_BOARD_U5500_H
-
-#define AB5500_NR_IRQS         5
-#define IRQ_AB5500_BASE                IRQ_BOARD_START
-#define IRQ_AB5500_END         (IRQ_AB5500_BASE + AB5500_NR_IRQS)
-
-#define U5500_IRQ_END          IRQ_AB5500_END
-
-#if IRQ_BOARD_END < U5500_IRQ_END
-#undef IRQ_BOARD_END
-#define IRQ_BOARD_END          U5500_IRQ_END
-#endif
-
-#endif
diff --git a/arch/arm/mach-ux500/include/mach/irqs-db5500.h b/arch/arm/mach-ux500/include/mach/irqs-db5500.h
deleted file mode 100644 (file)
index 7723977..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com>
- * License terms: GNU General Public License (GPL) version 2
- */
-
-#ifndef __MACH_IRQS_DB5500_H
-#define __MACH_IRQS_DB5500_H
-
-#define IRQ_DB5500_MTU0                        (IRQ_SHPI_START + 4)
-#define IRQ_DB5500_SPI2                        (IRQ_SHPI_START + 6)
-#define IRQ_DB5500_PMU0                        (IRQ_SHPI_START + 7)
-#define IRQ_DB5500_SPI0                        (IRQ_SHPI_START + 8)
-#define IRQ_DB5500_RTT                 (IRQ_SHPI_START + 9)
-#define IRQ_DB5500_PKA                 (IRQ_SHPI_START + 10)
-#define IRQ_DB5500_UART0               (IRQ_SHPI_START + 11)
-#define IRQ_DB5500_I2C3                        (IRQ_SHPI_START + 12)
-#define IRQ_DB5500_L2CC                        (IRQ_SHPI_START + 13)
-#define IRQ_DB5500_MSP0                        (IRQ_SHPI_START + 14)
-#define IRQ_DB5500_CRYP1               (IRQ_SHPI_START + 15)
-#define IRQ_DB5500_PMU1                        (IRQ_SHPI_START + 16)
-#define IRQ_DB5500_MTU1                        (IRQ_SHPI_START + 17)
-#define IRQ_DB5500_RTC                 (IRQ_SHPI_START + 18)
-#define IRQ_DB5500_UART1               (IRQ_SHPI_START + 19)
-#define IRQ_DB5500_USB_WAKEUP          (IRQ_SHPI_START + 20)
-#define IRQ_DB5500_I2C0                        (IRQ_SHPI_START + 21)
-#define IRQ_DB5500_I2C1                        (IRQ_SHPI_START + 22)
-#define IRQ_DB5500_USBOTG              (IRQ_SHPI_START + 23)
-#define IRQ_DB5500_DMA_SECURE          (IRQ_SHPI_START + 24)
-#define IRQ_DB5500_DMA                 (IRQ_SHPI_START + 25)
-#define IRQ_DB5500_UART2               (IRQ_SHPI_START + 26)
-#define IRQ_DB5500_ICN_PMU1            (IRQ_SHPI_START + 27)
-#define IRQ_DB5500_ICN_PMU2            (IRQ_SHPI_START + 28)
-#define IRQ_DB5500_UART3               (IRQ_SHPI_START + 29)
-#define IRQ_DB5500_SPI3                        (IRQ_SHPI_START + 30)
-#define IRQ_DB5500_SDMMC4              (IRQ_SHPI_START + 31)
-#define IRQ_DB5500_IRRC                        (IRQ_SHPI_START + 33)
-#define IRQ_DB5500_IRDA_FT             (IRQ_SHPI_START + 34)
-#define IRQ_DB5500_IRDA_SD             (IRQ_SHPI_START + 35)
-#define IRQ_DB5500_IRDA_FI             (IRQ_SHPI_START + 36)
-#define IRQ_DB5500_IRDA_FD             (IRQ_SHPI_START + 37)
-#define IRQ_DB5500_FSMC_CODEREADY      (IRQ_SHPI_START + 38)
-#define IRQ_DB5500_FSMC_NANDWAIT       (IRQ_SHPI_START + 39)
-#define IRQ_DB5500_AB5500              (IRQ_SHPI_START + 40)
-#define IRQ_DB5500_SDMMC2              (IRQ_SHPI_START + 41)
-#define IRQ_DB5500_SIA                 (IRQ_SHPI_START + 42)
-#define IRQ_DB5500_SIA2                        (IRQ_SHPI_START + 43)
-#define IRQ_DB5500_HVA                 (IRQ_SHPI_START + 44)
-#define IRQ_DB5500_HVA2                        (IRQ_SHPI_START + 45)
-#define IRQ_DB5500_PRCMU0              (IRQ_SHPI_START + 46)
-#define IRQ_DB5500_PRCMU1              (IRQ_SHPI_START + 47)
-#define IRQ_DB5500_DISP                        (IRQ_SHPI_START + 48)
-#define IRQ_DB5500_SDMMC1              (IRQ_SHPI_START + 50)
-#define IRQ_DB5500_MSP1                        (IRQ_SHPI_START + 52)
-#define IRQ_DB5500_KBD                 (IRQ_SHPI_START + 53)
-#define IRQ_DB5500_I2C2                        (IRQ_SHPI_START + 55)
-#define IRQ_DB5500_B2R2                        (IRQ_SHPI_START + 56)
-#define IRQ_DB5500_CRYP0               (IRQ_SHPI_START + 57)
-#define IRQ_DB5500_SDMMC3              (IRQ_SHPI_START + 59)
-#define IRQ_DB5500_SDMMC0              (IRQ_SHPI_START + 60)
-#define IRQ_DB5500_HSEM                        (IRQ_SHPI_START + 61)
-#define IRQ_DB5500_SBAG                        (IRQ_SHPI_START + 63)
-#define IRQ_DB5500_MODEM               (IRQ_SHPI_START + 65)
-#define IRQ_DB5500_SPI1                        (IRQ_SHPI_START + 96)
-#define IRQ_DB5500_MSP2                        (IRQ_SHPI_START + 98)
-#define IRQ_DB5500_SRPTIMER            (IRQ_SHPI_START + 101)
-#define IRQ_DB5500_CTI0                        (IRQ_SHPI_START + 108)
-#define IRQ_DB5500_CTI1                        (IRQ_SHPI_START + 109)
-#define IRQ_DB5500_ICN_ERR             (IRQ_SHPI_START + 110)
-#define IRQ_DB5500_MALI_PPMMU          (IRQ_SHPI_START + 112)
-#define IRQ_DB5500_MALI_PP             (IRQ_SHPI_START + 113)
-#define IRQ_DB5500_MALI_GPMMU          (IRQ_SHPI_START + 114)
-#define IRQ_DB5500_MALI_GP             (IRQ_SHPI_START + 115)
-#define IRQ_DB5500_MALI                        (IRQ_SHPI_START + 116)
-#define IRQ_DB5500_PRCMU_SEM           (IRQ_SHPI_START + 118)
-#define IRQ_DB5500_GPIO0               (IRQ_SHPI_START + 119)
-#define IRQ_DB5500_GPIO1               (IRQ_SHPI_START + 120)
-#define IRQ_DB5500_GPIO2               (IRQ_SHPI_START + 121)
-#define IRQ_DB5500_GPIO3               (IRQ_SHPI_START + 122)
-#define IRQ_DB5500_GPIO4               (IRQ_SHPI_START + 123)
-#define IRQ_DB5500_GPIO5               (IRQ_SHPI_START + 124)
-#define IRQ_DB5500_GPIO6               (IRQ_SHPI_START + 125)
-#define IRQ_DB5500_GPIO7               (IRQ_SHPI_START + 126)
-
-#ifdef CONFIG_UX500_SOC_DB5500
-
-/*
- * After the GPIO ones we reserve a range of IRQ:s in which virtual
- * IRQ:s representing modem IRQ:s can be allocated
- */
-#define IRQ_MODEM_EVENTS_BASE  IRQ_SOC_START
-#define IRQ_MODEM_EVENTS_NBR   72
-#define IRQ_MODEM_EVENTS_END   (IRQ_MODEM_EVENTS_BASE + IRQ_MODEM_EVENTS_NBR)
-
-/* List of virtual IRQ:s that are allocated from the range above */
-#define MBOX_PAIR0_VIRT_IRQ    (IRQ_MODEM_EVENTS_BASE + 43)
-#define MBOX_PAIR1_VIRT_IRQ    (IRQ_MODEM_EVENTS_BASE + 45)
-#define MBOX_PAIR2_VIRT_IRQ    (IRQ_MODEM_EVENTS_BASE + 41)
-
-/*
- * We may have several SoCs, but only one will run at a
- * time, so the one with most IRQs will bump this ahead,
- * but the IRQ_SOC_START remains the same for either SoC.
- */
-#if IRQ_SOC_END < IRQ_MODEM_EVENTS_END
-#undef IRQ_SOC_END
-#define IRQ_SOC_END            IRQ_MODEM_EVENTS_END
-#endif
-
-#endif /* CONFIG_UX500_SOC_DB5500 */
-
-#endif
index c23a6b5f0c4eefd58220620043316d999b3d651d..d06dcf6208fa96bfad14d325f6b4df2832ffbc21 100644 (file)
@@ -36,7 +36,6 @@
 /* This will be overridden by SoC-specific irq headers */
 #define IRQ_SOC_END            IRQ_SOC_START
 
-#include <mach/irqs-db5500.h>
 #include <mach/irqs-db8500.h>
 
 #define IRQ_BOARD_START                IRQ_SOC_END
 #include <mach/irqs-board-mop500.h>
 #endif
 
-#ifdef CONFIG_MACH_U5500
-#include <mach/irqs-board-u5500.h>
-#endif
-
 #define NR_IRQS                        IRQ_BOARD_END
 
 #endif /* ASM_ARCH_IRQS_H */
diff --git a/arch/arm/mach-ux500/include/mach/mbox-db5500.h b/arch/arm/mach-ux500/include/mach/mbox-db5500.h
deleted file mode 100644 (file)
index 7f9da4d..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Author: Stefan Nilsson <stefan.xk.nilsson@stericsson.com> for ST-Ericsson.
- * Author: Martin Persson <martin.persson@stericsson.com> for ST-Ericsson.
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-#ifndef __INC_STE_MBOX_H
-#define __INC_STE_MBOX_H
-
-#define MBOX_BUF_SIZE 16
-#define MBOX_NAME_SIZE 8
-
-/**
-  * mbox_recv_cb_t - Definition of the mailbox callback.
-  * @mbox_msg: The mailbox message.
-  * @priv:     The clients private data as specified in the call to mbox_setup.
-  *
-  * This function will be called upon reception of new mailbox messages.
-  */
-typedef void mbox_recv_cb_t (u32 mbox_msg, void *priv);
-
-/**
-  * struct mbox - Mailbox instance struct
-  * @list:             Linked list head.
-  * @pdev:             Pointer to device struct.
-  * @cb:               Callback function. Will be called
-  *                    when new data is received.
-  * @client_data:      Clients private data. Will be sent back
-  *                    in the callback function.
-  * @virtbase_peer:    Virtual address for outgoing mailbox.
-  * @virtbase_local:   Virtual address for incoming mailbox.
-  * @buffer:           Then internal queue for outgoing messages.
-  * @name:             Name of this mailbox.
-  * @buffer_available: Completion variable to achieve "blocking send".
-  *                    This variable will be signaled when there is
-  *                    internal buffer space available.
-  * @client_blocked:   To keep track if any client is currently
-  *                    blocked.
-  * @lock:             Spinlock to protect this mailbox instance.
-  * @write_index:      Index in internal buffer to write to.
-  * @read_index:       Index in internal buffer to read from.
-  * @allocated:                Indicates whether this particular mailbox
-  *                    id has been allocated by someone.
-  */
-struct mbox {
-       struct list_head list;
-       struct platform_device *pdev;
-       mbox_recv_cb_t *cb;
-       void *client_data;
-       void __iomem *virtbase_peer;
-       void __iomem *virtbase_local;
-       u32 buffer[MBOX_BUF_SIZE];
-       char name[MBOX_NAME_SIZE];
-       struct completion buffer_available;
-       u8 client_blocked;
-       spinlock_t lock;
-       u8 write_index;
-       u8 read_index;
-       bool allocated;
-};
-
-/**
-  * mbox_setup - Set up a mailbox and return its instance.
-  * @mbox_id:  The ID number of the mailbox. 0 or 1 for modem CPU,
-  *            2 for modem DSP.
-  * @mbox_cb:  Pointer to the callback function to be called when a new message
-  *            is received.
-  * @priv:     Client user data which will be returned in the callback.
-  *
-  * Returns a mailbox instance to be specified in subsequent calls to mbox_send.
-  */
-struct mbox *mbox_setup(u8 mbox_id, mbox_recv_cb_t *mbox_cb, void *priv);
-
-/**
-  * mbox_send - Send a mailbox message.
-  * @mbox:     Mailbox instance (returned by mbox_setup)
-  * @mbox_msg: The mailbox message to send.
-  * @block:    Specifies whether this call will block until send is possible,
-  *            or return an error if the mailbox buffer is full.
-  *
-  * Returns 0 on success or a negative error code on error. -ENOMEM indicates
-  * that the internal buffer is full and you have to try again later (or
-  * specify "block" in order to block until send is possible).
-  */
-int mbox_send(struct mbox *mbox, u32 mbox_msg, bool block);
-
-#endif /*INC_STE_MBOX_H*/
index 3dc00ffa7bfa5d54772dc5201757b1c3ff12bc27..4e369f1645ec9bbbfdc3ee3a28927a7f0e01ff2d 100644 (file)
 #include <linux/init.h>
 
 void __init ux500_map_io(void);
-extern void __init u5500_map_io(void);
 extern void __init u8500_map_io(void);
 
-extern struct device * __init u5500_init_devices(void);
 extern struct device * __init u8500_init_devices(void);
 
 extern void __init ux500_init_irq(void);
 
-extern void __init u5500_sdi_init(struct device *parent);
-
-extern void __init db5500_dma_init(struct device *parent);
-
 extern struct device *ux500_soc_device_init(const char *soc_id);
 
 struct amba_device;
index 6fb3c4b0105d9d5242e2dcc0eb4c00f48d94b6dc..34775baadaea0993f6f2afc9b4be0770ec116878 100644 (file)
@@ -50,11 +50,8 @@ static void flush(void)
 
 static inline void arch_decomp_setup(void)
 {
-       /* Check in run time if we run on an U8500 or U5500 */
-       if (machine_is_u5500())
-               ux500_uart_base = U5500_UART0_BASE;
-       else
-               ux500_uart_base = U8500_UART2_BASE;
+       /* Use machine_is_foo() macro if you need to switch base someday */
+       ux500_uart_base = U8500_UART2_BASE;
 }
 
 #define arch_decomp_wdog() /* nothing to do here */
diff --git a/arch/arm/mach-ux500/mbox-db5500.c b/arch/arm/mach-ux500/mbox-db5500.c
deleted file mode 100644 (file)
index 0127490..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Author: Stefan Nilsson <stefan.xk.nilsson@stericsson.com> for ST-Ericsson.
- * Author: Martin Persson <martin.persson@stericsson.com> for ST-Ericsson.
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-/*
- * Mailbox nomenclature:
- *
- *       APE           MODEM
- *           mbox pairX
- *   ..........................
- *   .                       .
- *   .           peer        .
- *   .     send  ----        .
- *   .      -->  |  |        .
- *   .           |  |        .
- *   .           ----        .
- *   .                       .
- *   .           local       .
- *   .     rec   ----        .
- *   .           |  | <--    .
- *   .           |  |        .
- *   .           ----        .
- *   .........................
- */
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/device.h>
-#include <linux/interrupt.h>
-#include <linux/spinlock.h>
-#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/irq.h>
-#include <linux/platform_device.h>
-#include <linux/debugfs.h>
-#include <linux/seq_file.h>
-#include <linux/completion.h>
-#include <mach/mbox-db5500.h>
-
-#define MBOX_NAME "mbox"
-
-#define MBOX_FIFO_DATA        0x000
-#define MBOX_FIFO_ADD         0x004
-#define MBOX_FIFO_REMOVE      0x008
-#define MBOX_FIFO_THRES_FREE  0x00C
-#define MBOX_FIFO_THRES_OCCUP 0x010
-#define MBOX_FIFO_STATUS      0x014
-
-#define MBOX_DISABLE_IRQ 0x4
-#define MBOX_ENABLE_IRQ  0x0
-#define MBOX_LATCH 1
-
-/* Global list of all mailboxes */
-static struct list_head mboxs = LIST_HEAD_INIT(mboxs);
-
-static struct mbox *get_mbox_with_id(u8 id)
-{
-       u8 i;
-       struct list_head *pos = &mboxs;
-       for (i = 0; i <= id; i++)
-               pos = pos->next;
-
-       return (struct mbox *) list_entry(pos, struct mbox, list);
-}
-
-int mbox_send(struct mbox *mbox, u32 mbox_msg, bool block)
-{
-       int res = 0;
-
-       spin_lock(&mbox->lock);
-
-       dev_dbg(&(mbox->pdev->dev),
-               "About to buffer 0x%X to mailbox 0x%X."
-               " ri = %d, wi = %d\n",
-               mbox_msg, (u32)mbox, mbox->read_index,
-               mbox->write_index);
-
-       /* Check if write buffer is full */
-       while (((mbox->write_index + 1) % MBOX_BUF_SIZE) == mbox->read_index) {
-               if (!block) {
-                       dev_dbg(&(mbox->pdev->dev),
-                       "Buffer full in non-blocking call! "
-                       "Returning -ENOMEM!\n");
-                       res = -ENOMEM;
-                       goto exit;
-               }
-               spin_unlock(&mbox->lock);
-               dev_dbg(&(mbox->pdev->dev),
-                       "Buffer full in blocking call! Sleeping...\n");
-               mbox->client_blocked = 1;
-               wait_for_completion(&mbox->buffer_available);
-               dev_dbg(&(mbox->pdev->dev),
-                       "Blocking send was woken up! Trying again...\n");
-               spin_lock(&mbox->lock);
-       }
-
-       mbox->buffer[mbox->write_index] = mbox_msg;
-       mbox->write_index = (mbox->write_index + 1) % MBOX_BUF_SIZE;
-
-       /*
-        * Indicate that we want an IRQ as soon as there is a slot
-        * in the FIFO
-        */
-       writel(MBOX_ENABLE_IRQ, mbox->virtbase_peer + MBOX_FIFO_THRES_FREE);
-
-exit:
-       spin_unlock(&mbox->lock);
-       return res;
-}
-EXPORT_SYMBOL(mbox_send);
-
-#if defined(CONFIG_DEBUG_FS)
-/*
- * Expected input: <value> <nbr sends>
- * Example: "echo 0xdeadbeef 4 > mbox-node" sends 0xdeadbeef 4 times
- */
-static ssize_t mbox_write_fifo(struct device *dev,
-                              struct device_attribute *attr,
-                              const char *buf,
-                              size_t count)
-{
-       unsigned long mbox_mess;
-       unsigned long nbr_sends;
-       unsigned long i;
-       char int_buf[16];
-       char *token;
-       char *val;
-
-       struct mbox *mbox = (struct mbox *) dev->platform_data;
-
-       strncpy((char *) &int_buf, buf, sizeof(int_buf));
-       token = (char *) &int_buf;
-
-       /* Parse message */
-       val = strsep(&token, " ");
-       if ((val == NULL) || (strict_strtoul(val, 16, &mbox_mess) != 0))
-               mbox_mess = 0xDEADBEEF;
-
-       val = strsep(&token, " ");
-       if ((val == NULL) || (strict_strtoul(val, 10, &nbr_sends) != 0))
-               nbr_sends = 1;
-
-       dev_dbg(dev, "Will write 0x%lX %ld times using data struct at 0x%X\n",
-               mbox_mess, nbr_sends, (u32) mbox);
-
-       for (i = 0; i < nbr_sends; i++)
-               mbox_send(mbox, mbox_mess, true);
-
-       return count;
-}
-
-static ssize_t mbox_read_fifo(struct device *dev,
-                             struct device_attribute *attr,
-                             char *buf)
-{
-       int mbox_value;
-       struct mbox *mbox = (struct mbox *) dev->platform_data;
-
-       if ((readl(mbox->virtbase_local + MBOX_FIFO_STATUS) & 0x7) <= 0)
-               return sprintf(buf, "Mailbox is empty\n");
-
-       mbox_value = readl(mbox->virtbase_local + MBOX_FIFO_DATA);
-       writel(MBOX_LATCH, (mbox->virtbase_local + MBOX_FIFO_REMOVE));
-
-       return sprintf(buf, "0x%X\n", mbox_value);
-}
-
-static DEVICE_ATTR(fifo, S_IWUSR | S_IRUGO, mbox_read_fifo, mbox_write_fifo);
-
-static int mbox_show(struct seq_file *s, void *data)
-{
-       struct list_head *pos;
-       u8 mbox_index = 0;
-
-       list_for_each(pos, &mboxs) {
-               struct mbox *m =
-                       (struct mbox *) list_entry(pos, struct mbox, list);
-               if (m == NULL) {
-                       seq_printf(s,
-                                  "Unable to retrieve mailbox %d\n",
-                                  mbox_index);
-                       continue;
-               }
-
-               spin_lock(&m->lock);
-               if ((m->virtbase_peer == NULL) || (m->virtbase_local == NULL)) {
-                       seq_printf(s, "MAILBOX %d not setup or corrupt\n",
-                                  mbox_index);
-                       spin_unlock(&m->lock);
-                       continue;
-               }
-
-               seq_printf(s,
-               "===========================\n"
-               " MAILBOX %d\n"
-               " PEER MAILBOX DUMP\n"
-               "---------------------------\n"
-               "FIFO:                 0x%X (%d)\n"
-               "Free     Threshold:   0x%.2X (%d)\n"
-               "Occupied Threshold:   0x%.2X (%d)\n"
-               "Status:               0x%.2X (%d)\n"
-               "   Free spaces  (ot):    %d (%d)\n"
-               "   Occup spaces (ot):    %d (%d)\n"
-               "===========================\n"
-               " LOCAL MAILBOX DUMP\n"
-               "---------------------------\n"
-               "FIFO:                 0x%.X (%d)\n"
-               "Free     Threshold:   0x%.2X (%d)\n"
-               "Occupied Threshold:   0x%.2X (%d)\n"
-               "Status:               0x%.2X (%d)\n"
-               "   Free spaces  (ot):    %d (%d)\n"
-               "   Occup spaces (ot):    %d (%d)\n"
-               "===========================\n"
-               "write_index: %d\n"
-               "read_index : %d\n"
-               "===========================\n"
-               "\n",
-               mbox_index,
-               readl(m->virtbase_peer + MBOX_FIFO_DATA),
-               readl(m->virtbase_peer + MBOX_FIFO_DATA),
-               readl(m->virtbase_peer + MBOX_FIFO_THRES_FREE),
-               readl(m->virtbase_peer + MBOX_FIFO_THRES_FREE),
-               readl(m->virtbase_peer + MBOX_FIFO_THRES_OCCUP),
-               readl(m->virtbase_peer + MBOX_FIFO_THRES_OCCUP),
-               readl(m->virtbase_peer + MBOX_FIFO_STATUS),
-               readl(m->virtbase_peer + MBOX_FIFO_STATUS),
-               (readl(m->virtbase_peer + MBOX_FIFO_STATUS) >> 4) & 0x7,
-               (readl(m->virtbase_peer + MBOX_FIFO_STATUS) >> 7) & 0x1,
-               (readl(m->virtbase_peer + MBOX_FIFO_STATUS) >> 0) & 0x7,
-               (readl(m->virtbase_peer + MBOX_FIFO_STATUS) >> 3) & 0x1,
-               readl(m->virtbase_local + MBOX_FIFO_DATA),
-               readl(m->virtbase_local + MBOX_FIFO_DATA),
-               readl(m->virtbase_local + MBOX_FIFO_THRES_FREE),
-               readl(m->virtbase_local + MBOX_FIFO_THRES_FREE),
-               readl(m->virtbase_local + MBOX_FIFO_THRES_OCCUP),
-               readl(m->virtbase_local + MBOX_FIFO_THRES_OCCUP),
-               readl(m->virtbase_local + MBOX_FIFO_STATUS),
-               readl(m->virtbase_local + MBOX_FIFO_STATUS),
-               (readl(m->virtbase_local + MBOX_FIFO_STATUS) >> 4) & 0x7,
-               (readl(m->virtbase_local + MBOX_FIFO_STATUS) >> 7) & 0x1,
-               (readl(m->virtbase_local + MBOX_FIFO_STATUS) >> 0) & 0x7,
-               (readl(m->virtbase_local + MBOX_FIFO_STATUS) >> 3) & 0x1,
-               m->write_index, m->read_index);
-               mbox_index++;
-               spin_unlock(&m->lock);
-       }
-
-       return 0;
-}
-
-static int mbox_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, mbox_show, NULL);
-}
-
-static const struct file_operations mbox_operations = {
-       .owner = THIS_MODULE,
-       .open = mbox_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-};
-#endif
-
-static irqreturn_t mbox_irq(int irq, void *arg)
-{
-       u32 mbox_value;
-       int nbr_occup;
-       int nbr_free;
-       struct mbox *mbox = (struct mbox *) arg;
-
-       spin_lock(&mbox->lock);
-
-       dev_dbg(&(mbox->pdev->dev),
-               "mbox IRQ [%d] received. ri = %d, wi = %d\n",
-               irq, mbox->read_index, mbox->write_index);
-
-       /*
-        * Check if we have any outgoing messages, and if there is space for
-        * them in the FIFO.
-        */
-       if (mbox->read_index != mbox->write_index) {
-               /*
-                * Check by reading FREE for LOCAL since that indicates
-                * OCCUP for PEER
-                */
-               nbr_free = (readl(mbox->virtbase_local + MBOX_FIFO_STATUS)
-                           >> 4) & 0x7;
-               dev_dbg(&(mbox->pdev->dev),
-                       "Status indicates %d empty spaces in the FIFO!\n",
-                       nbr_free);
-
-               while ((nbr_free > 0) &&
-                      (mbox->read_index != mbox->write_index)) {
-                       /* Write the message and latch it into the FIFO */
-                       writel(mbox->buffer[mbox->read_index],
-                              (mbox->virtbase_peer + MBOX_FIFO_DATA));
-                       writel(MBOX_LATCH,
-                              (mbox->virtbase_peer + MBOX_FIFO_ADD));
-                       dev_dbg(&(mbox->pdev->dev),
-                               "Wrote message 0x%X to addr 0x%X\n",
-                               mbox->buffer[mbox->read_index],
-                               (u32) (mbox->virtbase_peer + MBOX_FIFO_DATA));
-
-                       nbr_free--;
-                       mbox->read_index =
-                               (mbox->read_index + 1) % MBOX_BUF_SIZE;
-               }
-
-               /*
-                * Check if we still want IRQ:s when there is free
-                * space to send
-                */
-               if (mbox->read_index != mbox->write_index) {
-                       dev_dbg(&(mbox->pdev->dev),
-                               "Still have messages to send, but FIFO full. "
-                               "Request IRQ again!\n");
-                       writel(MBOX_ENABLE_IRQ,
-                              mbox->virtbase_peer + MBOX_FIFO_THRES_FREE);
-               } else {
-                       dev_dbg(&(mbox->pdev->dev),
-                               "No more messages to send. "
-                               "Do not request IRQ again!\n");
-                       writel(MBOX_DISABLE_IRQ,
-                              mbox->virtbase_peer + MBOX_FIFO_THRES_FREE);
-               }
-
-               /*
-                * Check if we can signal any blocked clients that it is OK to
-                * start buffering again
-                */
-               if (mbox->client_blocked &&
-                   (((mbox->write_index + 1) % MBOX_BUF_SIZE)
-                    != mbox->read_index)) {
-                       dev_dbg(&(mbox->pdev->dev),
-                               "Waking up blocked client\n");
-                       complete(&mbox->buffer_available);
-                       mbox->client_blocked = 0;
-               }
-       }
-
-       /* Check if we have any incoming messages */
-       nbr_occup = readl(mbox->virtbase_local + MBOX_FIFO_STATUS) & 0x7;
-       if (nbr_occup == 0)
-               goto exit;
-
-       if (mbox->cb == NULL) {
-               dev_dbg(&(mbox->pdev->dev), "No receive callback registered, "
-                       "leaving %d incoming messages in fifo!\n", nbr_occup);
-               goto exit;
-       }
-
-       /* Read and acknowledge the message */
-       mbox_value = readl(mbox->virtbase_local + MBOX_FIFO_DATA);
-       writel(MBOX_LATCH, (mbox->virtbase_local + MBOX_FIFO_REMOVE));
-
-       /* Notify consumer of new mailbox message */
-       dev_dbg(&(mbox->pdev->dev), "Calling callback for message 0x%X!\n",
-               mbox_value);
-       mbox->cb(mbox_value, mbox->client_data);
-
-exit:
-       dev_dbg(&(mbox->pdev->dev), "Exit mbox IRQ. ri = %d, wi = %d\n",
-               mbox->read_index, mbox->write_index);
-       spin_unlock(&mbox->lock);
-
-       return IRQ_HANDLED;
-}
-
-/* Setup is executed once for each mbox pair */
-struct mbox *mbox_setup(u8 mbox_id, mbox_recv_cb_t *mbox_cb, void *priv)
-{
-       struct resource *resource;
-       int irq;
-       int res;
-       struct mbox *mbox;
-
-       mbox = get_mbox_with_id(mbox_id);
-       if (mbox == NULL) {
-               dev_err(&(mbox->pdev->dev), "Incorrect mailbox id: %d!\n",
-                       mbox_id);
-               goto exit;
-       }
-
-       /*
-        * Check if mailbox has been allocated to someone else,
-        * otherwise allocate it
-        */
-       if (mbox->allocated) {
-               dev_err(&(mbox->pdev->dev), "Mailbox number %d is busy!\n",
-                       mbox_id);
-               mbox = NULL;
-               goto exit;
-       }
-       mbox->allocated = true;
-
-       dev_dbg(&(mbox->pdev->dev), "Initiating mailbox number %d: 0x%X...\n",
-               mbox_id, (u32)mbox);
-
-       mbox->client_data = priv;
-       mbox->cb = mbox_cb;
-
-       /* Get addr for peer mailbox and ioremap it */
-       resource = platform_get_resource_byname(mbox->pdev,
-                                               IORESOURCE_MEM,
-                                               "mbox_peer");
-       if (resource == NULL) {
-               dev_err(&(mbox->pdev->dev),
-                       "Unable to retrieve mbox peer resource\n");
-               mbox = NULL;
-               goto exit;
-       }
-       dev_dbg(&(mbox->pdev->dev),
-               "Resource name: %s start: 0x%X, end: 0x%X\n",
-               resource->name, resource->start, resource->end);
-       mbox->virtbase_peer = ioremap(resource->start, resource_size(resource));
-       if (!mbox->virtbase_peer) {
-               dev_err(&(mbox->pdev->dev), "Unable to ioremap peer mbox\n");
-               mbox = NULL;
-               goto exit;
-       }
-       dev_dbg(&(mbox->pdev->dev),
-               "ioremapped peer physical: (0x%X-0x%X) to virtual: 0x%X\n",
-               resource->start, resource->end, (u32) mbox->virtbase_peer);
-
-       /* Get addr for local mailbox and ioremap it */
-       resource = platform_get_resource_byname(mbox->pdev,
-                                               IORESOURCE_MEM,
-                                               "mbox_local");
-       if (resource == NULL) {
-               dev_err(&(mbox->pdev->dev),
-                       "Unable to retrieve mbox local resource\n");
-               mbox = NULL;
-               goto exit;
-       }
-       dev_dbg(&(mbox->pdev->dev),
-               "Resource name: %s start: 0x%X, end: 0x%X\n",
-               resource->name, resource->start, resource->end);
-       mbox->virtbase_local = ioremap(resource->start, resource_size(resource));
-       if (!mbox->virtbase_local) {
-               dev_err(&(mbox->pdev->dev), "Unable to ioremap local mbox\n");
-               mbox = NULL;
-               goto exit;
-       }
-       dev_dbg(&(mbox->pdev->dev),
-               "ioremapped local physical: (0x%X-0x%X) to virtual: 0x%X\n",
-               resource->start, resource->end, (u32) mbox->virtbase_peer);
-
-       init_completion(&mbox->buffer_available);
-       mbox->client_blocked = 0;
-
-       /* Get IRQ for mailbox and allocate it */
-       irq = platform_get_irq_byname(mbox->pdev, "mbox_irq");
-       if (irq < 0) {
-               dev_err(&(mbox->pdev->dev),
-                       "Unable to retrieve mbox irq resource\n");
-               mbox = NULL;
-               goto exit;
-       }
-
-       dev_dbg(&(mbox->pdev->dev), "Allocating irq %d...\n", irq);
-       res = request_irq(irq, mbox_irq, 0, mbox->name, (void *) mbox);
-       if (res < 0) {
-               dev_err(&(mbox->pdev->dev),
-                       "Unable to allocate mbox irq %d\n", irq);
-               mbox = NULL;
-               goto exit;
-       }
-
-       /* Set up mailbox to not launch IRQ on free space in mailbox */
-       writel(MBOX_DISABLE_IRQ, mbox->virtbase_peer + MBOX_FIFO_THRES_FREE);
-
-       /*
-        * Set up mailbox to launch IRQ on new message if we have
-        * a callback set. If not, do not raise IRQ, but keep message
-        * in FIFO for manual retrieval
-        */
-       if (mbox_cb != NULL)
-               writel(MBOX_ENABLE_IRQ,
-                      mbox->virtbase_local + MBOX_FIFO_THRES_OCCUP);
-       else
-               writel(MBOX_DISABLE_IRQ,
-                      mbox->virtbase_local + MBOX_FIFO_THRES_OCCUP);
-
-#if defined(CONFIG_DEBUG_FS)
-       res = device_create_file(&(mbox->pdev->dev), &dev_attr_fifo);
-       if (res != 0)
-               dev_warn(&(mbox->pdev->dev),
-                        "Unable to create mbox sysfs entry");
-
-       (void) debugfs_create_file("mbox", S_IFREG | S_IRUGO, NULL,
-                                  NULL, &mbox_operations);
-#endif
-
-       dev_info(&(mbox->pdev->dev),
-                "Mailbox driver with index %d initiated!\n", mbox_id);
-
-exit:
-       return mbox;
-}
-EXPORT_SYMBOL(mbox_setup);
-
-
-int __init mbox_probe(struct platform_device *pdev)
-{
-       struct mbox local_mbox;
-       struct mbox *mbox;
-       int res = 0;
-       dev_dbg(&(pdev->dev), "Probing mailbox (pdev = 0x%X)...\n", (u32) pdev);
-
-       memset(&local_mbox, 0x0, sizeof(struct mbox));
-
-       /* Associate our mbox data with the platform device */
-       res = platform_device_add_data(pdev,
-                                      (void *) &local_mbox,
-                                      sizeof(struct mbox));
-       if (res != 0) {
-               dev_err(&(pdev->dev),
-                       "Unable to allocate driver platform data!\n");
-               goto exit;
-       }
-
-       mbox = (struct mbox *) pdev->dev.platform_data;
-       mbox->pdev = pdev;
-       mbox->write_index = 0;
-       mbox->read_index = 0;
-
-       INIT_LIST_HEAD(&(mbox->list));
-       list_add_tail(&(mbox->list), &mboxs);
-
-       sprintf(mbox->name, "%s", MBOX_NAME);
-       spin_lock_init(&mbox->lock);
-
-       dev_info(&(pdev->dev), "Mailbox driver loaded\n");
-
-exit:
-       return res;
-}
-
-static struct platform_driver mbox_driver = {
-       .driver = {
-               .name = MBOX_NAME,
-               .owner = THIS_MODULE,
-       },
-};
-
-static int __init mbox_init(void)
-{
-       return platform_driver_probe(&mbox_driver, mbox_probe);
-}
-
-module_init(mbox_init);
-
-void __exit mbox_exit(void)
-{
-       platform_driver_unregister(&mbox_driver);
-}
-
-module_exit(mbox_exit);
-
-MODULE_LICENSE("GPL");
-MODULE_DESCRIPTION("MBOX driver");
diff --git a/arch/arm/mach-ux500/modem-irq-db5500.c b/arch/arm/mach-ux500/modem-irq-db5500.c
deleted file mode 100644 (file)
index 6b86416..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Author: Stefan Nilsson <stefan.xk.nilsson@stericsson.com> for ST-Ericsson.
- * Author: Martin Persson <martin.persson@stericsson.com> for ST-Ericsson.
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/irq.h>
-#include <linux/interrupt.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-
-#include <mach/id.h>
-
-#define MODEM_INTCON_BASE_ADDR 0xBFFD3000
-#define MODEM_INTCON_SIZE 0xFFF
-
-#define DEST_IRQ41_OFFSET 0x2A4
-#define DEST_IRQ43_OFFSET 0x2AC
-#define DEST_IRQ45_OFFSET 0x2B4
-
-#define PRIO_IRQ41_OFFSET 0x6A4
-#define PRIO_IRQ43_OFFSET 0x6AC
-#define PRIO_IRQ45_OFFSET 0x6B4
-
-#define ALLOW_IRQ_OFFSET 0x104
-
-#define MODEM_INTCON_CPU_NBR 0x1
-#define MODEM_INTCON_PRIO_HIGH 0x0
-
-#define MODEM_INTCON_ALLOW_IRQ41 0x0200
-#define MODEM_INTCON_ALLOW_IRQ43 0x0800
-#define MODEM_INTCON_ALLOW_IRQ45 0x2000
-
-#define MODEM_IRQ_REG_OFFSET 0x4
-
-struct modem_irq {
-       void __iomem *modem_intcon_base;
-};
-
-
-static void setup_modem_intcon(void __iomem *modem_intcon_base)
-{
-       /* IC_DESTINATION_BASE_ARRAY - Which CPU to receive the IRQ */
-       writel(MODEM_INTCON_CPU_NBR, modem_intcon_base + DEST_IRQ41_OFFSET);
-       writel(MODEM_INTCON_CPU_NBR, modem_intcon_base + DEST_IRQ43_OFFSET);
-       writel(MODEM_INTCON_CPU_NBR, modem_intcon_base + DEST_IRQ45_OFFSET);
-
-       /* IC_PRIORITY_BASE_ARRAY - IRQ priority in modem IRQ controller */
-       writel(MODEM_INTCON_PRIO_HIGH, modem_intcon_base + PRIO_IRQ41_OFFSET);
-       writel(MODEM_INTCON_PRIO_HIGH, modem_intcon_base + PRIO_IRQ43_OFFSET);
-       writel(MODEM_INTCON_PRIO_HIGH, modem_intcon_base + PRIO_IRQ45_OFFSET);
-
-       /* IC_ALLOW_ARRAY - IRQ enable */
-       writel(MODEM_INTCON_ALLOW_IRQ41 |
-                  MODEM_INTCON_ALLOW_IRQ43 |
-                  MODEM_INTCON_ALLOW_IRQ45,
-                  modem_intcon_base + ALLOW_IRQ_OFFSET);
-}
-
-static irqreturn_t modem_cpu_irq_handler(int irq, void *data)
-{
-       int real_irq;
-       int virt_irq;
-       struct modem_irq *mi = (struct modem_irq *)data;
-
-       /* Read modem side IRQ number from modem IRQ controller */
-       real_irq = readl(mi->modem_intcon_base + MODEM_IRQ_REG_OFFSET) & 0xFF;
-       virt_irq = IRQ_MODEM_EVENTS_BASE + real_irq;
-
-       pr_debug("modem_irq: Worker read addr 0x%X and got value 0x%X "
-                "which will be 0x%X (%d) which translates to "
-                "virtual IRQ 0x%X (%d)!\n",
-                  (u32)mi->modem_intcon_base + MODEM_IRQ_REG_OFFSET,
-                  real_irq,
-                  real_irq & 0xFF,
-                  real_irq & 0xFF,
-                  virt_irq,
-                  virt_irq);
-
-       if (virt_irq != 0)
-               generic_handle_irq(virt_irq);
-
-       pr_debug("modem_irq: Done handling virtual IRQ %d!\n", virt_irq);
-
-       return IRQ_HANDLED;
-}
-
-static void create_virtual_irq(int irq, struct irq_chip *modem_irq_chip)
-{
-       irq_set_chip_and_handler(irq, modem_irq_chip, handle_simple_irq);
-       set_irq_flags(irq, IRQF_VALID);
-
-       pr_debug("modem_irq: Created virtual IRQ %d\n", irq);
-}
-
-static int modem_irq_init(void)
-{
-       int err;
-       static struct irq_chip  modem_irq_chip;
-       struct modem_irq *mi;
-
-       if (!cpu_is_u5500())
-               return -ENODEV;
-
-       pr_info("modem_irq: Set up IRQ handler for incoming modem IRQ %d\n",
-                  IRQ_DB5500_MODEM);
-
-       mi = kmalloc(sizeof(struct modem_irq), GFP_KERNEL);
-       if (!mi) {
-               pr_err("modem_irq: Could not allocate device\n");
-               return -ENOMEM;
-       }
-
-       mi->modem_intcon_base =
-               ioremap(MODEM_INTCON_BASE_ADDR, MODEM_INTCON_SIZE);
-       pr_debug("modem_irq: ioremapped modem_intcon_base from "
-                "phy 0x%x to virt 0x%x\n", MODEM_INTCON_BASE_ADDR,
-                (u32)mi->modem_intcon_base);
-
-       setup_modem_intcon(mi->modem_intcon_base);
-
-       modem_irq_chip = dummy_irq_chip;
-       modem_irq_chip.name = "modem_irq";
-
-       /* Create the virtual IRQ:s needed */
-       create_virtual_irq(MBOX_PAIR0_VIRT_IRQ, &modem_irq_chip);
-       create_virtual_irq(MBOX_PAIR1_VIRT_IRQ, &modem_irq_chip);
-       create_virtual_irq(MBOX_PAIR2_VIRT_IRQ, &modem_irq_chip);
-
-       err = request_threaded_irq(IRQ_DB5500_MODEM, NULL,
-                                  modem_cpu_irq_handler, IRQF_ONESHOT,
-                                  "modem_irq", mi);
-       if (err)
-               pr_err("modem_irq: Could not register IRQ %d\n",
-                      IRQ_DB5500_MODEM);
-
-       return 0;
-}
-
-arch_initcall(modem_irq_init);
diff --git a/arch/arm/mach-ux500/pins-db5500.h b/arch/arm/mach-ux500/pins-db5500.h
deleted file mode 100644 (file)
index bf50c21..0000000
+++ /dev/null
@@ -1,620 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License terms: GNU General Public License, version 2
- * Author: Rabin Vincent <rabin.vincent@stericsson.com>
- */
-
-#ifndef __MACH_DB5500_PINS_H
-#define __MACH_DB5500_PINS_H
-
-#define GPIO0_GPIO             PIN_CFG(0, GPIO)
-#define GPIO0_SM_CS3n          PIN_CFG(0, ALT_A)
-
-#define GPIO1_GPIO             PIN_CFG(1, GPIO)
-#define GPIO1_SM_A3            PIN_CFG(1, ALT_A)
-
-#define GPIO2_GPIO             PIN_CFG(2, GPIO)
-#define GPIO2_SM_A4            PIN_CFG(2, ALT_A)
-#define GPIO2_SM_AVD           PIN_CFG(2, ALT_B)
-
-#define GPIO3_GPIO             PIN_CFG(3, GPIO)
-#define GPIO3_I2C1_SCL         PIN_CFG(3, ALT_A)
-
-#define GPIO4_GPIO             PIN_CFG(4, GPIO)
-#define GPIO4_I2C1_SDA         PIN_CFG(4, ALT_A)
-
-#define GPIO5_GPIO             PIN_CFG(5, GPIO)
-#define GPIO5_MC0_DAT0         PIN_CFG(5, ALT_A)
-#define GPIO5_SM_ADQ8          PIN_CFG(5, ALT_B)
-
-#define GPIO6_GPIO             PIN_CFG(6, GPIO)
-#define GPIO6_MC0_DAT1         PIN_CFG(6, ALT_A)
-#define GPIO6_SM_ADQ0          PIN_CFG(6, ALT_B)
-
-#define GPIO7_GPIO             PIN_CFG(7, GPIO)
-#define GPIO7_MC0_DAT2         PIN_CFG(7, ALT_A)
-#define GPIO7_SM_ADQ9          PIN_CFG(7, ALT_B)
-
-#define GPIO8_GPIO             PIN_CFG(8, GPIO)
-#define GPIO8_MC0_DAT3         PIN_CFG(8, ALT_A)
-#define GPIO8_SM_ADQ1          PIN_CFG(8, ALT_B)
-
-#define GPIO9_GPIO             PIN_CFG(9, GPIO)
-#define GPIO9_MC0_DAT4         PIN_CFG(9, ALT_A)
-#define GPIO9_SM_ADQ10         PIN_CFG(9, ALT_B)
-
-#define GPIO10_GPIO            PIN_CFG(10, GPIO)
-#define GPIO10_MC0_DAT5                PIN_CFG(10, ALT_A)
-#define GPIO10_SM_ADQ2         PIN_CFG(10, ALT_B)
-
-#define GPIO11_GPIO            PIN_CFG(11, GPIO)
-#define GPIO11_MC0_DAT6                PIN_CFG(11, ALT_A)
-#define GPIO11_SM_ADQ11                PIN_CFG(11, ALT_B)
-
-#define GPIO12_GPIO            PIN_CFG(12, GPIO)
-#define GPIO12_MC0_DAT7                PIN_CFG(12, ALT_A)
-#define GPIO12_SM_ADQ3         PIN_CFG(12, ALT_B)
-
-#define GPIO13_GPIO            PIN_CFG(13, GPIO)
-#define GPIO13_MC0_CMD         PIN_CFG(13, ALT_A)
-#define GPIO13_SM_BUSY0n       PIN_CFG(13, ALT_B)
-#define GPIO13_SM_WAIT0n       PIN_CFG(13, ALT_C)
-
-#define GPIO14_GPIO            PIN_CFG(14, GPIO)
-#define GPIO14_MC0_CLK         PIN_CFG(14, ALT_A)
-#define GPIO14_SM_CS1n         PIN_CFG(14, ALT_B)
-#define GPIO14_SM_CKO          PIN_CFG(14, ALT_C)
-
-#define GPIO15_GPIO            PIN_CFG(15, GPIO)
-#define GPIO15_SM_A5           PIN_CFG(15, ALT_A)
-#define GPIO15_SM_CLE          PIN_CFG(15, ALT_B)
-
-#define GPIO16_GPIO            PIN_CFG(16, GPIO)
-#define GPIO16_MC2_CMD         PIN_CFG(16, ALT_A)
-#define GPIO16_SM_OEn          PIN_CFG(16, ALT_B)
-
-#define GPIO17_GPIO            PIN_CFG(17, GPIO)
-#define GPIO17_MC2_CLK         PIN_CFG(17, ALT_A)
-#define GPIO17_SM_WEn          PIN_CFG(17, ALT_B)
-
-#define GPIO18_GPIO            PIN_CFG(18, GPIO)
-#define GPIO18_SM_A6           PIN_CFG(18, ALT_A)
-#define GPIO18_SM_ALE          PIN_CFG(18, ALT_B)
-#define GPIO18_SM_AVDn         PIN_CFG(18, ALT_C)
-
-#define GPIO19_GPIO            PIN_CFG(19, GPIO)
-#define GPIO19_MC2_DAT1                PIN_CFG(19, ALT_A)
-#define GPIO19_SM_ADQ4         PIN_CFG(19, ALT_B)
-
-#define GPIO20_GPIO            PIN_CFG(20, GPIO)
-#define GPIO20_MC2_DAT3                PIN_CFG(20, ALT_A)
-#define GPIO20_SM_ADQ5         PIN_CFG(20, ALT_B)
-
-#define GPIO21_GPIO            PIN_CFG(21, GPIO)
-#define GPIO21_MC2_DAT5                PIN_CFG(21, ALT_A)
-#define GPIO21_SM_ADQ6         PIN_CFG(21, ALT_B)
-
-#define GPIO22_GPIO            PIN_CFG(22, GPIO)
-#define GPIO22_MC2_DAT7                PIN_CFG(22, ALT_A)
-#define GPIO22_SM_ADQ7         PIN_CFG(22, ALT_B)
-
-#define GPIO23_GPIO            PIN_CFG(23, GPIO)
-#define GPIO23_MC2_DAT0                PIN_CFG(23, ALT_A)
-#define GPIO23_SM_ADQ12                PIN_CFG(23, ALT_B)
-#define GPIO23_MC0_DAT1                PIN_CFG(23, ALT_C)
-
-#define GPIO24_GPIO            PIN_CFG(24, GPIO)
-#define GPIO24_MC2_DAT2                PIN_CFG(24, ALT_A)
-#define GPIO24_SM_ADQ13                PIN_CFG(24, ALT_B)
-#define GPIO24_MC0_DAT3                PIN_CFG(24, ALT_C)
-
-#define GPIO25_GPIO            PIN_CFG(25, GPIO)
-#define GPIO25_MC2_DAT4                PIN_CFG(25, ALT_A)
-#define GPIO25_SM_ADQ14                PIN_CFG(25, ALT_B)
-#define GPIO25_MC0_CMD         PIN_CFG(25, ALT_C)
-
-#define GPIO26_GPIO            PIN_CFG(26, GPIO)
-#define GPIO26_MC2_DAT6                PIN_CFG(26, ALT_A)
-#define GPIO26_SM_ADQ15                PIN_CFG(26, ALT_B)
-
-#define GPIO27_GPIO            PIN_CFG(27, GPIO)
-#define GPIO27_SM_CS0n         PIN_CFG(27, ALT_A)
-#define GPIO27_SM_PS0n         PIN_CFG(27, ALT_B)
-
-#define GPIO28_GPIO            PIN_CFG(28, GPIO)
-#define GPIO28_U0_TXD          PIN_CFG(28, ALT_A)
-#define GPIO28_SM_A0           PIN_CFG(28, ALT_B)
-
-#define GPIO29_GPIO            PIN_CFG(29, GPIO)
-#define GPIO29_U0_RXD          PIN_CFG(29, ALT_A)
-#define GPIO29_SM_A1           PIN_CFG(29, ALT_B)
-#define GPIO29_PWM_0           PIN_CFG(29, ALT_C)
-
-#define GPIO30_GPIO            PIN_CFG(30, GPIO)
-#define GPIO30_MC0_DAT5                PIN_CFG(30, ALT_A)
-#define GPIO30_SM_A2           PIN_CFG(30, ALT_B)
-#define GPIO30_PWM_1           PIN_CFG(30, ALT_C)
-
-#define GPIO31_GPIO            PIN_CFG(31, GPIO)
-#define GPIO31_MC0_DAT7                PIN_CFG(31, ALT_A)
-#define GPIO31_SM_CS2n         PIN_CFG(31, ALT_B)
-#define GPIO31_PWM_2           PIN_CFG(31, ALT_C)
-
-#define GPIO32_GPIO            PIN_CFG(32, GPIO)
-#define GPIO32_MSP0_TCK                PIN_CFG(32, ALT_A)
-#define GPIO32_ACCI2S0_SCK     PIN_CFG(32, ALT_B)
-
-#define GPIO33_GPIO            PIN_CFG(33, GPIO)
-#define GPIO33_MSP0_TFS                PIN_CFG(33, ALT_A)
-#define GPIO33_ACCI2S0_WS      PIN_CFG(33, ALT_B)
-
-#define GPIO34_GPIO            PIN_CFG(34, GPIO)
-#define GPIO34_MSP0_TXD                PIN_CFG(34, ALT_A)
-#define GPIO34_ACCI2S0_DLD     PIN_CFG(34, ALT_B)
-
-#define GPIO35_GPIO            PIN_CFG(35, GPIO)
-#define GPIO35_MSP0_RXD                PIN_CFG(35, ALT_A)
-#define GPIO35_ACCI2S0_ULD     PIN_CFG(35, ALT_B)
-
-#define GPIO64_GPIO            PIN_CFG(64, GPIO)
-#define GPIO64_USB_DAT0                PIN_CFG(64, ALT_A)
-#define GPIO64_U0_TXD          PIN_CFG(64, ALT_B)
-
-#define GPIO65_GPIO            PIN_CFG(65, GPIO)
-#define GPIO65_USB_DAT1                PIN_CFG(65, ALT_A)
-#define GPIO65_U0_RXD          PIN_CFG(65, ALT_B)
-
-#define GPIO66_GPIO            PIN_CFG(66, GPIO)
-#define GPIO66_USB_DAT2                PIN_CFG(66, ALT_A)
-
-#define GPIO67_GPIO            PIN_CFG(67, GPIO)
-#define GPIO67_USB_DAT3                PIN_CFG(67, ALT_A)
-
-#define GPIO68_GPIO            PIN_CFG(68, GPIO)
-#define GPIO68_USB_DAT4                PIN_CFG(68, ALT_A)
-
-#define GPIO69_GPIO            PIN_CFG(69, GPIO)
-#define GPIO69_USB_DAT5                PIN_CFG(69, ALT_A)
-
-#define GPIO70_GPIO            PIN_CFG(70, GPIO)
-#define GPIO70_USB_DAT6                PIN_CFG(70, ALT_A)
-
-#define GPIO71_GPIO            PIN_CFG(71, GPIO)
-#define GPIO71_USB_DAT7                PIN_CFG(71, ALT_A)
-
-#define GPIO72_GPIO            PIN_CFG(72, GPIO)
-#define GPIO72_USB_STP         PIN_CFG(72, ALT_A)
-
-#define GPIO73_GPIO            PIN_CFG(73, GPIO)
-#define GPIO73_USB_DIR         PIN_CFG(73, ALT_A)
-
-#define GPIO74_GPIO            PIN_CFG(74, GPIO)
-#define GPIO74_USB_NXT         PIN_CFG(74, ALT_A)
-
-#define GPIO75_GPIO            PIN_CFG(75, GPIO)
-#define GPIO75_USB_XCLK                PIN_CFG(75, ALT_A)
-
-#define GPIO76_GPIO            PIN_CFG(76, GPIO)
-
-#define GPIO77_GPIO            PIN_CFG(77, GPIO)
-#define GPIO77_ACCTX_ON                PIN_CFG(77, ALT_A)
-
-#define GPIO78_GPIO            PIN_CFG(78, GPIO)
-#define GPIO78_IRQn            PIN_CFG(78, ALT_A)
-
-#define GPIO79_GPIO            PIN_CFG(79, GPIO)
-#define GPIO79_ACCSIM_Clk      PIN_CFG(79, ALT_A)
-
-#define GPIO80_GPIO            PIN_CFG(80, GPIO)
-#define GPIO80_ACCSIM_Da       PIN_CFG(80, ALT_A)
-
-#define GPIO81_GPIO            PIN_CFG(81, GPIO)
-#define GPIO81_ACCSIM_Reset    PIN_CFG(81, ALT_A)
-
-#define GPIO82_GPIO            PIN_CFG(82, GPIO)
-#define GPIO82_ACCSIM_DDir     PIN_CFG(82, ALT_A)
-
-#define GPIO96_GPIO            PIN_CFG(96, GPIO)
-#define GPIO96_MSP1_TCK                PIN_CFG(96, ALT_A)
-#define GPIO96_PRCMU_DEBUG3    PIN_CFG(96, ALT_B)
-#define GPIO96_PRCMU_DEBUG7    PIN_CFG(96, ALT_C)
-
-#define GPIO97_GPIO            PIN_CFG(97, GPIO)
-#define GPIO97_MSP1_TFS                PIN_CFG(97, ALT_A)
-#define GPIO97_PRCMU_DEBUG2    PIN_CFG(97, ALT_B)
-#define GPIO97_PRCMU_DEBUG6    PIN_CFG(97, ALT_C)
-
-#define GPIO98_GPIO            PIN_CFG(98, GPIO)
-#define GPIO98_MSP1_TXD                PIN_CFG(98, ALT_A)
-#define GPIO98_PRCMU_DEBUG1    PIN_CFG(98, ALT_B)
-#define GPIO98_PRCMU_DEBUG5    PIN_CFG(98, ALT_C)
-
-#define GPIO99_GPIO            PIN_CFG(99, GPIO)
-#define GPIO99_MSP1_RXD                PIN_CFG(99, ALT_A)
-#define GPIO99_PRCMU_DEBUG0    PIN_CFG(99, ALT_B)
-#define GPIO99_PRCMU_DEBUG4    PIN_CFG(99, ALT_C)
-
-#define GPIO100_GPIO           PIN_CFG(100, GPIO)
-#define GPIO100_I2C0_SCL       PIN_CFG(100, ALT_A)
-
-#define GPIO101_GPIO           PIN_CFG(101, GPIO)
-#define GPIO101_I2C0_SDA       PIN_CFG(101, ALT_A)
-
-#define GPIO128_GPIO           PIN_CFG(128, GPIO)
-#define GPIO128_KP_I0          PIN_CFG(128, ALT_A)
-#define GPIO128_BUSMON_D0      PIN_CFG(128, ALT_B)
-
-#define GPIO129_GPIO           PIN_CFG(129, GPIO)
-#define GPIO129_KP_O0          PIN_CFG(129, ALT_A)
-#define GPIO129_BUSMON_D1      PIN_CFG(129, ALT_B)
-
-#define GPIO130_GPIO           PIN_CFG(130, GPIO)
-#define GPIO130_KP_I1          PIN_CFG(130, ALT_A)
-#define GPIO130_BUSMON_D2      PIN_CFG(130, ALT_B)
-
-#define GPIO131_GPIO           PIN_CFG(131, GPIO)
-#define GPIO131_KP_O1          PIN_CFG(131, ALT_A)
-#define GPIO131_BUSMON_D3      PIN_CFG(131, ALT_B)
-
-#define GPIO132_GPIO           PIN_CFG(132, GPIO)
-#define GPIO132_KP_I2          PIN_CFG(132, ALT_A)
-#define GPIO132_ETM_D15                PIN_CFG(132, ALT_B)
-#define GPIO132_STMAPE_CLK     PIN_CFG(132, ALT_C)
-
-#define GPIO133_GPIO           PIN_CFG(133, GPIO)
-#define GPIO133_KP_O2          PIN_CFG(133, ALT_A)
-#define GPIO133_ETM_D14                PIN_CFG(133, ALT_B)
-#define GPIO133_U0_RXD         PIN_CFG(133, ALT_C)
-
-#define GPIO134_GPIO           PIN_CFG(134, GPIO)
-#define GPIO134_KP_I3          PIN_CFG(134, ALT_A)
-#define GPIO134_ETM_D13                PIN_CFG(134, ALT_B)
-#define GPIO134_STMAPE_DAT0    PIN_CFG(134, ALT_C)
-
-#define GPIO135_GPIO           PIN_CFG(135, GPIO)
-#define GPIO135_KP_O3          PIN_CFG(135, ALT_A)
-#define GPIO135_ETM_D12                PIN_CFG(135, ALT_B)
-#define GPIO135_STMAPE_DAT1    PIN_CFG(135, ALT_C)
-
-#define GPIO136_GPIO           PIN_CFG(136, GPIO)
-#define GPIO136_KP_I4          PIN_CFG(136, ALT_A)
-#define GPIO136_ETM_D11                PIN_CFG(136, ALT_B)
-#define GPIO136_STMAPE_DAT2    PIN_CFG(136, ALT_C)
-
-#define GPIO137_GPIO           PIN_CFG(137, GPIO)
-#define GPIO137_KP_O4          PIN_CFG(137, ALT_A)
-#define GPIO137_ETM_D10                PIN_CFG(137, ALT_B)
-#define GPIO137_STMAPE_DAT3    PIN_CFG(137, ALT_C)
-
-#define GPIO138_GPIO           PIN_CFG(138, GPIO)
-#define GPIO138_KP_I5          PIN_CFG(138, ALT_A)
-#define GPIO138_ETM_D9         PIN_CFG(138, ALT_B)
-#define GPIO138_U0_TXD         PIN_CFG(138, ALT_C)
-
-#define GPIO139_GPIO           PIN_CFG(139, GPIO)
-#define GPIO139_KP_O5          PIN_CFG(139, ALT_A)
-#define GPIO139_ETM_D8         PIN_CFG(139, ALT_B)
-#define GPIO139_BUSMON_D11     PIN_CFG(139, ALT_C)
-
-#define GPIO140_GPIO           PIN_CFG(140, GPIO)
-#define GPIO140_KP_I6          PIN_CFG(140, ALT_A)
-#define GPIO140_ETM_D7         PIN_CFG(140, ALT_B)
-#define GPIO140_STMAPE_CLK     PIN_CFG(140, ALT_C)
-
-#define GPIO141_GPIO           PIN_CFG(141, GPIO)
-#define GPIO141_KP_O6          PIN_CFG(141, ALT_A)
-#define GPIO141_ETM_D6         PIN_CFG(141, ALT_B)
-#define GPIO141_U0_RXD         PIN_CFG(141, ALT_C)
-
-#define GPIO142_GPIO           PIN_CFG(142, GPIO)
-#define GPIO142_KP_I7          PIN_CFG(142, ALT_A)
-#define GPIO142_ETM_D5         PIN_CFG(142, ALT_B)
-#define GPIO142_STMAPE_DAT0    PIN_CFG(142, ALT_C)
-
-#define GPIO143_GPIO           PIN_CFG(143, GPIO)
-#define GPIO143_KP_O7          PIN_CFG(143, ALT_A)
-#define GPIO143_ETM_D4         PIN_CFG(143, ALT_B)
-#define GPIO143_STMAPE_DAT1    PIN_CFG(143, ALT_C)
-
-#define GPIO144_GPIO           PIN_CFG(144, GPIO)
-#define GPIO144_I2C3_SCL       PIN_CFG(144, ALT_A)
-#define GPIO144_ETM_D3         PIN_CFG(144, ALT_B)
-#define GPIO144_STMAPE_DAT2    PIN_CFG(144, ALT_C)
-
-#define GPIO145_GPIO           PIN_CFG(145, GPIO)
-#define GPIO145_I2C3_SDA       PIN_CFG(145, ALT_A)
-#define GPIO145_ETM_D2         PIN_CFG(145, ALT_B)
-#define GPIO145_STMAPE_DAT3    PIN_CFG(145, ALT_C)
-
-#define GPIO146_GPIO           PIN_CFG(146, GPIO)
-#define GPIO146_PWM_0          PIN_CFG(146, ALT_A)
-#define GPIO146_ETM_D1         PIN_CFG(146, ALT_B)
-
-#define GPIO147_GPIO           PIN_CFG(147, GPIO)
-#define GPIO147_PWM_1          PIN_CFG(147, ALT_A)
-#define GPIO147_ETM_D0         PIN_CFG(147, ALT_B)
-
-#define GPIO148_GPIO           PIN_CFG(148, GPIO)
-#define GPIO148_PWM_2          PIN_CFG(148, ALT_A)
-#define GPIO148_ETM_CLK                PIN_CFG(148, ALT_B)
-
-#define GPIO160_GPIO           PIN_CFG(160, GPIO)
-#define GPIO160_CLKOUT_REQn    PIN_CFG(160, ALT_A)
-
-#define GPIO161_GPIO           PIN_CFG(161, GPIO)
-#define GPIO161_CLKOUT_0       PIN_CFG(161, ALT_A)
-
-#define GPIO162_GPIO           PIN_CFG(162, GPIO)
-#define GPIO162_CLKOUT_1       PIN_CFG(162, ALT_A)
-
-#define GPIO163_GPIO           PIN_CFG(163, GPIO)
-
-#define GPIO164_GPIO           PIN_CFG(164, GPIO)
-#define GPIO164_GPS_START      PIN_CFG(164, ALT_A)
-
-#define GPIO165_GPIO           PIN_CFG(165, GPIO)
-#define GPIO165_SPI1_CS2n      PIN_CFG(165, ALT_A)
-#define GPIO165_U3_RXD         PIN_CFG(165, ALT_B)
-#define GPIO165_BUSMON_D20     PIN_CFG(165, ALT_C)
-
-#define GPIO166_GPIO           PIN_CFG(166, GPIO)
-#define GPIO166_SPI1_CS1n      PIN_CFG(166, ALT_A)
-#define GPIO166_U3_TXD         PIN_CFG(166, ALT_B)
-#define GPIO166_BUSMON_D21     PIN_CFG(166, ALT_C)
-
-#define GPIO167_GPIO           PIN_CFG(167, GPIO)
-#define GPIO167_SPI1_CS0n      PIN_CFG(167, ALT_A)
-#define GPIO167_U3_RTSn                PIN_CFG(167, ALT_B)
-#define GPIO167_BUSMON_D22     PIN_CFG(167, ALT_C)
-
-#define GPIO168_GPIO           PIN_CFG(168, GPIO)
-#define GPIO168_SPI1_RXD       PIN_CFG(168, ALT_A)
-#define GPIO168_U3_CTSn                PIN_CFG(168, ALT_B)
-#define GPIO168_BUSMON_D23     PIN_CFG(168, ALT_C)
-
-#define GPIO169_GPIO           PIN_CFG(169, GPIO)
-#define GPIO169_SPI1_TXD       PIN_CFG(169, ALT_A)
-#define GPIO169_DDR_RC         PIN_CFG(169, ALT_B)
-#define GPIO169_BUSMON_D24     PIN_CFG(169, ALT_C)
-
-#define GPIO170_GPIO           PIN_CFG(170, GPIO)
-#define GPIO170_SPI1_CLK       PIN_CFG(170, ALT_A)
-
-#define GPIO171_GPIO           PIN_CFG(171, GPIO)
-#define GPIO171_MC3_DAT0       PIN_CFG(171, ALT_A)
-#define GPIO171_SPI3_RXD       PIN_CFG(171, ALT_B)
-#define GPIO171_BUSMON_D25     PIN_CFG(171, ALT_C)
-
-#define GPIO172_GPIO           PIN_CFG(172, GPIO)
-#define GPIO172_MC3_DAT1       PIN_CFG(172, ALT_A)
-#define GPIO172_SPI3_CS1n      PIN_CFG(172, ALT_B)
-#define GPIO172_BUSMON_D26     PIN_CFG(172, ALT_C)
-
-#define GPIO173_GPIO           PIN_CFG(173, GPIO)
-#define GPIO173_MC3_DAT2       PIN_CFG(173, ALT_A)
-#define GPIO173_SPI3_CS2n      PIN_CFG(173, ALT_B)
-#define GPIO173_BUSMON_D27     PIN_CFG(173, ALT_C)
-
-#define GPIO174_GPIO           PIN_CFG(174, GPIO)
-#define GPIO174_MC3_DAT3       PIN_CFG(174, ALT_A)
-#define GPIO174_SPI3_CS0n      PIN_CFG(174, ALT_B)
-#define GPIO174_BUSMON_D28     PIN_CFG(174, ALT_C)
-
-#define GPIO175_GPIO           PIN_CFG(175, GPIO)
-#define GPIO175_MC3_CMD                PIN_CFG(175, ALT_A)
-#define GPIO175_SPI3_TXD       PIN_CFG(175, ALT_B)
-#define GPIO175_BUSMON_D29     PIN_CFG(175, ALT_C)
-
-#define GPIO176_GPIO           PIN_CFG(176, GPIO)
-#define GPIO176_MC3_CLK                PIN_CFG(176, ALT_A)
-#define GPIO176_SPI3_CLK       PIN_CFG(176, ALT_B)
-
-#define GPIO177_GPIO           PIN_CFG(177, GPIO)
-#define GPIO177_U2_RXD         PIN_CFG(177, ALT_A)
-#define GPIO177_I2C3_SCL       PIN_CFG(177, ALT_B)
-#define GPIO177_BUSMON_D30     PIN_CFG(177, ALT_C)
-
-#define GPIO178_GPIO           PIN_CFG(178, GPIO)
-#define GPIO178_U2_TXD         PIN_CFG(178, ALT_A)
-#define GPIO178_I2C3_SDA       PIN_CFG(178, ALT_B)
-#define GPIO178_BUSMON_D31     PIN_CFG(178, ALT_C)
-
-#define GPIO179_GPIO           PIN_CFG(179, GPIO)
-#define GPIO179_U2_CTSn                PIN_CFG(179, ALT_A)
-#define GPIO179_U3_RXD         PIN_CFG(179, ALT_B)
-#define GPIO179_BUSMON_D32     PIN_CFG(179, ALT_C)
-
-#define GPIO180_GPIO           PIN_CFG(180, GPIO)
-#define GPIO180_U2_RTSn                PIN_CFG(180, ALT_A)
-#define GPIO180_U3_TXD         PIN_CFG(180, ALT_B)
-#define GPIO180_BUSMON_D33     PIN_CFG(180, ALT_C)
-
-#define GPIO185_GPIO           PIN_CFG(185, GPIO)
-#define GPIO185_SPI3_CS2n      PIN_CFG(185, ALT_A)
-#define GPIO185_MC4_DAT0       PIN_CFG(185, ALT_B)
-
-#define GPIO186_GPIO           PIN_CFG(186, GPIO)
-#define GPIO186_SPI3_CS1n      PIN_CFG(186, ALT_A)
-#define GPIO186_MC4_DAT1       PIN_CFG(186, ALT_B)
-
-#define GPIO187_GPIO           PIN_CFG(187, GPIO)
-#define GPIO187_SPI3_CS0n      PIN_CFG(187, ALT_A)
-#define GPIO187_MC4_DAT2       PIN_CFG(187, ALT_B)
-
-#define GPIO188_GPIO           PIN_CFG(188, GPIO)
-#define GPIO188_SPI3_RXD       PIN_CFG(188, ALT_A)
-#define GPIO188_MC4_DAT3       PIN_CFG(188, ALT_B)
-
-#define GPIO189_GPIO           PIN_CFG(189, GPIO)
-#define GPIO189_SPI3_TXD       PIN_CFG(189, ALT_A)
-#define GPIO189_MC4_CMD                PIN_CFG(189, ALT_B)
-
-#define GPIO190_GPIO           PIN_CFG(190, GPIO)
-#define GPIO190_SPI3_CLK       PIN_CFG(190, ALT_A)
-#define GPIO190_MC4_CLK                PIN_CFG(190, ALT_B)
-
-#define GPIO191_GPIO           PIN_CFG(191, GPIO)
-#define GPIO191_MC1_DAT0       PIN_CFG(191, ALT_A)
-#define GPIO191_MC4_DAT4       PIN_CFG(191, ALT_B)
-#define GPIO191_STMAPE_DAT0    PIN_CFG(191, ALT_C)
-
-#define GPIO192_GPIO           PIN_CFG(192, GPIO)
-#define GPIO192_MC1_DAT1       PIN_CFG(192, ALT_A)
-#define GPIO192_MC4_DAT5       PIN_CFG(192, ALT_B)
-#define GPIO192_STMAPE_DAT1    PIN_CFG(192, ALT_C)
-
-#define GPIO193_GPIO           PIN_CFG(193, GPIO)
-#define GPIO193_MC1_DAT2       PIN_CFG(193, ALT_A)
-#define GPIO193_MC4_DAT6       PIN_CFG(193, ALT_B)
-#define GPIO193_STMAPE_DAT2    PIN_CFG(193, ALT_C)
-
-#define GPIO194_GPIO           PIN_CFG(194, GPIO)
-#define GPIO194_MC1_DAT3       PIN_CFG(194, ALT_A)
-#define GPIO194_MC4_DAT7       PIN_CFG(194, ALT_B)
-#define GPIO194_STMAPE_DAT3    PIN_CFG(194, ALT_C)
-
-#define GPIO195_GPIO           PIN_CFG(195, GPIO)
-#define GPIO195_MC1_CLK                PIN_CFG(195, ALT_A)
-#define GPIO195_STMAPE_CLK     PIN_CFG(195, ALT_B)
-#define GPIO195_BUSMON_CLK     PIN_CFG(195, ALT_C)
-
-#define GPIO196_GPIO           PIN_CFG(196, GPIO)
-#define GPIO196_MC1_CMD                PIN_CFG(196, ALT_A)
-#define GPIO196_U0_RXD         PIN_CFG(196, ALT_B)
-#define GPIO196_BUSMON_D38     PIN_CFG(196, ALT_C)
-
-#define GPIO197_GPIO           PIN_CFG(197, GPIO)
-#define GPIO197_MC1_CMDDIR     PIN_CFG(197, ALT_A)
-#define GPIO197_BUSMON_D39     PIN_CFG(197, ALT_B)
-
-#define GPIO198_GPIO           PIN_CFG(198, GPIO)
-#define GPIO198_MC1_FBCLK      PIN_CFG(198, ALT_A)
-
-#define GPIO199_GPIO           PIN_CFG(199, GPIO)
-#define GPIO199_MC1_DAT0DIR    PIN_CFG(199, ALT_A)
-#define GPIO199_BUSMON_D40     PIN_CFG(199, ALT_B)
-
-#define GPIO200_GPIO           PIN_CFG(200, GPIO)
-#define GPIO200_U1_TXD         PIN_CFG(200, ALT_A)
-#define GPIO200_ACCU0_RTSn     PIN_CFG(200, ALT_B)
-
-#define GPIO201_GPIO           PIN_CFG(201, GPIO)
-#define GPIO201_U1_RXD         PIN_CFG(201, ALT_A)
-#define GPIO201_ACCU0_CTSn     PIN_CFG(201, ALT_B)
-
-#define GPIO202_GPIO           PIN_CFG(202, GPIO)
-#define GPIO202_U1_CTSn                PIN_CFG(202, ALT_A)
-#define GPIO202_ACCU0_RXD      PIN_CFG(202, ALT_B)
-
-#define GPIO203_GPIO           PIN_CFG(203, GPIO)
-#define GPIO203_U1_RTSn                PIN_CFG(203, ALT_A)
-#define GPIO203_ACCU0_TXD      PIN_CFG(203, ALT_B)
-
-#define GPIO204_GPIO           PIN_CFG(204, GPIO)
-#define GPIO204_SPI0_CS2n      PIN_CFG(204, ALT_A)
-#define GPIO204_ACCGPIO_000    PIN_CFG(204, ALT_B)
-#define GPIO204_LCD_VSI1       PIN_CFG(204, ALT_C)
-
-#define GPIO205_GPIO           PIN_CFG(205, GPIO)
-#define GPIO205_SPI0_CS1n      PIN_CFG(205, ALT_A)
-#define GPIO205_ACCGPIO_001    PIN_CFG(205, ALT_B)
-#define GPIO205_LCD_D3         PIN_CFG(205, ALT_C)
-
-#define GPIO206_GPIO           PIN_CFG(206, GPIO)
-#define GPIO206_SPI0_CS0n      PIN_CFG(206, ALT_A)
-#define GPIO206_ACCGPIO_002    PIN_CFG(206, ALT_B)
-#define GPIO206_LCD_D2         PIN_CFG(206, ALT_C)
-
-#define GPIO207_GPIO           PIN_CFG(207, GPIO)
-#define GPIO207_SPI0_RXD       PIN_CFG(207, ALT_A)
-#define GPIO207_ACCGPIO_003    PIN_CFG(207, ALT_B)
-#define GPIO207_LCD_D1         PIN_CFG(207, ALT_C)
-
-#define GPIO208_GPIO           PIN_CFG(208, GPIO)
-#define GPIO208_SPI0_TXD       PIN_CFG(208, ALT_A)
-#define GPIO208_ACCGPIO_004    PIN_CFG(208, ALT_B)
-#define GPIO208_LCD_D0         PIN_CFG(208, ALT_C)
-
-#define GPIO209_GPIO           PIN_CFG(209, GPIO)
-#define GPIO209_SPI0_CLK       PIN_CFG(209, ALT_A)
-#define GPIO209_ACCGPIO_005    PIN_CFG(209, ALT_B)
-#define GPIO209_LCD_CLK                PIN_CFG(209, ALT_C)
-
-#define GPIO210_GPIO           PIN_CFG(210, GPIO)
-#define GPIO210_LCD_VSO                PIN_CFG(210, ALT_A)
-#define GPIO210_PRCMU_PWRCTRL1 PIN_CFG(210, ALT_B)
-
-#define GPIO211_GPIO           PIN_CFG(211, GPIO)
-#define GPIO211_LCD_VSI0       PIN_CFG(211, ALT_A)
-#define GPIO211_PRCMU_PWRCTRL2 PIN_CFG(211, ALT_B)
-
-#define GPIO212_GPIO           PIN_CFG(212, GPIO)
-#define GPIO212_SPI2_CS2n      PIN_CFG(212, ALT_A)
-#define GPIO212_LCD_HSO                PIN_CFG(212, ALT_B)
-
-#define GPIO213_GPIO           PIN_CFG(213, GPIO)
-#define GPIO213_SPI2_CS1n      PIN_CFG(213, ALT_A)
-#define GPIO213_LCD_DE         PIN_CFG(213, ALT_B)
-#define GPIO213_BUSMON_D16     PIN_CFG(213, ALT_C)
-
-#define GPIO214_GPIO           PIN_CFG(214, GPIO)
-#define GPIO214_SPI2_CS0n      PIN_CFG(214, ALT_A)
-#define GPIO214_LCD_D7         PIN_CFG(214, ALT_B)
-#define GPIO214_BUSMON_D17     PIN_CFG(214, ALT_C)
-
-#define GPIO215_GPIO           PIN_CFG(215, GPIO)
-#define GPIO215_SPI2_RXD       PIN_CFG(215, ALT_A)
-#define GPIO215_LCD_D6         PIN_CFG(215, ALT_B)
-#define GPIO215_BUSMON_D18     PIN_CFG(215, ALT_C)
-
-#define GPIO216_GPIO           PIN_CFG(216, GPIO)
-#define GPIO216_SPI2_CLK       PIN_CFG(216, ALT_A)
-#define GPIO216_LCD_D5         PIN_CFG(216, ALT_B)
-
-#define GPIO217_GPIO           PIN_CFG(217, GPIO)
-#define GPIO217_SPI2_TXD       PIN_CFG(217, ALT_A)
-#define GPIO217_LCD_D4         PIN_CFG(217, ALT_B)
-#define GPIO217_BUSMON_D19     PIN_CFG(217, ALT_C)
-
-#define GPIO218_GPIO           PIN_CFG(218, GPIO)
-#define GPIO218_I2C2_SCL       PIN_CFG(218, ALT_A)
-#define GPIO218_LCD_VSO                PIN_CFG(218, ALT_B)
-
-#define GPIO219_GPIO           PIN_CFG(219, GPIO)
-#define GPIO219_I2C2_SDA       PIN_CFG(219, ALT_A)
-#define GPIO219_LCD_D3         PIN_CFG(219, ALT_B)
-
-#define GPIO220_GPIO           PIN_CFG(220, GPIO)
-#define GPIO220_MSP2_TCK       PIN_CFG(220, ALT_A)
-#define GPIO220_LCD_D2         PIN_CFG(220, ALT_B)
-
-#define GPIO221_GPIO           PIN_CFG(221, GPIO)
-#define GPIO221_MSP2_TFS       PIN_CFG(221, ALT_A)
-#define GPIO221_LCD_D1         PIN_CFG(221, ALT_B)
-
-#define GPIO222_GPIO           PIN_CFG(222, GPIO)
-#define GPIO222_MSP2_TXD       PIN_CFG(222, ALT_A)
-#define GPIO222_LCD_D0         PIN_CFG(222, ALT_B)
-
-#define GPIO223_GPIO           PIN_CFG(223, GPIO)
-#define GPIO223_MSP2_RXD       PIN_CFG(223, ALT_A)
-#define GPIO223_LCD_CLK                PIN_CFG(223, ALT_B)
-
-#define GPIO224_GPIO           PIN_CFG(224, GPIO)
-#define GPIO224_PRCMU_PWRCTRL0 PIN_CFG(224, ALT_A)
-#define GPIO224_LCD_VSI1       PIN_CFG(224, ALT_B)
-
-#define GPIO225_GPIO           PIN_CFG(225, GPIO)
-#define GPIO225_PRCMU_PWRCTRL1 PIN_CFG(225, ALT_A)
-#define GPIO225_IRDA_RXD       PIN_CFG(225, ALT_B)
-
-#define GPIO226_GPIO           PIN_CFG(226, GPIO)
-#define GPIO226_PRCMU_PWRCTRL2 PIN_CFG(226, ALT_A)
-#define GPIO226_IRRC_DAT       PIN_CFG(226, ALT_B)
-
-#define GPIO227_GPIO           PIN_CFG(227, GPIO)
-#define GPIO227_IRRC_DAT       PIN_CFG(227, ALT_A)
-#define GPIO227_IRDA_TXD       PIN_CFG(227, ALT_B)
-
-#endif
index eff5842f6232a8f7d0af9e29a87477508ce9f455..e8cd51aa61e4c8f0c1ac1d8c2b48b770ace60dbf 100644 (file)
@@ -48,9 +48,7 @@ static void write_pen_release(int val)
 
 static void __iomem *scu_base_addr(void)
 {
-       if (cpu_is_u5500())
-               return __io_address(U5500_SCU_BASE);
-       else if (cpu_is_u8500())
+       if (cpu_is_u8500())
                return __io_address(U8500_SCU_BASE);
        else
                ux500_unknown_soc();
@@ -120,9 +118,7 @@ static void __init wakeup_secondary(void)
 {
        void __iomem *backupram;
 
-       if (cpu_is_u5500())
-               backupram = __io_address(U5500_BACKUPRAM0_BASE);
-       else if (cpu_is_u8500())
+       if (cpu_is_u8500())
                backupram = __io_address(U8500_BACKUPRAM0_BASE);
        else
                ux500_unknown_soc();
diff --git a/arch/arm/mach-ux500/ste-dma40-db5500.h b/arch/arm/mach-ux500/ste-dma40-db5500.h
deleted file mode 100644 (file)
index cb2110c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- *
- * DB5500-SoC-specific configuration for DMA40
- */
-
-#ifndef STE_DMA40_DB5500_H
-#define STE_DMA40_DB5500_H
-
-#define DB5500_DMA_NR_DEV 64
-
-enum dma_src_dev_type {
-       DB5500_DMA_DEV0_SPI0_RX = 0,
-       DB5500_DMA_DEV1_SPI1_RX = 1,
-       DB5500_DMA_DEV2_SPI2_RX = 2,
-       DB5500_DMA_DEV3_SPI3_RX = 3,
-       DB5500_DMA_DEV4_USB_OTG_IEP_1_9 = 4,
-       DB5500_DMA_DEV5_USB_OTG_IEP_2_10 = 5,
-       DB5500_DMA_DEV6_USB_OTG_IEP_3_11 = 6,
-       DB5500_DMA_DEV7_IRDA_RFS = 7,
-       DB5500_DMA_DEV8_IRDA_FIFO_RX = 8,
-       DB5500_DMA_DEV9_MSP0_RX = 9,
-       DB5500_DMA_DEV10_MSP1_RX = 10,
-       DB5500_DMA_DEV11_MSP2_RX = 11,
-       DB5500_DMA_DEV12_UART0_RX = 12,
-       DB5500_DMA_DEV13_UART1_RX = 13,
-       DB5500_DMA_DEV14_UART2_RX = 14,
-       DB5500_DMA_DEV15_UART3_RX = 15,
-       DB5500_DMA_DEV16_USB_OTG_IEP_8 = 16,
-       DB5500_DMA_DEV17_USB_OTG_IEP_1_9 = 17,
-       DB5500_DMA_DEV18_USB_OTG_IEP_2_10 = 18,
-       DB5500_DMA_DEV19_USB_OTG_IEP_3_11 = 19,
-       DB5500_DMA_DEV20_USB_OTG_IEP_4_12 = 20,
-       DB5500_DMA_DEV21_USB_OTG_IEP_5_13 = 21,
-       DB5500_DMA_DEV22_USB_OTG_IEP_6_14 = 22,
-       DB5500_DMA_DEV23_USB_OTG_IEP_7_15 = 23,
-       DB5500_DMA_DEV24_SDMMC0_RX = 24,
-       DB5500_DMA_DEV25_SDMMC1_RX = 25,
-       DB5500_DMA_DEV26_SDMMC2_RX = 26,
-       DB5500_DMA_DEV27_SDMMC3_RX = 27,
-       DB5500_DMA_DEV28_SDMMC4_RX = 28,
-       /* 29 - 32 not used */
-       DB5500_DMA_DEV33_SDMMC0_RX = 33,
-       DB5500_DMA_DEV34_SDMMC1_RX = 34,
-       DB5500_DMA_DEV35_SDMMC2_RX = 35,
-       DB5500_DMA_DEV36_SDMMC3_RX = 36,
-       DB5500_DMA_DEV37_SDMMC4_RX = 37,
-       DB5500_DMA_DEV38_USB_OTG_IEP_8 = 38,
-       DB5500_DMA_DEV39_USB_OTG_IEP_1_9 = 39,
-       DB5500_DMA_DEV40_USB_OTG_IEP_2_10 = 40,
-       DB5500_DMA_DEV41_USB_OTG_IEP_3_11 = 41,
-       DB5500_DMA_DEV42_USB_OTG_IEP_4_12 = 42,
-       DB5500_DMA_DEV43_USB_OTG_IEP_5_13 = 43,
-       DB5500_DMA_DEV44_USB_OTG_IEP_6_14 = 44,
-       DB5500_DMA_DEV45_USB_OTG_IEP_7_15 = 45,
-       /* 46 not used */
-       DB5500_DMA_DEV47_MCDE_RX = 47,
-       DB5500_DMA_DEV48_CRYPTO1_RX = 48,
-       /* 49, 50 not used */
-       DB5500_DMA_DEV49_I2C1_RX = 51,
-       DB5500_DMA_DEV50_I2C3_RX = 52,
-       DB5500_DMA_DEV51_I2C2_RX = 53,
-       /* 54 - 60 not used */
-       DB5500_DMA_DEV61_CRYPTO0_RX = 61,
-       /* 62, 63 not used */
-};
-
-enum dma_dest_dev_type {
-       DB5500_DMA_DEV0_SPI0_TX = 0,
-       DB5500_DMA_DEV1_SPI1_TX = 1,
-       DB5500_DMA_DEV2_SPI2_TX = 2,
-       DB5500_DMA_DEV3_SPI3_TX = 3,
-       DB5500_DMA_DEV4_USB_OTG_OEP_1_9 = 4,
-       DB5500_DMA_DEV5_USB_OTG_OEP_2_10 = 5,
-       DB5500_DMA_DEV6_USB_OTG_OEP_3_11 = 6,
-       DB5500_DMA_DEV7_IRRC_TX = 7,
-       DB5500_DMA_DEV8_IRDA_FIFO_TX = 8,
-       DB5500_DMA_DEV9_MSP0_TX = 9,
-       DB5500_DMA_DEV10_MSP1_TX = 10,
-       DB5500_DMA_DEV11_MSP2_TX = 11,
-       DB5500_DMA_DEV12_UART0_TX = 12,
-       DB5500_DMA_DEV13_UART1_TX = 13,
-       DB5500_DMA_DEV14_UART2_TX = 14,
-       DB5500_DMA_DEV15_UART3_TX = 15,
-       DB5500_DMA_DEV16_USB_OTG_OEP_8 = 16,
-       DB5500_DMA_DEV17_USB_OTG_OEP_1_9 = 17,
-       DB5500_DMA_DEV18_USB_OTG_OEP_2_10 = 18,
-       DB5500_DMA_DEV19_USB_OTG_OEP_3_11 = 19,
-       DB5500_DMA_DEV20_USB_OTG_OEP_4_12 = 20,
-       DB5500_DMA_DEV21_USB_OTG_OEP_5_13 = 21,
-       DB5500_DMA_DEV22_USB_OTG_OEP_6_14 = 22,
-       DB5500_DMA_DEV23_USB_OTG_OEP_7_15 = 23,
-       DB5500_DMA_DEV24_SDMMC0_TX = 24,
-       DB5500_DMA_DEV25_SDMMC1_TX = 25,
-       DB5500_DMA_DEV26_SDMMC2_TX = 26,
-       DB5500_DMA_DEV27_SDMMC3_TX = 27,
-       DB5500_DMA_DEV28_SDMMC4_TX = 28,
-       /* 29 - 31 not used */
-       DB5500_DMA_DEV32_FSMC_TX = 32,
-       DB5500_DMA_DEV33_SDMMC0_TX = 33,
-       DB5500_DMA_DEV34_SDMMC1_TX = 34,
-       DB5500_DMA_DEV35_SDMMC2_TX = 35,
-       DB5500_DMA_DEV36_SDMMC3_TX = 36,
-       DB5500_DMA_DEV37_SDMMC4_TX = 37,
-       DB5500_DMA_DEV38_USB_OTG_OEP_8 = 38,
-       DB5500_DMA_DEV39_USB_OTG_OEP_1_9 = 39,
-       DB5500_DMA_DEV40_USB_OTG_OEP_2_10 = 40,
-       DB5500_DMA_DEV41_USB_OTG_OEP_3_11 = 41,
-       DB5500_DMA_DEV42_USB_OTG_OEP_4_12 = 42,
-       DB5500_DMA_DEV43_USB_OTG_OEP_5_13 = 43,
-       DB5500_DMA_DEV44_USB_OTG_OEP_6_14 = 44,
-       DB5500_DMA_DEV45_USB_OTG_OEP_7_15 = 45,
-       /* 46 not used */
-       DB5500_DMA_DEV47_STM_TX = 47,
-       DB5500_DMA_DEV48_CRYPTO1_TX = 48,
-       DB5500_DMA_DEV49_CRYPTO1_TX_HASH1_TX = 49,
-       DB5500_DMA_DEV50_HASH1_TX = 50,
-       DB5500_DMA_DEV51_I2C1_TX = 51,
-       DB5500_DMA_DEV52_I2C3_TX = 52,
-       DB5500_DMA_DEV53_I2C2_TX = 53,
-       /* 54, 55 not used */
-       DB5500_DMA_MEMCPY_TX_1 = 56,
-       DB5500_DMA_MEMCPY_TX_2 = 57,
-       DB5500_DMA_MEMCPY_TX_3 = 58,
-       DB5500_DMA_MEMCPY_TX_4 = 59,
-       DB5500_DMA_MEMCPY_TX_5 = 60,
-       DB5500_DMA_DEV61_CRYPTO0_TX = 61,
-       DB5500_DMA_DEV62_CRYPTO0_TX_HASH0_TX = 62,
-       DB5500_DMA_DEV63_HASH0_TX = 63,
-};
-
-#endif
index d37df98b5c32588d65450867900e7d87a6f4aec9..52e55337aa9b84cc1bfa33bd0bb4605375693fb4 100644 (file)
@@ -18,8 +18,6 @@
 #include <mach/irqs.h>
 
 #ifdef CONFIG_HAVE_ARM_TWD
-static DEFINE_TWD_LOCAL_TIMER(u5500_twd_local_timer,
-                             U5500_TWD_BASE, IRQ_LOCALTIMER);
 static DEFINE_TWD_LOCAL_TIMER(u8500_twd_local_timer,
                              U8500_TWD_BASE, IRQ_LOCALTIMER);
 
@@ -28,8 +26,8 @@ static void __init ux500_twd_init(void)
        struct twd_local_timer *twd_local_timer;
        int err;
 
-       twd_local_timer = cpu_is_u5500() ? &u5500_twd_local_timer :
-                                          &u8500_twd_local_timer;
+       /* Use this to switch local timer base if changed in new ASICs */
+       twd_local_timer = &u8500_twd_local_timer;
 
        if (of_have_populated_dt())
                twd_local_timer_of_register();
@@ -48,10 +46,7 @@ static void __init ux500_timer_init(void)
        void __iomem *mtu_timer_base;
        void __iomem *prcmu_timer_base;
 
-       if (cpu_is_u5500()) {
-               mtu_timer_base = __io_address(U5500_MTU0_BASE);
-               prcmu_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
-       } else if (cpu_is_u8500()) {
+       if (cpu_is_u8500()) {
                mtu_timer_base = __io_address(U8500_MTU0_BASE);
                prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
        } else {
@@ -70,7 +65,7 @@ static void __init ux500_timer_init(void)
         * depending on delay which is not yet calibrated. RTC-RTT is in the
         * always-on powerdomain and is used as clockevent instead of twd when
         * sleeping.
-        * The PRCMU timer 4(3 for DB5500) register a clocksource and
+        * The PRCMU timer 4 register a clocksource and
         * sched_clock with higher rating then MTU since is always-on.
         *
         */
index c7f5169a6a54f07c80562295f723d14cefae769e..36c8989d9de6b993e13dfd8197dcdc95b46df104 100644 (file)
 #define MX51_PAD_NANDF_RB1__GPIO3_9            IOMUX_PAD(0x4fc, 0x120, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB1__NANDF_RB1          IOMUX_PAD(0x4fc, 0x120, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB1__PATA_IORDY         IOMUX_PAD(0x4fc, 0x120, 1, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_NANDF_RB1__SD4_CMD            IOMUX_PAD(0x4fc, 0x120, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
+#define MX51_PAD_NANDF_RB1__SD4_CMD            IOMUX_PAD(0x4fc, 0x120, 0x15, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_NANDF_RB2__DISP2_WAIT         IOMUX_PAD(0x500, 0x124, 5, 0x9a8, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB2__ECSPI2_SCLK                IOMUX_PAD(0x500, 0x124, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_NANDF_RB2__FEC_COL            IOMUX_PAD(0x500, 0x124, 1, 0x94c, 0, MX51_PAD_CTRL_2)
 #define MX51_PAD_NANDF_RB2__GPIO3_10           IOMUX_PAD(0x500, 0x124, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB2__NANDF_RB2          IOMUX_PAD(0x500, 0x124, 0, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_NANDF_RB2__USBH3_H3_DP                IOMUX_PAD(0x500, 0x124, 7, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_NANDF_RB2__USBH3_H3_DP                IOMUX_PAD(0x500, 0x124, 0x17, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB2__USBH3_NXT          IOMUX_PAD(0x500, 0x124, 6, 0xa20, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB3__DISP1_WAIT         IOMUX_PAD(0x504, 0x128, 5, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB3__ECSPI2_MISO                IOMUX_PAD(0x504, 0x128, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_NANDF_RB3__GPIO3_11           IOMUX_PAD(0x504, 0x128, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB3__NANDF_RB3          IOMUX_PAD(0x504, 0x128, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RB3__USBH3_CLK          IOMUX_PAD(0x504, 0x128, 6, 0x9f8, 0, NO_PAD_CTRL)
-#define MX51_PAD_NANDF_RB3__USBH3_H3_DM                IOMUX_PAD(0x504, 0x128, 7, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_NANDF_RB3__USBH3_H3_DM                IOMUX_PAD(0x504, 0x128, 0x17, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO_NAND__GPIO_NAND          IOMUX_PAD(0x514, 0x12c, 0, 0x998, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO_NAND__PATA_INTRQ         IOMUX_PAD(0x514, 0x12c, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS0__GPIO3_16           IOMUX_PAD(0x518, 0x130, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS2__NANDF_CS2          IOMUX_PAD(0x520, 0x138, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS2__PATA_CS_0          IOMUX_PAD(0x520, 0x138, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS2__SD4_CLK            IOMUX_PAD(0x520, 0x138, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS)
-#define MX51_PAD_NANDF_CS2__USBH3_H1_DP                IOMUX_PAD(0x520, 0x138, 7, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_NANDF_CS2__USBH3_H1_DP                IOMUX_PAD(0x520, 0x138, 0x17, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS3__FEC_MDC            IOMUX_PAD(0x524, 0x13c, 2, __NA_, 0, MX51_PAD_CTRL_5)
 #define MX51_PAD_NANDF_CS3__GPIO3_19           IOMUX_PAD(0x524, 0x13c, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS3__NANDF_CS3          IOMUX_PAD(0x524, 0x13c, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS3__PATA_CS_1          IOMUX_PAD(0x524, 0x13c, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS3__SD4_DAT0           IOMUX_PAD(0x524, 0x13c, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
-#define MX51_PAD_NANDF_CS3__USBH3_H1_DM                IOMUX_PAD(0x524, 0x13c, 7, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_NANDF_CS3__USBH3_H1_DM                IOMUX_PAD(0x524, 0x13c, 0x17, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS4__FEC_TDATA1         IOMUX_PAD(0x528, 0x140, 2, __NA_, 0, MX51_PAD_CTRL_5)
 #define MX51_PAD_NANDF_CS4__GPIO3_20           IOMUX_PAD(0x528, 0x140, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_CS4__NANDF_CS4          IOMUX_PAD(0x528, 0x140, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK     IOMUX_PAD(0x538, 0x150, 1, 0x974, 0, MX51_PAD_CTRL_4)
 #define MX51_PAD_NANDF_RDY_INT__GPIO3_24       IOMUX_PAD(0x538, 0x150, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_RDY_INT__NANDF_RDY_INT  IOMUX_PAD(0x538, 0x150, 0, 0x938, 0, NO_PAD_CTRL)
-#define MX51_PAD_NANDF_RDY_INT__SD3_CMD                IOMUX_PAD(0x538, 0x150, 5, __NA_, 0, MX51_SDHCI_PAD_CTRL)
+#define MX51_PAD_NANDF_RDY_INT__SD3_CMD                IOMUX_PAD(0x538, 0x150, 0x15, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_NANDF_D15__ECSPI2_MOSI                IOMUX_PAD(0x53c, 0x154, 2, __NA_, 0, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_NANDF_D15__GPIO3_25           IOMUX_PAD(0x53c, 0x154, 3, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_NANDF_D15__NANDF_D15          IOMUX_PAD(0x53c, 0x154, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT5__DISP2_DAT5                IOMUX_PAD(0x770, 0x368, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT6__DISP2_DAT6                IOMUX_PAD(0x774, 0x36c, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT6__FEC_TDATA1                IOMUX_PAD(0x774, 0x36c, 2, __NA_, 0, MX51_PAD_CTRL_5)
-#define MX51_PAD_DISP2_DAT6__GPIO1_19          IOMUX_PAD(0x774, 0x36c, 5, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_DISP2_DAT6__GPIO1_19          IOMUX_PAD(0x774, 0x36c, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT6__KEY_ROW4          IOMUX_PAD(0x774, 0x36c, 4, 0x9d0, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT6__USBH3_STP         IOMUX_PAD(0x774, 0x36c, 3, 0xa24, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT7__DISP2_DAT7                IOMUX_PAD(0x778, 0x370, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT7__FEC_TDATA2                IOMUX_PAD(0x778, 0x370, 2, __NA_, 0, MX51_PAD_CTRL_5)
-#define MX51_PAD_DISP2_DAT7__GPIO1_29          IOMUX_PAD(0x778, 0x370, 5, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_DISP2_DAT7__GPIO1_29          IOMUX_PAD(0x778, 0x370, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT7__KEY_ROW5          IOMUX_PAD(0x778, 0x370, 4, 0x9d4, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT7__USBH3_NXT         IOMUX_PAD(0x778, 0x370, 3, 0xa20, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT8__DISP2_DAT8                IOMUX_PAD(0x77c, 0x374, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT8__FEC_TDATA3                IOMUX_PAD(0x77c, 0x374, 2, __NA_, 0, MX51_PAD_CTRL_5)
-#define MX51_PAD_DISP2_DAT8__GPIO1_30          IOMUX_PAD(0x77c, 0x374, 5, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_DISP2_DAT8__GPIO1_30          IOMUX_PAD(0x77c, 0x374, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT8__KEY_ROW6          IOMUX_PAD(0x77c, 0x374, 4, 0x9d8, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT8__USBH3_DATA0       IOMUX_PAD(0x77c, 0x374, 3, 0x9fc, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT9__AUD6_RXC          IOMUX_PAD(0x780, 0x378, 4, 0x8f4, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT9__DISP2_DAT9                IOMUX_PAD(0x780, 0x378, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT9__FEC_TX_EN         IOMUX_PAD(0x780, 0x378, 2, __NA_, 0, MX51_PAD_CTRL_5)
-#define MX51_PAD_DISP2_DAT9__GPIO1_31          IOMUX_PAD(0x780, 0x378, 5, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_DISP2_DAT9__GPIO1_31          IOMUX_PAD(0x780, 0x378, 5, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT9__USBH3_DATA1       IOMUX_PAD(0x780, 0x378, 3, 0xa00, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT10__DISP2_DAT10      IOMUX_PAD(0x784, 0x37c, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT10__DISP2_SER_CS     IOMUX_PAD(0x784, 0x37c, 5, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT11__AUD6_TXD         IOMUX_PAD(0x788, 0x380, 4, 0x8f0, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT11__DISP2_DAT11      IOMUX_PAD(0x788, 0x380, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT11__FEC_RX_CLK       IOMUX_PAD(0x788, 0x380, 2, 0x968, 1, NO_PAD_CTRL)
-#define MX51_PAD_DISP2_DAT11__GPIO1_10         IOMUX_PAD(0x788, 0x380, 7, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_DISP2_DAT11__GPIO1_10         IOMUX_PAD(0x788, 0x380, 7, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT11__USBH3_DATA3      IOMUX_PAD(0x788, 0x380, 3, 0xa08, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT12__AUD6_RXD         IOMUX_PAD(0x78c, 0x384, 4, 0x8ec, 1, NO_PAD_CTRL)
 #define MX51_PAD_DISP2_DAT12__DISP2_DAT12      IOMUX_PAD(0x78c, 0x384, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD1_DATA3__CSPI_SS1           IOMUX_PAD(0x7b0, 0x3a8, 2, 0x920, 1, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_SD1_DATA3__SD1_DATA3          IOMUX_PAD(0x7b0, 0x3a8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_GPIO1_0__CSPI_SS2             IOMUX_PAD(0x7b4, 0x3ac, 2, 0x924, 0, MX51_ECSPI_PAD_CTRL)
-#define MX51_PAD_GPIO1_0__GPIO1_0              IOMUX_PAD(0x7b4, 0x3ac, 1, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_0__GPIO1_0              IOMUX_PAD(0x7b4, 0x3ac, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_0__SD1_CD               IOMUX_PAD(0x7b4, 0x3ac, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL)
 #define MX51_PAD_GPIO1_1__CSPI_MISO            IOMUX_PAD(0x7b8, 0x3b0, 2, 0x918, 2, MX51_ECSPI_PAD_CTRL)
-#define MX51_PAD_GPIO1_1__GPIO1_1              IOMUX_PAD(0x7b8, 0x3b0, 1, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_1__GPIO1_1              IOMUX_PAD(0x7b8, 0x3b0, 1, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_1__SD1_WP               IOMUX_PAD(0x7b8, 0x3b0, 0, __NA_, 0, MX51_ESDHC_PAD_CTRL)
 #define MX51_PAD_EIM_DA12__EIM_DA12            IOMUX_PAD(__NA_, 0x04c, 0, 0x000, 0, NO_PAD_CTRL)
 #define MX51_PAD_EIM_DA13__EIM_DA13            IOMUX_PAD(__NA_, 0x050, 0, 0x000, 0, NO_PAD_CTRL)
 #define MX51_PAD_EIM_DA14__EIM_DA14            IOMUX_PAD(__NA_, 0x054, 0, 0x000, 0, NO_PAD_CTRL)
 #define MX51_PAD_EIM_DA15__EIM_DA15            IOMUX_PAD(__NA_, 0x058, 0, 0x000, 0, NO_PAD_CTRL)
-#define MX51_PAD_SD2_CMD__CSPI_MOSI            IOMUX_PAD(__NA_, 0x3b4, 2, 0x91c, 3, MX51_ECSPI_PAD_CTRL)
+#define MX51_PAD_SD2_CMD__CSPI_MOSI            IOMUX_PAD(0x7bc, 0x3b4, 2, 0x91c, 3, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_SD2_CMD__I2C1_SCL             IOMUX_PAD(0x7bc, 0x3b4, 0x11, 0x9b0, 2, MX51_I2C_PAD_CTRL)
 #define MX51_PAD_SD2_CMD__SD2_CMD              IOMUX_PAD(0x7bc, 0x3b4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_SD2_CLK__CSPI_SCLK            IOMUX_PAD(0x7c0, 0x3b8, 2, 0x914, 3, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_SD2_DATA0__SD2_DATA0          IOMUX_PAD(0x7c4, 0x3bc, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_SD2_DATA1__SD1_DAT5           IOMUX_PAD(0x7c8, 0x3c0, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD2_DATA1__SD2_DATA1          IOMUX_PAD(0x7c8, 0x3c0, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
-#define MX51_PAD_SD2_DATA1__USBH3_H2_DP                IOMUX_PAD(0x7c8, 0x3c0, 2, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_SD2_DATA1__USBH3_H2_DP                IOMUX_PAD(0x7c8, 0x3c0, 0x12, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD2_DATA2__SD1_DAT6           IOMUX_PAD(0x7cc, 0x3c4, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD2_DATA2__SD2_DATA2          IOMUX_PAD(0x7cc, 0x3c4, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
-#define MX51_PAD_SD2_DATA2__USBH3_H2_DM                IOMUX_PAD(0x7cc, 0x3c4, 2, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_SD2_DATA2__USBH3_H2_DM                IOMUX_PAD(0x7cc, 0x3c4, 0x12, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD2_DATA3__CSPI_SS2           IOMUX_PAD(0x7d0, 0x3c8, 2, 0x924, 1, MX51_ECSPI_PAD_CTRL)
 #define MX51_PAD_SD2_DATA3__SD1_DAT7           IOMUX_PAD(0x7d0, 0x3c8, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_SD2_DATA3__SD2_DATA3          IOMUX_PAD(0x7d0, 0x3c8, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL)
 #define MX51_PAD_GPIO1_2__CCM_OUT_2            IOMUX_PAD(0x7d4, 0x3cc, 5, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_2__GPIO1_2              IOMUX_PAD(0x7d4, 0x3cc, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_2__GPIO1_2              IOMUX_PAD(0x7d4, 0x3cc, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_2__I2C2_SCL             IOMUX_PAD(0x7d4, 0x3cc, 0x12, 0x9b8, 3, MX51_I2C_PAD_CTRL)
 #define MX51_PAD_GPIO1_2__PLL1_BYP             IOMUX_PAD(0x7d4, 0x3cc, 7, 0x90c, 1, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_2__PWM1_PWMO            IOMUX_PAD(0x7d4, 0x3cc, 1, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_3__GPIO1_3              IOMUX_PAD(0x7d8, 0x3d0, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_3__GPIO1_3              IOMUX_PAD(0x7d8, 0x3d0, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_3__I2C2_SDA             IOMUX_PAD(0x7d8, 0x3d0, 0x12, 0x9bc, 3, MX51_I2C_PAD_CTRL)
 #define MX51_PAD_GPIO1_3__PLL2_BYP             IOMUX_PAD(0x7d8, 0x3d0, 7, 0x910, 1, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_3__PWM2_PWMO            IOMUX_PAD(0x7d8, 0x3d0, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_PMIC_INT_REQ__PMIC_PMU_IRQ_B  IOMUX_PAD(0x7fc, 0x3d4, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_4__DISP2_EXT_CLK                IOMUX_PAD(0x804, 0x3d8, 4, 0x908, 1, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_4__EIM_RDY              IOMUX_PAD(0x804, 0x3d8, 3, 0x938, 1, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_4__GPIO1_4              IOMUX_PAD(0x804, 0x3d8, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_4__GPIO1_4              IOMUX_PAD(0x804, 0x3d8, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_4__WDOG1_WDOG_B         IOMUX_PAD(0x804, 0x3d8, 2, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_5__CSI2_MCLK            IOMUX_PAD(0x808, 0x3dc, 6, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_5__DISP2_PIN16          IOMUX_PAD(0x808, 0x3dc, 3, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_5__GPIO1_5              IOMUX_PAD(0x808, 0x3dc, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_5__GPIO1_5              IOMUX_PAD(0x808, 0x3dc, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_5__WDOG2_WDOG_B         IOMUX_PAD(0x808, 0x3dc, 2, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_6__DISP2_PIN17          IOMUX_PAD(0x80c, 0x3e0, 4, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_6__GPIO1_6              IOMUX_PAD(0x80c, 0x3e0, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_6__GPIO1_6              IOMUX_PAD(0x80c, 0x3e0, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_6__REF_EN_B             IOMUX_PAD(0x80c, 0x3e0, 3, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_7__CCM_OUT_0            IOMUX_PAD(0x810, 0x3e4, 3, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_7__GPIO1_7              IOMUX_PAD(0x810, 0x3e4, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_7__GPIO1_7              IOMUX_PAD(0x810, 0x3e4, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_7__SD2_WP               IOMUX_PAD(0x810, 0x3e4, 6, __NA_, 0, MX51_ESDHC_PAD_CTRL)
 #define MX51_PAD_GPIO1_7__SPDIF_OUT1           IOMUX_PAD(0x810, 0x3e4, 2, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_8__CSI2_DATA_EN         IOMUX_PAD(0x814, 0x3e8, 2, 0x99c, 2, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_8__GPIO1_8              IOMUX_PAD(0x814, 0x3e8, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_8__GPIO1_8              IOMUX_PAD(0x814, 0x3e8, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_8__SD2_CD               IOMUX_PAD(0x814, 0x3e8, 6, __NA_, 0, MX51_ESDHC_PAD_CTRL)
 #define MX51_PAD_GPIO1_8__USBH3_PWR            IOMUX_PAD(0x814, 0x3e8, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_9__CCM_OUT_1            IOMUX_PAD(0x818, 0x3ec, 3, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_9__DISP2_D1_CS          IOMUX_PAD(0x818, 0x3ec, 2, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_9__DISP2_SER_CS         IOMUX_PAD(0x818, 0x3ec, 7, __NA_, 0, NO_PAD_CTRL)
-#define MX51_PAD_GPIO1_9__GPIO1_9              IOMUX_PAD(0x818, 0x3ec, 0, __NA_, 0, NO_PAD_CTRL)
+#define MX51_PAD_GPIO1_9__GPIO1_9              IOMUX_PAD(0x818, 0x3ec, 0, __NA_, 0, MX51_GPIO_PAD_CTRL)
 #define MX51_PAD_GPIO1_9__SD2_LCTL             IOMUX_PAD(0x818, 0x3ec, 6, __NA_, 0, NO_PAD_CTRL)
 #define MX51_PAD_GPIO1_9__USBH3_OC             IOMUX_PAD(0x818, 0x3ec, 1, __NA_, 0, NO_PAD_CTRL)
 
index 527f8fe3e31b54ba4a2c009331afd96d36279c5c..9761e003bde2358c44ef0a39a5024febd457ec73 100644 (file)
 #define MX53_PAD_EIM_D28__UART2_CTS                    IOMUX_PAD(0x494, 0x14C, 2, __NA_, 0, MX53_UART_PAD_CTRL)
 #define MX53_PAD_EIM_D28__IPU_DISPB0_SER_DIO           IOMUX_PAD(0x494, 0x14C, 3, 0x82C, 1, NO_PAD_CTRL)
 #define MX53_PAD_EIM_D28__CSPI_MOSI                    IOMUX_PAD(0x494, 0x14C, 4, 0x788, 1, NO_PAD_CTRL)
-#define MX53_PAD_EIM_D28__I2C1_SDA                     IOMUX_PAD(0x494, 0x14C, 5 | IOMUX_CONFIG_SION, 0x818, 1, PAD_CTRL_I2C)
+#define MX53_PAD_EIM_D28__I2C1_SDA                     IOMUX_PAD(0x494, 0x14C, 5 | IOMUX_CONFIG_SION, 0x818, 1, NO_PAD_CTRL)
 #define MX53_PAD_EIM_D28__IPU_EXT_TRIG                 IOMUX_PAD(0x494, 0x14C, 6, __NA_, 0, NO_PAD_CTRL)
 #define MX53_PAD_EIM_D28__IPU_DI0_PIN13                        IOMUX_PAD(0x494, 0x14C, 7, __NA_, 0, NO_PAD_CTRL)
 #define MX53_PAD_EIM_D29__EMI_WEIM_D_29                        IOMUX_PAD(0x498, 0x150, 0, __NA_, 0, NO_PAD_CTRL)
 #define MX53_PAD_GPIO_8__ESAI1_TX5_RX0                 IOMUX_PAD(0x6C8, 0x338, 0, 0x7F8, 1, NO_PAD_CTRL)
 #define MX53_PAD_GPIO_8__GPIO1_8                       IOMUX_PAD(0x6C8, 0x338, 1, __NA_, 0, NO_PAD_CTRL)
 #define MX53_PAD_GPIO_8__EPIT2_EPITO                   IOMUX_PAD(0x6C8, 0x338, 2, __NA_, 0, NO_PAD_CTRL)
-#define MX53_PAD_GPIO_8__CAN1_RXCAN                    IOMUX_PAD(0x6C8, 0x338, 3, 0x760, 3, NO_PAD_CTRL)
+#define MX53_PAD_GPIO_8__CAN1_RXCAN                    IOMUX_PAD(0x6C8, 0x338, 3, 0x760, 2, NO_PAD_CTRL)
 #define MX53_PAD_GPIO_8__UART2_RXD_MUX                 IOMUX_PAD(0x6C8, 0x338, 4, 0x880, 5, MX53_UART_PAD_CTRL)
 #define MX53_PAD_GPIO_8__FIRI_TXD                      IOMUX_PAD(0x6C8, 0x338, 5, __NA_, 0, NO_PAD_CTRL)
 #define MX53_PAD_GPIO_8__SPDIF_SRCLK                   IOMUX_PAD(0x6C8, 0x338, 6, __NA_, 0, NO_PAD_CTRL)
index c0fe2757b695e74f098edbdca4125541d842d4a1..ed8605f0115561ac44dc542c52d27afc0f98233b 100644 (file)
@@ -9,9 +9,6 @@ obj-m :=
 obj-n :=
 obj-  :=
 
-# OCPI interconnect support for 1710, 1610 and 5912
-obj-$(CONFIG_ARCH_OMAP16XX) += ocpi.o
-
 # omap_device support (OMAP2+ only at the moment)
 obj-$(CONFIG_ARCH_OMAP2) += omap_device.o
 obj-$(CONFIG_ARCH_OMAP3) += omap_device.o
index f1e46ea6b81d918c2d91c11b1a05eede68572398..0a9b9a970113d2d1e1818cf0e4c316bcbfc44a3e 100644 (file)
@@ -20,6 +20,7 @@
 #include <plat/board.h>
 #include <plat/vram.h>
 #include <plat/dsp.h>
+#include <plat/dma.h>
 
 #include <plat/omap-secure.h>
 
index c58d896cd5c39dba0ab5950d4fb69a657e0a5d0a..987e6101267df6d76eca0623115e61a05916933c 100644 (file)
 
 #include <plat/tc.h>
 
+/*
+ * MAX_LOGICAL_DMA_CH_COUNT: the maximum number of logical DMA
+ * channels that an instance of the SDMA IP block can support.  Used
+ * to size arrays.  (The actual maximum on a particular SoC may be less
+ * than this -- for example, OMAP1 SDMA instances only support 17 logical
+ * DMA channels.)
+ */
+#define MAX_LOGICAL_DMA_CH_COUNT               32
+
 #undef DEBUG
 
 #ifndef CONFIG_ARCH_OMAP1
@@ -883,7 +892,7 @@ void omap_start_dma(int lch)
 
        if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
                int next_lch, cur_lch;
-               char dma_chan_link_map[dma_lch_count];
+               char dma_chan_link_map[MAX_LOGICAL_DMA_CH_COUNT];
 
                dma_chan_link_map[lch] = 1;
                /* Set the link register of the first channel */
@@ -981,7 +990,7 @@ void omap_stop_dma(int lch)
 
        if (!omap_dma_in_1510_mode() && dma_chan[lch].next_lch != -1) {
                int next_lch, cur_lch = lch;
-               char dma_chan_link_map[dma_lch_count];
+               char dma_chan_link_map[MAX_LOGICAL_DMA_CH_COUNT];
 
                memset(dma_chan_link_map, 0, sizeof(dma_chan_link_map));
                do {
index 652139c0339e2fe8fae6df508bbc3a548fd06172..c4ed35e89fbde45ee252263b47846d70c11d1f7a 100644 (file)
@@ -349,11 +349,12 @@ EXPORT_SYMBOL_GPL(omap_dm_timer_start);
 int omap_dm_timer_stop(struct omap_dm_timer *timer)
 {
        unsigned long rate = 0;
-       struct dmtimer_platform_data *pdata = timer->pdev->dev.platform_data;
+       struct dmtimer_platform_data *pdata;
 
        if (unlikely(!timer))
                return -EINVAL;
 
+       pdata = timer->pdev->dev.platform_data;
        if (!pdata->needs_manual_reset)
                rate = clk_get_rate(timer->fclk);
 
index d5eb4c87db9dd146af1443cdc2dd85f64b7fe292..4814c5b653068a94f14fcfa941b76c0b232c2f50 100644 (file)
@@ -91,6 +91,8 @@ struct omap_usb_config {
        u32 (*usb0_init)(unsigned nwires, unsigned is_device);
        u32 (*usb1_init)(unsigned nwires);
        u32 (*usb2_init)(unsigned nwires, unsigned alt_pingroup);
+
+       int (*ocpi_enable)(void);
 };
 
 struct omap_lcd_config {
index b4d7ec3fbfbe62a719b043a680e4fe63dc5f49ec..a557b8484e6cfada3d20ccd65ded958b8df3d7a7 100644 (file)
@@ -32,6 +32,8 @@
 
 extern int __init omap_init_clocksource_32k(void);
 
+extern void __init omap_check_revision(void);
+
 extern void omap_reserve(void);
 extern int omap_dss_reset(struct omap_hwmod *);
 
index dc562a5c0a8ad2c7117b0b02e43b85cabe7b9aa5..42afb4c45517f54d9b54c088b1e76e2b218e01ee 100644 (file)
@@ -442,6 +442,7 @@ struct omap_system_dma_plat_info {
        u32 (*dma_read)(int reg, int lch);
 };
 
+extern void __init omap_init_consistent_dma_size(void);
 extern void omap_set_dma_priority(int lch, int dst_port, int priority);
 extern int omap_request_dma(int dev_id, const char *dev_name,
                        void (*callback)(int lch, u16 ch_status, void *data),
index 9418f00b6c381428fe32c61c95d8be42c455a2d4..230ff91be491c2d93d1e9d5ef3e5aecb11f38a70 100644 (file)
@@ -316,12 +316,12 @@ static inline void __omap_dm_timer_init_regs(struct omap_dm_timer *timer)
                                OMAP_TIMER_V1_SYS_STAT_OFFSET;
                timer->irq_stat = timer->io_base + OMAP_TIMER_V1_STAT_OFFSET;
                timer->irq_ena = timer->io_base + OMAP_TIMER_V1_INT_EN_OFFSET;
-               timer->irq_dis = 0;
+               timer->irq_dis = NULL;
                timer->pend = timer->io_base + _OMAP_TIMER_WRITE_PEND_OFFSET;
                timer->func_base = timer->io_base;
        } else {
                timer->revision = 2;
-               timer->sys_stat = 0;
+               timer->sys_stat = NULL;
                timer->irq_stat = timer->io_base + OMAP_TIMER_V2_IRQSTATUS;
                timer->irq_ena = timer->io_base + OMAP_TIMER_V2_IRQENABLE_SET;
                timer->irq_dis = timer->io_base + OMAP_TIMER_V2_IRQENABLE_CLR;
index 3f26db4ee8e671531bb4239acc60852cb0448295..14dde32cd4068314079cbd367054c0101e7fcb0c 100644 (file)
@@ -213,11 +213,16 @@ struct omap_hwmod_addr_space {
  */
 #define OCP_USER_MPU                   (1 << 0)
 #define OCP_USER_SDMA                  (1 << 1)
+#define OCP_USER_DSP                   (1 << 2)
 
 /* omap_hwmod_ocp_if.flags bits */
 #define OCPIF_SWSUP_IDLE               (1 << 0)
 #define OCPIF_CAN_BURST                        (1 << 1)
 
+/* omap_hwmod_ocp_if._int_flags possibilities */
+#define _OCPIF_INT_FLAGS_REGISTERED    (1 << 0)
+
+
 /**
  * struct omap_hwmod_ocp_if - OCP interface data
  * @master: struct omap_hwmod that initiates OCP transactions on this link
@@ -229,6 +234,7 @@ struct omap_hwmod_addr_space {
  * @width: OCP data width
  * @user: initiators using this interface (see OCP_USER_* macros above)
  * @flags: OCP interface flags (see OCPIF_* macros above)
+ * @_int_flags: internal flags (see _OCPIF_INT_FLAGS* macros above)
  *
  * It may also be useful to add a tag_cnt field for OCP2.x devices.
  *
@@ -247,6 +253,7 @@ struct omap_hwmod_ocp_if {
        u8                              width;
        u8                              user;
        u8                              flags;
+       u8                              _int_flags;
 };
 
 
@@ -327,9 +334,9 @@ struct omap_hwmod_sysc_fields {
  * then this field has to be populated with the correct offset structure.
  */
 struct omap_hwmod_class_sysconfig {
-       u16 rev_offs;
-       u16 sysc_offs;
-       u16 syss_offs;
+       u32 rev_offs;
+       u32 sysc_offs;
+       u32 syss_offs;
        u16 sysc_flags;
        struct omap_hwmod_sysc_fields *sysc_fields;
        u8 srst_udelay;
@@ -475,6 +482,16 @@ struct omap_hwmod_class {
        int                                     (*reset)(struct omap_hwmod *oh);
 };
 
+/**
+ * struct omap_hwmod_link - internal structure linking hwmods with ocp_ifs
+ * @ocp_if: OCP interface structure record pointer
+ * @node: list_head pointing to next struct omap_hwmod_link in a list
+ */
+struct omap_hwmod_link {
+       struct omap_hwmod_ocp_if        *ocp_if;
+       struct list_head                node;
+};
+
 /**
  * struct omap_hwmod - integration data for OMAP hardware "modules" (IP blocks)
  * @name: name of the hwmod
@@ -487,12 +504,10 @@ struct omap_hwmod_class {
  * @_clk: pointer to the main struct clk (filled in at runtime)
  * @opt_clks: other device clocks that drivers can request (0..*)
  * @voltdm: pointer to voltage domain (filled in at runtime)
- * @masters: ptr to array of OCP ifs that this hwmod can initiate on
- * @slaves: ptr to array of OCP ifs that this hwmod can respond on
  * @dev_attr: arbitrary device attributes that can be passed to the driver
  * @_sysc_cache: internal-use hwmod flags
  * @_mpu_rt_va: cached register target start address (internal use)
- * @_mpu_port_index: cached MPU register target slave ID (internal use)
+ * @_mpu_port: cached MPU register target slave (internal use)
  * @opt_clks_cnt: number of @opt_clks
  * @master_cnt: number of @master entries
  * @slaves_cnt: number of @slave entries
@@ -511,6 +526,8 @@ struct omap_hwmod_class {
  *
  * Parameter names beginning with an underscore are managed internally by
  * the omap_hwmod code and should not be set during initialization.
+ *
+ * @masters and @slaves are now deprecated.
  */
 struct omap_hwmod {
        const char                      *name;
@@ -529,15 +546,15 @@ struct omap_hwmod {
        struct omap_hwmod_opt_clk       *opt_clks;
        char                            *clkdm_name;
        struct clockdomain              *clkdm;
-       struct omap_hwmod_ocp_if        **masters; /* connect to *_IA */
-       struct omap_hwmod_ocp_if        **slaves;  /* connect to *_TA */
+       struct list_head                master_ports; /* connect to *_IA */
+       struct list_head                slave_ports; /* connect to *_TA */
        void                            *dev_attr;
        u32                             _sysc_cache;
        void __iomem                    *_mpu_rt_va;
        spinlock_t                      _lock;
        struct list_head                node;
+       struct omap_hwmod_ocp_if        *_mpu_port;
        u16                             flags;
-       u8                              _mpu_port_index;
        u8                              response_lat;
        u8                              rst_lines_cnt;
        u8                              opt_clks_cnt;
@@ -549,7 +566,6 @@ struct omap_hwmod {
        u8                              _postsetup_state;
 };
 
-int omap_hwmod_register(struct omap_hwmod **ohs);
 struct omap_hwmod *omap_hwmod_lookup(const char *name);
 int omap_hwmod_for_each(int (*fn)(struct omap_hwmod *oh, void *data),
                        void *data);
@@ -581,6 +597,8 @@ int omap_hwmod_softreset(struct omap_hwmod *oh);
 
 int omap_hwmod_count_resources(struct omap_hwmod *oh);
 int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res);
+int omap_hwmod_get_resource_byname(struct omap_hwmod *oh, unsigned int type,
+                                  const char *name, struct resource *res);
 
 struct powerdomain *omap_hwmod_get_pwrdm(struct omap_hwmod *oh);
 void __iomem *omap_hwmod_get_mpu_rt_va(struct omap_hwmod *oh);
@@ -619,4 +637,6 @@ extern int omap2430_hwmod_init(void);
 extern int omap3xxx_hwmod_init(void);
 extern int omap44xx_hwmod_init(void);
 
+extern int __init omap_hwmod_register_links(struct omap_hwmod_ocp_if **ois);
+
 #endif
diff --git a/arch/arm/plat-omap/ocpi.c b/arch/arm/plat-omap/ocpi.c
deleted file mode 100644 (file)
index ebe0c73..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * linux/arch/arm/plat-omap/ocpi.c
- *
- * Minimal OCP bus support for omap16xx
- *
- * Copyright (C) 2003 - 2005 Nokia Corporation
- * Written by Tony Lindgren <tony@atomide.com>
- *
- * Modified for clock framework by Paul Mundt <paul.mundt@nokia.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
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#include <linux/module.h>
-#include <linux/types.h>
-#include <linux/errno.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/spinlock.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-
-#include <mach/hardware.h>
-
-#define OCPI_BASE              0xfffec320
-#define OCPI_FAULT             (OCPI_BASE + 0x00)
-#define OCPI_CMD_FAULT         (OCPI_BASE + 0x04)
-#define OCPI_SINT0             (OCPI_BASE + 0x08)
-#define OCPI_TABORT            (OCPI_BASE + 0x0c)
-#define OCPI_SINT1             (OCPI_BASE + 0x10)
-#define OCPI_PROT              (OCPI_BASE + 0x14)
-#define OCPI_SEC               (OCPI_BASE + 0x18)
-
-/* USB OHCI OCPI access error registers */
-#define HOSTUEADDR     0xfffba0e0
-#define HOSTUESTATUS   0xfffba0e4
-
-static struct clk *ocpi_ck;
-
-/*
- * Enables device access to OMAP buses via the OCPI bridge
- * FIXME: Add locking
- */
-int ocpi_enable(void)
-{
-       unsigned int val;
-
-       if (!cpu_is_omap16xx())
-               return -ENODEV;
-
-       /* Enable access for OHCI in OCPI */
-       val = omap_readl(OCPI_PROT);
-       val &= ~0xff;
-       //val &= (1 << 0);      /* Allow access only to EMIFS */
-       omap_writel(val, OCPI_PROT);
-
-       val = omap_readl(OCPI_SEC);
-       val &= ~0xff;
-       omap_writel(val, OCPI_SEC);
-
-       return 0;
-}
-EXPORT_SYMBOL(ocpi_enable);
-
-static int __init omap_ocpi_init(void)
-{
-       if (!cpu_is_omap16xx())
-               return -ENODEV;
-
-       ocpi_ck = clk_get(NULL, "l3_ocpi_ck");
-       if (IS_ERR(ocpi_ck))
-               return PTR_ERR(ocpi_ck);
-
-       clk_enable(ocpi_ck);
-       ocpi_enable();
-       printk("OMAP OCPI interconnect driver loaded\n");
-
-       return 0;
-}
-
-static void __exit omap_ocpi_exit(void)
-{
-       /* REVISIT: Disable OCPI */
-
-       if (!cpu_is_omap16xx())
-               return;
-
-       clk_disable(ocpi_ck);
-       clk_put(ocpi_ck);
-}
-
-MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>");
-MODULE_DESCRIPTION("OMAP OCPI bus controller module");
-MODULE_LICENSE("GPL");
-module_init(omap_ocpi_init);
-module_exit(omap_ocpi_exit);
index d50cbc6385bd48a10fd5d6064b1733b00b563910..c490240bb82c7be0e8b1e11636e7bde2b9face6a 100644 (file)
@@ -475,13 +475,11 @@ static int omap_device_count_resources(struct omap_device *od)
 static int omap_device_fill_resources(struct omap_device *od,
                                      struct resource *res)
 {
-       int c = 0;
        int i, r;
 
        for (i = 0; i < od->hwmods_cnt; i++) {
                r = omap_hwmod_fill_resources(od->hwmods[i], res);
                res += r;
-               c += r;
        }
 
        return 0;
index f9a8c5341ee93e41138f2adb5a6a6f4ce09d48d5..477363c163ec5b3fc12b3f4de942673ce213c999 100644 (file)
@@ -196,8 +196,8 @@ static void __init omap_map_sram(void)
         * Looks like we need to preserve some bootloader code at the
         * beginning of SRAM for jumping to flash for reboot to work...
         */
-       memset((void *)omap_sram_base + SRAM_BOOTLOADER_SZ, 0,
-              omap_sram_size - SRAM_BOOTLOADER_SZ);
+       memset_io(omap_sram_base + SRAM_BOOTLOADER_SZ, 0,
+                 omap_sram_size - SRAM_BOOTLOADER_SZ);
 }
 
 /*
index d2bbfd1cb0b593ccd3ac5e45c22e8435d8ebd37e..5db75619f2137d9444e453d90f584c96d6c2b100 100644 (file)
@@ -31,8 +31,6 @@
 
 #include <mach/hardware.h>
 
-#include "../mach-omap2/common.h"
-
 #ifdef CONFIG_ARCH_OMAP_OTG
 
 void __init
@@ -138,8 +136,6 @@ omap_otg_init(struct omap_usb_config *config)
 #endif
        pr_debug("OTG_SYSCON_1 = %08x\n", omap_readl(OTG_SYSCON_1));
        omap_writel(syscon, OTG_SYSCON_1);
-
-       status = 0;
 }
 
 #else
index 0689bf6b01833495967faf00e68c3b1136a44b9c..b2402eb076c787eafd111d643982f0a6422bb41a 100644 (file)
@@ -62,7 +62,7 @@ config HW_RANDOM_AMD
 
 config HW_RANDOM_ATMEL
        tristate "Atmel Random Number Generator support"
-       depends on HW_RANDOM && ARCH_AT91SAM9G45
+       depends on HW_RANDOM && HAVE_CLK
        default HW_RANDOM
        ---help---
          This driver provides kernel-side support for the Random Number
index 5138927a416c99acdf13deed3e6d717a616a5af8..99c6b203e6cde5c2d969c0411233b39ee00651ec 100644 (file)
@@ -18,7 +18,7 @@ config DW_APB_TIMER
 
 config CLKSRC_DBX500_PRCMU
        bool "Clocksource PRCMU Timer"
-       depends on UX500_SOC_DB5500 || UX500_SOC_DB8500
+       depends on UX500_SOC_DB8500
        default y
        help
          Use the always on PRCMU Timer as clocksource
index 2a2141915aa04939a4a1f9f9f96b0ef9a58072b6..75838d7710ce61db466d87ea9cbc3164f6bd8d4a 100644 (file)
@@ -489,10 +489,10 @@ config TOUCHSCREEN_TI_TSCADC
 
 config TOUCHSCREEN_ATMEL_TSADCC
        tristate "Atmel Touchscreen Interface"
-       depends on ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
+       depends on ARCH_AT91
        help
          Say Y here if you have a 4-wire touchscreen connected to the
-          ADC Controller on your Atmel SoC (such as the AT91SAM9RL).
+          ADC Controller on your Atmel SoC.
 
          If unsure, say N.
 
index 11e44386fa9bba2287c3fda66b422b3f88c57963..d875bfa56ad563b46addbf8d75c030a445d12fa1 100644 (file)
@@ -648,23 +648,6 @@ config EZX_PCAP
          This enables the PCAP ASIC present on EZX Phones. This is
          needed for MMC, TouchScreen, Sound, USB, etc..
 
-config AB5500_CORE
-       bool "ST-Ericsson AB5500 Mixed Signal Power Management chip"
-       depends on ABX500_CORE && MFD_DB5500_PRCMU
-       select MFD_CORE
-       help
-         Select this option to enable access to AB5500 power management
-         chip. This connects to the db5500 chip via the I2C bus via PRCMU.
-         This chip embeds various other multimedia funtionalities as well.
-
-config AB5500_DEBUG
-       bool "Enable debug info via debugfs"
-       depends on AB5500_CORE && DEBUG_FS
-       default y if DEBUG_FS
-       help
-         Select this option if you want debug information from the AB5500
-         using the debug filesystem, debugfs.
-
 config AB8500_CORE
        bool "ST-Ericsson AB8500 Mixed Signal Power Management chip"
        depends on GENERIC_HARDIRQS && ABX500_CORE
@@ -711,16 +694,6 @@ config MFD_DB8500_PRCMU
          system controller running an XP70 microprocessor, which is accessed
          through a register map.
 
-config MFD_DB5500_PRCMU
-       bool "ST-Ericsson DB5500 Power Reset Control Management Unit"
-       depends on UX500_SOC_DB5500
-       select MFD_CORE
-       help
-         Select this option to enable support for the DB5500 Power Reset
-         and Control Management Unit. This is basically an autonomous
-         system controller running an XP70 microprocessor, which is accessed
-         through a register map.
-
 config MFD_CS5535
        tristate "Support for CS5535 and CS5536 southbridge core functions"
        select MFD_CORE
index 05fa538c5efe942ebd5146e57689fc607a34955c..669ba7d85a36a89bc8225b95a28236fc3ccffe61 100644 (file)
@@ -87,15 +87,12 @@ obj-$(CONFIG_PCF50633_GPIO) += pcf50633-gpio.o
 obj-$(CONFIG_ABX500_CORE)      += abx500-core.o
 obj-$(CONFIG_AB3100_CORE)      += ab3100-core.o
 obj-$(CONFIG_AB3100_OTP)       += ab3100-otp.o
-obj-$(CONFIG_AB5500_CORE)      += ab5500-core.o
-obj-$(CONFIG_AB5500_DEBUG)     += ab5500-debugfs.o
 obj-$(CONFIG_AB8500_CORE)      += ab8500-core.o ab8500-sysctrl.o
 obj-$(CONFIG_AB8500_DEBUG)     += ab8500-debugfs.o
 obj-$(CONFIG_AB8500_GPADC)     += ab8500-gpadc.o
 obj-$(CONFIG_MFD_DB8500_PRCMU) += db8500-prcmu.o
 # ab8500-i2c need to come after db8500-prcmu (which provides the channel)
 obj-$(CONFIG_AB8500_I2C_CORE)  += ab8500-i2c.o
-obj-$(CONFIG_MFD_DB5500_PRCMU) += db5500-prcmu.o
 obj-$(CONFIG_MFD_TIMBERDALE)    += timberdale.o
 obj-$(CONFIG_PMIC_ADP5520)     += adp5520.o
 obj-$(CONFIG_LPC_SCH)          += lpc_sch.o
diff --git a/drivers/mfd/ab5500-core.c b/drivers/mfd/ab5500-core.c
deleted file mode 100644 (file)
index 54d0fe4..0000000
+++ /dev/null
@@ -1,1439 +0,0 @@
-/*
- * Copyright (C) 2007-2011 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * Low-level core for exclusive access to the AB5500 IC on the I2C bus
- * and some basic chip-configuration.
- * Author: Bengt Jonsson <bengt.g.jonsson@stericsson.com>
- * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
- * Author: Mattias Wallin <mattias.wallin@stericsson.com>
- * Author: Rickard Andersson <rickard.andersson@stericsson.com>
- * Author: Karl Komierowski  <karl.komierowski@stericsson.com>
- * Author: Bibek Basu <bibek.basu@stericsson.com>
- *
- * TODO: Event handling with irq_chip. Waiting for PRCMU fw support.
- */
-
-#include <linux/module.h>
-#include <linux/mutex.h>
-#include <linux/err.h>
-#include <linux/platform_device.h>
-#include <linux/slab.h>
-#include <linux/device.h>
-#include <linux/irq.h>
-#include <linux/interrupt.h>
-#include <linux/random.h>
-#include <linux/mfd/abx500.h>
-#include <linux/mfd/abx500/ab5500.h>
-#include <linux/list.h>
-#include <linux/bitops.h>
-#include <linux/spinlock.h>
-#include <linux/mfd/core.h>
-#include <linux/mfd/db5500-prcmu.h>
-
-#include "ab5500-core.h"
-#include "ab5500-debugfs.h"
-
-#define AB5500_NUM_EVENT_REG 23
-#define AB5500_IT_LATCH0_REG 0x40
-#define AB5500_IT_MASK0_REG 0x60
-
-/*
- * Permissible register ranges for reading and writing per device and bank.
- *
- * The ranges must be listed in increasing address order, and no overlaps are
- * allowed. It is assumed that write permission implies read permission
- * (i.e. only RO and RW permissions should be used).  Ranges with write
- * permission must not be split up.
- */
-
-#define NO_RANGE {.count = 0, .range = NULL,}
-static struct ab5500_i2c_banks ab5500_bank_ranges[AB5500_NUM_DEVICES] = {
-       [AB5500_DEVID_USB] =  {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_USB,
-                               .nranges = 12,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x01,
-                                               .last = 0x01,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x80,
-                                               .last = 0x83,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x87,
-                                               .last = 0x8A,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x8B,
-                                               .last = 0x8B,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x91,
-                                               .last = 0x92,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x93,
-                                               .last = 0x93,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x94,
-                                               .last = 0x94,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0xA8,
-                                               .last = 0xB0,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0xB2,
-                                               .last = 0xB2,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0xB4,
-                                               .last = 0xBC,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0xBF,
-                                               .last = 0xBF,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0xC1,
-                                               .last = 0xC5,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_ADC] =  {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_ADC,
-                               .nranges = 6,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x1F,
-                                               .last = 0x22,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x23,
-                                               .last = 0x24,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x26,
-                                               .last = 0x2D,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x2F,
-                                               .last = 0x34,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x37,
-                                               .last = 0x57,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x58,
-                                               .last = 0x58,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_LEDS] =  {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_LED,
-                               .nranges = 1,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x0C,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_VIDEO] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_VDENC,
-                               .nranges = 12,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x08,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x09,
-                                               .last = 0x09,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x0A,
-                                               .last = 0x12,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x15,
-                                               .last = 0x19,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x1B,
-                                               .last = 0x21,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x27,
-                                               .last = 0x2C,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x41,
-                                               .last = 0x41,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x45,
-                                               .last = 0x5B,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x5D,
-                                               .last = 0x5D,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x69,
-                                               .last = 0x69,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x6C,
-                                               .last = 0x6D,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x80,
-                                               .last = 0x81,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_REGULATORS] =   {
-               .nbanks = 2,
-               .bank =  (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_STARTUP,
-                               .nranges = 12,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x01,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x1F,
-                                               .last = 0x1F,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x2E,
-                                               .last = 0x2E,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x2F,
-                                               .last = 0x30,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x50,
-                                               .last = 0x51,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x60,
-                                               .last = 0x61,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x66,
-                                               .last = 0x8A,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x8C,
-                                               .last = 0x96,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xAA,
-                                               .last = 0xB4,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xB7,
-                                               .last = 0xBF,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xC1,
-                                               .last = 0xCA,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xD3,
-                                               .last = 0xE0,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-                       {
-                               .bankid = AB5500_BANK_SIM_USBSIM,
-                               .nranges = 1,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x13,
-                                               .last = 0x19,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_SIM] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_SIM_USBSIM,
-                               .nranges = 1,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x13,
-                                               .last = 0x19,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_RTC] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_RTC,
-                               .nranges = 2,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x04,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0x06,
-                                               .last = 0x0C,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_CHARGER] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_CHG,
-                               .nranges = 2,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x11,
-                                               .last = 0x11,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x12,
-                                               .last = 0x1B,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_FUELGAUGE] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_FG_BATTCOM_ACC,
-                               .nranges = 2,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x0B,
-                                               .perm = AB5500_PERM_RO,
-                                       },
-                                       {
-                                               .first = 0x0C,
-                                               .last = 0x10,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_VIBRATOR] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_VIBRA,
-                               .nranges = 2,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x10,
-                                               .last = 0x13,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xFE,
-                                               .last = 0xFE,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_CODEC] =   {
-               .nbanks = 1,
-               .bank = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_AUDIO_HEADSETUSB,
-                               .nranges = 2,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x00,
-                                               .last = 0x48,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                                       {
-                                               .first = 0xEB,
-                                               .last = 0xFB,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-       [AB5500_DEVID_POWER] = {
-               .nbanks = 2,
-               .bank   = (struct ab5500_i2c_ranges []) {
-                       {
-                               .bankid = AB5500_BANK_STARTUP,
-                               .nranges = 1,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x30,
-                                               .last = 0x30,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-                       {
-                               .bankid = AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP,
-                               .nranges = 1,
-                               .range = (struct ab5500_reg_range[]) {
-                                       {
-                                               .first = 0x01,
-                                               .last = 0x01,
-                                               .perm = AB5500_PERM_RW,
-                                       },
-                               },
-                       },
-               },
-       },
-};
-
-#define AB5500_IRQ(bank, bit)  ((bank) * 8 + (bit))
-
-/* I appologize for the resource names beeing a mix of upper case
- * and lower case but I want them to be exact as the documentation */
-static struct mfd_cell ab5500_devs[AB5500_NUM_DEVICES] = {
-       [AB5500_DEVID_LEDS] = {
-               .name = "ab5500-leds",
-               .id = AB5500_DEVID_LEDS,
-       },
-       [AB5500_DEVID_POWER] = {
-               .name = "ab5500-power",
-               .id = AB5500_DEVID_POWER,
-       },
-       [AB5500_DEVID_REGULATORS] = {
-               .name = "ab5500-regulator",
-               .id = AB5500_DEVID_REGULATORS,
-       },
-       [AB5500_DEVID_SIM] = {
-               .name = "ab5500-sim",
-               .id = AB5500_DEVID_SIM,
-               .num_resources = 1,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "SIMOFF",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(2, 0), /*rising*/
-                               .end = AB5500_IRQ(2, 1), /*falling*/
-                       },
-               },
-       },
-       [AB5500_DEVID_RTC] = {
-               .name = "ab5500-rtc",
-               .id = AB5500_DEVID_RTC,
-               .num_resources = 1,
-               .resources = (struct resource[]) {
-                       {
-                               .name   = "RTC_Alarm",
-                               .flags  = IORESOURCE_IRQ,
-                               .start  = AB5500_IRQ(1, 7),
-                               .end    = AB5500_IRQ(1, 7),
-                       }
-               },
-       },
-       [AB5500_DEVID_CHARGER] = {
-               .name = "ab5500-charger",
-               .id = AB5500_DEVID_CHARGER,
-       },
-       [AB5500_DEVID_ADC] = {
-               .name = "ab5500-adc",
-               .id = AB5500_DEVID_ADC,
-               .num_resources = 10,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "TRIGGER-0",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 0),
-                               .end = AB5500_IRQ(0, 0),
-                       },
-                       {
-                               .name = "TRIGGER-1",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 1),
-                               .end = AB5500_IRQ(0, 1),
-                       },
-                       {
-                               .name = "TRIGGER-2",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 2),
-                               .end = AB5500_IRQ(0, 2),
-                       },
-                       {
-                               .name = "TRIGGER-3",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 3),
-                               .end = AB5500_IRQ(0, 3),
-                       },
-                       {
-                               .name = "TRIGGER-4",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 4),
-                               .end = AB5500_IRQ(0, 4),
-                       },
-                       {
-                               .name = "TRIGGER-5",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 5),
-                               .end = AB5500_IRQ(0, 5),
-                       },
-                       {
-                               .name = "TRIGGER-6",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 6),
-                               .end = AB5500_IRQ(0, 6),
-                       },
-                       {
-                               .name = "TRIGGER-7",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 7),
-                               .end = AB5500_IRQ(0, 7),
-                       },
-                       {
-                               .name = "TRIGGER-VBAT",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 8),
-                               .end = AB5500_IRQ(0, 8),
-                       },
-                       {
-                               .name = "TRIGGER-VBAT-TXON",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(0, 9),
-                               .end = AB5500_IRQ(0, 9),
-                       },
-               },
-       },
-       [AB5500_DEVID_FUELGAUGE] = {
-               .name = "ab5500-fuelgauge",
-               .id = AB5500_DEVID_FUELGAUGE,
-               .num_resources = 6,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "Batt_attach",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(7, 5),
-                               .end = AB5500_IRQ(7, 5),
-                       },
-                       {
-                               .name = "Batt_removal",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(7, 6),
-                               .end = AB5500_IRQ(7, 6),
-                       },
-                       {
-                               .name = "UART_framing",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(7, 7),
-                               .end = AB5500_IRQ(7, 7),
-                       },
-                       {
-                               .name = "UART_overrun",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 0),
-                               .end = AB5500_IRQ(8, 0),
-                       },
-                       {
-                               .name = "UART_Rdy_RX",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 1),
-                               .end = AB5500_IRQ(8, 1),
-                       },
-                       {
-                               .name = "UART_Rdy_TX",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 2),
-                               .end = AB5500_IRQ(8, 2),
-                       },
-               },
-       },
-       [AB5500_DEVID_VIBRATOR] = {
-               .name = "ab5500-vibrator",
-               .id = AB5500_DEVID_VIBRATOR,
-       },
-       [AB5500_DEVID_CODEC] = {
-               .name = "ab5500-codec",
-               .id = AB5500_DEVID_CODEC,
-               .num_resources = 3,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "audio_spkr1_ovc",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 5),
-                               .end = AB5500_IRQ(9, 5),
-                       },
-                       {
-                               .name = "audio_plllocked",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 6),
-                               .end = AB5500_IRQ(9, 6),
-                       },
-                       {
-                               .name = "audio_spkr2_ovc",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(17, 4),
-                               .end = AB5500_IRQ(17, 4),
-                       },
-               },
-       },
-       [AB5500_DEVID_USB] = {
-               .name = "ab5500-usb",
-               .id = AB5500_DEVID_USB,
-               .num_resources = 36,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "Link_Update",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(22, 1),
-                               .end = AB5500_IRQ(22, 1),
-                       },
-                       {
-                               .name = "DCIO",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 3),
-                               .end = AB5500_IRQ(8, 4),
-                       },
-                       {
-                               .name = "VBUS_R",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 5),
-                               .end = AB5500_IRQ(8, 5),
-                       },
-                       {
-                               .name = "VBUS_F",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 6),
-                               .end = AB5500_IRQ(8, 6),
-                       },
-                       {
-                               .name = "CHGstate_10_PCVBUSchg",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(8, 7),
-                               .end = AB5500_IRQ(8, 7),
-                       },
-                       {
-                               .name = "DCIOreverse_ovc",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 0),
-                               .end = AB5500_IRQ(9, 0),
-                       },
-                       {
-                               .name = "USBCharDetDone",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 1),
-                               .end = AB5500_IRQ(9, 1),
-                       },
-                       {
-                               .name = "DCIO_no_limit",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 2),
-                               .end = AB5500_IRQ(9, 2),
-                       },
-                       {
-                               .name = "USB_suspend",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 3),
-                               .end = AB5500_IRQ(9, 3),
-                       },
-                       {
-                               .name = "DCIOreverse_fwdcurrent",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 4),
-                               .end = AB5500_IRQ(9, 4),
-                       },
-                       {
-                               .name = "Vbus_Imeasmax_change",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(9, 5),
-                               .end = AB5500_IRQ(9, 6),
-                       },
-                       {
-                               .name = "OVV",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 5),
-                               .end = AB5500_IRQ(14, 5),
-                       },
-                       {
-                               .name = "USBcharging_NOTok",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 3),
-                               .end = AB5500_IRQ(15, 3),
-                       },
-                       {
-                               .name = "usb_adp_sensoroff",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 6),
-                               .end = AB5500_IRQ(15, 6),
-                       },
-                       {
-                               .name = "usb_adp_probeplug",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 7),
-                               .end = AB5500_IRQ(15, 7),
-                       },
-                       {
-                               .name = "usb_adp_sinkerror",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 0),
-                               .end = AB5500_IRQ(16, 6),
-                       },
-                       {
-                               .name = "usb_adp_sourceerror",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 1),
-                               .end = AB5500_IRQ(16, 1),
-                       },
-                       {
-                               .name = "usb_idgnd_r",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 2),
-                               .end = AB5500_IRQ(16, 2),
-                       },
-                       {
-                               .name = "usb_idgnd_f",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 3),
-                               .end = AB5500_IRQ(16, 3),
-                       },
-                       {
-                               .name = "usb_iddetR1",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 4),
-                               .end = AB5500_IRQ(16, 5),
-                       },
-                       {
-                               .name = "usb_iddetR2",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(16, 6),
-                               .end = AB5500_IRQ(16, 7),
-                       },
-                       {
-                               .name = "usb_iddetR3",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(17, 0),
-                               .end = AB5500_IRQ(17, 1),
-                       },
-                       {
-                               .name = "usb_iddetR4",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(17, 2),
-                               .end = AB5500_IRQ(17, 3),
-                       },
-                       {
-                               .name = "CharTempWindowOk",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(17, 7),
-                               .end = AB5500_IRQ(18, 0),
-                       },
-                       {
-                               .name = "USB_SprDetect",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(18, 1),
-                               .end = AB5500_IRQ(18, 1),
-                       },
-                       {
-                               .name = "usb_adp_probe_unplug",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(18, 2),
-                               .end = AB5500_IRQ(18, 2),
-                       },
-                       {
-                               .name = "VBUSChDrop",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(18, 3),
-                               .end = AB5500_IRQ(18, 4),
-                       },
-                       {
-                               .name = "dcio_char_rec_done",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(18, 5),
-                               .end = AB5500_IRQ(18, 5),
-                       },
-                       {
-                               .name = "Charging_stopped_by_temp",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(18, 6),
-                               .end = AB5500_IRQ(18, 6),
-                       },
-                       {
-                               .name = "CHGstate_11_SafeModeVBUS",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 1),
-                               .end = AB5500_IRQ(21, 2),
-                       },
-                       {
-                               .name = "CHGstate_12_comletedVBUS",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 2),
-                               .end = AB5500_IRQ(21, 2),
-                       },
-                       {
-                               .name = "CHGstate_13_completedVBUS",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 3),
-                               .end = AB5500_IRQ(21, 3),
-                       },
-                       {
-                               .name = "CHGstate_14_FullChgDCIO",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 4),
-                               .end = AB5500_IRQ(21, 4),
-                       },
-                       {
-                               .name = "CHGstate_15_SafeModeDCIO",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 5),
-                               .end = AB5500_IRQ(21, 5),
-                       },
-                       {
-                               .name = "CHGstate_16_OFFsuspendDCIO",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 6),
-                               .end = AB5500_IRQ(21, 6),
-                       },
-                       {
-                               .name = "CHGstate_17_completedDCIO",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(21, 7),
-                               .end = AB5500_IRQ(21, 7),
-                       },
-               },
-       },
-       [AB5500_DEVID_OTP] = {
-               .name = "ab5500-otp",
-               .id = AB5500_DEVID_OTP,
-       },
-       [AB5500_DEVID_VIDEO] = {
-               .name = "ab5500-video",
-               .id = AB5500_DEVID_VIDEO,
-               .num_resources = 1,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "plugTVdet",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(22, 2),
-                               .end = AB5500_IRQ(22, 2),
-                       },
-               },
-       },
-       [AB5500_DEVID_DBIECI] = {
-               .name = "ab5500-dbieci",
-               .id = AB5500_DEVID_DBIECI,
-               .num_resources = 10,
-               .resources = (struct resource[]) {
-                       {
-                               .name = "COLL",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 0),
-                               .end = AB5500_IRQ(14, 0),
-                       },
-                       {
-                               .name = "RESERR",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 1),
-                               .end = AB5500_IRQ(14, 1),
-                       },
-                       {
-                               .name = "FRAERR",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 2),
-                               .end = AB5500_IRQ(14, 2),
-                       },
-                       {
-                               .name = "COMERR",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 3),
-                               .end = AB5500_IRQ(14, 3),
-                       },
-                       {
-                               .name = "BSI_indicator",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 4),
-                               .end = AB5500_IRQ(14, 4),
-                       },
-                       {
-                               .name = "SPDSET",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 6),
-                               .end = AB5500_IRQ(14, 6),
-                       },
-                       {
-                               .name = "DSENT",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(14, 7),
-                               .end = AB5500_IRQ(14, 7),
-                       },
-                       {
-                               .name = "DREC",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 0),
-                               .end = AB5500_IRQ(15, 0),
-                       },
-                       {
-                               .name = "ACCINT",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 1),
-                               .end = AB5500_IRQ(15, 1),
-                       },
-                       {
-                               .name = "NOPINT",
-                               .flags = IORESOURCE_IRQ,
-                               .start = AB5500_IRQ(15, 2),
-                               .end = AB5500_IRQ(15, 2),
-                       },
-               },
-       },
-       [AB5500_DEVID_ONSWA] = {
-               .name = "ab5500-onswa",
-               .id = AB5500_DEVID_ONSWA,
-               .num_resources = 2,
-               .resources = (struct resource[]) {
-                       {
-                               .name   = "ONSWAn_rising",
-                               .flags  = IORESOURCE_IRQ,
-                               .start  = AB5500_IRQ(1, 3),
-                               .end    = AB5500_IRQ(1, 3),
-                       },
-                       {
-                               .name   = "ONSWAn_falling",
-                               .flags  = IORESOURCE_IRQ,
-                               .start  = AB5500_IRQ(1, 4),
-                               .end    = AB5500_IRQ(1, 4),
-                       },
-               },
-       },
-};
-
-/*
- * Functionality for getting/setting register values.
- */
-int ab5500_get_register_interruptible_raw(struct ab5500 *ab,
-                                         u8 bank, u8 reg,
-                                         u8 *value)
-{
-       int err;
-
-       if (bank >= AB5500_NUM_BANKS)
-               return -EINVAL;
-
-       err = mutex_lock_interruptible(&ab->access_mutex);
-       if (err)
-               return err;
-       err = db5500_prcmu_abb_read(bankinfo[bank].slave_addr, reg, value, 1);
-
-       mutex_unlock(&ab->access_mutex);
-       return err;
-}
-
-static int get_register_page_interruptible(struct ab5500 *ab, u8 bank,
-       u8 first_reg, u8 *regvals, u8 numregs)
-{
-       int err;
-
-       if (bank >= AB5500_NUM_BANKS)
-               return -EINVAL;
-
-       err = mutex_lock_interruptible(&ab->access_mutex);
-       if (err)
-               return err;
-
-       while (numregs) {
-               /* The hardware limit for get page is 4 */
-               u8 curnum = min_t(u8, numregs, 4u);
-
-               err = db5500_prcmu_abb_read(bankinfo[bank].slave_addr,
-                                           first_reg, regvals, curnum);
-               if (err)
-                       goto out;
-
-               numregs -= curnum;
-               first_reg += curnum;
-               regvals += curnum;
-       }
-
-out:
-       mutex_unlock(&ab->access_mutex);
-       return err;
-}
-
-int ab5500_mask_and_set_register_interruptible_raw(struct ab5500 *ab, u8 bank,
-       u8 reg, u8 bitmask, u8 bitvalues)
-{
-       int err = 0;
-
-       if (bank >= AB5500_NUM_BANKS)
-               return -EINVAL;
-
-       if (bitmask) {
-               u8 buf;
-
-               err = mutex_lock_interruptible(&ab->access_mutex);
-               if (err)
-                       return err;
-
-               if (bitmask == 0xFF) /* No need to read in this case. */
-                       buf = bitvalues;
-               else { /* Read and modify the register value. */
-                       err = db5500_prcmu_abb_read(bankinfo[bank].slave_addr,
-                               reg, &buf, 1);
-                       if (err)
-                               return err;
-
-                       buf = ((~bitmask & buf) | (bitmask & bitvalues));
-               }
-               /* Write the new value. */
-               err = db5500_prcmu_abb_write(bankinfo[bank].slave_addr, reg,
-                                            &buf, 1);
-
-               mutex_unlock(&ab->access_mutex);
-       }
-       return err;
-}
-
-static int
-set_register_interruptible(struct ab5500 *ab, u8 bank, u8 reg, u8 value)
-{
-       return ab5500_mask_and_set_register_interruptible_raw(ab, bank, reg,
-                                                             0xff, value);
-}
-
-/*
- * Read/write permission checking functions.
- */
-static const struct ab5500_i2c_ranges *get_bankref(u8 devid, u8 bank)
-{
-       u8 i;
-
-       if (devid < AB5500_NUM_DEVICES) {
-               for (i = 0; i < ab5500_bank_ranges[devid].nbanks; i++) {
-                       if (ab5500_bank_ranges[devid].bank[i].bankid == bank)
-                               return &ab5500_bank_ranges[devid].bank[i];
-               }
-       }
-       return NULL;
-}
-
-static bool page_write_allowed(u8 devid, u8 bank, u8 first_reg, u8 last_reg)
-{
-       u8 i; /* range loop index */
-       const struct ab5500_i2c_ranges *bankref;
-
-       bankref = get_bankref(devid, bank);
-       if (bankref == NULL || last_reg < first_reg)
-               return false;
-
-       for (i = 0; i < bankref->nranges; i++) {
-               if (first_reg < bankref->range[i].first)
-                       break;
-               if ((last_reg <= bankref->range[i].last) &&
-                       (bankref->range[i].perm & AB5500_PERM_WR))
-                       return true;
-       }
-       return false;
-}
-
-static bool reg_write_allowed(u8 devid, u8 bank, u8 reg)
-{
-       return page_write_allowed(devid, bank, reg, reg);
-}
-
-static bool page_read_allowed(u8 devid, u8 bank, u8 first_reg, u8 last_reg)
-{
-       u8 i;
-       const struct ab5500_i2c_ranges *bankref;
-
-       bankref = get_bankref(devid, bank);
-       if (bankref == NULL || last_reg < first_reg)
-               return false;
-
-
-       /* Find the range (if it exists in the list) that includes first_reg. */
-       for (i = 0; i < bankref->nranges; i++) {
-               if (first_reg < bankref->range[i].first)
-                       return false;
-               if (first_reg <= bankref->range[i].last)
-                       break;
-       }
-       /* Make sure that the entire range up to and including last_reg is
-        * readable. This may span several of the ranges in the list.
-        */
-       while ((i < bankref->nranges) &&
-               (bankref->range[i].perm & AB5500_PERM_RD)) {
-               if (last_reg <= bankref->range[i].last)
-                       return true;
-               if ((++i >= bankref->nranges) ||
-                       (bankref->range[i].first !=
-                               (bankref->range[i - 1].last + 1))) {
-                       break;
-               }
-       }
-       return false;
-}
-
-static bool reg_read_allowed(u8 devid, u8 bank, u8 reg)
-{
-       return page_read_allowed(devid, bank, reg, reg);
-}
-
-
-/*
- * The exported register access functionality.
- */
-static int ab5500_get_chip_id(struct device *dev)
-{
-       struct ab5500 *ab = dev_get_drvdata(dev->parent);
-
-       return (int)ab->chip_id;
-}
-
-static int ab5500_mask_and_set_register_interruptible(struct device *dev,
-               u8 bank, u8 reg, u8 bitmask, u8 bitvalues)
-{
-       struct ab5500 *ab;
-       struct platform_device *pdev = to_platform_device(dev);
-
-       if ((AB5500_NUM_BANKS <= bank) ||
-               !reg_write_allowed(pdev->id, bank, reg))
-               return -EINVAL;
-
-       ab = dev_get_drvdata(dev->parent);
-       return ab5500_mask_and_set_register_interruptible_raw(ab, bank, reg,
-               bitmask, bitvalues);
-}
-
-static int ab5500_set_register_interruptible(struct device *dev, u8 bank,
-       u8 reg, u8 value)
-{
-       return ab5500_mask_and_set_register_interruptible(dev, bank, reg, 0xFF,
-               value);
-}
-
-static int ab5500_get_register_interruptible(struct device *dev, u8 bank,
-               u8 reg, u8 *value)
-{
-       struct ab5500 *ab;
-       struct platform_device *pdev = to_platform_device(dev);
-
-       if ((AB5500_NUM_BANKS <= bank) ||
-               !reg_read_allowed(pdev->id, bank, reg))
-               return -EINVAL;
-
-       ab = dev_get_drvdata(dev->parent);
-       return ab5500_get_register_interruptible_raw(ab, bank, reg, value);
-}
-
-static int ab5500_get_register_page_interruptible(struct device *dev, u8 bank,
-               u8 first_reg, u8 *regvals, u8 numregs)
-{
-       struct ab5500 *ab;
-       struct platform_device *pdev = to_platform_device(dev);
-
-       if ((AB5500_NUM_BANKS <= bank) ||
-               !page_read_allowed(pdev->id, bank,
-                       first_reg, (first_reg + numregs - 1)))
-               return -EINVAL;
-
-       ab = dev_get_drvdata(dev->parent);
-       return get_register_page_interruptible(ab, bank, first_reg, regvals,
-               numregs);
-}
-
-static int
-ab5500_event_registers_startup_state_get(struct device *dev, u8 *event)
-{
-       struct ab5500 *ab;
-
-       ab = dev_get_drvdata(dev->parent);
-       if (!ab->startup_events_read)
-               return -EAGAIN; /* Try again later */
-
-       memcpy(event, ab->startup_events, AB5500_NUM_EVENT_REG);
-       return 0;
-}
-
-static struct abx500_ops ab5500_ops = {
-       .get_chip_id = ab5500_get_chip_id,
-       .get_register = ab5500_get_register_interruptible,
-       .set_register = ab5500_set_register_interruptible,
-       .get_register_page = ab5500_get_register_page_interruptible,
-       .set_register_page = NULL,
-       .mask_and_set_register = ab5500_mask_and_set_register_interruptible,
-       .event_registers_startup_state_get =
-               ab5500_event_registers_startup_state_get,
-       .startup_irq_enabled = NULL,
-};
-
-/*
- * ab5500_setup : Basic set-up, datastructure creation/destruction
- *               and I2C interface.This sets up a default config
- *               in the AB5500 chip so that it will work as expected.
- * @ab :         Pointer to ab5500 structure
- * @settings :    Pointer to struct abx500_init_settings
- * @size :        Size of init data
- */
-static int __init ab5500_setup(struct ab5500 *ab,
-       struct abx500_init_settings *settings, unsigned int size)
-{
-       int err = 0;
-       int i;
-
-       for (i = 0; i < size; i++) {
-               err = ab5500_mask_and_set_register_interruptible_raw(ab,
-                       settings[i].bank,
-                       settings[i].reg,
-                       0xFF, settings[i].setting);
-               if (err)
-                       goto exit_no_setup;
-
-               /* If event mask register update the event mask in ab5500 */
-               if ((settings[i].bank == AB5500_BANK_IT) &&
-                       (AB5500_MASK_BASE <= settings[i].reg) &&
-                       (settings[i].reg <= AB5500_MASK_END)) {
-                       ab->mask[settings[i].reg - AB5500_MASK_BASE] =
-                               settings[i].setting;
-               }
-       }
-exit_no_setup:
-       return err;
-}
-
-struct ab_family_id {
-       u8      id;
-       char    *name;
-};
-
-static const struct ab_family_id ids[] __initdata = {
-       /* AB5500 */
-       {
-               .id = AB5500_1_0,
-               .name = "1.0"
-       },
-       {
-               .id = AB5500_1_1,
-               .name = "1.1"
-       },
-       /* Terminator */
-       {
-               .id = 0x00,
-       }
-};
-
-static int __init ab5500_probe(struct platform_device *pdev)
-{
-       struct ab5500 *ab;
-       struct ab5500_platform_data *ab5500_plf_data =
-               pdev->dev.platform_data;
-       int err;
-       int i;
-
-       ab = kzalloc(sizeof(struct ab5500), GFP_KERNEL);
-       if (!ab) {
-               dev_err(&pdev->dev,
-                       "could not allocate ab5500 device\n");
-               return -ENOMEM;
-       }
-
-       /* Initialize data structure */
-       mutex_init(&ab->access_mutex);
-       mutex_init(&ab->irq_lock);
-       ab->dev = &pdev->dev;
-
-       platform_set_drvdata(pdev, ab);
-
-       /* Read chip ID register */
-       err = ab5500_get_register_interruptible_raw(ab,
-                                       AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP,
-                                       AB5500_CHIP_ID, &ab->chip_id);
-       if (err) {
-               dev_err(&pdev->dev, "could not communicate with the analog "
-                       "baseband chip\n");
-               goto exit_no_detect;
-       }
-
-       for (i = 0; ids[i].id != 0x0; i++) {
-               if (ids[i].id == ab->chip_id) {
-                       snprintf(&ab->chip_name[0], sizeof(ab->chip_name) - 1,
-                               "AB5500 %s", ids[i].name);
-                       break;
-               }
-       }
-       if (ids[i].id == 0x0) {
-               dev_err(&pdev->dev, "unknown analog baseband chip id: 0x%x\n",
-                       ab->chip_id);
-               dev_err(&pdev->dev, "driver not started!\n");
-               goto exit_no_detect;
-       }
-
-       /* Clear and mask all interrupts */
-       for (i = 0; i < AB5500_NUM_IRQ_REGS; i++) {
-               u8 latchreg = AB5500_IT_LATCH0_REG + i;
-               u8 maskreg = AB5500_IT_MASK0_REG + i;
-               u8 val;
-
-               ab5500_get_register_interruptible_raw(ab, AB5500_BANK_IT,
-                                                     latchreg, &val);
-               set_register_interruptible(ab, AB5500_BANK_IT, maskreg, 0xff);
-               ab->mask[i] = ab->oldmask[i] = 0xff;
-       }
-
-       err = abx500_register_ops(&pdev->dev, &ab5500_ops);
-       if (err) {
-               dev_err(&pdev->dev, "ab5500_register ops error\n");
-               goto exit_no_detect;
-       }
-
-       /* Set up and register the platform devices. */
-       for (i = 0; i < AB5500_NUM_DEVICES; i++) {
-               ab5500_devs[i].platform_data = ab5500_plf_data->dev_data[i];
-               ab5500_devs[i].pdata_size =
-                       sizeof(ab5500_plf_data->dev_data[i]);
-       }
-
-       err = mfd_add_devices(&pdev->dev, 0, ab5500_devs,
-               ARRAY_SIZE(ab5500_devs), NULL,
-               ab5500_plf_data->irq.base);
-       if (err) {
-               dev_err(&pdev->dev, "ab5500_mfd_add_device error\n");
-               goto exit_no_detect;
-       }
-
-       err = ab5500_setup(ab, ab5500_plf_data->init_settings,
-               ab5500_plf_data->init_settings_sz);
-       if (err) {
-               dev_err(&pdev->dev, "ab5500_setup error\n");
-               goto exit_no_detect;
-       }
-
-       ab5500_setup_debugfs(ab);
-
-       dev_info(&pdev->dev, "detected AB chip: %s\n", &ab->chip_name[0]);
-       return 0;
-
-exit_no_detect:
-       kfree(ab);
-       return err;
-}
-
-static int __exit ab5500_remove(struct platform_device *pdev)
-{
-       struct ab5500 *ab = platform_get_drvdata(pdev);
-
-       ab5500_remove_debugfs();
-       mfd_remove_devices(&pdev->dev);
-       kfree(ab);
-       return 0;
-}
-
-static struct platform_driver ab5500_driver = {
-       .driver = {
-               .name = "ab5500-core",
-               .owner = THIS_MODULE,
-       },
-       .remove  = __exit_p(ab5500_remove),
-};
-
-static int __init ab5500_core_init(void)
-{
-       return platform_driver_probe(&ab5500_driver, ab5500_probe);
-}
-
-static void __exit ab5500_core_exit(void)
-{
-       platform_driver_unregister(&ab5500_driver);
-}
-
-subsys_initcall(ab5500_core_init);
-module_exit(ab5500_core_exit);
-
-MODULE_AUTHOR("Mattias Wallin <mattias.wallin@stericsson.com>");
-MODULE_DESCRIPTION("AB5500 core driver");
-MODULE_LICENSE("GPL");
diff --git a/drivers/mfd/ab5500-debugfs.c b/drivers/mfd/ab5500-debugfs.c
deleted file mode 100644 (file)
index 7200694..0000000
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
- * Copyright (C) 2011 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * Debugfs support for the AB5500 MFD driver
- */
-
-#include <linux/module.h>
-#include <linux/debugfs.h>
-#include <linux/seq_file.h>
-#include <linux/mfd/abx500.h>
-#include <linux/mfd/abx500/ab5500.h>
-#include <linux/uaccess.h>
-
-#include "ab5500-core.h"
-#include "ab5500-debugfs.h"
-
-static struct ab5500_i2c_ranges ab5500_reg_ranges[AB5500_NUM_BANKS] = {
-       [AB5500_BANK_LED] = {
-               .bankid = AB5500_BANK_LED,
-               .nranges = 1,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x0C,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_ADC] = {
-               .bankid = AB5500_BANK_ADC,
-               .nranges = 6,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x1F,
-                               .last = 0x22,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x23,
-                               .last = 0x24,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x26,
-                               .last = 0x2D,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x2F,
-                               .last = 0x34,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x37,
-                               .last = 0x57,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x58,
-                               .last = 0x58,
-                               .perm = AB5500_PERM_RO,
-                       },
-               },
-       },
-       [AB5500_BANK_RTC] = {
-               .bankid = AB5500_BANK_RTC,
-               .nranges = 2,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x04,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x06,
-                               .last = 0x0C,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_STARTUP] = {
-               .bankid = AB5500_BANK_STARTUP,
-               .nranges = 12,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x01,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x1F,
-                               .last = 0x1F,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x2E,
-                               .last = 0x2E,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x2F,
-                               .last = 0x30,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x50,
-                               .last = 0x51,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x60,
-                               .last = 0x61,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x66,
-                               .last = 0x8A,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x8C,
-                               .last = 0x96,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xAA,
-                               .last = 0xB4,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xB7,
-                               .last = 0xBF,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xC1,
-                               .last = 0xCA,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xD3,
-                               .last = 0xE0,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_DBI_ECI] = {
-               .bankid = AB5500_BANK_DBI_ECI,
-               .nranges = 3,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x07,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x10,
-                               .last = 0x10,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x13,
-                               .last = 0x13,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_CHG] = {
-               .bankid = AB5500_BANK_CHG,
-               .nranges = 2,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x11,
-                               .last = 0x11,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x12,
-                               .last = 0x1B,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_FG_BATTCOM_ACC] = {
-               .bankid = AB5500_BANK_FG_BATTCOM_ACC,
-               .nranges = 2,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x0B,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x0C,
-                               .last = 0x10,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_USB] = {
-               .bankid = AB5500_BANK_USB,
-               .nranges = 12,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x01,
-                               .last = 0x01,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x80,
-                               .last = 0x83,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x87,
-                               .last = 0x8A,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x8B,
-                               .last = 0x8B,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x91,
-                               .last = 0x92,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x93,
-                               .last = 0x93,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x94,
-                               .last = 0x94,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0xA8,
-                               .last = 0xB0,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0xB2,
-                               .last = 0xB2,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0xB4,
-                               .last = 0xBC,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0xBF,
-                               .last = 0xBF,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0xC1,
-                               .last = 0xC5,
-                               .perm = AB5500_PERM_RO,
-                       },
-               },
-       },
-       [AB5500_BANK_IT] = {
-               .bankid = AB5500_BANK_IT,
-               .nranges = 4,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x02,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x20,
-                               .last = 0x36,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x40,
-                               .last = 0x56,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x60,
-                               .last = 0x76,
-                               .perm = AB5500_PERM_RO,
-                       },
-               },
-       },
-       [AB5500_BANK_VDDDIG_IO_I2C_CLK_TST] = {
-               .bankid = AB5500_BANK_VDDDIG_IO_I2C_CLK_TST,
-               .nranges = 7,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x02,
-                               .last = 0x02,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x12,
-                               .last = 0x12,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x30,
-                               .last = 0x34,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x40,
-                               .last = 0x44,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x50,
-                               .last = 0x54,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x60,
-                               .last = 0x64,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x70,
-                               .last = 0x74,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP] = {
-               .bankid = AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP,
-               .nranges = 13,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x01,
-                               .last = 0x01,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x02,
-                               .last = 0x02,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x0D,
-                               .last = 0x0F,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x1C,
-                               .last = 0x1C,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x1E,
-                               .last = 0x1E,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x20,
-                               .last = 0x21,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x25,
-                               .last = 0x25,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x28,
-                               .last = 0x2A,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x30,
-                               .last = 0x33,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x40,
-                               .last = 0x43,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x50,
-                               .last = 0x53,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x60,
-                               .last = 0x63,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x70,
-                               .last = 0x73,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_VIBRA] = {
-               .bankid = AB5500_BANK_VIBRA,
-               .nranges = 2,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x10,
-                               .last = 0x13,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xFE,
-                               .last = 0xFE,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_AUDIO_HEADSETUSB] = {
-               .bankid = AB5500_BANK_AUDIO_HEADSETUSB,
-               .nranges = 2,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x48,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0xEB,
-                               .last = 0xFB,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_SIM_USBSIM] = {
-               .bankid = AB5500_BANK_SIM_USBSIM,
-               .nranges = 1,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x13,
-                               .last = 0x19,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-       [AB5500_BANK_VDENC] = {
-               .bankid = AB5500_BANK_VDENC,
-               .nranges = 12,
-               .range = (struct ab5500_reg_range[]) {
-                       {
-                               .first = 0x00,
-                               .last = 0x08,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x09,
-                               .last = 0x09,
-                               .perm = AB5500_PERM_RO,
-                       },
-                       {
-                               .first = 0x0A,
-                               .last = 0x12,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x15,
-                               .last = 0x19,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x1B,
-                               .last = 0x21,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x27,
-                               .last = 0x2C,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x41,
-                               .last = 0x41,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x45,
-                               .last = 0x5B,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x5D,
-                               .last = 0x5D,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x69,
-                               .last = 0x69,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x6C,
-                               .last = 0x6D,
-                               .perm = AB5500_PERM_RW,
-                       },
-                       {
-                               .first = 0x80,
-                               .last = 0x81,
-                               .perm = AB5500_PERM_RW,
-                       },
-               },
-       },
-};
-
-static int ab5500_registers_print(struct seq_file *s, void *p)
-{
-       struct ab5500 *ab = s->private;
-       unsigned int i;
-       u8 bank = (u8)ab->debug_bank;
-
-       seq_printf(s, "ab5500 register values:\n");
-       for (bank = 0; bank < AB5500_NUM_BANKS; bank++) {
-               seq_printf(s, " bank %u, %s (0x%x):\n", bank,
-                               bankinfo[bank].name,
-                               bankinfo[bank].slave_addr);
-               for (i = 0; i < ab5500_reg_ranges[bank].nranges; i++) {
-                       u8 reg;
-                       int err;
-
-                       for (reg = ab5500_reg_ranges[bank].range[i].first;
-                               reg <= ab5500_reg_ranges[bank].range[i].last;
-                               reg++) {
-                               u8 value;
-
-                               err = ab5500_get_register_interruptible_raw(ab,
-                                                               bank, reg,
-                                                               &value);
-                               if (err < 0) {
-                                       dev_err(ab->dev, "get_reg failed %d"
-                                               "bank 0x%x reg 0x%x\n",
-                                               err, bank, reg);
-                                       return err;
-                               }
-
-                               err = seq_printf(s, "[%d/0x%02X]: 0x%02X\n",
-                                               bank, reg, value);
-                               if (err < 0) {
-                                       dev_err(ab->dev,
-                                               "seq_printf overflow\n");
-                                       /*
-                                        * Error is not returned here since
-                                        * the output is wanted in any case
-                                        */
-                                       return 0;
-                               }
-                       }
-               }
-       }
-       return 0;
-}
-
-static int ab5500_registers_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ab5500_registers_print, inode->i_private);
-}
-
-static const struct file_operations ab5500_registers_fops = {
-       .open = ab5500_registers_open,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-       .owner = THIS_MODULE,
-};
-
-static int ab5500_bank_print(struct seq_file *s, void *p)
-{
-       struct ab5500 *ab = s->private;
-
-       seq_printf(s, "%d\n", ab->debug_bank);
-       return 0;
-}
-
-static int ab5500_bank_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ab5500_bank_print, inode->i_private);
-}
-
-static ssize_t ab5500_bank_write(struct file *file,
-       const char __user *user_buf,
-       size_t count, loff_t *ppos)
-{
-       struct ab5500 *ab = ((struct seq_file *)(file->private_data))->private;
-       char buf[32];
-       int buf_size;
-       unsigned long user_bank;
-       int err;
-
-       /* Get userspace string and assure termination */
-       buf_size = min(count, (sizeof(buf) - 1));
-       if (copy_from_user(buf, user_buf, buf_size))
-               return -EFAULT;
-       buf[buf_size] = 0;
-
-       err = strict_strtoul(buf, 0, &user_bank);
-       if (err)
-               return -EINVAL;
-
-       if (user_bank >= AB5500_NUM_BANKS) {
-               dev_err(ab->dev,
-                       "debugfs error input > number of banks\n");
-               return -EINVAL;
-       }
-
-       ab->debug_bank = user_bank;
-
-       return buf_size;
-}
-
-static int ab5500_address_print(struct seq_file *s, void *p)
-{
-       struct ab5500 *ab = s->private;
-
-       seq_printf(s, "0x%02X\n", ab->debug_address);
-       return 0;
-}
-
-static int ab5500_address_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ab5500_address_print, inode->i_private);
-}
-
-static ssize_t ab5500_address_write(struct file *file,
-       const char __user *user_buf,
-       size_t count, loff_t *ppos)
-{
-       struct ab5500 *ab = ((struct seq_file *)(file->private_data))->private;
-       char buf[32];
-       int buf_size;
-       unsigned long user_address;
-       int err;
-
-       /* Get userspace string and assure termination */
-       buf_size = min(count, (sizeof(buf) - 1));
-       if (copy_from_user(buf, user_buf, buf_size))
-               return -EFAULT;
-       buf[buf_size] = 0;
-
-       err = strict_strtoul(buf, 0, &user_address);
-       if (err)
-               return -EINVAL;
-       if (user_address > 0xff) {
-               dev_err(ab->dev,
-                       "debugfs error input > 0xff\n");
-               return -EINVAL;
-       }
-       ab->debug_address = user_address;
-       return buf_size;
-}
-
-static int ab5500_val_print(struct seq_file *s, void *p)
-{
-       struct ab5500 *ab = s->private;
-       int err;
-       u8 regvalue;
-
-       err = ab5500_get_register_interruptible_raw(ab, (u8)ab->debug_bank,
-               (u8)ab->debug_address, &regvalue);
-       if (err) {
-               dev_err(ab->dev, "get_reg failed %d, bank 0x%x"
-                       ", reg 0x%x\n", err, ab->debug_bank,
-                       ab->debug_address);
-               return -EINVAL;
-       }
-       seq_printf(s, "0x%02X\n", regvalue);
-
-       return 0;
-}
-
-static int ab5500_val_open(struct inode *inode, struct file *file)
-{
-       return single_open(file, ab5500_val_print, inode->i_private);
-}
-
-static ssize_t ab5500_val_write(struct file *file,
-       const char __user *user_buf,
-       size_t count, loff_t *ppos)
-{
-       struct ab5500 *ab = ((struct seq_file *)(file->private_data))->private;
-       char buf[32];
-       int buf_size;
-       unsigned long user_val;
-       int err;
-       u8 regvalue;
-
-       /* Get userspace string and assure termination */
-       buf_size = min(count, (sizeof(buf)-1));
-       if (copy_from_user(buf, user_buf, buf_size))
-               return -EFAULT;
-       buf[buf_size] = 0;
-
-       err = strict_strtoul(buf, 0, &user_val);
-       if (err)
-               return -EINVAL;
-       if (user_val > 0xff) {
-               dev_err(ab->dev,
-                       "debugfs error input > 0xff\n");
-               return -EINVAL;
-       }
-       err = ab5500_mask_and_set_register_interruptible_raw(
-               ab, (u8)ab->debug_bank,
-               (u8)ab->debug_address, 0xFF, (u8)user_val);
-       if (err)
-               return -EINVAL;
-
-       ab5500_get_register_interruptible_raw(ab, (u8)ab->debug_bank,
-               (u8)ab->debug_address, &regvalue);
-       if (err)
-               return -EINVAL;
-
-       return buf_size;
-}
-
-static const struct file_operations ab5500_bank_fops = {
-       .open = ab5500_bank_open,
-       .write = ab5500_bank_write,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-       .owner = THIS_MODULE,
-};
-
-static const struct file_operations ab5500_address_fops = {
-       .open = ab5500_address_open,
-       .write = ab5500_address_write,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-       .owner = THIS_MODULE,
-};
-
-static const struct file_operations ab5500_val_fops = {
-       .open = ab5500_val_open,
-       .write = ab5500_val_write,
-       .read = seq_read,
-       .llseek = seq_lseek,
-       .release = single_release,
-       .owner = THIS_MODULE,
-};
-
-static struct dentry *ab5500_dir;
-static struct dentry *ab5500_reg_file;
-static struct dentry *ab5500_bank_file;
-static struct dentry *ab5500_address_file;
-static struct dentry *ab5500_val_file;
-
-void __init ab5500_setup_debugfs(struct ab5500 *ab)
-{
-       ab->debug_bank = AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP;
-       ab->debug_address = AB5500_CHIP_ID;
-
-       ab5500_dir = debugfs_create_dir("ab5500", NULL);
-       if (!ab5500_dir)
-               goto exit_no_debugfs;
-
-       ab5500_reg_file = debugfs_create_file("all-bank-registers",
-               S_IRUGO, ab5500_dir, ab, &ab5500_registers_fops);
-       if (!ab5500_reg_file)
-               goto exit_destroy_dir;
-
-       ab5500_bank_file = debugfs_create_file("register-bank",
-               (S_IRUGO | S_IWUGO), ab5500_dir, ab, &ab5500_bank_fops);
-       if (!ab5500_bank_file)
-               goto exit_destroy_reg;
-
-       ab5500_address_file = debugfs_create_file("register-address",
-               (S_IRUGO | S_IWUGO), ab5500_dir, ab, &ab5500_address_fops);
-       if (!ab5500_address_file)
-               goto exit_destroy_bank;
-
-       ab5500_val_file = debugfs_create_file("register-value",
-               (S_IRUGO | S_IWUGO), ab5500_dir, ab, &ab5500_val_fops);
-       if (!ab5500_val_file)
-               goto exit_destroy_address;
-
-       return;
-
-exit_destroy_address:
-       debugfs_remove(ab5500_address_file);
-exit_destroy_bank:
-       debugfs_remove(ab5500_bank_file);
-exit_destroy_reg:
-       debugfs_remove(ab5500_reg_file);
-exit_destroy_dir:
-       debugfs_remove(ab5500_dir);
-exit_no_debugfs:
-       dev_err(ab->dev, "failed to create debugfs entries.\n");
-       return;
-}
-
-void __exit ab5500_remove_debugfs(void)
-{
-       debugfs_remove(ab5500_val_file);
-       debugfs_remove(ab5500_address_file);
-       debugfs_remove(ab5500_bank_file);
-       debugfs_remove(ab5500_reg_file);
-       debugfs_remove(ab5500_dir);
-}
diff --git a/drivers/mfd/ab5500-debugfs.h b/drivers/mfd/ab5500-debugfs.h
deleted file mode 100644 (file)
index 7330a9b..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (C) 2011 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * Debugfs interface to the AB5500 core driver
- */
-
-#ifdef CONFIG_DEBUG_FS
-
-void ab5500_setup_debugfs(struct ab5500 *ab);
-void ab5500_remove_debugfs(void);
-
-#else /* !CONFIG_DEBUG_FS */
-
-static inline void ab5500_setup_debugfs(struct ab5500 *ab)
-{
-}
-
-static inline void ab5500_remove_debugfs(void)
-{
-}
-
-#endif
diff --git a/drivers/mfd/db5500-prcmu.c b/drivers/mfd/db5500-prcmu.c
deleted file mode 100644 (file)
index bb115b2..0000000
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License Terms: GNU General Public License v2
- * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
- *
- * U5500 PRCM Unit interface driver
- */
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/delay.h>
-#include <linux/errno.h>
-#include <linux/err.h>
-#include <linux/spinlock.h>
-#include <linux/io.h>
-#include <linux/slab.h>
-#include <linux/mutex.h>
-#include <linux/completion.h>
-#include <linux/irq.h>
-#include <linux/jiffies.h>
-#include <linux/bitops.h>
-#include <linux/interrupt.h>
-#include <linux/mfd/dbx500-prcmu.h>
-#include <mach/hardware.h>
-#include <mach/irqs.h>
-#include <mach/db5500-regs.h>
-#include "dbx500-prcmu-regs.h"
-
-#define _PRCM_MB_HEADER (tcdm_base + 0xFE8)
-#define PRCM_REQ_MB0_HEADER (_PRCM_MB_HEADER + 0x0)
-#define PRCM_REQ_MB1_HEADER (_PRCM_MB_HEADER + 0x1)
-#define PRCM_REQ_MB2_HEADER (_PRCM_MB_HEADER + 0x2)
-#define PRCM_REQ_MB3_HEADER (_PRCM_MB_HEADER + 0x3)
-#define PRCM_REQ_MB4_HEADER (_PRCM_MB_HEADER + 0x4)
-#define PRCM_REQ_MB5_HEADER (_PRCM_MB_HEADER + 0x5)
-#define PRCM_REQ_MB6_HEADER (_PRCM_MB_HEADER + 0x6)
-#define PRCM_REQ_MB7_HEADER (_PRCM_MB_HEADER + 0x7)
-#define PRCM_ACK_MB0_HEADER (_PRCM_MB_HEADER + 0x8)
-#define PRCM_ACK_MB1_HEADER (_PRCM_MB_HEADER + 0x9)
-#define PRCM_ACK_MB2_HEADER (_PRCM_MB_HEADER + 0xa)
-#define PRCM_ACK_MB3_HEADER (_PRCM_MB_HEADER + 0xb)
-#define PRCM_ACK_MB4_HEADER (_PRCM_MB_HEADER + 0xc)
-#define PRCM_ACK_MB5_HEADER (_PRCM_MB_HEADER + 0xd)
-#define PRCM_ACK_MB6_HEADER (_PRCM_MB_HEADER + 0xe)
-#define PRCM_ACK_MB7_HEADER (_PRCM_MB_HEADER + 0xf)
-
-/* Req Mailboxes */
-#define PRCM_REQ_MB0 (tcdm_base + 0xFD8)
-#define PRCM_REQ_MB1 (tcdm_base + 0xFCC)
-#define PRCM_REQ_MB2 (tcdm_base + 0xFC4)
-#define PRCM_REQ_MB3 (tcdm_base + 0xFC0)
-#define PRCM_REQ_MB4 (tcdm_base + 0xF98)
-#define PRCM_REQ_MB5 (tcdm_base + 0xF90)
-#define PRCM_REQ_MB6 (tcdm_base + 0xF8C)
-#define PRCM_REQ_MB7 (tcdm_base + 0xF84)
-
-/* Ack Mailboxes */
-#define PRCM_ACK_MB0 (tcdm_base + 0xF38)
-#define PRCM_ACK_MB1 (tcdm_base + 0xF30)
-#define PRCM_ACK_MB2 (tcdm_base + 0xF24)
-#define PRCM_ACK_MB3 (tcdm_base + 0xF20)
-#define PRCM_ACK_MB4 (tcdm_base + 0xF1C)
-#define PRCM_ACK_MB5 (tcdm_base + 0xF14)
-#define PRCM_ACK_MB6 (tcdm_base + 0xF0C)
-#define PRCM_ACK_MB7 (tcdm_base + 0xF08)
-
-enum mb_return_code {
-       RC_SUCCESS,
-       RC_FAIL,
-};
-
-/* Mailbox 0 headers. */
-enum mb0_header {
-       /* request */
-       RMB0H_PWR_STATE_TRANS = 1,
-       RMB0H_WAKE_UP_CFG,
-       RMB0H_RD_WAKE_UP_ACK,
-       /* acknowledge */
-       AMB0H_WAKE_UP = 1,
-};
-
-/* Mailbox 5 headers. */
-enum mb5_header {
-       MB5H_I2C_WRITE = 1,
-       MB5H_I2C_READ,
-};
-
-/* Request mailbox 5 fields. */
-#define PRCM_REQ_MB5_I2C_SLAVE (PRCM_REQ_MB5 + 0)
-#define PRCM_REQ_MB5_I2C_REG (PRCM_REQ_MB5 + 1)
-#define PRCM_REQ_MB5_I2C_SIZE (PRCM_REQ_MB5 + 2)
-#define PRCM_REQ_MB5_I2C_DATA (PRCM_REQ_MB5 + 4)
-
-/* Acknowledge mailbox 5 fields. */
-#define PRCM_ACK_MB5_RETURN_CODE (PRCM_ACK_MB5 + 0)
-#define PRCM_ACK_MB5_I2C_DATA (PRCM_ACK_MB5 + 4)
-
-#define NUM_MB 8
-#define MBOX_BIT BIT
-#define ALL_MBOX_BITS (MBOX_BIT(NUM_MB) - 1)
-
-/*
-* Used by MCDE to setup all necessary PRCMU registers
-*/
-#define PRCMU_RESET_DSIPLL                     0x00004000
-#define PRCMU_UNCLAMP_DSIPLL                   0x00400800
-
-/* HDMI CLK MGT PLLSW=001 (PLLSOC0), PLLDIV=0x8, = 50 Mhz*/
-#define PRCMU_DSI_CLOCK_SETTING                        0x00000128
-/* TVCLK_MGT PLLSW=001 (PLLSOC0) PLLDIV=0x13, = 19.05 MHZ */
-#define PRCMU_DSI_LP_CLOCK_SETTING             0x00000135
-#define PRCMU_PLLDSI_FREQ_SETTING              0x00020121
-#define PRCMU_DSI_PLLOUT_SEL_SETTING           0x00000002
-#define PRCMU_ENABLE_ESCAPE_CLOCK_DIV          0x03000201
-#define PRCMU_DISABLE_ESCAPE_CLOCK_DIV         0x00000101
-
-#define PRCMU_ENABLE_PLLDSI                    0x00000001
-#define PRCMU_DISABLE_PLLDSI                   0x00000000
-
-#define PRCMU_DSI_RESET_SW                     0x00000003
-#define PRCMU_RESOUTN0_PIN                     0x00000001
-#define PRCMU_RESOUTN1_PIN                     0x00000002
-#define PRCMU_RESOUTN2_PIN                     0x00000004
-
-#define PRCMU_PLLDSI_LOCKP_LOCKED              0x3
-
-/*
- * mb0_transfer - state needed for mailbox 0 communication.
- * @lock:              The transaction lock.
- */
-static struct {
-       spinlock_t lock;
-} mb0_transfer;
-
-/*
- * mb5_transfer - state needed for mailbox 5 communication.
- * @lock:      The transaction lock.
- * @work:      The transaction completion structure.
- * @ack:       Reply ("acknowledge") data.
- */
-static struct {
-       struct mutex lock;
-       struct completion work;
-       struct {
-               u8 header;
-               u8 status;
-               u8 value[4];
-       } ack;
-} mb5_transfer;
-
-/* PRCMU TCDM base IO address. */
-static __iomem void *tcdm_base;
-
-/**
- * db5500_prcmu_abb_read() - Read register value(s) from the ABB.
- * @slave:     The I2C slave address.
- * @reg:       The (start) register address.
- * @value:     The read out value(s).
- * @size:      The number of registers to read.
- *
- * Reads register value(s) from the ABB.
- * @size has to be <= 4.
- */
-int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
-{
-       int r;
-
-       if ((size < 1) || (4 < size))
-               return -EINVAL;
-
-       mutex_lock(&mb5_transfer.lock);
-
-       while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(5))
-               cpu_relax();
-       writeb(slave, PRCM_REQ_MB5_I2C_SLAVE);
-       writeb(reg, PRCM_REQ_MB5_I2C_REG);
-       writeb(size, PRCM_REQ_MB5_I2C_SIZE);
-       writeb(MB5H_I2C_READ, PRCM_REQ_MB5_HEADER);
-
-       writel(MBOX_BIT(5), PRCM_MBOX_CPU_SET);
-       wait_for_completion(&mb5_transfer.work);
-
-       r = 0;
-       if ((mb5_transfer.ack.header == MB5H_I2C_READ) &&
-               (mb5_transfer.ack.status == RC_SUCCESS))
-               memcpy(value, mb5_transfer.ack.value, (size_t)size);
-       else
-               r = -EIO;
-
-       mutex_unlock(&mb5_transfer.lock);
-
-       return r;
-}
-
-/**
- * db5500_prcmu_abb_write() - Write register value(s) to the ABB.
- * @slave:     The I2C slave address.
- * @reg:       The (start) register address.
- * @value:     The value(s) to write.
- * @size:      The number of registers to write.
- *
- * Writes register value(s) to the ABB.
- * @size has to be <= 4.
- */
-int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
-{
-       int r;
-
-       if ((size < 1) || (4 < size))
-               return -EINVAL;
-
-       mutex_lock(&mb5_transfer.lock);
-
-       while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(5))
-               cpu_relax();
-       writeb(slave, PRCM_REQ_MB5_I2C_SLAVE);
-       writeb(reg, PRCM_REQ_MB5_I2C_REG);
-       writeb(size, PRCM_REQ_MB5_I2C_SIZE);
-       memcpy_toio(PRCM_REQ_MB5_I2C_DATA, value, size);
-       writeb(MB5H_I2C_WRITE, PRCM_REQ_MB5_HEADER);
-
-       writel(MBOX_BIT(5), PRCM_MBOX_CPU_SET);
-       wait_for_completion(&mb5_transfer.work);
-
-       if ((mb5_transfer.ack.header == MB5H_I2C_WRITE) &&
-               (mb5_transfer.ack.status == RC_SUCCESS))
-               r = 0;
-       else
-               r = -EIO;
-
-       mutex_unlock(&mb5_transfer.lock);
-
-       return r;
-}
-
-int db5500_prcmu_enable_dsipll(void)
-{
-       int i;
-
-       /* Enable DSIPLL_RESETN resets */
-       writel(PRCMU_RESET_DSIPLL, PRCM_APE_RESETN_CLR);
-       /* Unclamp DSIPLL in/out */
-       writel(PRCMU_UNCLAMP_DSIPLL, PRCM_MMIP_LS_CLAMP_CLR);
-       /* Set DSI PLL FREQ */
-       writel(PRCMU_PLLDSI_FREQ_SETTING, PRCM_PLLDSI_FREQ);
-       writel(PRCMU_DSI_PLLOUT_SEL_SETTING,
-               PRCM_DSI_PLLOUT_SEL);
-       /* Enable Escape clocks */
-       writel(PRCMU_ENABLE_ESCAPE_CLOCK_DIV, PRCM_DSITVCLK_DIV);
-
-       /* Start DSI PLL */
-       writel(PRCMU_ENABLE_PLLDSI, PRCM_PLLDSI_ENABLE);
-       /* Reset DSI PLL */
-       writel(PRCMU_DSI_RESET_SW, PRCM_DSI_SW_RESET);
-       for (i = 0; i < 10; i++) {
-               if ((readl(PRCM_PLLDSI_LOCKP) &
-                       PRCMU_PLLDSI_LOCKP_LOCKED) == PRCMU_PLLDSI_LOCKP_LOCKED)
-                       break;
-               udelay(100);
-       }
-       /* Release DSIPLL_RESETN */
-       writel(PRCMU_RESET_DSIPLL, PRCM_APE_RESETN_SET);
-       return 0;
-}
-
-int db5500_prcmu_disable_dsipll(void)
-{
-       /* Disable dsi pll */
-       writel(PRCMU_DISABLE_PLLDSI, PRCM_PLLDSI_ENABLE);
-       /* Disable  escapeclock */
-       writel(PRCMU_DISABLE_ESCAPE_CLOCK_DIV, PRCM_DSITVCLK_DIV);
-       return 0;
-}
-
-int db5500_prcmu_set_display_clocks(void)
-{
-       /* HDMI and TVCLK Should be handled somewhere else */
-       /* PLLDIV=8, PLLSW=2, CLKEN=1 */
-       writel(PRCMU_DSI_CLOCK_SETTING, PRCM_HDMICLK_MGT);
-       /* PLLDIV=14, PLLSW=2, CLKEN=1 */
-       writel(PRCMU_DSI_LP_CLOCK_SETTING, PRCM_TVCLK_MGT);
-       return 0;
-}
-
-static void ack_dbb_wakeup(void)
-{
-       unsigned long flags;
-
-       spin_lock_irqsave(&mb0_transfer.lock, flags);
-
-       while (readl(PRCM_MBOX_CPU_VAL) & MBOX_BIT(0))
-               cpu_relax();
-
-       writeb(RMB0H_RD_WAKE_UP_ACK, PRCM_REQ_MB0_HEADER);
-       writel(MBOX_BIT(0), PRCM_MBOX_CPU_SET);
-
-       spin_unlock_irqrestore(&mb0_transfer.lock, flags);
-}
-
-static inline void print_unknown_header_warning(u8 n, u8 header)
-{
-       pr_warning("prcmu: Unknown message header (%d) in mailbox %d.\n",
-               header, n);
-}
-
-static bool read_mailbox_0(void)
-{
-       bool r;
-       u8 header;
-
-       header = readb(PRCM_ACK_MB0_HEADER);
-       switch (header) {
-       case AMB0H_WAKE_UP:
-               r = true;
-               break;
-       default:
-               print_unknown_header_warning(0, header);
-               r = false;
-               break;
-       }
-       writel(MBOX_BIT(0), PRCM_ARM_IT1_CLR);
-       return r;
-}
-
-static bool read_mailbox_1(void)
-{
-       writel(MBOX_BIT(1), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_2(void)
-{
-       writel(MBOX_BIT(2), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_3(void)
-{
-       writel(MBOX_BIT(3), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_4(void)
-{
-       writel(MBOX_BIT(4), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_5(void)
-{
-       u8 header;
-
-       header = readb(PRCM_ACK_MB5_HEADER);
-       switch (header) {
-       case MB5H_I2C_READ:
-               memcpy_fromio(mb5_transfer.ack.value, PRCM_ACK_MB5_I2C_DATA, 4);
-       case MB5H_I2C_WRITE:
-               mb5_transfer.ack.header = header;
-               mb5_transfer.ack.status = readb(PRCM_ACK_MB5_RETURN_CODE);
-               complete(&mb5_transfer.work);
-               break;
-       default:
-               print_unknown_header_warning(5, header);
-               break;
-       }
-       writel(MBOX_BIT(5), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_6(void)
-{
-       writel(MBOX_BIT(6), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool read_mailbox_7(void)
-{
-       writel(MBOX_BIT(7), PRCM_ARM_IT1_CLR);
-       return false;
-}
-
-static bool (* const read_mailbox[NUM_MB])(void) = {
-       read_mailbox_0,
-       read_mailbox_1,
-       read_mailbox_2,
-       read_mailbox_3,
-       read_mailbox_4,
-       read_mailbox_5,
-       read_mailbox_6,
-       read_mailbox_7
-};
-
-static irqreturn_t prcmu_irq_handler(int irq, void *data)
-{
-       u32 bits;
-       u8 n;
-       irqreturn_t r;
-
-       bits = (readl(PRCM_ARM_IT1_VAL) & ALL_MBOX_BITS);
-       if (unlikely(!bits))
-               return IRQ_NONE;
-
-       r = IRQ_HANDLED;
-       for (n = 0; bits; n++) {
-               if (bits & MBOX_BIT(n)) {
-                       bits -= MBOX_BIT(n);
-                       if (read_mailbox[n]())
-                               r = IRQ_WAKE_THREAD;
-               }
-       }
-       return r;
-}
-
-static irqreturn_t prcmu_irq_thread_fn(int irq, void *data)
-{
-       ack_dbb_wakeup();
-       return IRQ_HANDLED;
-}
-
-void __init db5500_prcmu_early_init(void)
-{
-       tcdm_base = __io_address(U5500_PRCMU_TCDM_BASE);
-       spin_lock_init(&mb0_transfer.lock);
-       mutex_init(&mb5_transfer.lock);
-       init_completion(&mb5_transfer.work);
-}
-
-/**
- * prcmu_fw_init - arch init call for the Linux PRCMU fw init logic
- *
- */
-int __init db5500_prcmu_init(void)
-{
-       int r = 0;
-
-       if (ux500_is_svp() || !cpu_is_u5500())
-               return -ENODEV;
-
-       /* Clean up the mailbox interrupts after pre-kernel code. */
-       writel(ALL_MBOX_BITS, PRCM_ARM_IT1_CLR);
-
-       r = request_threaded_irq(IRQ_DB5500_PRCMU1, prcmu_irq_handler,
-               prcmu_irq_thread_fn, 0, "prcmu", NULL);
-       if (r < 0) {
-               pr_err("prcmu: Failed to allocate IRQ_DB5500_PRCMU1.\n");
-               return -EBUSY;
-       }
-       return 0;
-}
-
-arch_initcall(db5500_prcmu_init);
index 8c8377d50c4c4578724c6149bbd084744e7c92fb..4161bfe462cd5f958c1f1d790bd9ef795df8b530 100644 (file)
@@ -838,7 +838,7 @@ config RTC_DRV_AT32AP700X
 
 config RTC_DRV_AT91RM9200
        tristate "AT91RM9200 or some AT91SAM9 RTC"
-       depends on ARCH_AT91RM9200 || ARCH_AT91SAM9RL || ARCH_AT91SAM9G45
+       depends on ARCH_AT91
        help
          Driver for the internal RTC (Realtime Clock) module found on
          Atmel AT91RM9200's and some  AT91SAM9 chips. On AT91SAM9 chips
index 96451e41ee8ac5f16692f8862ce4b33491edb3d2..71229cb97e3e54dd1788bdcf715d286f0e018477 100644 (file)
@@ -205,8 +205,9 @@ static int ohci_omap_init(struct usb_hcd *hcd)
        need_transceiver = need_transceiver
                        || machine_is_omap_h2() || machine_is_omap_h3();
 
-       if (cpu_is_omap16xx())
-               ocpi_enable();
+       /* XXX OMAP16xx only */
+       if (config->ocpi_enable)
+               config->ocpi_enable();
 
 #ifdef CONFIG_USB_OTG
        if (need_transceiver) {
index ee96cd51d8b23b54683950a50831cb5cda65d2ac..1318ca6226338679d16544411a52c6fbd8741f47 100644 (file)
@@ -6,7 +6,7 @@
  *
  * ABX500 core access functions.
  * The abx500 interface is used for the Analog Baseband chip
- * ab3100, ab5500, and ab8500.
+ * ab3100 and ab8500.
  *
  * Author: Mattias Wallin <mattias.wallin@stericsson.com>
  * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com>
@@ -30,9 +30,6 @@ struct device;
 #define AB3100_P1G     0xc6
 #define AB3100_R2A     0xc7
 #define AB3100_R2B     0xc8
-#define AB5500_1_0     0x20
-#define AB5500_1_1     0x21
-#define AB5500_2_0     0x24
 
 /*
  * AB3100, EVENTA1, A2 and A3 event register flags
diff --git a/include/linux/mfd/abx500/ab5500.h b/include/linux/mfd/abx500/ab5500.h
deleted file mode 100644 (file)
index 54f820e..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson 2011
- *
- * License Terms: GNU General Public License v2
- */
-#ifndef MFD_AB5500_H
-#define MFD_AB5500_H
-
-struct device;
-
-enum ab5500_devid {
-       AB5500_DEVID_ADC,
-       AB5500_DEVID_LEDS,
-       AB5500_DEVID_POWER,
-       AB5500_DEVID_REGULATORS,
-       AB5500_DEVID_SIM,
-       AB5500_DEVID_RTC,
-       AB5500_DEVID_CHARGER,
-       AB5500_DEVID_FUELGAUGE,
-       AB5500_DEVID_VIBRATOR,
-       AB5500_DEVID_CODEC,
-       AB5500_DEVID_USB,
-       AB5500_DEVID_OTP,
-       AB5500_DEVID_VIDEO,
-       AB5500_DEVID_DBIECI,
-       AB5500_DEVID_ONSWA,
-       AB5500_NUM_DEVICES,
-};
-
-enum ab5500_banks {
-       AB5500_BANK_VIT_IO_I2C_CLK_TST_OTP = 0,
-       AB5500_BANK_VDDDIG_IO_I2C_CLK_TST = 1,
-       AB5500_BANK_VDENC = 2,
-       AB5500_BANK_SIM_USBSIM  = 3,
-       AB5500_BANK_LED = 4,
-       AB5500_BANK_ADC  = 5,
-       AB5500_BANK_RTC  = 6,
-       AB5500_BANK_STARTUP  = 7,
-       AB5500_BANK_DBI_ECI  = 8,
-       AB5500_BANK_CHG  = 9,
-       AB5500_BANK_FG_BATTCOM_ACC = 10,
-       AB5500_BANK_USB = 11,
-       AB5500_BANK_IT = 12,
-       AB5500_BANK_VIBRA = 13,
-       AB5500_BANK_AUDIO_HEADSETUSB = 14,
-       AB5500_NUM_BANKS = 15,
-};
-
-enum ab5500_banks_addr {
-       AB5500_ADDR_VIT_IO_I2C_CLK_TST_OTP = 0x4A,
-       AB5500_ADDR_VDDDIG_IO_I2C_CLK_TST = 0x4B,
-       AB5500_ADDR_VDENC = 0x06,
-       AB5500_ADDR_SIM_USBSIM  = 0x04,
-       AB5500_ADDR_LED = 0x10,
-       AB5500_ADDR_ADC  = 0x0A,
-       AB5500_ADDR_RTC  = 0x0F,
-       AB5500_ADDR_STARTUP  = 0x03,
-       AB5500_ADDR_DBI_ECI  = 0x07,
-       AB5500_ADDR_CHG  = 0x0B,
-       AB5500_ADDR_FG_BATTCOM_ACC = 0x0C,
-       AB5500_ADDR_USB = 0x05,
-       AB5500_ADDR_IT = 0x0E,
-       AB5500_ADDR_VIBRA = 0x02,
-       AB5500_ADDR_AUDIO_HEADSETUSB = 0x0D,
-};
-
-/*
- * Interrupt register offsets
- * Bank : 0x0E
- */
-#define AB5500_IT_SOURCE0_REG          0x20
-#define AB5500_IT_SOURCE1_REG          0x21
-#define AB5500_IT_SOURCE2_REG          0x22
-#define AB5500_IT_SOURCE3_REG          0x23
-#define AB5500_IT_SOURCE4_REG          0x24
-#define AB5500_IT_SOURCE5_REG          0x25
-#define AB5500_IT_SOURCE6_REG          0x26
-#define AB5500_IT_SOURCE7_REG          0x27
-#define AB5500_IT_SOURCE8_REG          0x28
-#define AB5500_IT_SOURCE9_REG          0x29
-#define AB5500_IT_SOURCE10_REG         0x2A
-#define AB5500_IT_SOURCE11_REG         0x2B
-#define AB5500_IT_SOURCE12_REG         0x2C
-#define AB5500_IT_SOURCE13_REG         0x2D
-#define AB5500_IT_SOURCE14_REG         0x2E
-#define AB5500_IT_SOURCE15_REG         0x2F
-#define AB5500_IT_SOURCE16_REG         0x30
-#define AB5500_IT_SOURCE17_REG         0x31
-#define AB5500_IT_SOURCE18_REG         0x32
-#define AB5500_IT_SOURCE19_REG         0x33
-#define AB5500_IT_SOURCE20_REG         0x34
-#define AB5500_IT_SOURCE21_REG         0x35
-#define AB5500_IT_SOURCE22_REG         0x36
-#define AB5500_IT_SOURCE23_REG         0x37
-
-#define AB5500_NUM_IRQ_REGS            23
-
-/**
- * struct ab5500
- * @access_mutex: lock out concurrent accesses to the AB registers
- * @dev: a pointer to the device struct for this chip driver
- * @ab5500_irq: the analog baseband irq
- * @irq_base: the platform configuration irq base for subdevices
- * @chip_name: name of this chip variant
- * @chip_id: 8 bit chip ID for this chip variant
- * @irq_lock: a lock to protect the mask
- * @abb_events: a local bit mask of the prcmu wakeup events
- * @event_mask: a local copy of the mask event registers
- * @last_event_mask: a copy of the last event_mask written to hardware
- * @startup_events: a copy of the first reading of the event registers
- * @startup_events_read: whether the first events have been read
- */
-struct ab5500 {
-       struct mutex access_mutex;
-       struct device *dev;
-       unsigned int ab5500_irq;
-       unsigned int irq_base;
-       char chip_name[32];
-       u8 chip_id;
-       struct mutex irq_lock;
-       u32 abb_events;
-       u8 mask[AB5500_NUM_IRQ_REGS];
-       u8 oldmask[AB5500_NUM_IRQ_REGS];
-       u8 startup_events[AB5500_NUM_IRQ_REGS];
-       bool startup_events_read;
-#ifdef CONFIG_DEBUG_FS
-       unsigned int debug_bank;
-       unsigned int debug_address;
-#endif
-};
-
-struct ab5500_platform_data {
-       struct {unsigned int base; unsigned int count; } irq;
-       void *dev_data[AB5500_NUM_DEVICES];
-       struct abx500_init_settings *init_settings;
-       unsigned int init_settings_sz;
-       bool pm_power_off;
-};
-
-#endif /* MFD_AB5500_H */
diff --git a/include/linux/mfd/db5500-prcmu.h b/include/linux/mfd/db5500-prcmu.h
deleted file mode 100644 (file)
index 5a049df..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License Terms: GNU General Public License v2
- *
- * U5500 PRCMU API.
- */
-#ifndef __MFD_DB5500_PRCMU_H
-#define __MFD_DB5500_PRCMU_H
-
-static inline int prcmu_resetout(u8 resoutn, u8 state)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_set_epod(u16 epod_id, u8 epod_state)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_request_clock(u8 clock, bool enable)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_set_power_state(u8 state, bool keep_ulp_clk,
-       bool keep_ap_pll)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_config_esram0_deep_sleep(u8 state)
-{
-       return 0;
-}
-
-static inline u16 db5500_prcmu_get_reset_code(void)
-{
-       return 0;
-}
-
-static inline bool db5500_prcmu_is_ac_wake_requested(void)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_set_arm_opp(u8 opp)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_get_arm_opp(void)
-{
-       return 0;
-}
-
-static inline void db5500_prcmu_config_abb_event_readout(u32 abb_events) {}
-
-static inline void db5500_prcmu_get_abb_event_buffer(void __iomem **buf) {}
-
-static inline void db5500_prcmu_system_reset(u16 reset_code) {}
-
-static inline void db5500_prcmu_enable_wakeups(u32 wakeups) {}
-
-#ifdef CONFIG_MFD_DB5500_PRCMU
-
-void db5500_prcmu_early_init(void);
-int db5500_prcmu_set_display_clocks(void);
-int db5500_prcmu_disable_dsipll(void);
-int db5500_prcmu_enable_dsipll(void);
-int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
-int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size);
-
-#else /* !CONFIG_UX500_SOC_DB5500 */
-
-static inline void db5500_prcmu_early_init(void) {}
-
-static inline int db5500_prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size)
-{
-       return -ENOSYS;
-}
-
-static inline int db5500_prcmu_abb_write(u8 slave, u8 reg, u8 *value, u8 size)
-{
-       return -ENOSYS;
-}
-
-static inline int db5500_prcmu_set_display_clocks(void)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_disable_dsipll(void)
-{
-       return 0;
-}
-
-static inline int db5500_prcmu_enable_dsipll(void)
-{
-       return 0;
-}
-
-#endif /* CONFIG_MFD_DB5500_PRCMU */
-
-#endif /* __MFD_DB5500_PRCMU_H */
index d7674eb7305f8cefc3a8396be0434ec58bd79d5d..5a13f93d8f1c97325ceb3d562ab0741c9ededdee 100644 (file)
@@ -54,17 +54,6 @@ enum prcmu_wakeup_index {
 #define EPOD_ID_ESRAM34                7
 #define NUM_EPOD_ID            8
 
-/*
- * DB5500 EPODs
- */
-#define DB5500_EPOD_ID_BASE 0x0100
-#define DB5500_EPOD_ID_SGA (DB5500_EPOD_ID_BASE + 0)
-#define DB5500_EPOD_ID_HVA (DB5500_EPOD_ID_BASE + 1)
-#define DB5500_EPOD_ID_SIA (DB5500_EPOD_ID_BASE + 2)
-#define DB5500_EPOD_ID_DISP (DB5500_EPOD_ID_BASE + 3)
-#define DB5500_EPOD_ID_ESRAM12 (DB5500_EPOD_ID_BASE + 6)
-#define DB5500_NUM_EPOD_ID 7
-
 /*
  * state definition for EPOD (power domain)
  * - EPOD_STATE_NO_CHANGE: The EPOD should remain unchanged
@@ -80,29 +69,6 @@ enum prcmu_wakeup_index {
 #define EPOD_STATE_ON_CLK_OFF  0x03
 #define EPOD_STATE_ON          0x04
 
-/* DB5500 CLKOUT IDs */
-enum {
-       DB5500_CLKOUT0 = 0,
-       DB5500_CLKOUT1,
-};
-
-/* DB5500 CLKOUTx sources */
-enum {
-       DB5500_CLKOUT_REF_CLK_SEL0,
-       DB5500_CLKOUT_RTC_CLK0_SEL0,
-       DB5500_CLKOUT_ULP_CLK_SEL0,
-       DB5500_CLKOUT_STATIC0,
-       DB5500_CLKOUT_REFCLK,
-       DB5500_CLKOUT_ULPCLK,
-       DB5500_CLKOUT_ARMCLK,
-       DB5500_CLKOUT_SYSACC0CLK,
-       DB5500_CLKOUT_SOC0PLLCLK,
-       DB5500_CLKOUT_SOC1PLLCLK,
-       DB5500_CLKOUT_DDRPLLCLK,
-       DB5500_CLKOUT_TVCLK,
-       DB5500_CLKOUT_IRDACLK,
-};
-
 /*
  * CLKOUT sources
  */
@@ -248,101 +214,66 @@ enum ddr_pwrst {
 };
 
 #include <linux/mfd/db8500-prcmu.h>
-#include <linux/mfd/db5500-prcmu.h>
 
-#if defined(CONFIG_UX500_SOC_DB8500) || defined(CONFIG_UX500_SOC_DB5500)
+#if defined(CONFIG_UX500_SOC_DB8500)
 
 #include <mach/id.h>
 
 static inline void __init prcmu_early_init(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_early_init();
-       else
-               return db8500_prcmu_early_init();
+       return db8500_prcmu_early_init();
 }
 
 static inline int prcmu_set_power_state(u8 state, bool keep_ulp_clk,
                bool keep_ap_pll)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_set_power_state(state, keep_ulp_clk,
-                       keep_ap_pll);
-       else
-               return db8500_prcmu_set_power_state(state, keep_ulp_clk,
-                       keep_ap_pll);
+       return db8500_prcmu_set_power_state(state, keep_ulp_clk,
+               keep_ap_pll);
 }
 
 static inline u8 prcmu_get_power_state_result(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_get_power_state_result();
+       return db8500_prcmu_get_power_state_result();
 }
 
 static inline int prcmu_gic_decouple(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_gic_decouple();
+       return db8500_prcmu_gic_decouple();
 }
 
 static inline int prcmu_gic_recouple(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_gic_recouple();
+       return db8500_prcmu_gic_recouple();
 }
 
 static inline bool prcmu_gic_pending_irq(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_gic_pending_irq();
+       return db8500_prcmu_gic_pending_irq();
 }
 
 static inline bool prcmu_is_cpu_in_wfi(int cpu)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_is_cpu_in_wfi(cpu);
+       return db8500_prcmu_is_cpu_in_wfi(cpu);
 }
 
 static inline int prcmu_copy_gic_settings(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_copy_gic_settings();
+       return db8500_prcmu_copy_gic_settings();
 }
 
 static inline bool prcmu_pending_irq(void)
 {
-        if (cpu_is_u5500())
-                return -EINVAL;
-        else
-                return db8500_prcmu_pending_irq();
+       return db8500_prcmu_pending_irq();
 }
 
 static inline int prcmu_set_epod(u16 epod_id, u8 epod_state)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_set_epod(epod_id, epod_state);
+       return db8500_prcmu_set_epod(epod_id, epod_state);
 }
 
 static inline void prcmu_enable_wakeups(u32 wakeups)
 {
-       if (cpu_is_u5500())
-               db5500_prcmu_enable_wakeups(wakeups);
-       else
-               db8500_prcmu_enable_wakeups(wakeups);
+       db8500_prcmu_enable_wakeups(wakeups);
 }
 
 static inline void prcmu_disable_wakeups(void)
@@ -352,18 +283,12 @@ static inline void prcmu_disable_wakeups(void)
 
 static inline void prcmu_config_abb_event_readout(u32 abb_events)
 {
-       if (cpu_is_u5500())
-               db5500_prcmu_config_abb_event_readout(abb_events);
-       else
-               db8500_prcmu_config_abb_event_readout(abb_events);
+       db8500_prcmu_config_abb_event_readout(abb_events);
 }
 
 static inline void prcmu_get_abb_event_buffer(void __iomem **buf)
 {
-       if (cpu_is_u5500())
-               db5500_prcmu_get_abb_event_buffer(buf);
-       else
-               db8500_prcmu_get_abb_event_buffer(buf);
+       db8500_prcmu_get_abb_event_buffer(buf);
 }
 
 int prcmu_abb_read(u8 slave, u8 reg, u8 *value, u8 size);
@@ -374,10 +299,7 @@ int prcmu_config_clkout(u8 clkout, u8 source, u8 div);
 
 static inline int prcmu_request_clock(u8 clock, bool enable)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_request_clock(clock, enable);
-       else
-               return db8500_prcmu_request_clock(clock, enable);
+       return db8500_prcmu_request_clock(clock, enable);
 }
 
 unsigned long prcmu_clock_rate(u8 clock);
@@ -386,211 +308,133 @@ int prcmu_set_clock_rate(u8 clock, unsigned long rate);
 
 static inline int prcmu_set_ddr_opp(u8 opp)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_set_ddr_opp(opp);
+       return db8500_prcmu_set_ddr_opp(opp);
 }
 static inline int prcmu_get_ddr_opp(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_get_ddr_opp();
+       return db8500_prcmu_get_ddr_opp();
 }
 
 static inline int prcmu_set_arm_opp(u8 opp)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_set_arm_opp(opp);
+       return db8500_prcmu_set_arm_opp(opp);
 }
 
 static inline int prcmu_get_arm_opp(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_get_arm_opp();
+       return db8500_prcmu_get_arm_opp();
 }
 
 static inline int prcmu_set_ape_opp(u8 opp)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_set_ape_opp(opp);
+       return db8500_prcmu_set_ape_opp(opp);
 }
 
 static inline int prcmu_get_ape_opp(void)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_get_ape_opp();
+       return db8500_prcmu_get_ape_opp();
 }
 
 static inline void prcmu_system_reset(u16 reset_code)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_system_reset(reset_code);
-       else
-               return db8500_prcmu_system_reset(reset_code);
+       return db8500_prcmu_system_reset(reset_code);
 }
 
 static inline u16 prcmu_get_reset_code(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_get_reset_code();
-       else
-               return db8500_prcmu_get_reset_code();
+       return db8500_prcmu_get_reset_code();
 }
 
 void prcmu_ac_wake_req(void);
 void prcmu_ac_sleep_req(void);
 static inline void prcmu_modem_reset(void)
 {
-       if (cpu_is_u5500())
-               return;
-       else
-               return db8500_prcmu_modem_reset();
+       return db8500_prcmu_modem_reset();
 }
 
 static inline bool prcmu_is_ac_wake_requested(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_is_ac_wake_requested();
-       else
-               return db8500_prcmu_is_ac_wake_requested();
+       return db8500_prcmu_is_ac_wake_requested();
 }
 
 static inline int prcmu_set_display_clocks(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_set_display_clocks();
-       else
-               return db8500_prcmu_set_display_clocks();
+       return db8500_prcmu_set_display_clocks();
 }
 
 static inline int prcmu_disable_dsipll(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_disable_dsipll();
-       else
-               return db8500_prcmu_disable_dsipll();
+       return db8500_prcmu_disable_dsipll();
 }
 
 static inline int prcmu_enable_dsipll(void)
 {
-       if (cpu_is_u5500())
-               return db5500_prcmu_enable_dsipll();
-       else
-               return db8500_prcmu_enable_dsipll();
+       return db8500_prcmu_enable_dsipll();
 }
 
 static inline int prcmu_config_esram0_deep_sleep(u8 state)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_config_esram0_deep_sleep(state);
+       return db8500_prcmu_config_esram0_deep_sleep(state);
 }
 
 static inline int prcmu_config_hotdog(u8 threshold)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_config_hotdog(threshold);
+       return db8500_prcmu_config_hotdog(threshold);
 }
 
 static inline int prcmu_config_hotmon(u8 low, u8 high)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_config_hotmon(low, high);
+       return db8500_prcmu_config_hotmon(low, high);
 }
 
 static inline int prcmu_start_temp_sense(u16 cycles32k)
 {
-       if (cpu_is_u5500())
-               return  -EINVAL;
-       else
-               return  db8500_prcmu_start_temp_sense(cycles32k);
+       return  db8500_prcmu_start_temp_sense(cycles32k);
 }
 
 static inline int prcmu_stop_temp_sense(void)
 {
-       if (cpu_is_u5500())
-               return  -EINVAL;
-       else
-               return  db8500_prcmu_stop_temp_sense();
+       return  db8500_prcmu_stop_temp_sense();
 }
 
 static inline u32 prcmu_read(unsigned int reg)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_read(reg);
+       return db8500_prcmu_read(reg);
 }
 
 static inline void prcmu_write(unsigned int reg, u32 value)
 {
-       if (cpu_is_u5500())
-               return;
-       else
-               db8500_prcmu_write(reg, value);
+       db8500_prcmu_write(reg, value);
 }
 
 static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value)
 {
-       if (cpu_is_u5500())
-               return;
-       else
-               db8500_prcmu_write_masked(reg, mask, value);
+       db8500_prcmu_write_masked(reg, mask, value);
 }
 
 static inline int prcmu_enable_a9wdog(u8 id)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_enable_a9wdog(id);
+       return db8500_prcmu_enable_a9wdog(id);
 }
 
 static inline int prcmu_disable_a9wdog(u8 id)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_disable_a9wdog(id);
+       return db8500_prcmu_disable_a9wdog(id);
 }
 
 static inline int prcmu_kick_a9wdog(u8 id)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_kick_a9wdog(id);
+       return db8500_prcmu_kick_a9wdog(id);
 }
 
 static inline int prcmu_load_a9wdog(u8 id, u32 timeout)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_load_a9wdog(id, timeout);
+       return db8500_prcmu_load_a9wdog(id, timeout);
 }
 
 static inline int prcmu_config_a9wdog(u8 num, bool sleep_auto_off)
 {
-       if (cpu_is_u5500())
-               return -EINVAL;
-       else
-               return db8500_prcmu_config_a9wdog(num, sleep_auto_off);
+       return db8500_prcmu_config_a9wdog(num, sleep_auto_off);
 }
 #else
 
@@ -768,7 +612,7 @@ static inline void prcmu_clear(unsigned int reg, u32 bits)
        prcmu_write_masked(reg, bits, 0);
 }
 
-#if defined(CONFIG_UX500_SOC_DB8500) || defined(CONFIG_UX500_SOC_DB5500)
+#if defined(CONFIG_UX500_SOC_DB8500)
 
 /**
  * prcmu_enable_spi2 - Enables pin muxing for SPI2 on OtherAlternateC1.