Merge branch 'next/cleanup' into HEAD
authorOlof Johansson <olof@lixom.net>
Mon, 1 Oct 2012 21:15:02 +0000 (14:15 -0700)
committerOlof Johansson <olof@lixom.net>
Mon, 1 Oct 2012 21:15:02 +0000 (14:15 -0700)
Conflicts:
drivers/staging/tidspbridge/core/wdt.c
drivers/usb/host/Kconfig
drivers/w1/masters/omap_hdq.c

36 files changed:
1  2 
MAINTAINERS
arch/arm/Kconfig
arch/arm/kernel/bios32.c
arch/arm/mach-exynos/include/mach/map.h
arch/arm/mach-msm/io.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/gpio.c
arch/arm/mach-omap2/omap-wakeupgen.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/omap_phy_internal.c
arch/arm/mach-omap2/twl-common.c
arch/arm/mach-omap2/usb-musb.c
arch/arm/mach-orion5x/common.c
arch/arm/mach-realview/realview_eb.c
arch/arm/mach-realview/realview_pb1176.c
arch/arm/mach-realview/realview_pb11mp.c
arch/arm/mach-realview/realview_pba8.c
arch/arm/mach-realview/realview_pbx.c
arch/arm/mach-shmobile/board-kzm9g.c
arch/arm/mach-tegra/Makefile
arch/arm/mach-tegra/devices.c
arch/arm/mach-tegra/pcie.c
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/plat-samsung/devs.c
drivers/gpio/gpio-omap.c
drivers/mmc/host/omap_hsmmc.c
drivers/spi/spi-omap2-mcspi.c
drivers/staging/tidspbridge/core/dsp-clock.c
drivers/staging/tidspbridge/core/tiomap3430.c
drivers/staging/tidspbridge/core/tiomap3430_pwr.c
drivers/staging/tidspbridge/core/wdt.c
drivers/staging/tidspbridge/rmgr/drv_interface.c
drivers/usb/Kconfig
drivers/usb/host/Kconfig
drivers/usb/host/ohci-nxp.c
drivers/usb/musb/tusb6010_omap.c

diff --combined MAINTAINERS
@@@ -595,7 -595,6 +595,6 @@@ M: Will Deacon <will.deacon@arm.com
  S:    Maintained
  F:    arch/arm/kernel/perf_event*
  F:    arch/arm/oprofile/common.c
- F:    arch/arm/kernel/pmu.c
  F:    arch/arm/include/asm/pmu.h
  F:    arch/arm/kernel/hw_breakpoint.c
  F:    arch/arm/include/asm/hw_breakpoint.h
@@@ -1209,12 -1208,6 +1208,12 @@@ S:    Maintaine
  F:    arch/arm/mach-pxa/z2.c
  F:    arch/arm/mach-pxa/include/mach/z2.h
  
 +ARM64 PORT (AARCH64 ARCHITECTURE)
 +M:    Catalin Marinas <catalin.marinas@arm.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    arch/arm64/
 +
  ASC7621 HARDWARE MONITOR DRIVER
  M:    George Joseph <george.joseph@fairview5.com>
  L:    lm-sensors@lm-sensors.org
@@@ -2865,9 -2858,7 +2864,9 @@@ F:      include/linux/firewire*.
  F:    tools/firewire/
  
  FIRMWARE LOADER (request_firmware)
 -S:    Orphan
 +M:    Ming Lei <ming.lei@canonical.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
  F:    Documentation/firmware_class/
  F:    drivers/base/firmware*.c
  F:    include/linux/firmware.h
@@@ -3560,12 -3551,11 +3559,12 @@@ K:   \b(ABS|SYN)_MT
  
  INTEL C600 SERIES SAS CONTROLLER DRIVER
  M:    Intel SCU Linux support <intel-linux-scu@intel.com>
 +M:    Lukasz Dorau <lukasz.dorau@intel.com>
 +M:    Maciej Patelczyk <maciej.patelczyk@intel.com>
  M:    Dave Jiang <dave.jiang@intel.com>
 -M:    Ed Nadolski <edmund.nadolski@intel.com>
  L:    linux-scsi@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/djbw/isci.git
 -S:    Maintained
 +T:    git git://git.code.sf.net/p/intel-sas/isci
 +S:    Supported
  F:    drivers/scsi/isci/
  F:    firmware/isci/
  
@@@ -3675,12 -3665,11 +3674,12 @@@ F:   Documentation/networking/README.ipw2
  F:    drivers/net/wireless/ipw2x00/
  
  INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
 -M:    Joseph Cihula <joseph.cihula@intel.com>
 +M:    Richard L Maliszewski <richard.l.maliszewski@intel.com>
 +M:    Gang Wei <gang.wei@intel.com>
  M:    Shane Wang <shane.wang@intel.com>
  L:    tboot-devel@lists.sourceforge.net
  W:    http://tboot.sourceforge.net
 -T:    Mercurial http://www.bughost.org/repos.hg/tboot.hg
 +T:    hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
  S:    Supported
  F:    Documentation/intel_txt.txt
  F:    include/linux/tboot.h
@@@ -5330,12 -5319,6 +5329,12 @@@ L:    linux-mtd@lists.infradead.or
  S:    Maintained
  F:    drivers/mtd/devices/phram.c
  
 +PICOLCD HID DRIVER
 +M:    Bruno Prémont <bonbons@linux-vserver.org>
 +L:    linux-input@vger.kernel.org
 +S:    Maintained
 +F:    drivers/hid/hid-picolcd*
 +
  PICOXCELL SUPPORT
  M:    Jamie Iles <jamie@jamieiles.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -5559,8 -5542,6 +5558,8 @@@ F:      Documentation/devicetree/bindings/pw
  F:    include/linux/pwm.h
  F:    include/linux/of_pwm.h
  F:    drivers/pwm/
 +F:    drivers/video/backlight/pwm_bl.c
 +F:    include/linux/pwm_backlight.h
  
  PXA2xx/PXA3xx SUPPORT
  M:    Eric Miao <eric.y.miao@gmail.com>
diff --combined arch/arm/Kconfig
@@@ -273,13 -273,12 +273,12 @@@ config ARCH_INTEGRATO
        select ARM_AMBA
        select ARCH_HAS_CPUFREQ
        select COMMON_CLK
 -      select CLK_VERSATILE
 +      select COMMON_CLK_VERSATILE
        select HAVE_TCM
        select ICST
        select GENERIC_CLOCKEVENTS
        select PLAT_VERSATILE
        select PLAT_VERSATILE_FPGA_IRQ
-       select NEED_MACH_IO_H
        select NEED_MACH_MEMORY_H
        select SPARSE_IRQ
        select MULTI_IRQ_HANDLER
  config ARCH_REALVIEW
        bool "ARM Ltd. RealView family"
        select ARM_AMBA
 -      select CLKDEV_LOOKUP
 -      select HAVE_MACH_CLKDEV
 +      select COMMON_CLK
 +      select COMMON_CLK_VERSATILE
        select ICST
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
        select PLAT_VERSATILE
 -      select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
        select ARM_TIMER_SP804
        select GPIO_PL061 if GPIOLIB
@@@ -311,7 -311,6 +310,6 @@@ config ARCH_VERSATIL
        select ICST
        select GENERIC_CLOCKEVENTS
        select ARCH_WANT_OPTIONAL_GPIOLIB
-       select NEED_MACH_IO_H if PCI
        select PLAT_VERSATILE
        select PLAT_VERSATILE_CLOCK
        select PLAT_VERSATILE_CLCD
@@@ -406,9 -405,8 +404,8 @@@ config ARCH_GEMIN
        help
          Support for the Cortina Systems Gemini family SoCs
  
- config ARCH_PRIMA2
-       bool "CSR SiRFSoC PRIMA2 ARM Cortex A9 Platform"
-       select CPU_V7
+ config ARCH_SIRF
+       bool "CSR SiRF"
        select NO_IOPORT
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
        select PINCTRL
        select PINCTRL_SIRF
        select USE_OF
-       select ZONE_DMA
        help
-           Support for CSR SiRFSoC ARM Cortex A9 Platform
+         Support for CSR SiRFprimaII/Marco/Polo platforms
  
  config ARCH_EBSA110
        bool "EBSA-110"
@@@ -455,7 -452,7 +451,7 @@@ config ARCH_FOOTBRIDG
        select FOOTBRIDGE
        select GENERIC_CLOCKEVENTS
        select HAVE_IDE
-       select NEED_MACH_IO_H
+       select NEED_MACH_IO_H if !MMU
        select NEED_MACH_MEMORY_H
        help
          Support for systems based on the DC21285 companion chip
@@@ -512,7 -509,6 +508,6 @@@ config ARCH_IOP13X
        select PCI
        select ARCH_SUPPORTS_MSI
        select VMSPLIT_1G
-       select NEED_MACH_IO_H
        select NEED_MACH_MEMORY_H
        select NEED_RET_TO_USER
        help
@@@ -522,7 -518,6 +517,6 @@@ config ARCH_IOP32
        bool "IOP32x-based"
        depends on MMU
        select CPU_XSCALE
-       select NEED_MACH_IO_H
        select NEED_RET_TO_USER
        select PLAT_IOP
        select PCI
@@@ -535,7 -530,6 +529,6 @@@ config ARCH_IOP33
        bool "IOP33x-based"
        depends on MMU
        select CPU_XSCALE
-       select NEED_MACH_IO_H
        select NEED_RET_TO_USER
        select PLAT_IOP
        select PCI
@@@ -575,7 -569,6 +568,6 @@@ config ARCH_DOV
        select PCI
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
-       select NEED_MACH_IO_H
        select PLAT_ORION
        help
          Support for the Marvell Dove SoC 88AP510
@@@ -586,7 -579,6 +578,6 @@@ config ARCH_KIRKWOO
        select PCI
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
-       select NEED_MACH_IO_H
        select PLAT_ORION
        help
          Support for the following Marvell Kirkwood series SoCs:
@@@ -613,7 -605,6 +604,6 @@@ config ARCH_MV78XX
        select PCI
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
-       select NEED_MACH_IO_H
        select PLAT_ORION
        help
          Support for the following Marvell MV78xx0 series SoCs:
@@@ -626,7 -617,6 +616,6 @@@ config ARCH_ORION5
        select PCI
        select ARCH_REQUIRE_GPIOLIB
        select GENERIC_CLOCKEVENTS
-       select NEED_MACH_IO_H
        select PLAT_ORION
        help
          Support for the following Marvell Orion 5x series SoCs:
@@@ -651,8 -641,9 +640,9 @@@ config ARCH_KS869
        bool "Micrel/Kendin KS8695"
        select CPU_ARM922T
        select ARCH_REQUIRE_GPIOLIB
-       select ARCH_USES_GETTIMEOFFSET
        select NEED_MACH_MEMORY_H
+       select CLKSRC_MMIO
+       select GENERIC_CLOCKEVENTS
        help
          Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based
          System-on-Chip devices.
@@@ -682,7 -673,6 +672,6 @@@ config ARCH_TEGR
        select HAVE_CLK
        select HAVE_SMP
        select MIGHT_HAVE_CACHE_L2X0
-       select NEED_MACH_IO_H if PCI
        select ARCH_HAS_CPUFREQ
        select USE_OF
        help
@@@ -708,14 -698,6 +697,6 @@@ config ARCH_PICOXCEL
          family of Femtocell devices.  The picoxcell support requires device tree
          for all boards.
  
- config ARCH_PNX4008
-       bool "Philips Nexperia PNX4008 Mobile"
-       select CPU_ARM926T
-       select CLKDEV_LOOKUP
-       select ARCH_USES_GETTIMEOFFSET
-       help
-         This enables support for Philips PNX4008 mobile platform.
  config ARCH_PXA
        bool "PXA2xx/PXA3xx-based"
        depends on MMU
@@@ -911,7 -893,6 +892,6 @@@ config ARCH_SHAR
        select PCI
        select ARCH_USES_GETTIMEOFFSET
        select NEED_MACH_MEMORY_H
-       select NEED_MACH_IO_H
        help
          Support for the StrongARM based Digital DNARD machine, also known
          as "Shark" (<http://www.shark-linux.de/shark.html>).
@@@ -930,6 -911,7 +910,7 @@@ config ARCH_U30
        select COMMON_CLK
        select GENERIC_GPIO
        select ARCH_REQUIRE_GPIOLIB
+       select SPARSE_IRQ
        help
          Support for ST-Ericsson U300 series mobile platforms.
  
@@@ -1117,6 -1099,8 +1098,8 @@@ source "arch/arm/mach-exynos/Kconfig
  
  source "arch/arm/mach-shmobile/Kconfig"
  
+ source "arch/arm/mach-prima2/Kconfig"
  source "arch/arm/mach-tegra/Kconfig"
  
  source "arch/arm/mach-u300/Kconfig"
@@@ -1178,12 -1162,6 +1161,6 @@@ config XSCALE_PM
        depends on CPU_XSCALE
        default y
  
- config CPU_HAS_PMU
-       depends on (CPU_V6 || CPU_V6K || CPU_V7 || XSCALE_PMU) && \
-                  (!ARCH_OMAP3 || OMAP3_EMU)
-       default y
-       bool
  config MULTI_IRQ_HANDLER
        bool
        help
@@@ -1756,7 -1734,7 +1733,7 @@@ config HIGHPT
  
  config HW_PERF_EVENTS
        bool "Enable hardware performance counter support for perf events"
-       depends on PERF_EVENTS && CPU_HAS_PMU
+       depends on PERF_EVENTS
        default y
        help
          Enable hardware performance counter support for perf events. If
@@@ -2312,7 -2290,7 +2289,7 @@@ menu "Power management options
  source "kernel/power/Kconfig"
  
  config ARCH_SUSPEND_POSSIBLE
 -      depends on !ARCH_S5PC100 && !ARCH_TEGRA
 +      depends on !ARCH_S5PC100
        depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
                CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE || CPU_MOHAWK
        def_bool y
diff --combined arch/arm/kernel/bios32.c
@@@ -13,6 -13,7 +13,7 @@@
  #include <linux/io.h>
  
  #include <asm/mach-types.h>
+ #include <asm/mach/map.h>
  #include <asm/mach/pci.h>
  
  static int debug_pci;
@@@ -270,6 -271,15 +271,6 @@@ static void __devinit pci_fixup_it8152(
  }
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_ITE, PCI_DEVICE_ID_ITE_8152, pci_fixup_it8152);
  
 -
 -
 -void __devinit pcibios_update_irq(struct pci_dev *dev, int irq)
 -{
 -      if (debug_pci)
 -              printk("PCI: Assigning IRQ %02d to %s\n", irq, pci_name(dev));
 -      pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq);
 -}
 -
  /*
   * If the bus contains any of these devices, then we must not turn on
   * parity checking of any kind.  Currently this is CyberPro 20x0 only.
@@@ -414,6 -424,38 +415,38 @@@ static int pcibios_map_irq(const struc
        return irq;
  }
  
+ static int __init pcibios_init_resources(int busnr, struct pci_sys_data *sys)
+ {
+       int ret;
+       struct pci_host_bridge_window *window;
+       if (list_empty(&sys->resources)) {
+               pci_add_resource_offset(&sys->resources,
+                        &iomem_resource, sys->mem_offset);
+       }
+       list_for_each_entry(window, &sys->resources, list) {
+               if (resource_type(window->res) == IORESOURCE_IO)
+                       return 0;
+       }
+       sys->io_res.start = (busnr * SZ_64K) ?  : pcibios_min_io;
+       sys->io_res.end = (busnr + 1) * SZ_64K - 1;
+       sys->io_res.flags = IORESOURCE_IO;
+       sys->io_res.name = sys->io_res_name;
+       sprintf(sys->io_res_name, "PCI%d I/O", busnr);
+       ret = request_resource(&ioport_resource, &sys->io_res);
+       if (ret) {
+               pr_err("PCI: unable to allocate I/O port region (%d)\n", ret);
+               return ret;
+       }
+       pci_add_resource_offset(&sys->resources, &sys->io_res,
+                               sys->io_offset);
+       return 0;
+ }
  static void __init pcibios_init_hw(struct hw_pci *hw, struct list_head *head)
  {
        struct pci_sys_data *sys = NULL;
                ret = hw->setup(nr, sys);
  
                if (ret > 0) {
-                       if (list_empty(&sys->resources)) {
-                               pci_add_resource_offset(&sys->resources,
-                                        &ioport_resource, sys->io_offset);
-                               pci_add_resource_offset(&sys->resources,
-                                        &iomem_resource, sys->mem_offset);
+                       ret = pcibios_init_resources(nr, sys);
+                       if (ret)  {
+                               kfree(sys);
+                               break;
                        }
  
                        if (hw->scan)
@@@ -618,3 -659,15 +650,15 @@@ int pci_mmap_page_range(struct pci_dev 
  
        return 0;
  }
+ void __init pci_map_io_early(unsigned long pfn)
+ {
+       struct map_desc pci_io_desc = {
+               .virtual        = PCI_IO_VIRT_BASE,
+               .type           = MT_DEVICE,
+               .length         = SZ_64K,
+       };
+       pci_io_desc.pfn = pfn;
+       iotable_init(&pci_io_desc, 1);
+ }
@@@ -89,7 -89,7 +89,7 @@@
  #define EXYNOS4_PA_L2CC                       0x10502000
  
  #define EXYNOS4_PA_MDMA0              0x10810000
 -#define EXYNOS4_PA_MDMA1              0x12840000
 +#define EXYNOS4_PA_MDMA1              0x12850000
  #define EXYNOS4_PA_PDMA0              0x12680000
  #define EXYNOS4_PA_PDMA1              0x12690000
  #define EXYNOS5_PA_MDMA0              0x10800000
  #define EXYNOS5_PA_SYSMMU_JPEG                0x11F20000
  #define EXYNOS5_PA_SYSMMU_IOP         0x12360000
  #define EXYNOS5_PA_SYSMMU_RTIC                0x12370000
- #define EXYNOS5_PA_SYSMMU_GPS         0x12630000
  #define EXYNOS5_PA_SYSMMU_ISP         0x13260000
  #define EXYNOS5_PA_SYSMMU_DRC         0x12370000
  #define EXYNOS5_PA_SYSMMU_SCALERC     0x13280000
diff --combined arch/arm/mach-msm/io.c
  
  #include <mach/board.h>
  
 -#define MSM_CHIP_DEVICE(name, chip) {                       \
 +#define MSM_CHIP_DEVICE_TYPE(name, chip, mem_type) {                        \
                .virtual = (unsigned long) MSM_##name##_BASE, \
                .pfn = __phys_to_pfn(chip##_##name##_PHYS), \
                .length = chip##_##name##_SIZE, \
 -              .type = MT_DEVICE_NONSHARED, \
 +              .type = mem_type, \
         }
  
 +#define MSM_DEVICE_TYPE(name, mem_type) \
 +              MSM_CHIP_DEVICE_TYPE(name, MSM, mem_type)
 +#define MSM_CHIP_DEVICE(name, chip) \
 +              MSM_CHIP_DEVICE_TYPE(name, chip, MT_DEVICE)
  #define MSM_DEVICE(name) MSM_CHIP_DEVICE(name, MSM)
  
- #if defined(CONFIG_ARCH_MSM7X00A) || defined(CONFIG_ARCH_MSM7X27) \
-       || defined(CONFIG_ARCH_MSM7X25)
+ #if defined(CONFIG_ARCH_MSM7X00A)
  static struct map_desc msm_io_desc[] __initdata = {
 -      MSM_DEVICE(VIC),
 -      MSM_CHIP_DEVICE(CSR, MSM7X00),
 -      MSM_DEVICE(DMOV),
 -      MSM_CHIP_DEVICE(GPIO1, MSM7X00),
 -      MSM_CHIP_DEVICE(GPIO2, MSM7X00),
 -      MSM_DEVICE(CLK_CTL),
 +      MSM_DEVICE_TYPE(VIC, MT_DEVICE_NONSHARED),
 +      MSM_CHIP_DEVICE_TYPE(CSR, MSM7X00, MT_DEVICE_NONSHARED),
 +      MSM_DEVICE_TYPE(DMOV, MT_DEVICE_NONSHARED),
 +      MSM_CHIP_DEVICE_TYPE(GPIO1, MSM7X00, MT_DEVICE_NONSHARED),
 +      MSM_CHIP_DEVICE_TYPE(GPIO2, MSM7X00, MT_DEVICE_NONSHARED),
 +      MSM_DEVICE_TYPE(CLK_CTL, MT_DEVICE_NONSHARED),
  #if defined(CONFIG_DEBUG_MSM_UART1) || defined(CONFIG_DEBUG_MSM_UART2) || \
        defined(CONFIG_DEBUG_MSM_UART3)
 -      MSM_DEVICE(DEBUG_UART),
 -#endif
 -#ifdef CONFIG_ARCH_MSM7X30
 -      MSM_DEVICE(GCC),
 +      MSM_DEVICE_TYPE(DEBUG_UART, MT_DEVICE_NONSHARED),
  #endif
        {
                .virtual =  (unsigned long) MSM_SHARED_RAM_BASE,
@@@ -32,7 -32,6 +32,7 @@@
  #include <linux/spi/ads7846.h>
  #include <linux/i2c/twl.h>
  #include <linux/usb/otg.h>
 +#include <linux/usb/nop-usb-xceiv.h>
  #include <linux/smsc911x.h>
  
  #include <linux/wl12xx.h>
  #include <linux/mmc/host.h>
  #include <linux/export.h>
  
- #include <mach/hardware.h>
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  
- #include <plat/board.h>
  #include <plat/usb.h>
- #include <plat/nand.h>
+ #include <linux/platform_data/mtd-nand-omap2.h>
  #include "common.h"
- #include <plat/mcspi.h>
+ #include <linux/platform_data/spi-omap2-mcspi.h>
  #include <video/omapdss.h>
  #include <video/omap-panel-tfp410.h>
  
  #define OMAP3EVM_GEN1_ETHR_GPIO_RST   64
  #define OMAP3EVM_GEN2_ETHR_GPIO_RST   7
  
+ /*
+  * OMAP35x EVM revision
+  * Run time detection of EVM revision is done by reading Ethernet
+  * PHY ID -
+  *    GEN_1   = 0x01150000
+  *    GEN_2   = 0x92200000
+  */
+ enum {
+       OMAP3EVM_BOARD_GEN_1 = 0,       /* EVM Rev between  A - D */
+       OMAP3EVM_BOARD_GEN_2,           /* EVM Rev >= Rev E */
+ };
  static u8 omap3_evm_version;
  
  u8 get_omap3_evm_rev(void)
