obj-$(CONFIG_SOC_OMAP2430)             += opp2430_data.o
 
 # hwmod data
-obj-$(CONFIG_SOC_OMAP2420)             += omap_hwmod_2xxx_interconnect_data.o \
+obj-$(CONFIG_SOC_OMAP2420)             += omap_hwmod_2xxx_ipblock_data.o \
+                                          omap_hwmod_2xxx_3xxx_ipblock_data.o \
+                                          omap_hwmod_2xxx_interconnect_data.o \
                                           omap_hwmod_2xxx_3xxx_interconnect_data.o \
                                           omap_hwmod_2420_data.o
-obj-$(CONFIG_SOC_OMAP2430)             += omap_hwmod_2xxx_interconnect_data.o \
+obj-$(CONFIG_SOC_OMAP2430)             += omap_hwmod_2xxx_ipblock_data.o \
+                                          omap_hwmod_2xxx_3xxx_ipblock_data.o \
+                                          omap_hwmod_2xxx_interconnect_data.o \
                                           omap_hwmod_2xxx_3xxx_interconnect_data.o \
                                           omap_hwmod_2430_data.o
-obj-$(CONFIG_ARCH_OMAP3)               += omap_hwmod_2xxx_3xxx_interconnect_data.o \
+obj-$(CONFIG_ARCH_OMAP3)               += omap_hwmod_2xxx_3xxx_ipblock_data.o \
+                                          omap_hwmod_2xxx_3xxx_interconnect_data.o \
                                           omap_hwmod_3xxx_data.o
 obj-$(CONFIG_ARCH_OMAP4)               += omap_hwmod_44xx_data.o
 
 
 
 /* timer1 */
 static struct omap_hwmod omap2420_timer1_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer1_mpu_irqs[] = {
-       { .irq = 37, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap2420_timer1_addrs[] = {
        {
 /* timer1 hwmod */
 static struct omap_hwmod omap2420_timer1_hwmod = {
        .name           = "timer1",
-       .mpu_irqs       = omap2420_timer1_mpu_irqs,
+       .mpu_irqs       = omap2_timer1_mpu_irqs,
        .main_clk       = "gpt1_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer2 */
 static struct omap_hwmod omap2420_timer2_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer2_mpu_irqs[] = {
-       { .irq = 38, },
-       { .irq = -1 }
-};
-
 
 /* l4_core -> timer2 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer2 = {
 /* timer2 hwmod */
 static struct omap_hwmod omap2420_timer2_hwmod = {
        .name           = "timer2",
-       .mpu_irqs       = omap2420_timer2_mpu_irqs,
+       .mpu_irqs       = omap2_timer2_mpu_irqs,
        .main_clk       = "gpt2_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer3 */
 static struct omap_hwmod omap2420_timer3_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer3_mpu_irqs[] = {
-       { .irq = 39, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer3 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer3 = {
 /* timer3 hwmod */
 static struct omap_hwmod omap2420_timer3_hwmod = {
        .name           = "timer3",
-       .mpu_irqs       = omap2420_timer3_mpu_irqs,
+       .mpu_irqs       = omap2_timer3_mpu_irqs,
        .main_clk       = "gpt3_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer4 */
 static struct omap_hwmod omap2420_timer4_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer4_mpu_irqs[] = {
-       { .irq = 40, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer4 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer4 = {
 /* timer4 hwmod */
 static struct omap_hwmod omap2420_timer4_hwmod = {
        .name           = "timer4",
-       .mpu_irqs       = omap2420_timer4_mpu_irqs,
+       .mpu_irqs       = omap2_timer4_mpu_irqs,
        .main_clk       = "gpt4_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer5 */
 static struct omap_hwmod omap2420_timer5_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer5_mpu_irqs[] = {
-       { .irq = 41, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer5 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer5 = {
 /* timer5 hwmod */
 static struct omap_hwmod omap2420_timer5_hwmod = {
        .name           = "timer5",
-       .mpu_irqs       = omap2420_timer5_mpu_irqs,
+       .mpu_irqs       = omap2_timer5_mpu_irqs,
        .main_clk       = "gpt5_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer6 */
 static struct omap_hwmod omap2420_timer6_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer6_mpu_irqs[] = {
-       { .irq = 42, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer6 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer6 = {
 /* timer6 hwmod */
 static struct omap_hwmod omap2420_timer6_hwmod = {
        .name           = "timer6",
-       .mpu_irqs       = omap2420_timer6_mpu_irqs,
+       .mpu_irqs       = omap2_timer6_mpu_irqs,
        .main_clk       = "gpt6_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer7 */
 static struct omap_hwmod omap2420_timer7_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer7_mpu_irqs[] = {
-       { .irq = 43, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer7 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer7 = {
 /* timer7 hwmod */
 static struct omap_hwmod omap2420_timer7_hwmod = {
        .name           = "timer7",
-       .mpu_irqs       = omap2420_timer7_mpu_irqs,
+       .mpu_irqs       = omap2_timer7_mpu_irqs,
        .main_clk       = "gpt7_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer8 */
 static struct omap_hwmod omap2420_timer8_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer8_mpu_irqs[] = {
-       { .irq = 44, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer8 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer8 = {
 /* timer8 hwmod */
 static struct omap_hwmod omap2420_timer8_hwmod = {
        .name           = "timer8",
-       .mpu_irqs       = omap2420_timer8_mpu_irqs,
+       .mpu_irqs       = omap2_timer8_mpu_irqs,
        .main_clk       = "gpt8_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer9 */
 static struct omap_hwmod omap2420_timer9_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer9_mpu_irqs[] = {
-       { .irq = 45, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer9 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer9 = {
 /* timer9 hwmod */
 static struct omap_hwmod omap2420_timer9_hwmod = {
        .name           = "timer9",
-       .mpu_irqs       = omap2420_timer9_mpu_irqs,
+       .mpu_irqs       = omap2_timer9_mpu_irqs,
        .main_clk       = "gpt9_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer10 */
 static struct omap_hwmod omap2420_timer10_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer10_mpu_irqs[] = {
-       { .irq = 46, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer10 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer10 = {
 /* timer10 hwmod */
 static struct omap_hwmod omap2420_timer10_hwmod = {
        .name           = "timer10",
-       .mpu_irqs       = omap2420_timer10_mpu_irqs,
+       .mpu_irqs       = omap2_timer10_mpu_irqs,
        .main_clk       = "gpt10_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer11 */
 static struct omap_hwmod omap2420_timer11_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer11_mpu_irqs[] = {
-       { .irq = 47, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer11 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer11 = {
 /* timer11 hwmod */
 static struct omap_hwmod omap2420_timer11_hwmod = {
        .name           = "timer11",
-       .mpu_irqs       = omap2420_timer11_mpu_irqs,
+       .mpu_irqs       = omap2_timer11_mpu_irqs,
        .main_clk       = "gpt11_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer12 */
 static struct omap_hwmod omap2420_timer12_hwmod;
-static struct omap_hwmod_irq_info omap2420_timer12_mpu_irqs[] = {
-       { .irq = 48, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer12 */
 static struct omap_hwmod_ocp_if omap2420_l4_core__timer12 = {
 /* timer12 hwmod */
 static struct omap_hwmod omap2420_timer12_hwmod = {
        .name           = "timer12",
-       .mpu_irqs       = omap2420_timer12_mpu_irqs,
+       .mpu_irqs       = omap2xxx_timer12_mpu_irqs,
        .main_clk       = "gpt12_fck",
        .prcm           = {
                .omap2 = {
 
 /* UART1 */
 
-static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
-       { .irq = INT_24XX_UART1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, },
 
 static struct omap_hwmod omap2420_uart1_hwmod = {
        .name           = "uart1",
-       .mpu_irqs       = uart1_mpu_irqs,
+       .mpu_irqs       = omap2_uart1_mpu_irqs,
        .sdma_reqs      = uart1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart1_sdma_reqs),
        .main_clk       = "uart1_fck",
 
 /* UART2 */
 
-static struct omap_hwmod_irq_info uart2_mpu_irqs[] = {
-       { .irq = INT_24XX_UART2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart2_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, },
 
 static struct omap_hwmod omap2420_uart2_hwmod = {
        .name           = "uart2",
-       .mpu_irqs       = uart2_mpu_irqs,
+       .mpu_irqs       = omap2_uart2_mpu_irqs,
        .sdma_reqs      = uart2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart2_sdma_reqs),
        .main_clk       = "uart2_fck",
 
 /* UART3 */
 
-static struct omap_hwmod_irq_info uart3_mpu_irqs[] = {
-       { .irq = INT_24XX_UART3_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart3_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, },
 
 static struct omap_hwmod omap2420_uart3_hwmod = {
        .name           = "uart3",
-       .mpu_irqs       = uart3_mpu_irqs,
+       .mpu_irqs       = omap2_uart3_mpu_irqs,
        .sdma_reqs      = uart3_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart3_sdma_reqs),
        .main_clk       = "uart3_fck",
        .sysc = &omap2420_dispc_sysc,
 };
 
-static struct omap_hwmod_irq_info omap2420_dispc_irqs[] = {
-       { .irq = 25 },
-       { .irq = -1 }
-};
-
 /* l4_core -> dss_dispc */
 static struct omap_hwmod_ocp_if omap2420_l4_core__dss_dispc = {
        .master         = &omap2420_l4_core_hwmod,
 static struct omap_hwmod omap2420_dss_dispc_hwmod = {
        .name           = "dss_dispc",
        .class          = &omap2420_dispc_hwmod_class,
-       .mpu_irqs       = omap2420_dispc_irqs,
+       .mpu_irqs       = omap2_dispc_irqs,
        .main_clk       = "dss1_fck",
        .prcm           = {
                .omap2 = {
 
 /* I2C1 */
 
-static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c1_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX },
 
 static struct omap_hwmod omap2420_i2c1_hwmod = {
        .name           = "i2c1",
-       .mpu_irqs       = i2c1_mpu_irqs,
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
        .sdma_reqs      = i2c1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c1_sdma_reqs),
        .main_clk       = "i2c1_fck",
 
 /* I2C2 */
 
-static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c2_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX },
 
 static struct omap_hwmod omap2420_i2c2_hwmod = {
        .name           = "i2c2",
-       .mpu_irqs       = i2c2_mpu_irqs,
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
        .sdma_reqs      = i2c2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c2_sdma_reqs),
        .main_clk       = "i2c2_fck",
 };
 
 /* gpio1 */
-static struct omap_hwmod_irq_info omap242x_gpio1_irqs[] = {
-       { .irq = 29 }, /* INT_24XX_GPIO_BANK1 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2420_gpio1_slaves[] = {
        &omap2420_l4_wkup__gpio1,
 };
 static struct omap_hwmod omap2420_gpio1_hwmod = {
        .name           = "gpio1",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap242x_gpio1_irqs,
+       .mpu_irqs       = omap2_gpio1_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio2 */
-static struct omap_hwmod_irq_info omap242x_gpio2_irqs[] = {
-       { .irq = 30 }, /* INT_24XX_GPIO_BANK2 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2420_gpio2_slaves[] = {
        &omap2420_l4_wkup__gpio2,
 };
 static struct omap_hwmod omap2420_gpio2_hwmod = {
        .name           = "gpio2",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap242x_gpio2_irqs,
+       .mpu_irqs       = omap2_gpio2_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio3 */
-static struct omap_hwmod_irq_info omap242x_gpio3_irqs[] = {
-       { .irq = 31 }, /* INT_24XX_GPIO_BANK3 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2420_gpio3_slaves[] = {
        &omap2420_l4_wkup__gpio3,
 };
 static struct omap_hwmod omap2420_gpio3_hwmod = {
        .name           = "gpio3",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap242x_gpio3_irqs,
+       .mpu_irqs       = omap2_gpio3_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio4 */
-static struct omap_hwmod_irq_info omap242x_gpio4_irqs[] = {
-       { .irq = 32 }, /* INT_24XX_GPIO_BANK4 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2420_gpio4_slaves[] = {
        &omap2420_l4_wkup__gpio4,
 };
 static struct omap_hwmod omap2420_gpio4_hwmod = {
        .name           = "gpio4",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap242x_gpio4_irqs,
+       .mpu_irqs       = omap2_gpio4_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
        .lch_count = 32,
 };
 
-static struct omap_hwmod_irq_info omap2420_dma_system_irqs[] = {
-       { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
-       { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
-       { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
-       { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
-       { .irq = -1 }
-};
-
 /* dma_system -> L3 */
 static struct omap_hwmod_ocp_if omap2420_dma_system__l3 = {
        .master         = &omap2420_dma_system_hwmod,
 static struct omap_hwmod omap2420_dma_system_hwmod = {
        .name           = "dma",
        .class          = &omap2420_dma_hwmod_class,
-       .mpu_irqs       = omap2420_dma_system_irqs,
+       .mpu_irqs       = omap2_dma_system_irqs,
        .main_clk       = "core_l3_ck",
        .slaves         = omap2420_dma_system_slaves,
        .slaves_cnt     = ARRAY_SIZE(omap2420_dma_system_slaves),
 };
 
 /* mcspi1 */
-static struct omap_hwmod_irq_info omap2420_mcspi1_mpu_irqs[] = {
-       { .irq = 65 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap2420_mcspi1_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 35 }, /* DMA_SPI1_TX0 */
        { .name = "rx0", .dma_req = 36 }, /* DMA_SPI1_RX0 */
 
 static struct omap_hwmod omap2420_mcspi1_hwmod = {
        .name           = "mcspi1_hwmod",
-       .mpu_irqs       = omap2420_mcspi1_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
        .sdma_reqs      = omap2420_mcspi1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap2420_mcspi1_sdma_reqs),
        .main_clk       = "mcspi1_fck",
 };
 
 /* mcspi2 */
-static struct omap_hwmod_irq_info omap2420_mcspi2_mpu_irqs[] = {
-       { .irq = 66 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap2420_mcspi2_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 43 }, /* DMA_SPI2_TX0 */
        { .name = "rx0", .dma_req = 44 }, /* DMA_SPI2_RX0 */
 
 static struct omap_hwmod omap2420_mcspi2_hwmod = {
        .name           = "mcspi2_hwmod",
-       .mpu_irqs       = omap2420_mcspi2_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
        .sdma_reqs      = omap2420_mcspi2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap2420_mcspi2_sdma_reqs),
        .main_clk       = "mcspi2_fck",
 
 
 /* timer1 */
 static struct omap_hwmod omap2430_timer1_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer1_mpu_irqs[] = {
-       { .irq = 37, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap2430_timer1_addrs[] = {
        {
 /* timer1 hwmod */
 static struct omap_hwmod omap2430_timer1_hwmod = {
        .name           = "timer1",
-       .mpu_irqs       = omap2430_timer1_mpu_irqs,
+       .mpu_irqs       = omap2_timer1_mpu_irqs,
        .main_clk       = "gpt1_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer2 */
 static struct omap_hwmod omap2430_timer2_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer2_mpu_irqs[] = {
-       { .irq = 38, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer2 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer2 = {
 /* timer2 hwmod */
 static struct omap_hwmod omap2430_timer2_hwmod = {
        .name           = "timer2",
-       .mpu_irqs       = omap2430_timer2_mpu_irqs,
+       .mpu_irqs       = omap2_timer2_mpu_irqs,
        .main_clk       = "gpt2_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer3 */
 static struct omap_hwmod omap2430_timer3_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer3_mpu_irqs[] = {
-       { .irq = 39, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer3 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer3 = {
 /* timer3 hwmod */
 static struct omap_hwmod omap2430_timer3_hwmod = {
        .name           = "timer3",
-       .mpu_irqs       = omap2430_timer3_mpu_irqs,
+       .mpu_irqs       = omap2_timer3_mpu_irqs,
        .main_clk       = "gpt3_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer4 */
 static struct omap_hwmod omap2430_timer4_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer4_mpu_irqs[] = {
-       { .irq = 40, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer4 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer4 = {
 /* timer4 hwmod */
 static struct omap_hwmod omap2430_timer4_hwmod = {
        .name           = "timer4",
-       .mpu_irqs       = omap2430_timer4_mpu_irqs,
+       .mpu_irqs       = omap2_timer4_mpu_irqs,
        .main_clk       = "gpt4_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer5 */
 static struct omap_hwmod omap2430_timer5_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer5_mpu_irqs[] = {
-       { .irq = 41, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer5 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer5 = {
 /* timer5 hwmod */
 static struct omap_hwmod omap2430_timer5_hwmod = {
        .name           = "timer5",
-       .mpu_irqs       = omap2430_timer5_mpu_irqs,
+       .mpu_irqs       = omap2_timer5_mpu_irqs,
        .main_clk       = "gpt5_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer6 */
 static struct omap_hwmod omap2430_timer6_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer6_mpu_irqs[] = {
-       { .irq = 42, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer6 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer6 = {
 /* timer6 hwmod */
 static struct omap_hwmod omap2430_timer6_hwmod = {
        .name           = "timer6",
-       .mpu_irqs       = omap2430_timer6_mpu_irqs,
+       .mpu_irqs       = omap2_timer6_mpu_irqs,
        .main_clk       = "gpt6_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer7 */
 static struct omap_hwmod omap2430_timer7_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer7_mpu_irqs[] = {
-       { .irq = 43, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer7 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer7 = {
 /* timer7 hwmod */
 static struct omap_hwmod omap2430_timer7_hwmod = {
        .name           = "timer7",
-       .mpu_irqs       = omap2430_timer7_mpu_irqs,
+       .mpu_irqs       = omap2_timer7_mpu_irqs,
        .main_clk       = "gpt7_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer8 */
 static struct omap_hwmod omap2430_timer8_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer8_mpu_irqs[] = {
-       { .irq = 44, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer8 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer8 = {
 /* timer8 hwmod */
 static struct omap_hwmod omap2430_timer8_hwmod = {
        .name           = "timer8",
-       .mpu_irqs       = omap2430_timer8_mpu_irqs,
+       .mpu_irqs       = omap2_timer8_mpu_irqs,
        .main_clk       = "gpt8_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer9 */
 static struct omap_hwmod omap2430_timer9_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer9_mpu_irqs[] = {
-       { .irq = 45, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer9 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer9 = {
 /* timer9 hwmod */
 static struct omap_hwmod omap2430_timer9_hwmod = {
        .name           = "timer9",
-       .mpu_irqs       = omap2430_timer9_mpu_irqs,
+       .mpu_irqs       = omap2_timer9_mpu_irqs,
        .main_clk       = "gpt9_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer10 */
 static struct omap_hwmod omap2430_timer10_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer10_mpu_irqs[] = {
-       { .irq = 46, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer10 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer10 = {
 /* timer10 hwmod */
 static struct omap_hwmod omap2430_timer10_hwmod = {
        .name           = "timer10",
-       .mpu_irqs       = omap2430_timer10_mpu_irqs,
+       .mpu_irqs       = omap2_timer10_mpu_irqs,
        .main_clk       = "gpt10_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer11 */
 static struct omap_hwmod omap2430_timer11_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer11_mpu_irqs[] = {
-       { .irq = 47, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer11 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer11 = {
 /* timer11 hwmod */
 static struct omap_hwmod omap2430_timer11_hwmod = {
        .name           = "timer11",
-       .mpu_irqs       = omap2430_timer11_mpu_irqs,
+       .mpu_irqs       = omap2_timer11_mpu_irqs,
        .main_clk       = "gpt11_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer12 */
 static struct omap_hwmod omap2430_timer12_hwmod;
-static struct omap_hwmod_irq_info omap2430_timer12_mpu_irqs[] = {
-       { .irq = 48, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer12 */
 static struct omap_hwmod_ocp_if omap2430_l4_core__timer12 = {
 /* timer12 hwmod */
 static struct omap_hwmod omap2430_timer12_hwmod = {
        .name           = "timer12",
-       .mpu_irqs       = omap2430_timer12_mpu_irqs,
+       .mpu_irqs       = omap2xxx_timer12_mpu_irqs,
        .main_clk       = "gpt12_fck",
        .prcm           = {
                .omap2 = {
 
 /* UART1 */
 
-static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
-       { .irq = INT_24XX_UART1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, },
 
 static struct omap_hwmod omap2430_uart1_hwmod = {
        .name           = "uart1",
-       .mpu_irqs       = uart1_mpu_irqs,
+       .mpu_irqs       = omap2_uart1_mpu_irqs,
        .sdma_reqs      = uart1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart1_sdma_reqs),
        .main_clk       = "uart1_fck",
 
 /* UART2 */
 
-static struct omap_hwmod_irq_info uart2_mpu_irqs[] = {
-       { .irq = INT_24XX_UART2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart2_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, },
 
 static struct omap_hwmod omap2430_uart2_hwmod = {
        .name           = "uart2",
-       .mpu_irqs       = uart2_mpu_irqs,
+       .mpu_irqs       = omap2_uart2_mpu_irqs,
        .sdma_reqs      = uart2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart2_sdma_reqs),
        .main_clk       = "uart2_fck",
 
 /* UART3 */
 
-static struct omap_hwmod_irq_info uart3_mpu_irqs[] = {
-       { .irq = INT_24XX_UART3_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart3_sdma_reqs[] = {
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, },
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, },
 
 static struct omap_hwmod omap2430_uart3_hwmod = {
        .name           = "uart3",
-       .mpu_irqs       = uart3_mpu_irqs,
+       .mpu_irqs       = omap2_uart3_mpu_irqs,
        .sdma_reqs      = uart3_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart3_sdma_reqs),
        .main_clk       = "uart3_fck",
        .sysc = &omap2430_dispc_sysc,
 };
 
-static struct omap_hwmod_irq_info omap2430_dispc_irqs[] = {
-       { .irq = 25 },
-       { .irq = -1 }
-};
-
 /* l4_core -> dss_dispc */
 static struct omap_hwmod_ocp_if omap2430_l4_core__dss_dispc = {
        .master         = &omap2430_l4_core_hwmod,
 static struct omap_hwmod omap2430_dss_dispc_hwmod = {
        .name           = "dss_dispc",
        .class          = &omap2430_dispc_hwmod_class,
-       .mpu_irqs       = omap2430_dispc_irqs,
+       .mpu_irqs       = omap2_dispc_irqs,
        .main_clk       = "dss1_fck",
        .prcm           = {
                .omap2 = {
 
 /* I2C1 */
 
-static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c1_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX },
 
 static struct omap_hwmod omap2430_i2c1_hwmod = {
        .name           = "i2c1",
-       .mpu_irqs       = i2c1_mpu_irqs,
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
        .sdma_reqs      = i2c1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c1_sdma_reqs),
        .main_clk       = "i2chs1_fck",
 
 /* I2C2 */
 
-static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c2_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX },
 
 static struct omap_hwmod omap2430_i2c2_hwmod = {
        .name           = "i2c2",
-       .mpu_irqs       = i2c2_mpu_irqs,
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
        .sdma_reqs      = i2c2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c2_sdma_reqs),
        .main_clk       = "i2chs2_fck",
 };
 
 /* gpio1 */
-static struct omap_hwmod_irq_info omap243x_gpio1_irqs[] = {
-       { .irq = 29 }, /* INT_24XX_GPIO_BANK1 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2430_gpio1_slaves[] = {
        &omap2430_l4_wkup__gpio1,
 };
 static struct omap_hwmod omap2430_gpio1_hwmod = {
        .name           = "gpio1",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap243x_gpio1_irqs,
+       .mpu_irqs       = omap2_gpio1_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio2 */
-static struct omap_hwmod_irq_info omap243x_gpio2_irqs[] = {
-       { .irq = 30 }, /* INT_24XX_GPIO_BANK2 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2430_gpio2_slaves[] = {
        &omap2430_l4_wkup__gpio2,
 };
 static struct omap_hwmod omap2430_gpio2_hwmod = {
        .name           = "gpio2",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap243x_gpio2_irqs,
+       .mpu_irqs       = omap2_gpio2_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio3 */
-static struct omap_hwmod_irq_info omap243x_gpio3_irqs[] = {
-       { .irq = 31 }, /* INT_24XX_GPIO_BANK3 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2430_gpio3_slaves[] = {
        &omap2430_l4_wkup__gpio3,
 };
 static struct omap_hwmod omap2430_gpio3_hwmod = {
        .name           = "gpio3",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap243x_gpio3_irqs,
+       .mpu_irqs       = omap2_gpio3_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
 };
 
 /* gpio4 */
-static struct omap_hwmod_irq_info omap243x_gpio4_irqs[] = {
-       { .irq = 32 }, /* INT_24XX_GPIO_BANK4 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_ocp_if *omap2430_gpio4_slaves[] = {
        &omap2430_l4_wkup__gpio4,
 };
 static struct omap_hwmod omap2430_gpio4_hwmod = {
        .name           = "gpio4",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap243x_gpio4_irqs,
+       .mpu_irqs       = omap2_gpio4_irqs,
        .main_clk       = "gpios_fck",
        .prcm           = {
                .omap2 = {
        .lch_count = 32,
 };
 
-static struct omap_hwmod_irq_info omap2430_dma_system_irqs[] = {
-       { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
-       { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
-       { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
-       { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
-       { .irq = -1 }
-};
-
 /* dma_system -> L3 */
 static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = {
        .master         = &omap2430_dma_system_hwmod,
 static struct omap_hwmod omap2430_dma_system_hwmod = {
        .name           = "dma",
        .class          = &omap2430_dma_hwmod_class,
-       .mpu_irqs       = omap2430_dma_system_irqs,
+       .mpu_irqs       = omap2_dma_system_irqs,
        .main_clk       = "core_l3_ck",
        .slaves         = omap2430_dma_system_slaves,
        .slaves_cnt     = ARRAY_SIZE(omap2430_dma_system_slaves),
 };
 
 /* mcspi1 */
-static struct omap_hwmod_irq_info omap2430_mcspi1_mpu_irqs[] = {
-       { .irq = 65 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap2430_mcspi1_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 35 }, /* DMA_SPI1_TX0 */
        { .name = "rx0", .dma_req = 36 }, /* DMA_SPI1_RX0 */
 
 static struct omap_hwmod omap2430_mcspi1_hwmod = {
        .name           = "mcspi1_hwmod",
-       .mpu_irqs       = omap2430_mcspi1_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
        .sdma_reqs      = omap2430_mcspi1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap2430_mcspi1_sdma_reqs),
        .main_clk       = "mcspi1_fck",
 };
 
 /* mcspi2 */
-static struct omap_hwmod_irq_info omap2430_mcspi2_mpu_irqs[] = {
-       { .irq = 66 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap2430_mcspi2_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 43 }, /* DMA_SPI2_TX0 */
        { .name = "rx0", .dma_req = 44 }, /* DMA_SPI2_RX0 */
 
 static struct omap_hwmod omap2430_mcspi2_hwmod = {
        .name           = "mcspi2_hwmod",
-       .mpu_irqs       = omap2430_mcspi2_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
        .sdma_reqs      = omap2430_mcspi2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap2430_mcspi2_sdma_reqs),
        .main_clk       = "mcspi2_fck",
 
--- /dev/null
+/*
+ * omap_hwmod_2xxx_3xxx_ipblock_data.c - common IP block data for OMAP2/3
+ *
+ * Copyright (C) 2011 Nokia Corporation
+ * Paul Walmsley
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <plat/omap_hwmod.h>
+#include <plat/serial.h>
+
+#include <mach/irqs.h>
+
+#include "omap_hwmod_common_data.h"
+
+struct omap_hwmod_irq_info omap2_timer1_mpu_irqs[] = {
+       { .irq = 37, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer2_mpu_irqs[] = {
+       { .irq = 38, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer3_mpu_irqs[] = {
+       { .irq = 39, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer4_mpu_irqs[] = {
+       { .irq = 40, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer5_mpu_irqs[] = {
+       { .irq = 41, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer6_mpu_irqs[] = {
+       { .irq = 42, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer7_mpu_irqs[] = {
+       { .irq = 43, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer8_mpu_irqs[] = {
+       { .irq = 44, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer9_mpu_irqs[] = {
+       { .irq = 45, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer10_mpu_irqs[] = {
+       { .irq = 46, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_timer11_mpu_irqs[] = {
+       { .irq = 47, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_uart1_mpu_irqs[] = {
+       { .irq = INT_24XX_UART1_IRQ, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_uart2_mpu_irqs[] = {
+       { .irq = INT_24XX_UART2_IRQ, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_uart3_mpu_irqs[] = {
+       { .irq = INT_24XX_UART3_IRQ, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_dispc_irqs[] = {
+       { .irq = 25 },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_i2c1_mpu_irqs[] = {
+       { .irq = INT_24XX_I2C1_IRQ, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_i2c2_mpu_irqs[] = {
+       { .irq = INT_24XX_I2C2_IRQ, },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_gpio1_irqs[] = {
+       { .irq = 29 }, /* INT_24XX_GPIO_BANK1 */
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_gpio2_irqs[] = {
+       { .irq = 30 }, /* INT_24XX_GPIO_BANK2 */
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_gpio3_irqs[] = {
+       { .irq = 31 }, /* INT_24XX_GPIO_BANK3 */
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_gpio4_irqs[] = {
+       { .irq = 32 }, /* INT_24XX_GPIO_BANK4 */
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_dma_system_irqs[] = {
+       { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
+       { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
+       { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
+       { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_mcspi1_mpu_irqs[] = {
+       { .irq = 65 },
+       { .irq = -1 }
+};
+
+struct omap_hwmod_irq_info omap2_mcspi2_mpu_irqs[] = {
+       { .irq = 66 },
+       { .irq = -1 }
+};
+
+
+
 
--- /dev/null
+/*
+ * omap_hwmod_2xxx_ipblock_data.c - common IP block data for OMAP2xxx
+ *
+ * Copyright (C) 2011 Nokia Corporation
+ * Paul Walmsley
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <plat/omap_hwmod.h>
+#include <plat/serial.h>
+
+#include <mach/irqs.h>
+
+#include "omap_hwmod_common_data.h"
+
+struct omap_hwmod_irq_info omap2xxx_timer12_mpu_irqs[] = {
+       { .irq = 48, },
+       { .irq = -1 }
+};
 
 static struct omap_hwmod omap3xxx_l3_main_hwmod = {
        .name           = "l3_main",
        .class          = &l3_hwmod_class,
-       .mpu_irqs       = omap3xxx_l3_main_irqs,
+       .mpu_irqs       = omap3xxx_l3_main_irqs,
        .masters        = omap3xxx_l3_main_masters,
        .masters_cnt    = ARRAY_SIZE(omap3xxx_l3_main_masters),
        .slaves         = omap3xxx_l3_main_slaves,
 
 /* timer1 */
 static struct omap_hwmod omap3xxx_timer1_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer1_mpu_irqs[] = {
-       { .irq = 37, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer1_addrs[] = {
        {
 /* timer1 hwmod */
 static struct omap_hwmod omap3xxx_timer1_hwmod = {
        .name           = "timer1",
-       .mpu_irqs       = omap3xxx_timer1_mpu_irqs,
+       .mpu_irqs       = omap2_timer1_mpu_irqs,
        .main_clk       = "gpt1_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer2 */
 static struct omap_hwmod omap3xxx_timer2_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer2_mpu_irqs[] = {
-       { .irq = 38, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer2_addrs[] = {
        {
 /* timer2 hwmod */
 static struct omap_hwmod omap3xxx_timer2_hwmod = {
        .name           = "timer2",
-       .mpu_irqs       = omap3xxx_timer2_mpu_irqs,
+       .mpu_irqs       = omap2_timer2_mpu_irqs,
        .main_clk       = "gpt2_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer3 */
 static struct omap_hwmod omap3xxx_timer3_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer3_mpu_irqs[] = {
-       { .irq = 39, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer3_addrs[] = {
        {
 /* timer3 hwmod */
 static struct omap_hwmod omap3xxx_timer3_hwmod = {
        .name           = "timer3",
-       .mpu_irqs       = omap3xxx_timer3_mpu_irqs,
+       .mpu_irqs       = omap2_timer3_mpu_irqs,
        .main_clk       = "gpt3_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer4 */
 static struct omap_hwmod omap3xxx_timer4_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer4_mpu_irqs[] = {
-       { .irq = 40, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer4_addrs[] = {
        {
 /* timer4 hwmod */
 static struct omap_hwmod omap3xxx_timer4_hwmod = {
        .name           = "timer4",
-       .mpu_irqs       = omap3xxx_timer4_mpu_irqs,
+       .mpu_irqs       = omap2_timer4_mpu_irqs,
        .main_clk       = "gpt4_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer5 */
 static struct omap_hwmod omap3xxx_timer5_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer5_mpu_irqs[] = {
-       { .irq = 41, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer5_addrs[] = {
        {
 /* timer5 hwmod */
 static struct omap_hwmod omap3xxx_timer5_hwmod = {
        .name           = "timer5",
-       .mpu_irqs       = omap3xxx_timer5_mpu_irqs,
+       .mpu_irqs       = omap2_timer5_mpu_irqs,
        .main_clk       = "gpt5_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer6 */
 static struct omap_hwmod omap3xxx_timer6_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer6_mpu_irqs[] = {
-       { .irq = 42, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer6_addrs[] = {
        {
 /* timer6 hwmod */
 static struct omap_hwmod omap3xxx_timer6_hwmod = {
        .name           = "timer6",
-       .mpu_irqs       = omap3xxx_timer6_mpu_irqs,
+       .mpu_irqs       = omap2_timer6_mpu_irqs,
        .main_clk       = "gpt6_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer7 */
 static struct omap_hwmod omap3xxx_timer7_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer7_mpu_irqs[] = {
-       { .irq = 43, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer7_addrs[] = {
        {
 /* timer7 hwmod */
 static struct omap_hwmod omap3xxx_timer7_hwmod = {
        .name           = "timer7",
-       .mpu_irqs       = omap3xxx_timer7_mpu_irqs,
+       .mpu_irqs       = omap2_timer7_mpu_irqs,
        .main_clk       = "gpt7_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer8 */
 static struct omap_hwmod omap3xxx_timer8_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer8_mpu_irqs[] = {
-       { .irq = 44, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer8_addrs[] = {
        {
 /* timer8 hwmod */
 static struct omap_hwmod omap3xxx_timer8_hwmod = {
        .name           = "timer8",
-       .mpu_irqs       = omap3xxx_timer8_mpu_irqs,
+       .mpu_irqs       = omap2_timer8_mpu_irqs,
        .main_clk       = "gpt8_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer9 */
 static struct omap_hwmod omap3xxx_timer9_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer9_mpu_irqs[] = {
-       { .irq = 45, },
-       { .irq = -1 }
-};
 
 static struct omap_hwmod_addr_space omap3xxx_timer9_addrs[] = {
        {
 /* timer9 hwmod */
 static struct omap_hwmod omap3xxx_timer9_hwmod = {
        .name           = "timer9",
-       .mpu_irqs       = omap3xxx_timer9_mpu_irqs,
+       .mpu_irqs       = omap2_timer9_mpu_irqs,
        .main_clk       = "gpt9_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer10 */
 static struct omap_hwmod omap3xxx_timer10_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer10_mpu_irqs[] = {
-       { .irq = 46, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer10 */
 static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer10 = {
 /* timer10 hwmod */
 static struct omap_hwmod omap3xxx_timer10_hwmod = {
        .name           = "timer10",
-       .mpu_irqs       = omap3xxx_timer10_mpu_irqs,
+       .mpu_irqs       = omap2_timer10_mpu_irqs,
        .main_clk       = "gpt10_fck",
        .prcm           = {
                .omap2 = {
 
 /* timer11 */
 static struct omap_hwmod omap3xxx_timer11_hwmod;
-static struct omap_hwmod_irq_info omap3xxx_timer11_mpu_irqs[] = {
-       { .irq = 47, },
-       { .irq = -1 }
-};
 
 /* l4_core -> timer11 */
 static struct omap_hwmod_ocp_if omap3xxx_l4_core__timer11 = {
 /* timer11 hwmod */
 static struct omap_hwmod omap3xxx_timer11_hwmod = {
        .name           = "timer11",
-       .mpu_irqs       = omap3xxx_timer11_mpu_irqs,
+       .mpu_irqs       = omap2_timer11_mpu_irqs,
        .main_clk       = "gpt11_fck",
        .prcm           = {
                .omap2 = {
 
 /* UART1 */
 
-static struct omap_hwmod_irq_info uart1_mpu_irqs[] = {
-       { .irq = INT_24XX_UART1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart1_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART1_TX, },
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART1_RX, },
 
 static struct omap_hwmod omap3xxx_uart1_hwmod = {
        .name           = "uart1",
-       .mpu_irqs       = uart1_mpu_irqs,
+       .mpu_irqs       = omap2_uart1_mpu_irqs,
        .sdma_reqs      = uart1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart1_sdma_reqs),
        .main_clk       = "uart1_fck",
 
 /* UART2 */
 
-static struct omap_hwmod_irq_info uart2_mpu_irqs[] = {
-       { .irq = INT_24XX_UART2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart2_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART2_TX, },
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART2_RX, },
 
 static struct omap_hwmod omap3xxx_uart2_hwmod = {
        .name           = "uart2",
-       .mpu_irqs       = uart2_mpu_irqs,
+       .mpu_irqs       = omap2_uart2_mpu_irqs,
        .sdma_reqs      = uart2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart2_sdma_reqs),
        .main_clk       = "uart2_fck",
 
 /* UART3 */
 
-static struct omap_hwmod_irq_info uart3_mpu_irqs[] = {
-       { .irq = INT_24XX_UART3_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info uart3_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_UART3_TX, },
        { .name = "rx", .dma_req = OMAP24XX_DMA_UART3_RX, },
 
 static struct omap_hwmod omap3xxx_uart3_hwmod = {
        .name           = "uart3",
-       .mpu_irqs       = uart3_mpu_irqs,
+       .mpu_irqs       = omap2_uart3_mpu_irqs,
        .sdma_reqs      = uart3_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(uart3_sdma_reqs),
        .main_clk       = "uart3_fck",
        .sysc = &omap3xxx_dispc_sysc,
 };
 
-static struct omap_hwmod_irq_info omap3xxx_dispc_irqs[] = {
-       { .irq = 25 },
-       { .irq = -1 }
-};
-
 /* l4_core -> dss_dispc */
 static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
        .master         = &omap3xxx_l4_core_hwmod,
 static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
        .name           = "dss_dispc",
        .class          = &omap3xxx_dispc_hwmod_class,
-       .mpu_irqs       = omap3xxx_dispc_irqs,
+       .mpu_irqs       = omap2_dispc_irqs,
        .main_clk       = "dss1_alwon_fck",
        .prcm           = {
                .omap2 = {
        .fifo_depth     = 8, /* bytes */
 };
 
-static struct omap_hwmod_irq_info i2c1_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C1_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c1_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C1_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C1_RX },
 
 static struct omap_hwmod omap3xxx_i2c1_hwmod = {
        .name           = "i2c1",
-       .mpu_irqs       = i2c1_mpu_irqs,
+       .mpu_irqs       = omap2_i2c1_mpu_irqs,
        .sdma_reqs      = i2c1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c1_sdma_reqs),
        .main_clk       = "i2c1_fck",
        .fifo_depth     = 8, /* bytes */
 };
 
-static struct omap_hwmod_irq_info i2c2_mpu_irqs[] = {
-       { .irq = INT_24XX_I2C2_IRQ, },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info i2c2_sdma_reqs[] = {
        { .name = "tx", .dma_req = OMAP24XX_DMA_I2C2_TX },
        { .name = "rx", .dma_req = OMAP24XX_DMA_I2C2_RX },
 
 static struct omap_hwmod omap3xxx_i2c2_hwmod = {
        .name           = "i2c2",
-       .mpu_irqs       = i2c2_mpu_irqs,
+       .mpu_irqs       = omap2_i2c2_mpu_irqs,
        .sdma_reqs      = i2c2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(i2c2_sdma_reqs),
        .main_clk       = "i2c2_fck",
 };
 
 /* gpio1 */
-static struct omap_hwmod_irq_info omap3xxx_gpio1_irqs[] = {
-       { .irq = 29 }, /* INT_34XX_GPIO_BANK1 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio1_dbck", },
 };
 static struct omap_hwmod omap3xxx_gpio1_hwmod = {
        .name           = "gpio1",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio1_irqs,
+       .mpu_irqs       = omap2_gpio1_irqs,
        .main_clk       = "gpio1_ick",
        .opt_clks       = gpio1_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio1_opt_clks),
 };
 
 /* gpio2 */
-static struct omap_hwmod_irq_info omap3xxx_gpio2_irqs[] = {
-       { .irq = 30 }, /* INT_34XX_GPIO_BANK2 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio2_dbck", },
 };
 static struct omap_hwmod omap3xxx_gpio2_hwmod = {
        .name           = "gpio2",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio2_irqs,
+       .mpu_irqs       = omap2_gpio2_irqs,
        .main_clk       = "gpio2_ick",
        .opt_clks       = gpio2_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio2_opt_clks),
 };
 
 /* gpio3 */
-static struct omap_hwmod_irq_info omap3xxx_gpio3_irqs[] = {
-       { .irq = 31 }, /* INT_34XX_GPIO_BANK3 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio3_dbck", },
 };
 static struct omap_hwmod omap3xxx_gpio3_hwmod = {
        .name           = "gpio3",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio3_irqs,
+       .mpu_irqs       = omap2_gpio3_irqs,
        .main_clk       = "gpio3_ick",
        .opt_clks       = gpio3_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio3_opt_clks),
 };
 
 /* gpio4 */
-static struct omap_hwmod_irq_info omap3xxx_gpio4_irqs[] = {
-       { .irq = 32 }, /* INT_34XX_GPIO_BANK4 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
        { .role = "dbclk", .clk = "gpio4_dbck", },
 };
 static struct omap_hwmod omap3xxx_gpio4_hwmod = {
        .name           = "gpio4",
        .flags          = HWMOD_CONTROL_OPT_CLKS_IN_RESET,
-       .mpu_irqs       = omap3xxx_gpio4_irqs,
+       .mpu_irqs       = omap2_gpio4_irqs,
        .main_clk       = "gpio4_ick",
        .opt_clks       = gpio4_opt_clks,
        .opt_clks_cnt   = ARRAY_SIZE(gpio4_opt_clks),
 };
 
 /* dma_system */
-static struct omap_hwmod_irq_info omap3xxx_dma_system_irqs[] = {
-       { .name = "0", .irq = 12 }, /* INT_24XX_SDMA_IRQ0 */
-       { .name = "1", .irq = 13 }, /* INT_24XX_SDMA_IRQ1 */
-       { .name = "2", .irq = 14 }, /* INT_24XX_SDMA_IRQ2 */
-       { .name = "3", .irq = 15 }, /* INT_24XX_SDMA_IRQ3 */
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_addr_space omap3xxx_dma_system_addrs[] = {
        {
                .pa_start       = 0x48056000,
 static struct omap_hwmod omap3xxx_dma_system_hwmod = {
        .name           = "dma",
        .class          = &omap3xxx_dma_hwmod_class,
-       .mpu_irqs       = omap3xxx_dma_system_irqs,
+       .mpu_irqs       = omap2_dma_system_irqs,
        .main_clk       = "core_l3_ick",
        .prcm = {
                .omap2 = {
 };
 
 /* mcspi1 */
-static struct omap_hwmod_irq_info omap34xx_mcspi1_mpu_irqs[] = {
-       { .name = "irq", .irq = 65 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap34xx_mcspi1_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 35 },
        { .name = "rx0", .dma_req = 36 },
 
 static struct omap_hwmod omap34xx_mcspi1 = {
        .name           = "mcspi1",
-       .mpu_irqs       = omap34xx_mcspi1_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi1_mpu_irqs,
        .sdma_reqs      = omap34xx_mcspi1_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap34xx_mcspi1_sdma_reqs),
        .main_clk       = "mcspi1_fck",
 };
 
 /* mcspi2 */
-static struct omap_hwmod_irq_info omap34xx_mcspi2_mpu_irqs[] = {
-       { .name = "irq", .irq = 66 },
-       { .irq = -1 }
-};
-
 static struct omap_hwmod_dma_info omap34xx_mcspi2_sdma_reqs[] = {
        { .name = "tx0", .dma_req = 43 },
        { .name = "rx0", .dma_req = 44 },
 
 static struct omap_hwmod omap34xx_mcspi2 = {
        .name           = "mcspi2",
-       .mpu_irqs       = omap34xx_mcspi2_mpu_irqs,
+       .mpu_irqs       = omap2_mcspi2_mpu_irqs,
        .sdma_reqs      = omap34xx_mcspi2_sdma_reqs,
        .sdma_reqs_cnt  = ARRAY_SIZE(omap34xx_mcspi2_sdma_reqs),
        .main_clk       = "mcspi2_fck",
 
 extern struct omap_hwmod_addr_space omap2_mailbox_addrs[];
 extern struct omap_hwmod_addr_space omap2_mcbsp1_addrs[];
 
+/* Common IP block data across OMAP2xxx */
+extern struct omap_hwmod_irq_info omap2xxx_timer12_mpu_irqs[];
+
+/* Common IP block data across OMAP2/3 */
+extern struct omap_hwmod_irq_info omap2_timer1_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer2_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer3_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer4_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer5_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer6_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer7_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer8_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer9_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer10_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_timer11_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_uart1_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_uart2_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_uart3_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_dispc_irqs[];
+extern struct omap_hwmod_irq_info omap2_i2c1_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_i2c2_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_gpio1_irqs[];
+extern struct omap_hwmod_irq_info omap2_gpio2_irqs[];
+extern struct omap_hwmod_irq_info omap2_gpio3_irqs[];
+extern struct omap_hwmod_irq_info omap2_gpio4_irqs[];
+extern struct omap_hwmod_irq_info omap2_dma_system_irqs[];
+extern struct omap_hwmod_irq_info omap2_mcspi1_mpu_irqs[];
+extern struct omap_hwmod_irq_info omap2_mcspi2_mpu_irqs[];
+
 /* OMAP hwmod classes - forward declarations */
 extern struct omap_hwmod_class l3_hwmod_class;
 extern struct omap_hwmod_class l4_hwmod_class;