Merge branches 'devel-iommu-mailbox', 'devel-mcbsp', 'devel-board' and 'devel-hsmmc...
Tony Lindgren [Thu, 3 Mar 2011 01:11:18 +0000 (17:11 -0800)]
Conflicts:
arch/arm/mach-omap2/omap_hwmod_44xx_data.c

19 files changed:
1  2  3  4  5 
arch/arm/mach-omap2/board-2430sdp.c
arch/arm/mach-omap2/board-3430sdp.c
arch/arm/mach-omap2/board-4430sdp.c
arch/arm/mach-omap2/board-devkit8000.c
arch/arm/mach-omap2/board-igep0020.c
arch/arm/mach-omap2/board-omap3evm.c
arch/arm/mach-omap2/board-omap3pandora.c
arch/arm/mach-omap2/board-omap4panda.c
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom-peripherals.c
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/mailbox.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_3xxx_data.c
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
arch/arm/mach-omap2/prcm-common.h
arch/arm/plat-omap/include/plat/omap_hwmod.h

Simple merge
Simple merge
Simple merge
Simple merge
@@@@@@ -603,8 -603,10 -603,10 -601,10 -603,8 +601,8 @@@@@@ static struct regulator_init_data omap3
     #define OMAP3EVM_WLAN_PMENA_GPIO   (150)
     #define OMAP3EVM_WLAN_IRQ_GPIO             (149)
     
 --- static struct regulator_consumer_supply omap3evm_vmmc2_supply = {
 ---    .supply                 = "vmmc",
 ---    .dev_name               = "mmci-omap-hs.1",
 --- };
 +++ static struct regulator_consumer_supply omap3evm_vmmc2_supply =