@@@ -109,7 -118,7 +119,7 @@@ static void __init omap3_evm_get_revisi
  }
  
  #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
- #include <plat/gpmc-smsc911x.h>
+ #include "gpmc-smsc911x.h"
  
  static struct omap_smsc911x_platform_data smsc911x_cfg = {
        .cs             = OMAP3EVM_SMSC911X_CS,
@@@ -378,9 -387,6 +388,6 @@@ static int omap3evm_twl_gpio_setup(stru
  }
  
  static struct twl4030_gpio_platform_data omap3evm_gpio_data = {
-       .gpio_base      = OMAP_MAX_GPIO_LINES,
-       .irq_base       = TWL4030_GPIO_IRQ_BASE,
-       .irq_end        = TWL4030_GPIO_IRQ_END,
        .use_leds       = true,
        .setup          = omap3evm_twl_gpio_setup,
  };
@@@ -527,9 -533,6 +534,6 @@@ static int __init omap3_evm_i2c_init(vo
        return 0;
  }
  
- static struct omap_board_config_kernel omap3_evm_config[] __initdata = {
- };
  static struct usbhs_omap_board_data usbhs_bdata __initdata = {
  
        .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
@@@ -689,9 -692,6 +693,6 @@@ static void __init omap3_evm_init(void
        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);
        omap_mux_init_gpio(63, OMAP_PIN_INPUT);
        omap_hsmmc_init(mmc);
  
@@@ -21,6 -21,7 +21,7 @@@
  #include <linux/slab.h>
  #include <linux/interrupt.h>
  #include <linux/of.h>
+ #include <linux/platform_data/gpio-omap.h>
  
  #include <plat/omap_hwmod.h>
  #include <plat/omap_device.h>
@@@ -122,7 -123,6 +123,7 @@@ static int __init omap2_gpio_dev_init(s
                break;
        default:
                WARN(1, "Invalid gpio bank_type\n");
 +              kfree(pdata->regs);
                kfree(pdata);
                return -EINVAL;
        }
  
  #include <asm/hardware/gic.h>
  
- #include <mach/omap-wakeupgen.h>
- #include <mach/omap-secure.h>
+ #include "omap-wakeupgen.h"
+ #include "omap-secure.h"
  
+ #include "soc.h"
  #include "omap4-sar-layout.h"
  #include "common.h"
  
@@@ -229,7 -230,13 +230,7 @@@ static inline void omap4_irq_save_conte
        /* Save AuxBoot* registers */
        val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
        __raw_writel(val, sar_base + AUXCOREBOOT0_OFFSET);
 -      val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
 -      __raw_writel(val, sar_base + AUXCOREBOOT1_OFFSET);
 -
 -      /* Save SyncReq generation logic */
 -      val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
 -      __raw_writel(val, sar_base + AUXCOREBOOT0_OFFSET);
 -      val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_0);
 +      val = __raw_readl(wakeupgen_base + OMAP_AUX_CORE_BOOT_1);
        __raw_writel(val, sar_base + AUXCOREBOOT1_OFFSET);
  
        /* Save SyncReq generation logic */
   */
  
  #include <linux/io.h>
+ #include <linux/platform_data/gpio-omap.h>
  #include <linux/power/smartreflex.h>
  
  #include <plat/omap_hwmod.h>
- #include <plat/cpu.h>
  #include <plat/i2c.h>
- #include <plat/gpio.h>
  #include <plat/dma.h>
- #include <plat/mcspi.h>
- #include <plat/mcbsp.h>
+ #include <linux/platform_data/spi-omap2-mcspi.h>
+ #include <linux/platform_data/asoc-ti-mcbsp.h>
  #include <plat/mmc.h>
  #include <plat/dmtimer.h>
  #include <plat/common.h>
@@@ -5890,12 -5889,6 +5889,12 @@@ static struct omap_hwmod_addr_space oma
                .pa_end         = 0x4a0ab003,
                .flags          = ADDR_TYPE_RT
        },
 +      {
 +              /* XXX: Remove this once control module driver is in place */
 +              .pa_start       = 0x4a00233c,
 +              .pa_end         = 0x4a00233f,
 +              .flags          = ADDR_TYPE_RT
 +      },
        { }
  };
  
  #include <linux/usb.h>
  
  #include <plat/usb.h>
+ #include "soc.h"
  #include "control.h"
  
 -/* OMAP control module register for UTMI PHY */
 -#define CONTROL_DEV_CONF              0x300
 -#define PHY_PD                                0x1
 -
 -#define USBOTGHS_CONTROL              0x33c
 -#define       AVALID                          BIT(0)
 -#define       BVALID                          BIT(1)
 -#define       VBUSVALID                       BIT(2)
 -#define       SESSEND                         BIT(3)
 -#define       IDDIG                           BIT(4)
 -
 -static struct clk *phyclk, *clk48m, *clk32k;
 -static void __iomem *ctrl_base;
 -static int usbotghs_control;
 -
 -int omap4430_phy_init(struct device *dev)
 -{
 -      ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K);
 -      if (!ctrl_base) {
 -              pr_err("control module ioremap failed\n");
 -              return -ENOMEM;
 -      }
 -      /* Power down the phy */
 -      __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
 -
 -      if (!dev) {
 -              iounmap(ctrl_base);
 -              return 0;
 -      }
 -
 -      phyclk = clk_get(dev, "ocp2scp_usb_phy_ick");
 -      if (IS_ERR(phyclk)) {
 -              dev_err(dev, "cannot clk_get ocp2scp_usb_phy_ick\n");
 -              iounmap(ctrl_base);
 -              return PTR_ERR(phyclk);
 -      }
 -
 -      clk48m = clk_get(dev, "ocp2scp_usb_phy_phy_48m");
 -      if (IS_ERR(clk48m)) {
 -              dev_err(dev, "cannot clk_get ocp2scp_usb_phy_phy_48m\n");
 -              clk_put(phyclk);
 -              iounmap(ctrl_base);
 -              return PTR_ERR(clk48m);
 -      }
 -
 -      clk32k = clk_get(dev, "usb_phy_cm_clk32k");
 -      if (IS_ERR(clk32k)) {
 -              dev_err(dev, "cannot clk_get usb_phy_cm_clk32k\n");
 -              clk_put(phyclk);
 -              clk_put(clk48m);
 -              iounmap(ctrl_base);
 -              return PTR_ERR(clk32k);
 -      }
 -      return 0;
 -}
 -
 -int omap4430_phy_set_clk(struct device *dev, int on)
 -{
 -      static int state;
 -
 -      if (on && !state) {
 -              /* Enable the phy clocks */
 -              clk_enable(phyclk);
 -              clk_enable(clk48m);
 -              clk_enable(clk32k);
 -              state = 1;
 -      } else if (state) {
 -              /* Disable the phy clocks */
 -              clk_disable(phyclk);
 -              clk_disable(clk48m);
 -              clk_disable(clk32k);
 -              state = 0;
 -      }
 -      return 0;
 -}
 -
 -int omap4430_phy_power(struct device *dev, int ID, int on)
 -{
 -      if (on) {
 -              if (ID)
 -                      /* enable VBUS valid, IDDIG groung */
 -                      __raw_writel(AVALID | VBUSVALID, ctrl_base +
 -                                                      USBOTGHS_CONTROL);
 -              else
 -                      /*
 -                       * Enable VBUS Valid, AValid and IDDIG
 -                       * high impedance
 -                       */
 -                      __raw_writel(IDDIG | AVALID | VBUSVALID,
 -                                              ctrl_base + USBOTGHS_CONTROL);
 -      } else {
 -              /* Enable session END and IDIG to high impedance. */
 -              __raw_writel(SESSEND | IDDIG, ctrl_base +
 -                                      USBOTGHS_CONTROL);
 -      }
 -      return 0;
 -}
 -
 -int omap4430_phy_suspend(struct device *dev, int suspend)
 -{
 -      if (suspend) {
 -              /* Disable the clocks */
 -              omap4430_phy_set_clk(dev, 0);
 -              /* Power down the phy */
 -              __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
 -
 -              /* save the context */
 -              usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL);
 -      } else {
 -              /* Enable the internel phy clcoks */
 -              omap4430_phy_set_clk(dev, 1);
 -              /* power on the phy */
 -              if (__raw_readl(ctrl_base + CONTROL_DEV_CONF) & PHY_PD) {
 -                      __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
 -                      mdelay(200);
 -              }
 -
 -              /* restore the context */
 -              __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL);
 -      }
 -
 -      return 0;
 -}
 -
 -int omap4430_phy_exit(struct device *dev)
 -{
 -      if (ctrl_base)
 -              iounmap(ctrl_base);
 -      if (phyclk)
 -              clk_put(phyclk);
 -      if (clk48m)
 -              clk_put(clk48m);
 -      if (clk32k)
 -              clk_put(clk32k);
 -
 -      return 0;
 -}
 -
  void am35x_musb_reset(void)
  {
        u32     regval;
@@@ -29,6 -29,7 +29,7 @@@
  #include <plat/i2c.h>
  #include <plat/usb.h>
  
+ #include "soc.h"
  #include "twl-common.h"
  #include "pm.h"
  #include "voltage.h"
@@@ -39,16 -40,6 +40,6 @@@ static struct i2c_board_info __initdat
        .flags          = I2C_CLIENT_WAKE,
  };
  
- static struct i2c_board_info __initdata omap4_i2c1_board_info[] = {
-       {
-               .addr           = 0x48,
-               .flags          = I2C_CLIENT_WAKE,
-       },
-       {
-               I2C_BOARD_INFO("twl6040", 0x4b),
-       },
- };
  #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
  static int twl_set_voltage(void *data, int target_uV)
  {
@@@ -78,30 -69,25 +69,25 @@@ void __init omap_pmic_init(int bus, u3
  
  void __init omap4_pmic_init(const char *pmic_type,
                    struct twl4030_platform_data *pmic_data,
-                   struct twl6040_platform_data *twl6040_data, int twl6040_irq)
+                   struct i2c_board_info *devices, int nr_devices)
  {
        /* PMIC part*/
        omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
-       strncpy(omap4_i2c1_board_info[0].type, pmic_type,
-               sizeof(omap4_i2c1_board_info[0].type));
-       omap4_i2c1_board_info[0].irq = OMAP44XX_IRQ_SYS_1N;
-       omap4_i2c1_board_info[0].platform_data = pmic_data;
-       /* TWL6040 audio IC part */
-       omap4_i2c1_board_info[1].irq = twl6040_irq;
-       omap4_i2c1_board_info[1].platform_data = twl6040_data;
-       omap_register_i2c_bus(1, 400, omap4_i2c1_board_info, 2);
+       omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data);
  
+       /* Register additional devices on i2c1 bus if needed */
+       if (devices)
+               i2c_register_board_info(1, devices, nr_devices);
  }
  
  void __init omap_pmic_late_init(void)
  {
-       /* Init the OMAP TWL parameters (if PMIC has been registered) */
-       if (pmic_i2c_board_info.irq)
-               omap3_twl_init();
-       if (omap4_i2c1_board_info[0].irq)
-               omap4_twl_init();
+       /* Init the OMAP TWL parameters (if PMIC has been registerd) */
+       if (!pmic_i2c_board_info.irq)
+               return;
+       omap3_twl_init();
+       omap4_twl_init();
  }
  
  #if defined(CONFIG_ARCH_OMAP3)
@@@ -251,6 -237,11 +237,6 @@@ void __init omap3_pmic_get_config(struc
  
  #if defined(CONFIG_ARCH_OMAP4)
  static struct twl4030_usb_data omap4_usb_pdata = {
 -      .phy_init       = omap4430_phy_init,
 -      .phy_exit       = omap4430_phy_exit,
 -      .phy_power      = omap4430_phy_power,
 -      .phy_set_clock  = omap4430_phy_set_clk,
 -      .phy_suspend    = omap4430_phy_suspend,
  };
  
  static struct regulator_init_data omap4_vdac_idata = {
  #include <linux/clk.h>
  #include <linux/dma-mapping.h>
  #include <linux/io.h>
  #include <linux/usb/musb.h>
  
- #include <mach/hardware.h>
- #include <mach/irqs.h>
- #include <mach/am35xx.h>
  #include <plat/usb.h>
  #include <plat/omap_device.h>
+ #include "am35xx.h"
  #include "mux.h"
  
  static struct musb_hdrc_config musb_config = {
@@@ -117,4 -116,7 +116,4 @@@ void __init usb_musb_init(struct omap_m
        dev->dma_mask = &musb_dmamask;
        dev->coherent_dma_mask = musb_dmamask;
        put_device(dev);
 -
 -      if (cpu_is_omap44xx())
 -              omap4430_phy_init(dev);
  }
@@@ -47,16 -47,6 +47,6 @@@ static struct map_desc orion5x_io_desc[
                .length         = ORION5X_REGS_SIZE,
                .type           = MT_DEVICE,
        }, {
-               .virtual        = ORION5X_PCIE_IO_VIRT_BASE,
-               .pfn            = __phys_to_pfn(ORION5X_PCIE_IO_PHYS_BASE),
-               .length         = ORION5X_PCIE_IO_SIZE,
-               .type           = MT_DEVICE,
-       }, {
-               .virtual        = ORION5X_PCI_IO_VIRT_BASE,
-               .pfn            = __phys_to_pfn(ORION5X_PCI_IO_PHYS_BASE),
-               .length         = ORION5X_PCI_IO_SIZE,
-               .type           = MT_DEVICE,
-       }, {
                .virtual        = ORION5X_PCIE_WA_VIRT_BASE,
                .pfn            = __phys_to_pfn(ORION5X_PCIE_WA_PHYS_BASE),
                .length         = ORION5X_PCIE_WA_SIZE,
@@@ -204,13 -194,6 +194,13 @@@ void __init orion5x_wdt_init(void
  void __init orion5x_init_early(void)
  {
        orion_time_set_base(TIMER_VIRT_BASE);
 +
 +      /*
 +       * Some Orion5x devices allocate their coherent buffers from atomic
 +       * context. Increase size of atomic coherent pool to make sure such
 +       * the allocations won't fail.
 +       */
 +      init_dma_coherent_pool_size(SZ_1M);
  }
  
  int orion5x_tclk;
  #include <linux/amba/mmci.h>
  #include <linux/amba/pl022.h>
  #include <linux/io.h>
 +#include <linux/platform_data/clk-realview.h>
  
  #include <mach/hardware.h>
  #include <asm/irq.h>
  #include <asm/leds.h>
  #include <asm/mach-types.h>
- #include <asm/pmu.h>
  #include <asm/pgtable.h>
  #include <asm/hardware/gic.h>
  #include <asm/hardware/cache-l2x0.h>
@@@ -298,7 -296,7 +297,7 @@@ static struct resource pmu_resources[] 
  
  static struct platform_device pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = ARRAY_SIZE(pmu_resources),
        .resource               = pmu_resources,
  };
@@@ -415,7 -413,6 +414,7 @@@ static void __init realview_eb_timer_in
        else
                timer_irq = IRQ_EB_TIMER0_1;
  
 +      realview_clk_init(__io_address(REALVIEW_SYS_BASE), false);
        realview_timer_init(timer_irq);
        realview_eb_twd_init();
  }
  #include <linux/mtd/physmap.h>
  #include <linux/mtd/partitions.h>
  #include <linux/io.h>
 +#include <linux/platform_data/clk-realview.h>
  
  #include <mach/hardware.h>
  #include <asm/irq.h>
  #include <asm/leds.h>
  #include <asm/mach-types.h>
- #include <asm/pmu.h>
  #include <asm/pgtable.h>
  #include <asm/hardware/gic.h>
  #include <asm/hardware/cache-l2x0.h>
@@@ -281,7 -279,7 +280,7 @@@ static struct resource pmu_resource = 
  
  static struct platform_device pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = 1,
        .resource               = &pmu_resource,
  };
@@@ -327,7 -325,6 +326,7 @@@ static void __init realview_pb1176_time
        timer2_va_base = __io_address(REALVIEW_PB1176_TIMER2_3_BASE);
        timer3_va_base = __io_address(REALVIEW_PB1176_TIMER2_3_BASE) + 0x20;
  
 +      realview_clk_init(__io_address(REALVIEW_SYS_BASE), true);
        realview_timer_init(IRQ_DC1176_TIMER0);
  }
  
  #include <linux/amba/mmci.h>
  #include <linux/amba/pl022.h>
  #include <linux/io.h>
 +#include <linux/platform_data/clk-realview.h>
  
  #include <mach/hardware.h>
  #include <asm/irq.h>
  #include <asm/leds.h>
  #include <asm/mach-types.h>
- #include <asm/pmu.h>
  #include <asm/pgtable.h>
  #include <asm/hardware/gic.h>
  #include <asm/hardware/cache-l2x0.h>
@@@ -264,7 -262,7 +263,7 @@@ static struct resource pmu_resources[] 
  
  static struct platform_device pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = ARRAY_SIZE(pmu_resources),
        .resource               = pmu_resources,
  };