-       REGULATOR_SUPPLY("vmmc", "mmci-omap-hs.1");
++++    REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1");
     
     /* VMMC2 for driving the WL12xx module */
     static struct regulator_init_data omap3evm_vmmc2 = {
@@@@@@ -544,117 -478,117 -478,117 -544,117 -544,10 +478,10 @@@@@@ static inline void omap_init_aes(void) 
     
     /*-------------------------------------------------------------------------*/
     
---- #if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
-  - 
-  - #define MMCHS_SYSCONFIG                    0x0010
-  - #define MMCHS_SYSCONFIG_SWRESET            (1 << 1)
-  - #define MMCHS_SYSSTATUS                    0x0014
-  - #define MMCHS_SYSSTATUS_RESETDONE  (1 << 0)
++++ #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE)
     
-  - static struct platform_device dummy_pdev = {
-  -    .dev = {
-  -            .bus = &platform_bus_type,
-  -    },
-  - };
-  - 
-  - /**
-  -  * omap_hsmmc_reset() - Full reset of each HS-MMC controller
-  -  *
-  -  * Ensure that each MMC controller is fully reset.  Controllers
-  -  * left in an unknown state (by bootloader) may prevent retention
-  -  * or OFF-mode.  This is especially important in cases where the
-  -  * MMC driver is not enabled, _or_ built as a module.
-  -  *
-  -  * In order for reset to work, interface, functional and debounce
-  -  * clocks must be enabled.  The debounce clock comes from func_32k_clk
-  -  * and is not under SW control, so we only enable i- and f-clocks.
-  -  **/
-  - static void __init omap_hsmmc_reset(void)
-  - {
-  -    u32 i, nr_controllers;
-  -    struct clk *iclk, *fclk;
-  - 
-  -    if (cpu_is_omap242x())
-  -            return;
-  - 
-  -    nr_controllers = cpu_is_omap44xx() ? OMAP44XX_NR_MMC :
-  -            (cpu_is_omap34xx() ? OMAP34XX_NR_MMC : OMAP24XX_NR_MMC);
-  - 
-  -    for (i = 0; i < nr_controllers; i++) {
-  -            u32 v, base = 0;
-  -            struct device *dev = &dummy_pdev.dev;
-  - 
-  -            switch (i) {
-  -            case 0:
-  -                    base = OMAP2_MMC1_BASE;
-  -                    break;
-  -            case 1:
-  -                    base = OMAP2_MMC2_BASE;
-  -                    break;
-  -            case 2:
-  -                    base = OMAP3_MMC3_BASE;
-  -                    break;
-  -            case 3:
-  -                    if (!cpu_is_omap44xx())
-  -                            return;
-  -                    base = OMAP4_MMC4_BASE;
-  -                    break;
-  -            case 4:
-  -                    if (!cpu_is_omap44xx())
-  -                            return;
-  -                    base = OMAP4_MMC5_BASE;
-  -                    break;
-  -            }
-  - 
-  -            if (cpu_is_omap44xx())
-  -                    base += OMAP4_MMC_REG_OFFSET;
-  - 
-  -            dummy_pdev.id = i;
-  -            dev_set_name(&dummy_pdev.dev, "mmci-omap-hs.%d", i);
-  -            iclk = clk_get(dev, "ick");
-  -            if (IS_ERR(iclk))
-  -                    goto err1;
-  -            if (clk_enable(iclk))
-  -                    goto err2;
-  - 
-  -            fclk = clk_get(dev, "fck");
-  -            if (IS_ERR(fclk))
-  -                    goto err3;
-  -            if (clk_enable(fclk))
-  -                    goto err4;
-  - 
-  -            omap_writel(MMCHS_SYSCONFIG_SWRESET, base + MMCHS_SYSCONFIG);
-  -            v = omap_readl(base + MMCHS_SYSSTATUS);
-  -            while (!(omap_readl(base + MMCHS_SYSSTATUS) &
-  -                     MMCHS_SYSSTATUS_RESETDONE))
-  -                    cpu_relax();
-  - 
-  -            clk_disable(fclk);
-  -            clk_put(fclk);
-  -            clk_disable(iclk);
-  -            clk_put(iclk);
-  -    }
-  -    return;
-  - 
-  - err4:
-  -    clk_put(fclk);
-  - err3:
-  -    clk_disable(iclk);
-  - err2:
-  -    clk_put(iclk);
-  - err1:
-  -    printk(KERN_WARNING "%s: Unable to enable clocks for MMC%d, "
-  -                        "cannot reset.\n",  __func__, i);
-  - }
-  - #else
-  - static inline void omap_hsmmc_reset(void) {}
-  - #endif
-  - 
-  - #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
-  -    defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
-  - 
-  - static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
-  -                    int controller_nr)
 --  #define MMCHS_SYSCONFIG                    0x0010
 --  #define MMCHS_SYSCONFIG_SWRESET            (1 << 1)
 --  #define MMCHS_SYSSTATUS                    0x0014
 --  #define MMCHS_SYSSTATUS_RESETDONE  (1 << 0)
 --  
 --  static struct platform_device dummy_pdev = {
 --     .dev = {
 --             .bus = &platform_bus_type,
 --     },
 --  };
 --  
 --  /**
 --   * omap_hsmmc_reset() - Full reset of each HS-MMC controller
 --   *
 --   * Ensure that each MMC controller is fully reset.  Controllers
 --   * left in an unknown state (by bootloader) may prevent retention
 --   * or OFF-mode.  This is especially important in cases where the
 --   * MMC driver is not enabled, _or_ built as a module.
 --   *
 --   * In order for reset to work, interface, functional and debounce
 --   * clocks must be enabled.  The debounce clock comes from func_32k_clk
 --   * and is not under SW control, so we only enable i- and f-clocks.
 --   **/
 --  static void __init omap_hsmmc_reset(void)
 --  {
 --     u32 i, nr_controllers;
 --     struct clk *iclk, *fclk;
 --  
 --     if (cpu_is_omap242x())
 --             return;
 --  
 --     nr_controllers = cpu_is_omap44xx() ? OMAP44XX_NR_MMC :
 --             (cpu_is_omap34xx() ? OMAP34XX_NR_MMC : OMAP24XX_NR_MMC);
 --  
 --     for (i = 0; i < nr_controllers; i++) {
 --             u32 v, base = 0;
 --             struct device *dev = &dummy_pdev.dev;
 --  
 --             switch (i) {
 --             case 0:
 --                     base = OMAP2_MMC1_BASE;
 --                     break;
 --             case 1:
 --                     base = OMAP2_MMC2_BASE;
 --                     break;
 --             case 2:
 --                     base = OMAP3_MMC3_BASE;
 --                     break;
 --             case 3:
 --                     if (!cpu_is_omap44xx())
 --                             return;
 --                     base = OMAP4_MMC4_BASE;
 --                     break;
 --             case 4:
 --                     if (!cpu_is_omap44xx())
 --                             return;
 --                     base = OMAP4_MMC5_BASE;
 --                     break;
 --             }
 --  
 --             if (cpu_is_omap44xx())
 --                     base += OMAP4_MMC_REG_OFFSET;
 --  
 --             dummy_pdev.id = i;
 --             dev_set_name(&dummy_pdev.dev, "mmci-omap-hs.%d", i);
 --             iclk = clk_get(dev, "ick");
 --             if (IS_ERR(iclk))
 --                     goto err1;
 --             if (clk_enable(iclk))
 --                     goto err2;
 --  
 --             fclk = clk_get(dev, "fck");
 --             if (IS_ERR(fclk))
 --                     goto err3;
 --             if (clk_enable(fclk))
 --                     goto err4;
 --  
 --             omap_writel(MMCHS_SYSCONFIG_SWRESET, base + MMCHS_SYSCONFIG);
 --             v = omap_readl(base + MMCHS_SYSSTATUS);
 --             while (!(omap_readl(base + MMCHS_SYSSTATUS) &
 --                      MMCHS_SYSSTATUS_RESETDONE))
 --                     cpu_relax();
 --  
 --             clk_disable(fclk);
 --             clk_put(fclk);
 --             clk_disable(iclk);
 --             clk_put(iclk);
 --     }
 --     return;
 --  
 --  err4:
 --     clk_put(fclk);
 --  err3:
 --     clk_disable(iclk);
 --  err2:
 --     clk_put(iclk);
 --  err1:
 --     printk(KERN_WARNING "%s: Unable to enable clocks for MMC%d, "
 --                         "cannot reset.\n",  __func__, i);
 --  }
 --  #else
 --  static inline void omap_hsmmc_reset(void) {}
 --  #endif
 --  
 --  #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \
 --     defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
 --  
 --  static inline void omap2_mmc_mux(struct omap_mmc_platform_data *mmc_controller,
 --                     int controller_nr)