@@@ -313,7 -311,6 +312,7 @@@ static void __init realview_pb11mp_time
        timer2_va_base = __io_address(REALVIEW_PB11MP_TIMER2_3_BASE);
        timer3_va_base = __io_address(REALVIEW_PB11MP_TIMER2_3_BASE) + 0x20;
  
 +      realview_clk_init(__io_address(REALVIEW_SYS_BASE), false);
        realview_timer_init(IRQ_TC11MP_TIMER0_1);
        realview_pb11mp_twd_init();
  }
  #include <linux/amba/mmci.h>
  #include <linux/amba/pl022.h>
  #include <linux/io.h>
 +#include <linux/platform_data/clk-realview.h>
  
  #include <asm/irq.h>
  #include <asm/leds.h>
  #include <asm/mach-types.h>
- #include <asm/pmu.h>
  #include <asm/pgtable.h>
  #include <asm/hardware/gic.h>
  
@@@ -242,7 -240,7 +241,7 @@@ static struct resource pmu_resource = 
  
  static struct platform_device pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = 1,
        .resource               = &pmu_resource,
  };
@@@ -262,7 -260,6 +261,7 @@@ static void __init realview_pba8_timer_
        timer2_va_base = __io_address(REALVIEW_PBA8_TIMER2_3_BASE);
        timer3_va_base = __io_address(REALVIEW_PBA8_TIMER2_3_BASE) + 0x20;
  
 +      realview_clk_init(__io_address(REALVIEW_SYS_BASE), false);
        realview_timer_init(IRQ_PBA8_TIMER0_1);
  }
  
  #include <linux/amba/mmci.h>
  #include <linux/amba/pl022.h>
  #include <linux/io.h>
 +#include <linux/platform_data/clk-realview.h>
  
  #include <asm/irq.h>
  #include <asm/leds.h>
  #include <asm/mach-types.h>
- #include <asm/pmu.h>
  #include <asm/smp_twd.h>
  #include <asm/pgtable.h>
  #include <asm/hardware/gic.h>
@@@ -281,7 -279,7 +280,7 @@@ static struct resource pmu_resources[] 
  
  static struct platform_device pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = ARRAY_SIZE(pmu_resources),
        .resource               = pmu_resources,
  };
@@@ -321,7 -319,6 +320,7 @@@ static void __init realview_pbx_timer_i
        timer2_va_base = __io_address(REALVIEW_PBX_TIMER2_3_BASE);
        timer3_va_base = __io_address(REALVIEW_PBX_TIMER2_3_BASE) + 0x20;
  
 +      realview_clk_init(__io_address(REALVIEW_SYS_BASE), false);
        realview_timer_init(IRQ_PBX_TIMER0_1);
        realview_pbx_twd_init();
  }
@@@ -133,8 -133,8 +133,8 @@@ static struct platform_device usb_host_
  
  /* USB Func CN17 */
  struct usbhs_private {
-       unsigned int phy;
-       unsigned int cr2;
+       void __iomem *phy;
+       void __iomem *cr2;
        struct renesas_usbhs_platform_info info;
  };
  