++++ static inline void omap242x_mmc_mux(struct omap_mmc_platform_data
++++                                                    *mmc_controller)
     {
        if ((mmc_controller->slots[0].switch_pin > 0) && \
                (mmc_controller->slots[0].switch_pin < OMAP_MAX_GPIO_LINES))
Simple merge
Simple merge
@@@@@@ -1982,6 -1418,9 -1543,13 -1348,6 -1982,6 +2177,13 @@@@@@ static __initdata struct omap_hwmod *om
        /* 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,
     #include <plat/serial.h>
     #include <plat/i2c.h>
     #include <plat/gpio.h>
++ ++#include <plat/mcbsp.h>
     #include <plat/mcspi.h>
 +++ #include <plat/dmtimer.h>
++++ #include <plat/mmc.h>
     #include <plat/l3_2xxx.h>
     
     #include "omap_hwmod_common_data.h"
@@@@@@ -2125,8 -1575,8 -1581,315 -1506,8 -2166,119 +2241,426 @@@@@@ static struct omap_hwmod omap2430_usbhs
        .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
     };
     
++ ++/*
++ ++ * '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 },
++ ++};
++ ++
++ ++static struct omap_hwmod_dma_info omap2430_mcbsp1_sdma_chs[] = {
++ ++   { .name = "rx", .dma_req = 32 },
++ ++   { .name = "tx", .dma_req = 31 },
++ ++};
++ ++
++ ++static struct omap_hwmod_addr_space omap2430_mcbsp1_addrs[] = {
++ ++   {
++ ++           .name           = "mpu",
++ ++           .pa_start       = 0x48074000,
++ ++           .pa_end         = 0x480740ff,
++ ++           .flags          = ADDR_TYPE_RT
++ ++   },
++ ++};
++ ++
++ ++/* 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           = omap2430_mcbsp1_addrs,
++ ++   .addr_cnt       = ARRAY_SIZE(omap2430_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,
++ ++   .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mcbsp1_irqs),
++ ++   .sdma_reqs      = omap2430_mcbsp1_sdma_chs,
++ ++   .sdma_reqs_cnt  = ARRAY_SIZE(omap2430_mcbsp1_sdma_chs),
++ ++   .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),
++ ++   .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++ ++};
++ ++
++ ++/* mcbsp2 */
++ ++static struct omap_hwmod_irq_info omap2430_mcbsp2_irqs[] = {
++ ++   { .name = "tx",         .irq = 62 },
++ ++   { .name = "rx",         .irq = 63 },
++ ++   { .name = "common",     .irq = 16 },
++ ++};
++ ++
++ ++static struct omap_hwmod_dma_info omap2430_mcbsp2_sdma_chs[] = {
++ ++   { .name = "rx", .dma_req = 34 },
++ ++   { .name = "tx", .dma_req = 33 },
++ ++};
++ ++
++ ++static struct omap_hwmod_addr_space omap2430_mcbsp2_addrs[] = {
++ ++   {
++ ++           .name           = "mpu",
++ ++           .pa_start       = 0x48076000,
++ ++           .pa_end         = 0x480760ff,
++ ++           .flags          = ADDR_TYPE_RT
++ ++   },
++ ++};
++ ++
++ ++/* l4_core -> mcbsp2 */
++ ++static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp2 = {
++ ++   .master         = &omap2430_l4_core_hwmod,
++ ++   .slave          = &omap2430_mcbsp2_hwmod,
++ ++   .clk            = "mcbsp2_ick",
++ ++   .addr           = omap2430_mcbsp2_addrs,
++ ++   .addr_cnt       = ARRAY_SIZE(omap2430_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,
++ ++   .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mcbsp2_irqs),
++ ++   .sdma_reqs      = omap2430_mcbsp2_sdma_chs,
++ ++   .sdma_reqs_cnt  = ARRAY_SIZE(omap2430_mcbsp2_sdma_chs),
++ ++   .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),
++ ++   .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++ ++};
++ ++
++ ++/* mcbsp3 */
++ ++static struct omap_hwmod_irq_info omap2430_mcbsp3_irqs[] = {
++ ++   { .name = "tx",         .irq = 89 },
++ ++   { .name = "rx",         .irq = 90 },
++ ++   { .name = "common",     .irq = 17 },
++ ++};
++ ++
++ ++static struct omap_hwmod_dma_info omap2430_mcbsp3_sdma_chs[] = {
++ ++   { .name = "rx", .dma_req = 18 },
++ ++   { .name = "tx", .dma_req = 17 },
++ ++};
++ ++
++ ++static struct omap_hwmod_addr_space omap2430_mcbsp3_addrs[] = {
++ ++   {
++ ++           .name           = "mpu",
++ ++           .pa_start       = 0x4808C000,
++ ++           .pa_end         = 0x4808C0ff,
++ ++           .flags          = ADDR_TYPE_RT
++ ++   },
++ ++};
++ ++
++ ++/* l4_core -> mcbsp3 */
++ ++static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp3 = {
++ ++   .master         = &omap2430_l4_core_hwmod,
++ ++   .slave          = &omap2430_mcbsp3_hwmod,
++ ++   .clk            = "mcbsp3_ick",
++ ++   .addr           = omap2430_mcbsp3_addrs,
++ ++   .addr_cnt       = ARRAY_SIZE(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,
++ ++   .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mcbsp3_irqs),
++ ++   .sdma_reqs      = omap2430_mcbsp3_sdma_chs,
++ ++   .sdma_reqs_cnt  = ARRAY_SIZE(omap2430_mcbsp3_sdma_chs),
++ ++   .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),
++ ++   .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++ ++};
++ ++
++ ++/* mcbsp4 */
++ ++static struct omap_hwmod_irq_info omap2430_mcbsp4_irqs[] = {
++ ++   { .name = "tx",         .irq = 54 },
++ ++   { .name = "rx",         .irq = 55 },
++ ++   { .name = "common",     .irq = 18 },
++ ++};
++ ++
++ ++static struct omap_hwmod_dma_info omap2430_mcbsp4_sdma_chs[] = {
++ ++   { .name = "rx", .dma_req = 20 },
++ ++   { .name = "tx", .dma_req = 19 },
++ ++};
++ ++
++ ++static struct omap_hwmod_addr_space omap2430_mcbsp4_addrs[] = {
++ ++   {
++ ++           .name           = "mpu",
++ ++           .pa_start       = 0x4808E000,
++ ++           .pa_end         = 0x4808E0ff,
++ ++           .flags          = ADDR_TYPE_RT
++ ++   },
++ ++};
++ ++
++ ++/* l4_core -> mcbsp4 */
++ ++static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp4 = {
++ ++   .master         = &omap2430_l4_core_hwmod,
++ ++   .slave          = &omap2430_mcbsp4_hwmod,
++ ++   .clk            = "mcbsp4_ick",
++ ++   .addr           = omap2430_mcbsp4_addrs,
++ ++   .addr_cnt       = ARRAY_SIZE(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,
++ ++   .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mcbsp4_irqs),
++ ++   .sdma_reqs      = omap2430_mcbsp4_sdma_chs,
++ ++   .sdma_reqs_cnt  = ARRAY_SIZE(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),
++ ++   .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++ ++};
++ ++
++ ++/* mcbsp5 */
++ ++static struct omap_hwmod_irq_info omap2430_mcbsp5_irqs[] = {
++ ++   { .name = "tx",         .irq = 81 },
++ ++   { .name = "rx",         .irq = 82 },
++ ++   { .name = "common",     .irq = 19 },
++ ++};
++ ++
++ ++static struct omap_hwmod_dma_info omap2430_mcbsp5_sdma_chs[] = {
++ ++   { .name = "rx", .dma_req = 22 },
++ ++   { .name = "tx", .dma_req = 21 },
++ ++};
++ ++
++ ++static struct omap_hwmod_addr_space omap2430_mcbsp5_addrs[] = {
++ ++   {
++ ++           .name           = "mpu",
++ ++           .pa_start       = 0x48096000,
++ ++           .pa_end         = 0x480960ff,
++ ++           .flags          = ADDR_TYPE_RT
++ ++   },
++ ++};
++ ++
++ ++/* l4_core -> mcbsp5 */
++ ++static struct omap_hwmod_ocp_if omap2430_l4_core__mcbsp5 = {
++ ++   .master         = &omap2430_l4_core_hwmod,
++ ++   .slave          = &omap2430_mcbsp5_hwmod,
++ ++   .clk            = "mcbsp5_ick",
++ ++   .addr           = omap2430_mcbsp5_addrs,
++ ++   .addr_cnt       = ARRAY_SIZE(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,
++ ++   .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mcbsp5_irqs),
++ ++   .sdma_reqs      = omap2430_mcbsp5_sdma_chs,
++ ++   .sdma_reqs_cnt  = ARRAY_SIZE(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),
++ ++   .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++ ++};
++ + 
++++ /* 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 },
++++ };
++++ 
++++ 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 */
++++ };
++++ 
++++ static struct omap_hwmod_opt_clk omap2430_mmc1_opt_clks[] = {
++++    { .role = "dbck", .clk = "mmchsdb1_fck" },
++++ };
++++ 
++++ static struct omap_hwmod_ocp_if *omap2430_mmc1_slaves[] = {
++++    &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,
++++    .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mmc1_mpu_irqs),
++++    .sdma_reqs      = omap2430_mmc1_sdma_reqs,
++++    .sdma_reqs_cnt  = ARRAY_SIZE(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,
++++    .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++++ };
++++ 
++++ /* MMC/SD/SDIO2 */
++++ 
++++ static struct omap_hwmod_irq_info omap2430_mmc2_mpu_irqs[] = {
++++    { .irq = 86 },
++++ };
++++ 
++++ 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 */
++++ };
++++ 
++++ 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,
++++    .mpu_irqs_cnt   = ARRAY_SIZE(omap2430_mmc2_mpu_irqs),
++++    .sdma_reqs      = omap2430_mmc2_sdma_reqs,
++++    .sdma_reqs_cnt  = ARRAY_SIZE(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,
++++    .omap_chip      = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
++++ };
  +  
     static __initdata struct omap_hwmod *omap2430_hwmods[] = {
        &omap2430_l3_main_hwmod,
        &omap2430_l4_core_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,
     #include <plat/l4_3xxx.h>
     #include <plat/i2c.h>
     #include <plat/gpio.h>
++++ #include <plat/mmc.h>
     #include <plat/smartreflex.h>
++ ++#include <plat/mcbsp.h>
     #include <plat/mcspi.h>
 +++ #include <plat/dmtimer.h>
     
     #include "omap_hwmod_common_data.h"
     
@@@@@@ -2852,22 -2285,8 -2725,8 -2217,8 -3064,25 +3572,25 @@@@@@ static __initdata struct omap_hwmod *om
        &omap3xxx_l4_core_hwmod,
        &omap3xxx_l4_per_hwmod,
        &omap3xxx_l4_wkup_hwmod,
++++    &omap3xxx_mmc1_hwmod,
++++    &omap3xxx_mmc2_hwmod,
++++    &omap3xxx_mmc3_hwmod,
        &omap3xxx_mpu_hwmod,
        &omap3xxx_iva_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_timer12_hwmod,
 +++ 
        &omap3xxx_wd_timer2_hwmod,
        &omap3xxx_uart1_hwmod,
        &omap3xxx_uart2_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,
++ ++
+  ++   /* mailbox class */
+  ++   &omap3xxx_mailbox_hwmod,
+  ++
        /* mcspi class */
        &omap34xx_mcspi1,
        &omap34xx_mcspi2,
     #include <plat/gpio.h>
     #include <plat/dma.h>
     #include <plat/mcspi.h>
++ ++#include <plat/mcbsp.h>
++++ #include <plat/mmc.h>
     
     #include "omap_hwmod_common_data.h"
     
Simple merge