@@@ -232,8 -232,8 +232,8 @@@ static u32 usbhs_pipe_cfg[] = 
  };
  
  static struct usbhs_private usbhs_private = {
-       .phy    = 0xe60781e0,           /* USBPHYINT */
-       .cr2    = 0xe605810c,           /* USBCR2 */
+       .phy    = IOMEM(0xe60781e0),            /* USBPHYINT */
+       .cr2    = IOMEM(0xe605810c),            /* USBCR2 */
        .info = {
                .platform_callback = {
                        .hardware_init  = usbhs_hardware_init,
@@@ -346,11 -346,11 +346,11 @@@ static struct resource sh_mmcif_resourc
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = gic_spi(141),
 +              .start  = gic_spi(140),
                .flags  = IORESOURCE_IRQ,
        },
        [2] = {
 -              .start  = gic_spi(140),
 +              .start  = gic_spi(141),
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -18,20 -18,13 +18,12 @@@ obj-$(CONFIG_ARCH_TEGRA_3x_SOC)            += teg
  obj-$(CONFIG_SMP)                     += platsmp.o headsmp.o
  obj-$(CONFIG_SMP)                       += reset.o
  obj-$(CONFIG_HOTPLUG_CPU)               += hotplug.o
- obj-$(CONFIG_TEGRA_SYSTEM_DMA)                += dma.o
  obj-$(CONFIG_CPU_FREQ)                  += cpu-tegra.o
  obj-$(CONFIG_TEGRA_PCI)                       += pcie.o
 -obj-$(CONFIG_USB_SUPPORT)             += usb_phy.o
  
  obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += board-dt-tegra20.o
  obj-$(CONFIG_ARCH_TEGRA_3x_SOC)               += board-dt-tegra30.o
  
- obj-$(CONFIG_MACH_HARMONY)              += board-harmony.o
- obj-$(CONFIG_MACH_HARMONY)              += board-harmony-pinmux.o
- obj-$(CONFIG_MACH_HARMONY)              += board-harmony-pcie.o
- obj-$(CONFIG_MACH_HARMONY)              += board-harmony-power.o
+ obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += board-harmony-pcie.o
  
- obj-$(CONFIG_MACH_PAZ00)              += board-paz00.o
- obj-$(CONFIG_MACH_PAZ00)              += board-paz00-pinmux.o
- obj-$(CONFIG_MACH_TRIMSLICE)            += board-trimslice.o
- obj-$(CONFIG_MACH_TRIMSLICE)            += board-trimslice-pinmux.o
+ obj-$(CONFIG_ARCH_TEGRA_2x_SOC)               += board-paz00.o
  #include <linux/fsl_devices.h>
  #include <linux/serial_8250.h>
  #include <linux/i2c-tegra.h>
- #include <asm/pmu.h>
  #include <mach/irqs.h>
  #include <mach/iomap.h>
  #include <mach/dma.h>
 -#include <mach/usb_phy.h>
 +#include <linux/usb/tegra_usb_phy.h>
  
  #include "gpio-names.h"
  #include "devices.h"
@@@ -516,7 -515,7 +515,7 @@@ static struct resource tegra_pmu_resour
  
  struct platform_device tegra_pmu_device = {
        .name           = "arm-pmu",
-       .id             = ARM_PMU_DEVICE_CPU,
+       .id             = -1,
        .num_resources  = ARRAY_SIZE(tegra_pmu_resources),
        .resource       = tegra_pmu_resources,
  };
@@@ -171,8 -171,6 +171,6 @@@ static void __iomem *reg_pmc_base = IO_
   * 0x90000000 - 0x9fffffff - non-prefetchable memory
   * 0xa0000000 - 0xbfffffff - prefetchable memory
   */
- #define TEGRA_PCIE_BASE               0x80000000
  #define PCIE_REGS_SZ          SZ_16K
  #define PCIE_CFG_OFF          PCIE_REGS_SZ
  #define PCIE_CFG_SZ           SZ_1M
  #define PCIE_EXT_CFG_SZ               SZ_1M
  #define PCIE_IOMAP_SZ         (PCIE_REGS_SZ + PCIE_CFG_SZ + PCIE_EXT_CFG_SZ)
  
- #define MMIO_BASE             (TEGRA_PCIE_BASE + SZ_4M)
- #define MMIO_SIZE             SZ_64K
  #define MEM_BASE_0            (TEGRA_PCIE_BASE + SZ_256M)
  #define MEM_SIZE_0            SZ_128M
  #define MEM_BASE_1            (MEM_BASE_0 + MEM_SIZE_0)
@@@ -204,10 -200,9 +200,9 @@@ struct tegra_pcie_port 
  
        bool                    link_up;
  
-       char                    io_space_name[16];
        char                    mem_space_name[16];
        char                    prefetch_space_name[20];
-       struct resource         res[3];
+       struct resource         res[2];
  };
  
  struct tegra_pcie_info {
        struct clk              *pll_e;
  };
  
- static struct tegra_pcie_info tegra_pcie = {
-       .res_mmio = {
-               .name = "PCI IO",
-               .start = MMIO_BASE,
-               .end = MMIO_BASE + MMIO_SIZE - 1,
-               .flags = IORESOURCE_MEM,
-       },
- };
- void __iomem *tegra_pcie_io_base;
- EXPORT_SYMBOL(tegra_pcie_io_base);
+ static struct tegra_pcie_info tegra_pcie;
  
  static inline void afi_writel(u32 value, unsigned long offset)
  {
@@@ -367,7 -352,17 +352,7 @@@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_N
  /* Tegra PCIE requires relaxed ordering */
  static void __devinit tegra_pcie_relax_enable(struct pci_dev *dev)
  {
 -      u16 val16;
 -      int pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
 -
 -      if (pos <= 0) {
 -              dev_err(&dev->dev, "skipping relaxed ordering fixup\n");
 -              return;
 -      }
 -
 -      pci_read_config_word(dev, pos + PCI_EXP_DEVCTL, &val16);
 -      val16 |= PCI_EXP_DEVCTL_RELAX_EN;
 -      pci_write_config_word(dev, pos + PCI_EXP_DEVCTL, val16);
 +      pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN);
  }
  DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, tegra_pcie_relax_enable);
  
@@@ -381,24 -376,7 +366,7 @@@ static int tegra_pcie_setup(int nr, str
        pp = tegra_pcie.port + nr;
        pp->root_bus_nr = sys->busnr;
  
-       /*
-        * IORESOURCE_IO
-        */
-       snprintf(pp->io_space_name, sizeof(pp->io_space_name),
-                "PCIe %d I/O", pp->index);
-       pp->io_space_name[sizeof(pp->io_space_name) - 1] = 0;
-       pp->res[0].name = pp->io_space_name;
-       if (pp->index == 0) {
-               pp->res[0].start = PCIBIOS_MIN_IO;
-               pp->res[0].end = pp->res[0].start + SZ_32K - 1;
-       } else {
-               pp->res[0].start = PCIBIOS_MIN_IO + SZ_32K;
-               pp->res[0].end = IO_SPACE_LIMIT;
-       }
-       pp->res[0].flags = IORESOURCE_IO;
-       if (request_resource(&ioport_resource, &pp->res[0]))
-               panic("Request PCIe IO resource failed\n");
-       pci_add_resource_offset(&sys->resources, &pp->res[0], sys->io_offset);
+       pci_ioremap_io(nr * SZ_64K, TEGRA_PCIE_IO_BASE);
  
        /*
         * IORESOURCE_MEM
        snprintf(pp->mem_space_name, sizeof(pp->mem_space_name),
                 "PCIe %d MEM", pp->index);
        pp->mem_space_name[sizeof(pp->mem_space_name) - 1] = 0;
-       pp->res[1].name = pp->mem_space_name;
+       pp->res[0].name = pp->mem_space_name;
        if (pp->index == 0) {
-               pp->res[1].start = MEM_BASE_0;
-               pp->res[1].end = pp->res[1].start + MEM_SIZE_0 - 1;
+               pp->res[0].start = MEM_BASE_0;
+               pp->res[0].end = pp->res[0].start + MEM_SIZE_0 - 1;
        } else {
-               pp->res[1].start = MEM_BASE_1;
-               pp->res[1].end = pp->res[1].start + MEM_SIZE_1 - 1;
+               pp->res[0].start = MEM_BASE_1;
+               pp->res[0].end = pp->res[0].start + MEM_SIZE_1 - 1;
        }
-       pp->res[1].flags = IORESOURCE_MEM;
-       if (request_resource(&iomem_resource, &pp->res[1]))
+       pp->res[0].flags = IORESOURCE_MEM;
+       if (request_resource(&iomem_resource, &pp->res[0]))
                panic("Request PCIe Memory resource failed\n");
-       pci_add_resource_offset(&sys->resources, &pp->res[1], sys->mem_offset);
+       pci_add_resource_offset(&sys->resources, &pp->res[0], sys->mem_offset);
  
        /*
         * IORESOURCE_MEM | IORESOURCE_PREFETCH
        snprintf(pp->prefetch_space_name, sizeof(pp->prefetch_space_name),
                 "PCIe %d PREFETCH MEM", pp->index);
        pp->prefetch_space_name[sizeof(pp->prefetch_space_name) - 1] = 0;
-       pp->res[2].name = pp->prefetch_space_name;
+       pp->res[1].name = pp->prefetch_space_name;
        if (pp->index == 0) {
-               pp->res[2].start = PREFETCH_MEM_BASE_0;
-               pp->res[2].end = pp->res[2].start + PREFETCH_MEM_SIZE_0 - 1;
+               pp->res[1].start = PREFETCH_MEM_BASE_0;
+               pp->res[1].end = pp->res[1].start + PREFETCH_MEM_SIZE_0 - 1;
        } else {
-               pp->res[2].start = PREFETCH_MEM_BASE_1;
-               pp->res[2].end = pp->res[2].start + PREFETCH_MEM_SIZE_1 - 1;
+               pp->res[1].start = PREFETCH_MEM_BASE_1;
+               pp->res[1].end = pp->res[1].start + PREFETCH_MEM_SIZE_1 - 1;
        }
-       pp->res[2].flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
-       if (request_resource(&iomem_resource, &pp->res[2]))
+       pp->res[1].flags = IORESOURCE_MEM | IORESOURCE_PREFETCH;
+       if (request_resource(&iomem_resource, &pp->res[1]))
                panic("Request PCIe Prefetch Memory resource failed\n");
-       pci_add_resource_offset(&sys->resources, &pp->res[2], sys->mem_offset);
+       pci_add_resource_offset(&sys->resources, &pp->res[1], sys->mem_offset);
  
        return 1;
  }
@@@ -531,8 -509,8 +499,8 @@@ static void tegra_pcie_setup_translatio
  
        /* Bar 2: downstream IO bar */
        fpci_bar = ((__u32)0xfdfc << 16);
-       size = MMIO_SIZE;
-       axi_address = MMIO_BASE;
+       size = SZ_128K;
+       axi_address = TEGRA_PCIE_IO_BASE;
        afi_writel(axi_address, AFI_AXI_BAR2_START);
        afi_writel(size >> 12, AFI_AXI_BAR2_SZ);
        afi_writel(fpci_bar, AFI_FPCI_BAR2);
@@@ -766,7 -744,6 +734,6 @@@ static void tegra_pcie_clocks_put(void
  
  static int __init tegra_pcie_get_resources(void)
  {
-       struct resource *res_mmio = &tegra_pcie.res_mmio;
        int err;
  
        err = tegra_pcie_clocks_get();
                goto err_map_reg;
        }
  
-       err = request_resource(&iomem_resource, res_mmio);
-       if (err) {
-               pr_err("PCIE: Failed to request resources: %d\n", err);
-               goto err_req_io;
-       }
-       tegra_pcie_io_base = ioremap_nocache(res_mmio->start,
-                                            resource_size(res_mmio));
-       if (tegra_pcie_io_base == NULL) {
-               pr_err("PCIE: Failed to map IO\n");
-               err = -ENOMEM;
-               goto err_map_io;
-       }
        err = request_irq(INT_PCIE_INTR, tegra_pcie_isr,
                          IRQF_SHARED, "PCIE", &tegra_pcie);
        if (err) {
                pr_err("PCIE: Failed to register IRQ: %d\n", err);
-               goto err_irq;
+               goto err_req_io;
        }
        set_irq_flags(INT_PCIE_INTR, IRQF_VALID);
  
        return 0;
  
- err_irq:
-       iounmap(tegra_pcie_io_base);
- err_map_io:
-       release_resource(&tegra_pcie.res_mmio);
  err_req_io:
        iounmap(tegra_pcie.regs);
  err_map_reg:
@@@ -18,9 -18,7 +18,8 @@@
  #include <linux/io.h>
  #include <linux/mfd/abx500/ab8500.h>
  
 +#include <asm/pmu.h>
  #include <asm/mach/map.h>
- #include <asm/pmu.h>
  #include <plat/gpio-nomadik.h>
  #include <mach/hardware.h>
  #include <mach/setup.h>
@@@ -123,7 -121,7 +122,7 @@@ struct arm_pmu_platdata db8500_pmu_plat
  
  static struct platform_device db8500_pmu_device = {
        .name                   = "arm-pmu",
-       .id                     = ARM_PMU_DEVICE_CPU,
+       .id                     = -1,
        .num_resources          = ARRAY_SIZE(db8500_pmu_resources),
        .resource               = db8500_pmu_resources,
        .dev.platform_data      = &db8500_pmu_platdata,
@@@ -35,7 -35,6 +35,6 @@@
  #include <media/s5p_hdmi.h>
  
  #include <asm/irq.h>
- #include <asm/pmu.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/map.h>
  #include <asm/mach/irq.h>
@@@ -1132,7 -1131,7 +1131,7 @@@ static struct resource s5p_pmu_resource
  
  static struct platform_device s5p_device_pmu = {
        .name           = "arm-pmu",
-       .id             = ARM_PMU_DEVICE_CPU,
+       .id             = -1,
        .num_resources  = ARRAY_SIZE(s5p_pmu_resource),
        .resource       = s5p_pmu_resource,
  };
@@@ -1591,8 -1590,6 +1590,8 @@@ struct platform_device s3c64xx_device_s
  void __init s3c64xx_spi1_set_platdata(int (*cfg_gpio)(void), int src_clk_nr,
                                                int num_cs)
  {
 +      struct s3c64xx_spi_info pd;
 +
        /* Reject invalid configuration */
        if (!num_cs || src_clk_nr < 0) {
                pr_err("%s: Invalid SPI configuration\n", __func__);
diff --combined drivers/gpio/gpio-omap.c
  #include <linux/of.h>
  #include <linux/of_device.h>
  #include <linux/irqdomain.h>
+ #include <linux/gpio.h>
+ #include <linux/platform_data/gpio-omap.h>
  
- #include <mach/hardware.h>
- #include <asm/irq.h>
- #include <mach/irqs.h>
- #include <asm/gpio.h>
  #include <asm/mach/irq.h>
  
  #define OFF_MODE      1
@@@ -385,13 -383,16 +383,16 @@@ static int _set_gpio_triggering(struct 
  static int gpio_irq_type(struct irq_data *d, unsigned type)
  {
        struct gpio_bank *bank = irq_data_get_irq_chip_data(d);
-       unsigned gpio;
+       unsigned gpio = 0;
        int retval;
        unsigned long flags;
  
-       if (!cpu_class_is_omap2() && d->irq > IH_MPUIO_BASE)
+ #ifdef CONFIG_ARCH_OMAP1
+       if (d->irq > IH_MPUIO_BASE)
                gpio = OMAP_MPUIO(d->irq - IH_MPUIO_BASE);
-       else
+ #endif
+       if (!gpio)
                gpio = irq_to_gpio(bank, d->irq);
  
        if (type & ~IRQ_TYPE_SENSE_MASK)
@@@ -1058,7 -1059,7 +1059,7 @@@ static int __devinit omap_gpio_probe(st
        struct device *dev = &pdev->dev;
        struct device_node *node = dev->of_node;
        const struct of_device_id *match;
 -      struct omap_gpio_platform_data *pdata;
 +      const struct omap_gpio_platform_data *pdata;
        struct resource *res;
        struct gpio_bank *bank;
        int ret = 0;
@@@ -1440,19 -1441,19 +1441,19 @@@ static struct omap_gpio_reg_offs omap4_
        .fallingdetect =        OMAP4_GPIO_FALLINGDETECT,
  };
  
 -static struct omap_gpio_platform_data omap2_pdata = {
 +const static struct omap_gpio_platform_data omap2_pdata = {
        .regs = &omap2_gpio_regs,
        .bank_width = 32,
        .dbck_flag = false,
  };
  
 -static struct omap_gpio_platform_data omap3_pdata = {
 +const static struct omap_gpio_platform_data omap3_pdata = {
        .regs = &omap2_gpio_regs,
        .bank_width = 32,
        .dbck_flag = true,
  };
  
 -static struct omap_gpio_platform_data omap4_pdata = {
 +const static struct omap_gpio_platform_data omap4_pdata = {
        .regs = &omap4_gpio_regs,
        .bank_width = 32,
        .dbck_flag = true,
@@@ -40,7 -40,6 +40,6 @@@
  #include <linux/regulator/consumer.h>
  #include <linux/pm_runtime.h>
  #include <mach/hardware.h>
- #include <plat/board.h>
  #include <plat/mmc.h>
  #include <plat/cpu.h>
  
@@@ -447,7 -446,7 +446,7 @@@ static void omap_hsmmc_stop_clock(struc
        OMAP_HSMMC_WRITE(host->base, SYSCTL,
                OMAP_HSMMC_READ(host->base, SYSCTL) & ~CEN);
        if ((OMAP_HSMMC_READ(host->base, SYSCTL) & CEN) != 0x0)
 -              dev_dbg(mmc_dev(host->mmc), "MMC Clock is not stoped\n");
 +              dev_dbg(mmc_dev(host->mmc), "MMC Clock is not stopped\n");
  }
  
  static void omap_hsmmc_enable_irq(struct omap_hsmmc_host *host,
@@@ -1782,7 -1781,7 +1781,7 @@@ static int __devinit omap_hsmmc_probe(s
        if (match) {
                pdata = of_get_hsmmc_pdata(&pdev->dev);
                if (match->data) {
 -                      u16 *offsetp = match->data;
 +                      const u16 *offsetp = match->data;
                        pdata->reg_offset = *offsetp;
                }
        }
@@@ -42,7 -42,7 +42,7 @@@
  #include <linux/spi/spi.h>
  
  #include <plat/clock.h>
- #include <plat/mcspi.h>
+ #include <linux/platform_data/spi-omap2-mcspi.h>
  
  #define OMAP2_MCSPI_MAX_FREQ          48000000
  #define SPI_AUTOSUSPEND_TIMEOUT               2000
@@@ -1116,7 -1116,7 +1116,7 @@@ MODULE_DEVICE_TABLE(of, omap_mcspi_of_m
  static int __devinit omap2_mcspi_probe(struct platform_device *pdev)
  {
        struct spi_master       *master;
 -      struct omap2_mcspi_platform_config *pdata;
 +      const struct omap2_mcspi_platform_config *pdata;
        struct omap2_mcspi      *mcspi;
        struct resource         *r;
        int                     status = 0, i;
   * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   */
  
 +#define L4_34XX_BASE          0x48000000
 +
  #include <linux/types.h>
  
  /*  ----------------------------------- Host OS */
  #include <dspbridge/host_os.h>
  #include <plat/dmtimer.h>
- #include <plat/mcbsp.h>
+ #include <linux/platform_data/asoc-ti-mcbsp.h>
  
  /*  ----------------------------------- DSP/BIOS Bridge */
  #include <dspbridge/dbdefs.h>
@@@ -16,7 -16,7 +16,7 @@@
   * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   */
  
- #include <plat/dsp.h>
+ #include <linux/platform_data/dsp-omap.h>
  
  #include <linux/types.h>
  /*  ----------------------------------- Host OS */
@@@ -328,7 -328,7 +328,7 @@@ static int bridge_brd_read(struct bridg
                                           ul_num_bytes, mem_type);
                return status;
        }
 -      /* copy the data from  DSP memory, */
 +      /* copy the data from DSP memory */
        memcpy(host_buff, (void *)(dsp_base_addr + offset), ul_num_bytes);
        return status;
  }
@@@ -415,10 -415,10 +415,10 @@@ static int bridge_brd_start(struct brid
                /* Assert RST1 i.e only the RST only for DSP megacell */
                if (!status) {
                        /*
 -                       * XXX: ioremapping  MUST be removed once ctrl
 +                       * XXX: OMAP343X_CTRL_BASE ioremapping  MUST be removed once ctrl
                         * function is made available.
                         */
 -                      void __iomem *ctrl = ioremap(OMAP343X_CTRL_BASE, SZ_4K);
 +                      void __iomem *ctrl = ioremap(0x48002000, SZ_4K);
                        if (!ctrl)
                                return -ENOMEM;
  
@@@ -1745,7 -1745,7 +1745,7 @@@ static int mem_map_vmalloc(struct bridg
        pa_next = page_to_phys(page[0]);
        while (!status && (i < num_pages)) {
                /*
 -               * Reuse pa_next from the previous iteraion to avoid
 +               * Reuse pa_next from the previous iteration to avoid
                 * an extra va2pa call
                 */
                pa_curr = pa_next;
@@@ -19,7 -19,7 +19,7 @@@
  /*  ----------------------------------- Host OS */
  #include <dspbridge/host_os.h>
  
- #include <plat/dsp.h>
+ #include <linux/platform_data/dsp-omap.h>
  
  /*  ----------------------------------- DSP/BIOS Bridge */
  #include <dspbridge/dbdefs.h>
@@@ -356,7 -356,7 +356,7 @@@ int pre_scale_dsp(struct bridge_dev_con
                dev_dbg(bridge, "OPP: %s IVA in sleep. No message to DSP\n");
                return 0;
        } else if ((dev_context->brd_state == BRD_RUNNING)) {
 -              /* Send a prenotificatio to DSP */
 +              /* Send a prenotification to DSP */
                dev_dbg(bridge, "OPP: %s sent notification to DSP\n", __func__);
                sm_interrupt_dsp(dev_context, MBX_PM_SETPOINT_PRENOTIFY);
                return 0;
@@@ -25,8 -25,7 +25,8 @@@
  #include <dspbridge/host_os.h>
  
  
- #define INT_34XX_WDT3_IRQ             36
 +#define OMAP34XX_WDT3_BASE            (0x49000000 + 0x30000)
+ #define INT_34XX_WDT3_IRQ             (36 + NR_IRQS)
  
  static struct dsp_wdt_setting dsp_wdt;
  
@@@ -62,9 -61,9 +62,9 @@@ int dsp_wdt_init(void
  
        dsp_wdt.fclk = clk_get(NULL, "wdt3_fck");
  
 -      if (dsp_wdt.fclk) {
 +      if (!IS_ERR(dsp_wdt.fclk)) {
                dsp_wdt.iclk = clk_get(NULL, "wdt3_ick");
 -              if (!dsp_wdt.iclk) {
 +              if (IS_ERR(dsp_wdt.iclk)) {
                        clk_put(dsp_wdt.fclk);
                        dsp_wdt.fclk = NULL;
                        ret = -EFAULT;
@@@ -16,7 -16,7 +16,7 @@@
   * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   */
  
- #include <plat/dsp.h>
+ #include <linux/platform_data/dsp-omap.h>
  
  #include <linux/types.h>
  #include <linux/platform_device.h>
@@@ -613,6 -613,16 +613,6 @@@ static struct platform_driver bridge_dr
  #endif
  };
  
 -static int __init bridge_init(void)
 -{
 -      return platform_driver_register(&bridge_driver);
 -}
 -
 -static void __exit bridge_exit(void)
 -{
 -      platform_driver_unregister(&bridge_driver);
 -}
 -
  /* To remove all process resources before removing the process from the
   * process context list */
  int drv_remove_all_resources(void *process_ctxt)
        return status;
  }
  
 -/* Bridge driver initialization and de-initialization functions */
 -module_init(bridge_init);
 -module_exit(bridge_exit);
 +module_platform_driver(bridge_driver);
diff --combined drivers/usb/Kconfig
@@@ -13,7 -13,6 +13,6 @@@ config USB_ARCH_HAS_OHC
        default y if PXA3xx
        default y if ARCH_EP93XX
        default y if ARCH_AT91
-       default y if ARCH_PNX4008
        default y if MFD_TC6393XB
        default y if ARCH_W90X900
        default y if ARCH_DAVINCI_DA8XX
@@@ -48,7 -47,6 +47,7 @@@ config USB_ARCH_HAS_EHC
        default y if SPARC_LEON
        default y if ARCH_MMP
        default y if MACH_LOONGSON1
 +      default y if PLAT_ORION
        default PCI
  
  # some non-PCI HCDs implement xHCI
diff --combined drivers/usb/host/Kconfig
@@@ -18,8 -18,8 +18,8 @@@ config USB_C67X00_HC
          module will be called c67x00.
  
  config USB_XHCI_HCD
 -      tristate "xHCI HCD (USB 3.0) support (EXPERIMENTAL)"
 -      depends on USB && USB_ARCH_HAS_XHCI && EXPERIMENTAL
 +      tristate "xHCI HCD (USB 3.0) support"
 +      depends on USB && USB_ARCH_HAS_XHCI
        ---help---
          The eXtensible Host Controller Interface (xHCI) is standard for USB 3.0
          "SuperSpeed" host controller hardware.
@@@ -262,7 -262,7 +262,7 @@@ config USB_ISP116X_HC
  
  config USB_ISP1760_HCD
        tristate "ISP 1760 HCD support"
 -      depends on USB && EXPERIMENTAL
 +      depends on USB
        ---help---
          The ISP1760 chip is a USB 2.0 host controller.
  
@@@ -292,7 -292,7 +292,7 @@@ config USB_OHCI_HC
        depends on USB && USB_ARCH_HAS_OHCI
        select ISP1301_OMAP if MACH_OMAP_H2 || MACH_OMAP_H3
        select USB_OTG_UTILS if ARCH_OMAP
-       depends on USB_ISP1301 || !(ARCH_LPC32XX || ARCH_PNX4008)
 -      select USB_ISP1301 if ARCH_LPC32XX
++      depends on USB_ISP1301 || !ARCH_LPC32XX
        ---help---
          The Open Host Controller Interface (OHCI) is a standard for accessing
          USB 1.1 host controller hardware.  It does more in hardware than Intel's
@@@ -376,7 -376,7 +376,7 @@@ config USB_OHCI_HCD_PC
  
  config USB_OHCI_HCD_SSB
        bool "OHCI support for Broadcom SSB OHCI core (DEPRECATED)"
 -      depends on USB_OHCI_HCD && (SSB = y || SSB = USB_OHCI_HCD) && EXPERIMENTAL
 +      depends on USB_OHCI_HCD && (SSB = y || SSB = USB_OHCI_HCD)
        select USB_HCD_SSB
        select USB_OHCI_HCD_PLATFORM
        default n
@@@ -414,21 -414,21 +414,21 @@@ config USB_CNS3XXX_OHC
  
  config USB_OHCI_HCD_PLATFORM
        bool "Generic OHCI driver for a platform device"
 -      depends on USB_OHCI_HCD && EXPERIMENTAL
 +      depends on USB_OHCI_HCD
        default n
        ---help---
          Adds an OHCI host driver for a generic platform device, which
 -        provieds a memory space and an irq.
 +        provides a memory space and an irq.
  
          If unsure, say N.
  
  config USB_EHCI_HCD_PLATFORM
        bool "Generic EHCI driver for a platform device"
 -      depends on USB_EHCI_HCD && EXPERIMENTAL
 +      depends on USB_EHCI_HCD
        default n
        ---help---
          Adds an EHCI host driver for a generic platform device, which
 -        provieds a memory space and an irq.
 +        provides a memory space and an irq.
  
          If unsure, say N.
  
@@@ -450,7 -450,7 +450,7 @@@ config USB_OHCI_LITTLE_ENDIA
  
  config USB_UHCI_HCD
        tristate "UHCI HCD (most Intel and VIA) support"
 -      depends on USB && (PCI || SPARC_LEON)
 +      depends on USB && (PCI || SPARC_LEON || ARCH_VT8500)
        ---help---
          The Universal Host Controller Interface is a standard by Intel for
          accessing the USB hardware in the PC (which is also called the USB
  config USB_UHCI_SUPPORT_NON_PCI_HC
        bool
        depends on USB_UHCI_HCD
 -      default y if SPARC_LEON
 +      default y if (SPARC_LEON || ARCH_VT8500)
 +
 +config USB_UHCI_PLATFORM
 +      bool "Generic UHCI Platform Driver support"
 +      depends on USB_UHCI_SUPPORT_NON_PCI_HC
 +      default y if ARCH_VT8500
 +      ---help---
 +        Enable support for generic UHCI platform devices that require no
 +        additional configuration.
  
  config USB_UHCI_BIG_ENDIAN_MMIO
        bool
@@@ -591,7 -583,8 +591,7 @@@ config USB_RENESAS_USBHS_HC
          module will be called renesas-usbhs.
  
  config USB_WHCI_HCD
 -      tristate "Wireless USB Host Controller Interface (WHCI) driver (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
 +      tristate "Wireless USB Host Controller Interface (WHCI) driver"
        depends on PCI && USB && UWB
        select USB_WUSB
        select UWB_WHCI
          will be called "whci-hcd".
  
  config USB_HWA_HCD
 -      tristate "Host Wire Adapter (HWA) driver (EXPERIMENTAL)"
 -      depends on EXPERIMENTAL
 +      tristate "Host Wire Adapter (HWA) driver"
        depends on USB && UWB
        select USB_WUSB
        select UWB_HWA
@@@ -654,7 -648,7 +654,7 @@@ config USB_OCTEON2_COMMO
  
  config USB_HCD_BCMA
        tristate "BCMA usb host driver"
 -      depends on BCMA && EXPERIMENTAL
 +      depends on BCMA
        select USB_OHCI_HCD_PLATFORM if USB_OHCI_HCD
        select USB_EHCI_HCD_PLATFORM if USB_EHCI_HCD
        help
  
  config USB_HCD_SSB
        tristate "SSB usb host driver"
 -      depends on SSB && EXPERIMENTAL
 +      depends on SSB
        select USB_OHCI_HCD_PLATFORM if USB_OHCI_HCD
        select USB_EHCI_HCD_PLATFORM if USB_EHCI_HCD
        help
@@@ -2,7 -2,6 +2,6 @@@
   * driver for NXP USB Host devices
   *
   * Currently supported OHCI host devices:
-  * - Philips PNX4008
   * - NXP LPC32xx
   *
   * Authors: Dmitry Chigirev <source@mvista.com>
@@@ -66,38 -65,6 +65,6 @@@ static struct clk *usb_pll_clk
  static struct clk *usb_dev_clk;
  static struct clk *usb_otg_clk;
  
- static void isp1301_configure_pnx4008(void)
- {
-       /* PNX4008 only supports DAT_SE0 USB mode */
-       /* PNX4008 R2A requires setting the MAX603 to output 3.6V */
-       /* Power up externel charge-pump */
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_MODE_CONTROL_1, MC1_DAT_SE0 | MC1_SPEED_REG);
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_MODE_CONTROL_1 | ISP1301_I2C_REG_CLEAR_ADDR,
-               ~(MC1_DAT_SE0 | MC1_SPEED_REG));
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_MODE_CONTROL_2,
-               MC2_BI_DI | MC2_PSW_EN | MC2_SPD_SUSP_CTRL);
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_MODE_CONTROL_2 | ISP1301_I2C_REG_CLEAR_ADDR,
-               ~(MC2_BI_DI | MC2_PSW_EN | MC2_SPD_SUSP_CTRL));
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_OTG_CONTROL_1, OTG1_DM_PULLDOWN | OTG1_DP_PULLDOWN);
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_OTG_CONTROL_1 | ISP1301_I2C_REG_CLEAR_ADDR,
-               ~(OTG1_DM_PULLDOWN | OTG1_DP_PULLDOWN));
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_INTERRUPT_LATCH | ISP1301_I2C_REG_CLEAR_ADDR, 0xFF);
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_INTERRUPT_FALLING | ISP1301_I2C_REG_CLEAR_ADDR,
-               0xFF);
-       i2c_smbus_write_byte_data(isp1301_i2c_client,
-               ISP1301_I2C_INTERRUPT_RISING | ISP1301_I2C_REG_CLEAR_ADDR,
-               0xFF);
- }
  static void isp1301_configure_lpc32xx(void)
  {
        /* LPC32XX only supports DAT_SE0 USB mode */
  
  static void isp1301_configure(void)
  {
-       if (machine_is_pnx4008())
-               isp1301_configure_pnx4008();
-       else
-               isp1301_configure_lpc32xx();
+       isp1301_configure_lpc32xx();
  }
  
  static inline void isp1301_vbus_on(void)
@@@ -241,47 -205,6 +205,6 @@@ static const struct hc_driver ohci_nxp_
        .start_port_reset = ohci_start_port_reset,
  };
  
- static void nxp_set_usb_bits(void)
- {
-       if (machine_is_pnx4008()) {
-               start_int_set_falling_edge(SE_USB_OTG_ATX_INT_N);
-               start_int_ack(SE_USB_OTG_ATX_INT_N);
-               start_int_umask(SE_USB_OTG_ATX_INT_N);
-               start_int_set_rising_edge(SE_USB_OTG_TIMER_INT);
-               start_int_ack(SE_USB_OTG_TIMER_INT);
-               start_int_umask(SE_USB_OTG_TIMER_INT);
-               start_int_set_rising_edge(SE_USB_I2C_INT);
-               start_int_ack(SE_USB_I2C_INT);
-               start_int_umask(SE_USB_I2C_INT);
-               start_int_set_rising_edge(SE_USB_INT);
-               start_int_ack(SE_USB_INT);
-               start_int_umask(SE_USB_INT);
-               start_int_set_rising_edge(SE_USB_NEED_CLK_INT);
-               start_int_ack(SE_USB_NEED_CLK_INT);
-               start_int_umask(SE_USB_NEED_CLK_INT);
-               start_int_set_rising_edge(SE_USB_AHB_NEED_CLK_INT);
-               start_int_ack(SE_USB_AHB_NEED_CLK_INT);
-               start_int_umask(SE_USB_AHB_NEED_CLK_INT);
-       }
- }
- static void nxp_unset_usb_bits(void)
- {
-       if (machine_is_pnx4008()) {
-               start_int_mask(SE_USB_OTG_ATX_INT_N);
-               start_int_mask(SE_USB_OTG_TIMER_INT);
-               start_int_mask(SE_USB_I2C_INT);
-               start_int_mask(SE_USB_INT);
-               start_int_mask(SE_USB_NEED_CLK_INT);
-               start_int_mask(SE_USB_AHB_NEED_CLK_INT);
-       }
- }
  static int __devinit usb_hcd_nxp_probe(struct platform_device *pdev)
  {
        struct usb_hcd *hcd = 0;
        usb_otg_clk = clk_get(&pdev->dev, "ck_usb_otg");
        if (IS_ERR(usb_otg_clk)) {
                dev_err(&pdev->dev, "failed to acquire USB DEV Clock\n");
 -              ret = PTR_ERR(usb_dev_clk);
 +              ret = PTR_ERR(usb_otg_clk);
                goto out6;
        }
  
                goto out8;
        }
  
-       /* Set all USB bits in the Start Enable register */
-       nxp_set_usb_bits();
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res) {
                dev_err(&pdev->dev, "Failed to get MEM resource\n");
  
        nxp_stop_hc();
  out8:
-       nxp_unset_usb_bits();
        usb_put_hcd(hcd);
  out7:
        clk_disable(usb_otg_clk);
@@@ -441,7 -360,6 +360,6 @@@ static int usb_hcd_nxp_remove(struct pl
        nxp_stop_hc();
        release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
        usb_put_hcd(hcd);
-       nxp_unset_usb_bits();
        clk_disable(usb_pll_clk);
        clk_put(usb_pll_clk);
        clk_disable(usb_dev_clk);
@@@ -17,7 -17,6 +17,6 @@@
  #include <linux/dma-mapping.h>
  #include <linux/slab.h>
  #include <plat/dma.h>
- #include <plat/mux.h>
  
  #include "musb_core.h"
  #include "tusb6010.h"
@@@ -662,7 -661,7 +661,7 @@@ void dma_controller_destroy(struct dma_
        kfree(tusb_dma);
  }
  
 -struct dma_controller *__init
 +struct dma_controller *__devinit
  dma_controller_create(struct musb *musb, void __iomem *base)
  {
        void __iomem            *tbase = musb->ctrl_base;