diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_44xx_data.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_44xx_data.c | 6277 | 
1 files changed, 3368 insertions, 2909 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 6abc75753e4..950454a3fa3 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c @@ -1,7 +1,7 @@  /*   * Hardware modules present on the OMAP44xx chips   * - * Copyright (C) 2009-2011 Texas Instruments, Inc. + * Copyright (C) 2009-2012 Texas Instruments, Inc.   * Copyright (C) 2009-2010 Nokia Corporation   *   * Paul Walmsley @@ -44,39 +44,32 @@  #define OMAP44XX_IRQ_GIC_START	32  /* Base offset for all OMAP4 dma requests */ -#define OMAP44XX_DMA_REQ_START  1 +#define OMAP44XX_DMA_REQ_START	1 -/* Backward references (IPs with Bus Master capability) */ -static struct omap_hwmod omap44xx_aess_hwmod; -static struct omap_hwmod omap44xx_dma_system_hwmod; -static struct omap_hwmod omap44xx_dmm_hwmod; -static struct omap_hwmod omap44xx_dsp_hwmod; -static struct omap_hwmod omap44xx_dss_hwmod; -static struct omap_hwmod omap44xx_emif_fw_hwmod; -static struct omap_hwmod omap44xx_hsi_hwmod; -static struct omap_hwmod omap44xx_ipu_hwmod; -static struct omap_hwmod omap44xx_iss_hwmod; -static struct omap_hwmod omap44xx_iva_hwmod; -static struct omap_hwmod omap44xx_l3_instr_hwmod; -static struct omap_hwmod omap44xx_l3_main_1_hwmod; -static struct omap_hwmod omap44xx_l3_main_2_hwmod; -static struct omap_hwmod omap44xx_l3_main_3_hwmod; -static struct omap_hwmod omap44xx_l4_abe_hwmod; -static struct omap_hwmod omap44xx_l4_cfg_hwmod; -static struct omap_hwmod omap44xx_l4_per_hwmod; -static struct omap_hwmod omap44xx_l4_wkup_hwmod; -static struct omap_hwmod omap44xx_mmc1_hwmod; -static struct omap_hwmod omap44xx_mmc2_hwmod; -static struct omap_hwmod omap44xx_mpu_hwmod; -static struct omap_hwmod omap44xx_mpu_private_hwmod; -static struct omap_hwmod omap44xx_usb_otg_hs_hwmod; -static struct omap_hwmod omap44xx_usb_host_hs_hwmod; -static struct omap_hwmod omap44xx_usb_tll_hs_hwmod; +/* + * IP blocks + */  /* - * Interconnects omap_hwmod structures - * hwmods that compose the global OMAP interconnect + * 'c2c_target_fw' class + * instance(s): c2c_target_fw   */ +static struct omap_hwmod_class omap44xx_c2c_target_fw_hwmod_class = { +	.name	= "c2c_target_fw", +}; + +/* c2c_target_fw */ +static struct omap_hwmod omap44xx_c2c_target_fw_hwmod = { +	.name		= "c2c_target_fw", +	.class		= &omap44xx_c2c_target_fw_hwmod_class, +	.clkdm_name	= "d2d_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_D2D_SAD2D_FW_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_D2D_SAD2D_FW_CONTEXT_OFFSET, +		}, +	}, +};  /*   * 'dmm' class @@ -92,51 +85,17 @@ static struct omap_hwmod_irq_info omap44xx_dmm_irqs[] = {  	{ .irq = -1 }  }; -/* l3_main_1 -> dmm */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = { -	.master		= &omap44xx_l3_main_1_hwmod, -	.slave		= &omap44xx_dmm_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = { -	{ -		.pa_start	= 0x4e000000, -		.pa_end		= 0x4e0007ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* mpu -> dmm */ -static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = { -	.master		= &omap44xx_mpu_hwmod, -	.slave		= &omap44xx_dmm_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_dmm_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dmm slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dmm_slaves[] = { -	&omap44xx_l3_main_1__dmm, -	&omap44xx_mpu__dmm, -}; -  static struct omap_hwmod omap44xx_dmm_hwmod = {  	.name		= "dmm",  	.class		= &omap44xx_dmm_hwmod_class,  	.clkdm_name	= "l3_emif_clkdm", +	.mpu_irqs	= omap44xx_dmm_irqs,  	.prcm = {  		.omap4 = {  			.clkctrl_offs = OMAP4_CM_MEMIF_DMM_CLKCTRL_OFFSET,  			.context_offs = OMAP4_RM_MEMIF_DMM_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_dmm_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dmm_slaves), -	.mpu_irqs	= omap44xx_dmm_irqs,  };  /* @@ -148,38 +107,6 @@ static struct omap_hwmod_class omap44xx_emif_fw_hwmod_class = {  };  /* emif_fw */ -/* dmm -> emif_fw */ -static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = { -	.master		= &omap44xx_dmm_hwmod, -	.slave		= &omap44xx_emif_fw_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = { -	{ -		.pa_start	= 0x4a20c000, -		.pa_end		= 0x4a20c0ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> emif_fw */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_emif_fw_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_emif_fw_addrs, -	.user		= OCP_USER_MPU, -}; - -/* emif_fw slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_emif_fw_slaves[] = { -	&omap44xx_dmm__emif_fw, -	&omap44xx_l4_cfg__emif_fw, -}; -  static struct omap_hwmod omap44xx_emif_fw_hwmod = {  	.name		= "emif_fw",  	.class		= &omap44xx_emif_fw_hwmod_class, @@ -190,8 +117,6 @@ static struct omap_hwmod omap44xx_emif_fw_hwmod = {  			.context_offs = OMAP4_RM_MEMIF_EMIF_FW_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_emif_fw_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_emif_fw_slaves),  };  /* @@ -203,28 +128,6 @@ static struct omap_hwmod_class omap44xx_l3_hwmod_class = {  };  /* l3_instr */ -/* iva -> l3_instr */ -static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = { -	.master		= &omap44xx_iva_hwmod, -	.slave		= &omap44xx_l3_instr_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_main_3 -> l3_instr */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { -	.master		= &omap44xx_l3_main_3_hwmod, -	.slave		= &omap44xx_l3_instr_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_instr slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l3_instr_slaves[] = { -	&omap44xx_iva__l3_instr, -	&omap44xx_l3_main_3__l3_instr, -}; -  static struct omap_hwmod omap44xx_l3_instr_hwmod = {  	.name		= "l3_instr",  	.class		= &omap44xx_l3_hwmod_class, @@ -236,8 +139,6 @@ static struct omap_hwmod omap44xx_l3_instr_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_l3_instr_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l3_instr_slaves),  };  /* l3_main_1 */ @@ -247,83 +148,6 @@ static struct omap_hwmod_irq_info omap44xx_l3_main_1_irqs[] = {  	{ .irq = -1 }  }; -/* dsp -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = { -	.master		= &omap44xx_dsp_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* dss -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = { -	.master		= &omap44xx_dss_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_main_2 -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_cfg -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l4_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc1 -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = { -	.master		= &omap44xx_mmc1_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc2 -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = { -	.master		= &omap44xx_mmc2_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = { -	{ -		.pa_start	= 0x44000000, -		.pa_end		= 0x44000fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* mpu -> l3_main_1 */ -static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { -	.master		= &omap44xx_mpu_hwmod, -	.slave		= &omap44xx_l3_main_1_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_l3_main_1_addrs, -	.user		= OCP_USER_MPU, -}; - -/* l3_main_1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l3_main_1_slaves[] = { -	&omap44xx_dsp__l3_main_1, -	&omap44xx_dss__l3_main_1, -	&omap44xx_l3_main_2__l3_main_1, -	&omap44xx_l4_cfg__l3_main_1, -	&omap44xx_mmc1__l3_main_1, -	&omap44xx_mmc2__l3_main_1, -	&omap44xx_mpu__l3_main_1, -}; -  static struct omap_hwmod omap44xx_l3_main_1_hwmod = {  	.name		= "l3_main_1",  	.class		= &omap44xx_l3_hwmod_class, @@ -335,97 +159,9 @@ static struct omap_hwmod omap44xx_l3_main_1_hwmod = {  			.context_offs = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_l3_main_1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l3_main_1_slaves),  };  /* l3_main_2 */ -/* dma_system -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = { -	.master		= &omap44xx_dma_system_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* hsi -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = { -	.master		= &omap44xx_hsi_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* ipu -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = { -	.master		= &omap44xx_ipu_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* iss -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = { -	.master		= &omap44xx_iss_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* iva -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = { -	.master		= &omap44xx_iva_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = { -	{ -		.pa_start	= 0x44800000, -		.pa_end		= 0x44801fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_1 -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { -	.master		= &omap44xx_l3_main_1_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_l3_main_2_addrs, -	.user		= OCP_USER_MPU, -}; - -/* l4_cfg -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l4_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* usb_otg_hs -> l3_main_2 */ -static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = { -	.master		= &omap44xx_usb_otg_hs_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_main_2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l3_main_2_slaves[] = { -	&omap44xx_dma_system__l3_main_2, -	&omap44xx_hsi__l3_main_2, -	&omap44xx_ipu__l3_main_2, -	&omap44xx_iss__l3_main_2, -	&omap44xx_iva__l3_main_2, -	&omap44xx_l3_main_1__l3_main_2, -	&omap44xx_l4_cfg__l3_main_2, -	&omap44xx_usb_otg_hs__l3_main_2, -}; -  static struct omap_hwmod omap44xx_l3_main_2_hwmod = {  	.name		= "l3_main_2",  	.class		= &omap44xx_l3_hwmod_class, @@ -436,52 +172,9 @@ static struct omap_hwmod omap44xx_l3_main_2_hwmod = {  			.context_offs = OMAP4_RM_L3_2_L3_2_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_l3_main_2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l3_main_2_slaves),  };  /* l3_main_3 */ -static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = { -	{ -		.pa_start	= 0x45000000, -		.pa_end		= 0x45000fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_1 -> l3_main_3 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = { -	.master		= &omap44xx_l3_main_1_hwmod, -	.slave		= &omap44xx_l3_main_3_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_l3_main_3_addrs, -	.user		= OCP_USER_MPU, -}; - -/* l3_main_2 -> l3_main_3 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_l3_main_3_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_cfg -> l3_main_3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_l3_main_3_hwmod, -	.clk		= "l4_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_main_3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l3_main_3_slaves[] = { -	&omap44xx_l3_main_1__l3_main_3, -	&omap44xx_l3_main_2__l3_main_3, -	&omap44xx_l4_cfg__l3_main_3, -}; -  static struct omap_hwmod omap44xx_l3_main_3_hwmod = {  	.name		= "l3_main_3",  	.class		= &omap44xx_l3_hwmod_class, @@ -493,8 +186,6 @@ static struct omap_hwmod omap44xx_l3_main_3_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_l3_main_3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l3_main_3_slaves),  };  /* @@ -506,46 +197,6 @@ static struct omap_hwmod_class omap44xx_l4_hwmod_class = {  };  /* l4_abe */ -/* aess -> l4_abe */ -static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = { -	.master		= &omap44xx_aess_hwmod, -	.slave		= &omap44xx_l4_abe_hwmod, -	.clk		= "ocp_abe_iclk", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* dsp -> l4_abe */ -static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { -	.master		= &omap44xx_dsp_hwmod, -	.slave		= &omap44xx_l4_abe_hwmod, -	.clk		= "ocp_abe_iclk", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l3_main_1 -> l4_abe */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = { -	.master		= &omap44xx_l3_main_1_hwmod, -	.slave		= &omap44xx_l4_abe_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mpu -> l4_abe */ -static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = { -	.master		= &omap44xx_mpu_hwmod, -	.slave		= &omap44xx_l4_abe_hwmod, -	.clk		= "ocp_abe_iclk", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_abe slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l4_abe_slaves[] = { -	&omap44xx_aess__l4_abe, -	&omap44xx_dsp__l4_abe, -	&omap44xx_l3_main_1__l4_abe, -	&omap44xx_mpu__l4_abe, -}; -  static struct omap_hwmod omap44xx_l4_abe_hwmod = {  	.name		= "l4_abe",  	.class		= &omap44xx_l4_hwmod_class, @@ -555,24 +206,9 @@ static struct omap_hwmod omap44xx_l4_abe_hwmod = {  			.clkctrl_offs = OMAP4_CM1_ABE_L4ABE_CLKCTRL_OFFSET,  		},  	}, -	.slaves		= omap44xx_l4_abe_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l4_abe_slaves),  };  /* l4_cfg */ -/* l3_main_1 -> l4_cfg */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = { -	.master		= &omap44xx_l3_main_1_hwmod, -	.slave		= &omap44xx_l4_cfg_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_cfg slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l4_cfg_slaves[] = { -	&omap44xx_l3_main_1__l4_cfg, -}; -  static struct omap_hwmod omap44xx_l4_cfg_hwmod = {  	.name		= "l4_cfg",  	.class		= &omap44xx_l4_hwmod_class, @@ -583,24 +219,9 @@ static struct omap_hwmod omap44xx_l4_cfg_hwmod = {  			.context_offs = OMAP4_RM_L4CFG_L4_CFG_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_l4_cfg_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l4_cfg_slaves),  };  /* l4_per */ -/* l3_main_2 -> l4_per */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_l4_per_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_per slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l4_per_slaves[] = { -	&omap44xx_l3_main_2__l4_per, -}; -  static struct omap_hwmod omap44xx_l4_per_hwmod = {  	.name		= "l4_per",  	.class		= &omap44xx_l4_hwmod_class, @@ -611,24 +232,9 @@ static struct omap_hwmod omap44xx_l4_per_hwmod = {  			.context_offs = OMAP4_RM_L4PER_L4_PER_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_l4_per_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l4_per_slaves),  };  /* l4_wkup */ -/* l4_cfg -> l4_wkup */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_l4_wkup_hwmod, -	.clk		= "l4_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* l4_wkup slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_l4_wkup_slaves[] = { -	&omap44xx_l4_cfg__l4_wkup, -}; -  static struct omap_hwmod omap44xx_l4_wkup_hwmod = {  	.name		= "l4_wkup",  	.class		= &omap44xx_l4_hwmod_class, @@ -639,8 +245,6 @@ static struct omap_hwmod omap44xx_l4_wkup_hwmod = {  			.context_offs = OMAP4_RM_WKUP_L4WKUP_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_l4_wkup_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_l4_wkup_slaves),  };  /* @@ -652,25 +256,32 @@ static struct omap_hwmod_class omap44xx_mpu_bus_hwmod_class = {  };  /* mpu_private */ -/* mpu -> mpu_private */ -static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = { -	.master		= &omap44xx_mpu_hwmod, -	.slave		= &omap44xx_mpu_private_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mpu_private slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mpu_private_slaves[] = { -	&omap44xx_mpu__mpu_private, -}; -  static struct omap_hwmod omap44xx_mpu_private_hwmod = {  	.name		= "mpu_private",  	.class		= &omap44xx_mpu_bus_hwmod_class,  	.clkdm_name	= "mpuss_clkdm", -	.slaves		= omap44xx_mpu_private_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mpu_private_slaves), +}; + +/* + * 'ocp_wp_noc' class + * instance(s): ocp_wp_noc + */ +static struct omap_hwmod_class omap44xx_ocp_wp_noc_hwmod_class = { +	.name	= "ocp_wp_noc", +}; + +/* ocp_wp_noc */ +static struct omap_hwmod omap44xx_ocp_wp_noc_hwmod = { +	.name		= "ocp_wp_noc", +	.class		= &omap44xx_ocp_wp_noc_hwmod_class, +	.clkdm_name	= "l3_instr_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3INSTR_OCP_WP1_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3INSTR_OCP_WP1_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	},  };  /* @@ -681,41 +292,7 @@ static struct omap_hwmod omap44xx_mpu_private_hwmod = {   * - They still need to be validated with the driver   *   properly adapted to omap_hwmod / omap_device   * - *  c2c - *  c2c_target_fw - *  cm_core - *  cm_core_aon - *  ctrl_module_core - *  ctrl_module_pad_core - *  ctrl_module_pad_wkup - *  ctrl_module_wkup - *  debugss - *  efuse_ctrl_cust - *  efuse_ctrl_std - *  elm - *  emif1 - *  emif2 - *  fdif - *  gpmc - *  gpu - *  hdq1w - *  mcasp - *  mpu_c0 - *  mpu_c1 - *  ocmc_ram - *  ocp2scp_usb_phy - *  ocp_wp_noc - *  prcm_mpu - *  prm - *  scrm - *  sl2if - *  slimbus1 - *  slimbus2 - *  usb_host_fs - *  usb_host_hs - *  usb_phy_cm - *  usb_tll_hs - *  usim + * usim   */  /* @@ -756,53 +333,6 @@ static struct omap_hwmod_dma_info omap44xx_aess_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -/* aess master ports */ -static struct omap_hwmod_ocp_if *omap44xx_aess_masters[] = { -	&omap44xx_aess__l4_abe, -}; - -static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = { -	{ -		.pa_start	= 0x401f1000, -		.pa_end		= 0x401f13ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> aess */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_aess_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_aess_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = { -	{ -		.pa_start	= 0x490f1000, -		.pa_end		= 0x490f13ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> aess (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_aess_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_aess_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* aess slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_aess_slaves[] = { -	&omap44xx_l4_abe__aess, -	&omap44xx_l4_abe__aess_dma, -}; -  static struct omap_hwmod omap44xx_aess_hwmod = {  	.name		= "aess",  	.class		= &omap44xx_aess_hwmod_class, @@ -817,37 +347,41 @@ static struct omap_hwmod omap44xx_aess_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_aess_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_aess_slaves), -	.masters	= omap44xx_aess_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_aess_masters),  };  /* - * 'bandgap' class - * bangap reference for ldo regulators + * 'c2c' class + * chip 2 chip interface used to plug the ape soc (omap) with an external modem + * soc   */ -static struct omap_hwmod_class omap44xx_bandgap_hwmod_class = { -	.name	= "bandgap", +static struct omap_hwmod_class omap44xx_c2c_hwmod_class = { +	.name	= "c2c",  }; -/* bandgap */ -static struct omap_hwmod_opt_clk bandgap_opt_clks[] = { -	{ .role = "fclk", .clk = "bandgap_fclk" }, +/* c2c */ +static struct omap_hwmod_irq_info omap44xx_c2c_irqs[] = { +	{ .irq = 88 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 }  }; -static struct omap_hwmod omap44xx_bandgap_hwmod = { -	.name		= "bandgap", -	.class		= &omap44xx_bandgap_hwmod_class, -	.clkdm_name	= "l4_wkup_clkdm", +static struct omap_hwmod_dma_info omap44xx_c2c_sdma_reqs[] = { +	{ .dma_req = 68 + OMAP44XX_DMA_REQ_START }, +	{ .dma_req = -1 } +}; + +static struct omap_hwmod omap44xx_c2c_hwmod = { +	.name		= "c2c", +	.class		= &omap44xx_c2c_hwmod_class, +	.clkdm_name	= "d2d_clkdm", +	.mpu_irqs	= omap44xx_c2c_irqs, +	.sdma_reqs	= omap44xx_c2c_sdma_reqs,  	.prcm = {  		.omap4 = { -			.clkctrl_offs = OMAP4_CM_WKUP_BANDGAP_CLKCTRL_OFFSET, +			.clkctrl_offs = OMAP4_CM_D2D_SAD2D_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_D2D_SAD2D_CONTEXT_OFFSET,  		},  	}, -	.opt_clks	= bandgap_opt_clks, -	.opt_clks_cnt	= ARRAY_SIZE(bandgap_opt_clks),  };  /* @@ -870,30 +404,6 @@ static struct omap_hwmod_class omap44xx_counter_hwmod_class = {  };  /* counter_32k */ -static struct omap_hwmod omap44xx_counter_32k_hwmod; -static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = { -	{ -		.pa_start	= 0x4a304000, -		.pa_end		= 0x4a30401f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_wkup -> counter_32k */ -static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = { -	.master		= &omap44xx_l4_wkup_hwmod, -	.slave		= &omap44xx_counter_32k_hwmod, -	.clk		= "l4_wkup_clk_mux_ck", -	.addr		= omap44xx_counter_32k_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* counter_32k slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_counter_32k_slaves[] = { -	&omap44xx_l4_wkup__counter_32k, -}; -  static struct omap_hwmod omap44xx_counter_32k_hwmod = {  	.name		= "counter_32k",  	.class		= &omap44xx_counter_hwmod_class, @@ -906,8 +416,83 @@ static struct omap_hwmod omap44xx_counter_32k_hwmod = {  			.context_offs = OMAP4_RM_WKUP_SYNCTIMER_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_counter_32k_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_counter_32k_slaves), +}; + +/* + * 'ctrl_module' class + * attila core control module + core pad control module + wkup pad control + * module + attila wkup control module + */ + +static struct omap_hwmod_class_sysconfig omap44xx_ctrl_module_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.sysc_flags	= SYSC_HAS_SIDLEMODE, +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap44xx_ctrl_module_hwmod_class = { +	.name	= "ctrl_module", +	.sysc	= &omap44xx_ctrl_module_sysc, +}; + +/* ctrl_module_core */ +static struct omap_hwmod_irq_info omap44xx_ctrl_module_core_irqs[] = { +	{ .irq = 8 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_ctrl_module_core_hwmod = { +	.name		= "ctrl_module_core", +	.class		= &omap44xx_ctrl_module_hwmod_class, +	.clkdm_name	= "l4_cfg_clkdm", +	.mpu_irqs	= omap44xx_ctrl_module_core_irqs, +}; + +/* ctrl_module_pad_core */ +static struct omap_hwmod omap44xx_ctrl_module_pad_core_hwmod = { +	.name		= "ctrl_module_pad_core", +	.class		= &omap44xx_ctrl_module_hwmod_class, +	.clkdm_name	= "l4_cfg_clkdm", +}; + +/* ctrl_module_wkup */ +static struct omap_hwmod omap44xx_ctrl_module_wkup_hwmod = { +	.name		= "ctrl_module_wkup", +	.class		= &omap44xx_ctrl_module_hwmod_class, +	.clkdm_name	= "l4_wkup_clkdm", +}; + +/* ctrl_module_pad_wkup */ +static struct omap_hwmod omap44xx_ctrl_module_pad_wkup_hwmod = { +	.name		= "ctrl_module_pad_wkup", +	.class		= &omap44xx_ctrl_module_hwmod_class, +	.clkdm_name	= "l4_wkup_clkdm", +}; + +/* + * 'debugss' class + * debug and emulation sub system + */ + +static struct omap_hwmod_class omap44xx_debugss_hwmod_class = { +	.name	= "debugss", +}; + +/* debugss */ +static struct omap_hwmod omap44xx_debugss_hwmod = { +	.name		= "debugss", +	.class		= &omap44xx_debugss_hwmod_class, +	.clkdm_name	= "emu_sys_clkdm", +	.main_clk	= "trace_clk_div_ck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET, +		}, +	},  };  /* @@ -950,34 +535,6 @@ static struct omap_hwmod_irq_info omap44xx_dma_system_irqs[] = {  	{ .irq = -1 }  }; -/* dma_system master ports */ -static struct omap_hwmod_ocp_if *omap44xx_dma_system_masters[] = { -	&omap44xx_dma_system__l3_main_2, -}; - -static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = { -	{ -		.pa_start	= 0x4a056000, -		.pa_end		= 0x4a056fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> dma_system */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_dma_system_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dma_system_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* dma_system slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dma_system_slaves[] = { -	&omap44xx_l4_cfg__dma_system, -}; -  static struct omap_hwmod omap44xx_dma_system_hwmod = {  	.name		= "dma_system",  	.class		= &omap44xx_dma_hwmod_class, @@ -991,10 +548,6 @@ static struct omap_hwmod omap44xx_dma_system_hwmod = {  		},  	},  	.dev_attr	= &dma_dev_attr, -	.slaves		= omap44xx_dma_system_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dma_system_slaves), -	.masters	= omap44xx_dma_system_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_dma_system_masters),  };  /* @@ -1018,7 +571,6 @@ static struct omap_hwmod_class omap44xx_dmic_hwmod_class = {  };  /* dmic */ -static struct omap_hwmod omap44xx_dmic_hwmod;  static struct omap_hwmod_irq_info omap44xx_dmic_irqs[] = {  	{ .irq = 114 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -1029,50 +581,6 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = { -	{ -		.name		= "mpu", -		.pa_start	= 0x4012e000, -		.pa_end		= 0x4012e07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> dmic */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_dmic_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_dmic_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = { -	{ -		.name		= "dma", -		.pa_start	= 0x4902e000, -		.pa_end		= 0x4902e07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> dmic (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_dmic_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_dmic_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* dmic slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dmic_slaves[] = { -	&omap44xx_l4_abe__dmic, -	&omap44xx_l4_abe__dmic_dma, -}; -  static struct omap_hwmod omap44xx_dmic_hwmod = {  	.name		= "dmic",  	.class		= &omap44xx_dmic_hwmod_class, @@ -1087,8 +595,6 @@ static struct omap_hwmod omap44xx_dmic_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_dmic_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dmic_slaves),  };  /* @@ -1107,53 +613,8 @@ static struct omap_hwmod_irq_info omap44xx_dsp_irqs[] = {  };  static struct omap_hwmod_rst_info omap44xx_dsp_resets[] = { -	{ .name = "mmu_cache", .rst_shift = 1 }, -}; - -static struct omap_hwmod_rst_info omap44xx_dsp_c0_resets[] = {  	{ .name = "dsp", .rst_shift = 0 }, -}; - -/* dsp -> iva */ -static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { -	.master		= &omap44xx_dsp_hwmod, -	.slave		= &omap44xx_iva_hwmod, -	.clk		= "dpll_iva_m5x2_ck", -}; - -/* dsp master ports */ -static struct omap_hwmod_ocp_if *omap44xx_dsp_masters[] = { -	&omap44xx_dsp__l3_main_1, -	&omap44xx_dsp__l4_abe, -	&omap44xx_dsp__iva, -}; - -/* l4_cfg -> dsp */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_dsp_hwmod, -	.clk		= "l4_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* dsp slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dsp_slaves[] = { -	&omap44xx_l4_cfg__dsp, -}; - -/* Pseudo hwmod for reset control purpose only */ -static struct omap_hwmod omap44xx_dsp_c0_hwmod = { -	.name		= "dsp_c0", -	.class		= &omap44xx_dsp_hwmod_class, -	.clkdm_name	= "tesla_clkdm", -	.flags		= HWMOD_INIT_NO_RESET, -	.rst_lines	= omap44xx_dsp_c0_resets, -	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_dsp_c0_resets), -	.prcm = { -		.omap4 = { -			.rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET, -		}, -	}, +	{ .name = "mmu_cache", .rst_shift = 1 },  };  static struct omap_hwmod omap44xx_dsp_hwmod = { @@ -1172,10 +633,6 @@ static struct omap_hwmod omap44xx_dsp_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_dsp_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dsp_slaves), -	.masters	= omap44xx_dsp_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_dsp_masters),  };  /* @@ -1196,53 +653,6 @@ static struct omap_hwmod_class omap44xx_dss_hwmod_class = {  };  /* dss */ -/* dss master ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_masters[] = { -	&omap44xx_dss__l3_main_1, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = { -	{ -		.pa_start	= 0x58000000, -		.pa_end		= 0x5800007f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = { -	{ -		.pa_start	= 0x48040000, -		.pa_end		= 0x4804007f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> dss */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = { -	&omap44xx_l3_main_2__dss, -	&omap44xx_l4_per__dss, -}; -  static struct omap_hwmod_opt_clk dss_opt_clks[] = {  	{ .role = "sys_clk", .clk = "dss_sys_clk" },  	{ .role = "tv_clk", .clk = "dss_tv_clk" }, @@ -1263,10 +673,6 @@ static struct omap_hwmod omap44xx_dss_hwmod = {  	},  	.opt_clks	= dss_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(dss_opt_clks), -	.slaves		= omap44xx_dss_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_slaves), -	.masters	= omap44xx_dss_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_dss_masters),  };  /* @@ -1293,7 +699,6 @@ static struct omap_hwmod_class omap44xx_dispc_hwmod_class = {  };  /* dss_dispc */ -static struct omap_hwmod omap44xx_dss_dispc_hwmod;  static struct omap_hwmod_irq_info omap44xx_dss_dispc_irqs[] = {  	{ .irq = 25 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -1304,53 +709,11 @@ static struct omap_hwmod_dma_info omap44xx_dss_dispc_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = { -	{ -		.pa_start	= 0x58001000, -		.pa_end		= 0x58001fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss_dispc */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_dispc_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_dispc_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = { -	{ -		.pa_start	= 0x48041000, -		.pa_end		= 0x48041fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; -  static struct omap_dss_dispc_dev_attr omap44xx_dss_dispc_dev_attr = {  	.manager_count		= 3,  	.has_framedonetv_irq	= 1  }; -/* l4_per -> dss_dispc */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_dispc_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_dispc_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss_dispc slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = { -	&omap44xx_l3_main_2__dss_dispc, -	&omap44xx_l4_per__dss_dispc, -}; -  static struct omap_hwmod omap44xx_dss_dispc_hwmod = {  	.name		= "dss_dispc",  	.class		= &omap44xx_dispc_hwmod_class, @@ -1364,8 +727,6 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = {  			.context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_dss_dispc_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dispc_slaves),  	.dev_attr	= &omap44xx_dss_dispc_dev_attr  }; @@ -1391,7 +752,6 @@ static struct omap_hwmod_class omap44xx_dsi_hwmod_class = {  };  /* dss_dsi1 */ -static struct omap_hwmod omap44xx_dss_dsi1_hwmod;  static struct omap_hwmod_irq_info omap44xx_dss_dsi1_irqs[] = {  	{ .irq = 53 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -1402,48 +762,6 @@ static struct omap_hwmod_dma_info omap44xx_dss_dsi1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = { -	{ -		.pa_start	= 0x58004000, -		.pa_end		= 0x580041ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss_dsi1 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_dsi1_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_dsi1_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = { -	{ -		.pa_start	= 0x48044000, -		.pa_end		= 0x480441ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> dss_dsi1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_dsi1_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_dsi1_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss_dsi1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = { -	&omap44xx_l3_main_2__dss_dsi1, -	&omap44xx_l4_per__dss_dsi1, -}; -  static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {  	{ .role = "sys_clk", .clk = "dss_sys_clk" },  }; @@ -1463,12 +781,9 @@ static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {  	},  	.opt_clks	= dss_dsi1_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(dss_dsi1_opt_clks), -	.slaves		= omap44xx_dss_dsi1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dsi1_slaves),  };  /* dss_dsi2 */ -static struct omap_hwmod omap44xx_dss_dsi2_hwmod;  static struct omap_hwmod_irq_info omap44xx_dss_dsi2_irqs[] = {  	{ .irq = 84 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -1479,48 +794,6 @@ static struct omap_hwmod_dma_info omap44xx_dss_dsi2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = { -	{ -		.pa_start	= 0x58005000, -		.pa_end		= 0x580051ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss_dsi2 */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_dsi2_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_dsi2_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = { -	{ -		.pa_start	= 0x48045000, -		.pa_end		= 0x480451ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> dss_dsi2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_dsi2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_dsi2_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss_dsi2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = { -	&omap44xx_l3_main_2__dss_dsi2, -	&omap44xx_l4_per__dss_dsi2, -}; -  static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {  	{ .role = "sys_clk", .clk = "dss_sys_clk" },  }; @@ -1540,8 +813,6 @@ static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {  	},  	.opt_clks	= dss_dsi2_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(dss_dsi2_opt_clks), -	.slaves		= omap44xx_dss_dsi2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dsi2_slaves),  };  /* @@ -1565,7 +836,6 @@ static struct omap_hwmod_class omap44xx_hdmi_hwmod_class = {  };  /* dss_hdmi */ -static struct omap_hwmod omap44xx_dss_hdmi_hwmod;  static struct omap_hwmod_irq_info omap44xx_dss_hdmi_irqs[] = {  	{ .irq = 101 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -1576,48 +846,6 @@ static struct omap_hwmod_dma_info omap44xx_dss_hdmi_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = { -	{ -		.pa_start	= 0x58006000, -		.pa_end		= 0x58006fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss_hdmi */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_hdmi_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_hdmi_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = { -	{ -		.pa_start	= 0x48046000, -		.pa_end		= 0x48046fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> dss_hdmi */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_hdmi_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_hdmi_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss_hdmi slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = { -	&omap44xx_l3_main_2__dss_hdmi, -	&omap44xx_l4_per__dss_hdmi, -}; -  static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {  	{ .role = "sys_clk", .clk = "dss_sys_clk" },  }; @@ -1637,8 +865,6 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {  	},  	.opt_clks	= dss_hdmi_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(dss_hdmi_opt_clks), -	.slaves		= omap44xx_dss_hdmi_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_hdmi_slaves),  };  /* @@ -1662,54 +888,11 @@ static struct omap_hwmod_class omap44xx_rfbi_hwmod_class = {  };  /* dss_rfbi */ -static struct omap_hwmod omap44xx_dss_rfbi_hwmod;  static struct omap_hwmod_dma_info omap44xx_dss_rfbi_sdma_reqs[] = {  	{ .dma_req = 13 + OMAP44XX_DMA_REQ_START },  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = { -	{ -		.pa_start	= 0x58002000, -		.pa_end		= 0x580020ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> dss_rfbi */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_rfbi_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_rfbi_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = { -	{ -		.pa_start	= 0x48042000, -		.pa_end		= 0x480420ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> dss_rfbi */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_rfbi_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_rfbi_addrs, -	.user		= OCP_USER_MPU, -}; - -/* dss_rfbi slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = { -	&omap44xx_l3_main_2__dss_rfbi, -	&omap44xx_l4_per__dss_rfbi, -}; -  static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {  	{ .role = "ick", .clk = "dss_fck" },  }; @@ -1728,8 +911,6 @@ static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {  	},  	.opt_clks	= dss_rfbi_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks), -	.slaves		= omap44xx_dss_rfbi_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_rfbi_slaves),  };  /* @@ -1742,62 +923,165 @@ static struct omap_hwmod_class omap44xx_venc_hwmod_class = {  };  /* dss_venc */ -static struct omap_hwmod omap44xx_dss_venc_hwmod; -static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = { -	{ -		.pa_start	= 0x58003000, -		.pa_end		= 0x580030ff, -		.flags		= ADDR_TYPE_RT +static struct omap_hwmod omap44xx_dss_venc_hwmod = { +	.name		= "dss_venc", +	.class		= &omap44xx_venc_hwmod_class, +	.clkdm_name	= "l3_dss_clkdm", +	.main_clk	= "dss_tv_clk", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET, +		},  	}, -	{ }  }; -/* l3_main_2 -> dss_venc */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_dss_venc_hwmod, -	.clk		= "dss_fck", -	.addr		= omap44xx_dss_venc_dma_addrs, -	.user		= OCP_USER_SDMA, +/* + * 'elm' class + * bch error location module + */ + +static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | +			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | +			   SYSS_HAS_RESET_STATUS), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type1,  }; -static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = { -	{ -		.pa_start	= 0x48043000, -		.pa_end		= 0x480430ff, -		.flags		= ADDR_TYPE_RT +static struct omap_hwmod_class omap44xx_elm_hwmod_class = { +	.name	= "elm", +	.sysc	= &omap44xx_elm_sysc, +}; + +/* elm */ +static struct omap_hwmod_irq_info omap44xx_elm_irqs[] = { +	{ .irq = 4 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_elm_hwmod = { +	.name		= "elm", +	.class		= &omap44xx_elm_hwmod_class, +	.clkdm_name	= "l4_per_clkdm", +	.mpu_irqs	= omap44xx_elm_irqs, +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET, +		},  	}, -	{ }  }; -/* l4_per -> dss_venc */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_dss_venc_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_dss_venc_addrs, -	.user		= OCP_USER_MPU, +/* + * 'emif' class + * external memory interface no1 + */ + +static struct omap_hwmod_class_sysconfig omap44xx_emif_sysc = { +	.rev_offs	= 0x0000,  }; -/* dss_venc slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = { -	&omap44xx_l3_main_2__dss_venc, -	&omap44xx_l4_per__dss_venc, +static struct omap_hwmod_class omap44xx_emif_hwmod_class = { +	.name	= "emif", +	.sysc	= &omap44xx_emif_sysc,  }; -static struct omap_hwmod omap44xx_dss_venc_hwmod = { -	.name		= "dss_venc", -	.class		= &omap44xx_venc_hwmod_class, -	.clkdm_name	= "l3_dss_clkdm", -	.main_clk	= "dss_tv_clk", +/* emif1 */ +static struct omap_hwmod_irq_info omap44xx_emif1_irqs[] = { +	{ .irq = 110 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_emif1_hwmod = { +	.name		= "emif1", +	.class		= &omap44xx_emif_hwmod_class, +	.clkdm_name	= "l3_emif_clkdm", +	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, +	.mpu_irqs	= omap44xx_emif1_irqs, +	.main_clk	= "ddrphy_ck",  	.prcm = {  		.omap4 = { -			.clkctrl_offs = OMAP4_CM_DSS_DSS_CLKCTRL_OFFSET, -			.context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET, +			.clkctrl_offs = OMAP4_CM_MEMIF_EMIF_1_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_MEMIF_EMIF_1_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* emif2 */ +static struct omap_hwmod_irq_info omap44xx_emif2_irqs[] = { +	{ .irq = 111 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_emif2_hwmod = { +	.name		= "emif2", +	.class		= &omap44xx_emif_hwmod_class, +	.clkdm_name	= "l3_emif_clkdm", +	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, +	.mpu_irqs	= omap44xx_emif2_irqs, +	.main_clk	= "ddrphy_ck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_MEMIF_EMIF_2_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_MEMIF_EMIF_2_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* + * 'fdif' class + * face detection hw accelerator module + */ + +static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	/* +	 * FDIF needs 100 OCP clk cycles delay after a softreset before +	 * accessing sysconfig again. +	 * The lowest frequency at the moment for L3 bus is 100 MHz, so +	 * 1usec delay is needed. Add an x2 margin to be safe (2 usecs). +	 * +	 * TODO: Indicate errata when available. +	 */ +	.srst_udelay	= 2, +	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | +			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap44xx_fdif_hwmod_class = { +	.name	= "fdif", +	.sysc	= &omap44xx_fdif_sysc, +}; + +/* fdif */ +static struct omap_hwmod_irq_info omap44xx_fdif_irqs[] = { +	{ .irq = 69 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_fdif_hwmod = { +	.name		= "fdif", +	.class		= &omap44xx_fdif_hwmod_class, +	.clkdm_name	= "iss_clkdm", +	.mpu_irqs	= omap44xx_fdif_irqs, +	.main_clk	= "fdif_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_dss_venc_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_venc_slaves),  };  /* @@ -1830,35 +1114,11 @@ static struct omap_gpio_dev_attr gpio_dev_attr = {  };  /* gpio1 */ -static struct omap_hwmod omap44xx_gpio1_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio1_irqs[] = {  	{ .irq = 29 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = { -	{ -		.pa_start	= 0x4a310000, -		.pa_end		= 0x4a3101ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_wkup -> gpio1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = { -	.master		= &omap44xx_l4_wkup_hwmod, -	.slave		= &omap44xx_gpio1_hwmod, -	.clk		= "l4_wkup_clk_mux_ck", -	.addr		= omap44xx_gpio1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio1_slaves[] = { -	&omap44xx_l4_wkup__gpio1, -}; -  static struct omap_hwmod_opt_clk gpio1_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio1_dbclk" },  }; @@ -1879,40 +1139,14 @@ static struct omap_hwmod omap44xx_gpio1_hwmod = {  	.opt_clks	= gpio1_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio1_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio1_slaves),  };  /* gpio2 */ -static struct omap_hwmod omap44xx_gpio2_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio2_irqs[] = {  	{ .irq = 30 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = { -	{ -		.pa_start	= 0x48055000, -		.pa_end		= 0x480551ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> gpio2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_gpio2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_gpio2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio2_slaves[] = { -	&omap44xx_l4_per__gpio2, -}; -  static struct omap_hwmod_opt_clk gpio2_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio2_dbclk" },  }; @@ -1934,40 +1168,14 @@ static struct omap_hwmod omap44xx_gpio2_hwmod = {  	.opt_clks	= gpio2_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio2_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio2_slaves),  };  /* gpio3 */ -static struct omap_hwmod omap44xx_gpio3_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio3_irqs[] = {  	{ .irq = 31 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = { -	{ -		.pa_start	= 0x48057000, -		.pa_end		= 0x480571ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> gpio3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_gpio3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_gpio3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio3_slaves[] = { -	&omap44xx_l4_per__gpio3, -}; -  static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio3_dbclk" },  }; @@ -1989,40 +1197,14 @@ static struct omap_hwmod omap44xx_gpio3_hwmod = {  	.opt_clks	= gpio3_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio3_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio3_slaves),  };  /* gpio4 */ -static struct omap_hwmod omap44xx_gpio4_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio4_irqs[] = {  	{ .irq = 32 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = { -	{ -		.pa_start	= 0x48059000, -		.pa_end		= 0x480591ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> gpio4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_gpio4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_gpio4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio4_slaves[] = { -	&omap44xx_l4_per__gpio4, -}; -  static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio4_dbclk" },  }; @@ -2044,40 +1226,14 @@ static struct omap_hwmod omap44xx_gpio4_hwmod = {  	.opt_clks	= gpio4_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio4_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio4_slaves),  };  /* gpio5 */ -static struct omap_hwmod omap44xx_gpio5_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio5_irqs[] = {  	{ .irq = 33 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = { -	{ -		.pa_start	= 0x4805b000, -		.pa_end		= 0x4805b1ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> gpio5 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_gpio5_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_gpio5_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio5 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio5_slaves[] = { -	&omap44xx_l4_per__gpio5, -}; -  static struct omap_hwmod_opt_clk gpio5_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio5_dbclk" },  }; @@ -2099,40 +1255,14 @@ static struct omap_hwmod omap44xx_gpio5_hwmod = {  	.opt_clks	= gpio5_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio5_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio5_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio5_slaves),  };  /* gpio6 */ -static struct omap_hwmod omap44xx_gpio6_hwmod;  static struct omap_hwmod_irq_info omap44xx_gpio6_irqs[] = {  	{ .irq = 34 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = { -	{ -		.pa_start	= 0x4805d000, -		.pa_end		= 0x4805d1ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> gpio6 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_gpio6_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_gpio6_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* gpio6 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_gpio6_slaves[] = { -	&omap44xx_l4_per__gpio6, -}; -  static struct omap_hwmod_opt_clk gpio6_opt_clks[] = {  	{ .role = "dbclk", .clk = "gpio6_dbclk" },  }; @@ -2154,8 +1284,135 @@ static struct omap_hwmod omap44xx_gpio6_hwmod = {  	.opt_clks	= gpio6_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(gpio6_opt_clks),  	.dev_attr	= &gpio_dev_attr, -	.slaves		= omap44xx_gpio6_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_gpio6_slaves), +}; + +/* + * 'gpmc' class + * general purpose memory controller + */ + +static struct omap_hwmod_class_sysconfig omap44xx_gpmc_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap44xx_gpmc_hwmod_class = { +	.name	= "gpmc", +	.sysc	= &omap44xx_gpmc_sysc, +}; + +/* gpmc */ +static struct omap_hwmod_irq_info omap44xx_gpmc_irqs[] = { +	{ .irq = 20 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod_dma_info omap44xx_gpmc_sdma_reqs[] = { +	{ .dma_req = 3 + OMAP44XX_DMA_REQ_START }, +	{ .dma_req = -1 } +}; + +static struct omap_hwmod omap44xx_gpmc_hwmod = { +	.name		= "gpmc", +	.class		= &omap44xx_gpmc_hwmod_class, +	.clkdm_name	= "l3_2_clkdm", +	.flags		= HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, +	.mpu_irqs	= omap44xx_gpmc_irqs, +	.sdma_reqs	= omap44xx_gpmc_sdma_reqs, +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3_2_GPMC_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3_2_GPMC_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* + * 'gpu' class + * 2d/3d graphics accelerator + */ + +static struct omap_hwmod_class_sysconfig omap44xx_gpu_sysc = { +	.rev_offs	= 0x1fc00, +	.sysc_offs	= 0x1fc10, +	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | +			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap44xx_gpu_hwmod_class = { +	.name	= "gpu", +	.sysc	= &omap44xx_gpu_sysc, +}; + +/* gpu */ +static struct omap_hwmod_irq_info omap44xx_gpu_irqs[] = { +	{ .irq = 21 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_gpu_hwmod = { +	.name		= "gpu", +	.class		= &omap44xx_gpu_hwmod_class, +	.clkdm_name	= "l3_gfx_clkdm", +	.mpu_irqs	= omap44xx_gpu_irqs, +	.main_clk	= "gpu_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_GFX_GFX_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +}; + +/* + * 'hdq1w' class + * hdq / 1-wire serial interface controller + */ + +static struct omap_hwmod_class_sysconfig omap44xx_hdq1w_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0014, +	.syss_offs	= 0x0018, +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SOFTRESET | +			   SYSS_HAS_RESET_STATUS), +	.sysc_fields	= &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap44xx_hdq1w_hwmod_class = { +	.name	= "hdq1w", +	.sysc	= &omap44xx_hdq1w_sysc, +}; + +/* hdq1w */ +static struct omap_hwmod_irq_info omap44xx_hdq1w_irqs[] = { +	{ .irq = 58 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_hdq1w_hwmod = { +	.name		= "hdq1w", +	.class		= &omap44xx_hdq1w_hwmod_class, +	.clkdm_name	= "l4_per_clkdm", +	.flags		= HWMOD_INIT_NO_RESET, /* XXX temporary */ +	.mpu_irqs	= omap44xx_hdq1w_irqs, +	.main_clk	= "hdq1w_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L4PER_HDQ1W_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	},  };  /* @@ -2190,34 +1447,6 @@ static struct omap_hwmod_irq_info omap44xx_hsi_irqs[] = {  	{ .irq = -1 }  }; -/* hsi master ports */ -static struct omap_hwmod_ocp_if *omap44xx_hsi_masters[] = { -	&omap44xx_hsi__l3_main_2, -}; - -static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = { -	{ -		.pa_start	= 0x4a058000, -		.pa_end		= 0x4a05bfff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> hsi */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_hsi_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_hsi_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* hsi slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_hsi_slaves[] = { -	&omap44xx_l4_cfg__hsi, -}; -  static struct omap_hwmod omap44xx_hsi_hwmod = {  	.name		= "hsi",  	.class		= &omap44xx_hsi_hwmod_class, @@ -2231,10 +1460,6 @@ static struct omap_hwmod omap44xx_hsi_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_hsi_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_hsi_slaves), -	.masters	= omap44xx_hsi_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_hsi_masters),  };  /* @@ -2262,11 +1487,11 @@ static struct omap_hwmod_class omap44xx_i2c_hwmod_class = {  };  static struct omap_i2c_dev_attr i2c_dev_attr = { -	.flags	= OMAP_I2C_FLAG_BUS_SHIFT_NONE, +	.flags	= OMAP_I2C_FLAG_BUS_SHIFT_NONE | +			OMAP_I2C_FLAG_RESET_REGS_POSTIDLE,  };  /* i2c1 */ -static struct omap_hwmod omap44xx_i2c1_hwmod;  static struct omap_hwmod_irq_info omap44xx_i2c1_irqs[] = {  	{ .irq = 56 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -2278,29 +1503,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = { -	{ -		.pa_start	= 0x48070000, -		.pa_end		= 0x480700ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> i2c1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_i2c1_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_i2c1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* i2c1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_i2c1_slaves[] = { -	&omap44xx_l4_per__i2c1, -}; -  static struct omap_hwmod omap44xx_i2c1_hwmod = {  	.name		= "i2c1",  	.class		= &omap44xx_i2c_hwmod_class, @@ -2316,13 +1518,10 @@ static struct omap_hwmod omap44xx_i2c1_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_i2c1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_i2c1_slaves),  	.dev_attr	= &i2c_dev_attr,  };  /* i2c2 */ -static struct omap_hwmod omap44xx_i2c2_hwmod;  static struct omap_hwmod_irq_info omap44xx_i2c2_irqs[] = {  	{ .irq = 57 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -2334,29 +1533,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = { -	{ -		.pa_start	= 0x48072000, -		.pa_end		= 0x480720ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> i2c2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_i2c2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_i2c2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* i2c2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_i2c2_slaves[] = { -	&omap44xx_l4_per__i2c2, -}; -  static struct omap_hwmod omap44xx_i2c2_hwmod = {  	.name		= "i2c2",  	.class		= &omap44xx_i2c_hwmod_class, @@ -2372,13 +1548,10 @@ static struct omap_hwmod omap44xx_i2c2_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_i2c2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_i2c2_slaves),  	.dev_attr	= &i2c_dev_attr,  };  /* i2c3 */ -static struct omap_hwmod omap44xx_i2c3_hwmod;  static struct omap_hwmod_irq_info omap44xx_i2c3_irqs[] = {  	{ .irq = 61 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -2390,29 +1563,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c3_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = { -	{ -		.pa_start	= 0x48060000, -		.pa_end		= 0x480600ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> i2c3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_i2c3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_i2c3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* i2c3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_i2c3_slaves[] = { -	&omap44xx_l4_per__i2c3, -}; -  static struct omap_hwmod omap44xx_i2c3_hwmod = {  	.name		= "i2c3",  	.class		= &omap44xx_i2c_hwmod_class, @@ -2428,13 +1578,10 @@ static struct omap_hwmod omap44xx_i2c3_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_i2c3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_i2c3_slaves),  	.dev_attr	= &i2c_dev_attr,  };  /* i2c4 */ -static struct omap_hwmod omap44xx_i2c4_hwmod;  static struct omap_hwmod_irq_info omap44xx_i2c4_irqs[] = {  	{ .irq = 62 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -2446,29 +1593,6 @@ static struct omap_hwmod_dma_info omap44xx_i2c4_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = { -	{ -		.pa_start	= 0x48350000, -		.pa_end		= 0x483500ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> i2c4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_i2c4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_i2c4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* i2c4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_i2c4_slaves[] = { -	&omap44xx_l4_per__i2c4, -}; -  static struct omap_hwmod omap44xx_i2c4_hwmod = {  	.name		= "i2c4",  	.class		= &omap44xx_i2c_hwmod_class, @@ -2484,8 +1608,6 @@ static struct omap_hwmod omap44xx_i2c4_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_i2c4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_i2c4_slaves),  	.dev_attr	= &i2c_dev_attr,  }; @@ -2504,66 +1626,12 @@ static struct omap_hwmod_irq_info omap44xx_ipu_irqs[] = {  	{ .irq = -1 }  }; -static struct omap_hwmod_rst_info omap44xx_ipu_c0_resets[] = { +static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {  	{ .name = "cpu0", .rst_shift = 0 }, -}; - -static struct omap_hwmod_rst_info omap44xx_ipu_c1_resets[] = {  	{ .name = "cpu1", .rst_shift = 1 }, -}; - -static struct omap_hwmod_rst_info omap44xx_ipu_resets[] = {  	{ .name = "mmu_cache", .rst_shift = 2 },  }; -/* ipu master ports */ -static struct omap_hwmod_ocp_if *omap44xx_ipu_masters[] = { -	&omap44xx_ipu__l3_main_2, -}; - -/* l3_main_2 -> ipu */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_ipu_hwmod, -	.clk		= "l3_div_ck", -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* ipu slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_ipu_slaves[] = { -	&omap44xx_l3_main_2__ipu, -}; - -/* Pseudo hwmod for reset control purpose only */ -static struct omap_hwmod omap44xx_ipu_c0_hwmod = { -	.name		= "ipu_c0", -	.class		= &omap44xx_ipu_hwmod_class, -	.clkdm_name	= "ducati_clkdm", -	.flags		= HWMOD_INIT_NO_RESET, -	.rst_lines	= omap44xx_ipu_c0_resets, -	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_ipu_c0_resets), -	.prcm = { -		.omap4 = { -			.rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET, -		}, -	}, -}; - -/* Pseudo hwmod for reset control purpose only */ -static struct omap_hwmod omap44xx_ipu_c1_hwmod = { -	.name		= "ipu_c1", -	.class		= &omap44xx_ipu_hwmod_class, -	.clkdm_name	= "ducati_clkdm", -	.flags		= HWMOD_INIT_NO_RESET, -	.rst_lines	= omap44xx_ipu_c1_resets, -	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_ipu_c1_resets), -	.prcm = { -		.omap4 = { -			.rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET, -		}, -	}, -}; -  static struct omap_hwmod omap44xx_ipu_hwmod = {  	.name		= "ipu",  	.class		= &omap44xx_ipu_hwmod_class, @@ -2580,10 +1648,6 @@ static struct omap_hwmod omap44xx_ipu_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_ipu_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_ipu_slaves), -	.masters	= omap44xx_ipu_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_ipu_masters),  };  /* @@ -2630,34 +1694,6 @@ static struct omap_hwmod_dma_info omap44xx_iss_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -/* iss master ports */ -static struct omap_hwmod_ocp_if *omap44xx_iss_masters[] = { -	&omap44xx_iss__l3_main_2, -}; - -static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = { -	{ -		.pa_start	= 0x52000000, -		.pa_end		= 0x520000ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> iss */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_iss_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_iss_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* iss slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_iss_slaves[] = { -	&omap44xx_l3_main_2__iss, -}; -  static struct omap_hwmod_opt_clk iss_opt_clks[] = {  	{ .role = "ctrlclk", .clk = "iss_ctrlclk" },  }; @@ -2678,10 +1714,6 @@ static struct omap_hwmod omap44xx_iss_hwmod = {  	},  	.opt_clks	= iss_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(iss_opt_clks), -	.slaves		= omap44xx_iss_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_iss_slaves), -	.masters	= omap44xx_iss_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_iss_masters),  };  /* @@ -2702,75 +1734,9 @@ static struct omap_hwmod_irq_info omap44xx_iva_irqs[] = {  };  static struct omap_hwmod_rst_info omap44xx_iva_resets[] = { -	{ .name = "logic", .rst_shift = 2 }, -}; - -static struct omap_hwmod_rst_info omap44xx_iva_seq0_resets[] = {  	{ .name = "seq0", .rst_shift = 0 }, -}; - -static struct omap_hwmod_rst_info omap44xx_iva_seq1_resets[] = {  	{ .name = "seq1", .rst_shift = 1 }, -}; - -/* iva master ports */ -static struct omap_hwmod_ocp_if *omap44xx_iva_masters[] = { -	&omap44xx_iva__l3_main_2, -	&omap44xx_iva__l3_instr, -}; - -static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = { -	{ -		.pa_start	= 0x5a000000, -		.pa_end		= 0x5a07ffff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l3_main_2 -> iva */ -static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = { -	.master		= &omap44xx_l3_main_2_hwmod, -	.slave		= &omap44xx_iva_hwmod, -	.clk		= "l3_div_ck", -	.addr		= omap44xx_iva_addrs, -	.user		= OCP_USER_MPU, -}; - -/* iva slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_iva_slaves[] = { -	&omap44xx_dsp__iva, -	&omap44xx_l3_main_2__iva, -}; - -/* Pseudo hwmod for reset control purpose only */ -static struct omap_hwmod omap44xx_iva_seq0_hwmod = { -	.name		= "iva_seq0", -	.class		= &omap44xx_iva_hwmod_class, -	.clkdm_name	= "ivahd_clkdm", -	.flags		= HWMOD_INIT_NO_RESET, -	.rst_lines	= omap44xx_iva_seq0_resets, -	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_iva_seq0_resets), -	.prcm = { -		.omap4 = { -			.rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET, -		}, -	}, -}; - -/* Pseudo hwmod for reset control purpose only */ -static struct omap_hwmod omap44xx_iva_seq1_hwmod = { -	.name		= "iva_seq1", -	.class		= &omap44xx_iva_hwmod_class, -	.clkdm_name	= "ivahd_clkdm", -	.flags		= HWMOD_INIT_NO_RESET, -	.rst_lines	= omap44xx_iva_seq1_resets, -	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_iva_seq1_resets), -	.prcm = { -		.omap4 = { -			.rstctrl_offs = OMAP4_RM_IVAHD_RSTCTRL_OFFSET, -		}, -	}, +	{ .name = "logic", .rst_shift = 2 },  };  static struct omap_hwmod omap44xx_iva_hwmod = { @@ -2789,10 +1755,6 @@ static struct omap_hwmod omap44xx_iva_hwmod = {  			.modulemode   = MODULEMODE_HWCTRL,  		},  	}, -	.slaves		= omap44xx_iva_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_iva_slaves), -	.masters	= omap44xx_iva_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_iva_masters),  };  /* @@ -2818,35 +1780,11 @@ static struct omap_hwmod_class omap44xx_kbd_hwmod_class = {  };  /* kbd */ -static struct omap_hwmod omap44xx_kbd_hwmod;  static struct omap_hwmod_irq_info omap44xx_kbd_irqs[] = {  	{ .irq = 120 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = { -	{ -		.pa_start	= 0x4a31c000, -		.pa_end		= 0x4a31c07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_wkup -> kbd */ -static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = { -	.master		= &omap44xx_l4_wkup_hwmod, -	.slave		= &omap44xx_kbd_hwmod, -	.clk		= "l4_wkup_clk_mux_ck", -	.addr		= omap44xx_kbd_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* kbd slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_kbd_slaves[] = { -	&omap44xx_l4_wkup__kbd, -}; -  static struct omap_hwmod omap44xx_kbd_hwmod = {  	.name		= "kbd",  	.class		= &omap44xx_kbd_hwmod_class, @@ -2860,8 +1798,6 @@ static struct omap_hwmod omap44xx_kbd_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_kbd_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_kbd_slaves),  };  /* @@ -2885,35 +1821,11 @@ static struct omap_hwmod_class omap44xx_mailbox_hwmod_class = {  };  /* mailbox */ -static struct omap_hwmod omap44xx_mailbox_hwmod;  static struct omap_hwmod_irq_info omap44xx_mailbox_irqs[] = {  	{ .irq = 26 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = { -	{ -		.pa_start	= 0x4a0f4000, -		.pa_end		= 0x4a0f41ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> mailbox */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_mailbox_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mailbox_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mailbox slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mailbox_slaves[] = { -	&omap44xx_l4_cfg__mailbox, -}; -  static struct omap_hwmod omap44xx_mailbox_hwmod = {  	.name		= "mailbox",  	.class		= &omap44xx_mailbox_hwmod_class, @@ -2925,8 +1837,58 @@ static struct omap_hwmod omap44xx_mailbox_hwmod = {  			.context_offs = OMAP4_RM_L4CFG_MAILBOX_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_mailbox_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mailbox_slaves), +}; + +/* + * 'mcasp' class + * multi-channel audio serial port controller + */ + +/* The IP is not compliant to type1 / type2 scheme */ +static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_mcasp = { +	.sidle_shift	= 0, +}; + +static struct omap_hwmod_class_sysconfig omap44xx_mcasp_sysc = { +	.sysc_offs	= 0x0004, +	.sysc_flags	= SYSC_HAS_SIDLEMODE, +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type_mcasp, +}; + +static struct omap_hwmod_class omap44xx_mcasp_hwmod_class = { +	.name	= "mcasp", +	.sysc	= &omap44xx_mcasp_sysc, +}; + +/* mcasp */ +static struct omap_hwmod_irq_info omap44xx_mcasp_irqs[] = { +	{ .name = "arevt", .irq = 108 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "axevt", .irq = 109 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod_dma_info omap44xx_mcasp_sdma_reqs[] = { +	{ .name = "axevt", .dma_req = 7 + OMAP44XX_DMA_REQ_START }, +	{ .name = "arevt", .dma_req = 10 + OMAP44XX_DMA_REQ_START }, +	{ .dma_req = -1 } +}; + +static struct omap_hwmod omap44xx_mcasp_hwmod = { +	.name		= "mcasp", +	.class		= &omap44xx_mcasp_hwmod_class, +	.clkdm_name	= "abe_clkdm", +	.mpu_irqs	= omap44xx_mcasp_irqs, +	.sdma_reqs	= omap44xx_mcasp_sdma_reqs, +	.main_clk	= "mcasp_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_ABE_MCASP_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	},  };  /* @@ -2949,9 +1911,8 @@ static struct omap_hwmod_class omap44xx_mcbsp_hwmod_class = {  };  /* mcbsp1 */ -static struct omap_hwmod omap44xx_mcbsp1_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcbsp1_irqs[] = { -	{ .irq = 17 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "common", .irq = 17 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; @@ -2961,50 +1922,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = { -	{ -		.name		= "mpu", -		.pa_start	= 0x40122000, -		.pa_end		= 0x401220ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp1_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp1_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = { -	{ -		.name		= "dma", -		.pa_start	= 0x49022000, -		.pa_end		= 0x490220ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp1 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp1_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp1_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* mcbsp1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcbsp1_slaves[] = { -	&omap44xx_l4_abe__mcbsp1, -	&omap44xx_l4_abe__mcbsp1_dma, -}; -  static struct omap_hwmod_opt_clk mcbsp1_opt_clks[] = {  	{ .role = "pad_fck", .clk = "pad_clks_ck" },  	{ .role = "prcm_clk", .clk = "mcbsp1_sync_mux_ck" }, @@ -3024,16 +1941,13 @@ static struct omap_hwmod omap44xx_mcbsp1_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mcbsp1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcbsp1_slaves),  	.opt_clks	= mcbsp1_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(mcbsp1_opt_clks),  };  /* mcbsp2 */ -static struct omap_hwmod omap44xx_mcbsp2_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcbsp2_irqs[] = { -	{ .irq = 22 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "common", .irq = 22 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; @@ -3043,50 +1957,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = { -	{ -		.name		= "mpu", -		.pa_start	= 0x40124000, -		.pa_end		= 0x401240ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp2_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp2_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = { -	{ -		.name		= "dma", -		.pa_start	= 0x49024000, -		.pa_end		= 0x490240ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp2 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp2_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp2_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* mcbsp2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcbsp2_slaves[] = { -	&omap44xx_l4_abe__mcbsp2, -	&omap44xx_l4_abe__mcbsp2_dma, -}; -  static struct omap_hwmod_opt_clk mcbsp2_opt_clks[] = {  	{ .role = "pad_fck", .clk = "pad_clks_ck" },  	{ .role = "prcm_clk", .clk = "mcbsp2_sync_mux_ck" }, @@ -3106,16 +1976,13 @@ static struct omap_hwmod omap44xx_mcbsp2_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mcbsp2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcbsp2_slaves),  	.opt_clks	= mcbsp2_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(mcbsp2_opt_clks),  };  /* mcbsp3 */ -static struct omap_hwmod omap44xx_mcbsp3_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcbsp3_irqs[] = { -	{ .irq = 23 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "common", .irq = 23 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; @@ -3125,50 +1992,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp3_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = { -	{ -		.name		= "mpu", -		.pa_start	= 0x40126000, -		.pa_end		= 0x401260ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp3_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp3_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = { -	{ -		.name		= "dma", -		.pa_start	= 0x49026000, -		.pa_end		= 0x490260ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcbsp3 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcbsp3_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcbsp3_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* mcbsp3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcbsp3_slaves[] = { -	&omap44xx_l4_abe__mcbsp3, -	&omap44xx_l4_abe__mcbsp3_dma, -}; -  static struct omap_hwmod_opt_clk mcbsp3_opt_clks[] = {  	{ .role = "pad_fck", .clk = "pad_clks_ck" },  	{ .role = "prcm_clk", .clk = "mcbsp3_sync_mux_ck" }, @@ -3188,16 +2011,13 @@ static struct omap_hwmod omap44xx_mcbsp3_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mcbsp3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcbsp3_slaves),  	.opt_clks	= mcbsp3_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(mcbsp3_opt_clks),  };  /* mcbsp4 */ -static struct omap_hwmod omap44xx_mcbsp4_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcbsp4_irqs[] = { -	{ .irq = 16 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "common", .irq = 16 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; @@ -3207,29 +2027,6 @@ static struct omap_hwmod_dma_info omap44xx_mcbsp4_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = { -	{ -		.pa_start	= 0x48096000, -		.pa_end		= 0x480960ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mcbsp4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mcbsp4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mcbsp4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mcbsp4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcbsp4_slaves[] = { -	&omap44xx_l4_per__mcbsp4, -}; -  static struct omap_hwmod_opt_clk mcbsp4_opt_clks[] = {  	{ .role = "pad_fck", .clk = "pad_clks_ck" },  	{ .role = "prcm_clk", .clk = "mcbsp4_sync_mux_ck" }, @@ -3249,8 +2046,6 @@ static struct omap_hwmod omap44xx_mcbsp4_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mcbsp4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcbsp4_slaves),  	.opt_clks	= mcbsp4_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(mcbsp4_opt_clks),  }; @@ -3277,7 +2072,6 @@ static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = {  };  /* mcpdm */ -static struct omap_hwmod omap44xx_mcpdm_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcpdm_irqs[] = {  	{ .irq = 112 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3289,48 +2083,6 @@ static struct omap_hwmod_dma_info omap44xx_mcpdm_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = { -	{ -		.pa_start	= 0x40132000, -		.pa_end		= 0x4013207f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcpdm */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcpdm_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcpdm_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = { -	{ -		.pa_start	= 0x49032000, -		.pa_end		= 0x4903207f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> mcpdm (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_mcpdm_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_mcpdm_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* mcpdm slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcpdm_slaves[] = { -	&omap44xx_l4_abe__mcpdm, -	&omap44xx_l4_abe__mcpdm_dma, -}; -  static struct omap_hwmod omap44xx_mcpdm_hwmod = {  	.name		= "mcpdm",  	.class		= &omap44xx_mcpdm_hwmod_class, @@ -3345,8 +2097,6 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mcpdm_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcpdm_slaves),  };  /* @@ -3372,7 +2122,6 @@ static struct omap_hwmod_class omap44xx_mcspi_hwmod_class = {  };  /* mcspi1 */ -static struct omap_hwmod omap44xx_mcspi1_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcspi1_irqs[] = {  	{ .irq = 65 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3390,29 +2139,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = { -	{ -		.pa_start	= 0x48098000, -		.pa_end		= 0x480981ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mcspi1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mcspi1_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mcspi1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mcspi1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcspi1_slaves[] = { -	&omap44xx_l4_per__mcspi1, -}; -  /* mcspi1 dev_attr */  static struct omap2_mcspi_dev_attr mcspi1_dev_attr = {  	.num_chipselect	= 4, @@ -3433,12 +2159,9 @@ static struct omap_hwmod omap44xx_mcspi1_hwmod = {  		},  	},  	.dev_attr	= &mcspi1_dev_attr, -	.slaves		= omap44xx_mcspi1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcspi1_slaves),  };  /* mcspi2 */ -static struct omap_hwmod omap44xx_mcspi2_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcspi2_irqs[] = {  	{ .irq = 66 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3452,29 +2175,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = { -	{ -		.pa_start	= 0x4809a000, -		.pa_end		= 0x4809a1ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mcspi2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mcspi2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mcspi2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mcspi2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcspi2_slaves[] = { -	&omap44xx_l4_per__mcspi2, -}; -  /* mcspi2 dev_attr */  static struct omap2_mcspi_dev_attr mcspi2_dev_attr = {  	.num_chipselect	= 2, @@ -3495,12 +2195,9 @@ static struct omap_hwmod omap44xx_mcspi2_hwmod = {  		},  	},  	.dev_attr	= &mcspi2_dev_attr, -	.slaves		= omap44xx_mcspi2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcspi2_slaves),  };  /* mcspi3 */ -static struct omap_hwmod omap44xx_mcspi3_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcspi3_irqs[] = {  	{ .irq = 91 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3514,29 +2211,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi3_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = { -	{ -		.pa_start	= 0x480b8000, -		.pa_end		= 0x480b81ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mcspi3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mcspi3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mcspi3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mcspi3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcspi3_slaves[] = { -	&omap44xx_l4_per__mcspi3, -}; -  /* mcspi3 dev_attr */  static struct omap2_mcspi_dev_attr mcspi3_dev_attr = {  	.num_chipselect	= 2, @@ -3557,12 +2231,9 @@ static struct omap_hwmod omap44xx_mcspi3_hwmod = {  		},  	},  	.dev_attr	= &mcspi3_dev_attr, -	.slaves		= omap44xx_mcspi3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcspi3_slaves),  };  /* mcspi4 */ -static struct omap_hwmod omap44xx_mcspi4_hwmod;  static struct omap_hwmod_irq_info omap44xx_mcspi4_irqs[] = {  	{ .irq = 48 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3574,29 +2245,6 @@ static struct omap_hwmod_dma_info omap44xx_mcspi4_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = { -	{ -		.pa_start	= 0x480ba000, -		.pa_end		= 0x480ba1ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mcspi4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mcspi4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mcspi4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mcspi4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mcspi4_slaves[] = { -	&omap44xx_l4_per__mcspi4, -}; -  /* mcspi4 dev_attr */  static struct omap2_mcspi_dev_attr mcspi4_dev_attr = {  	.num_chipselect	= 1, @@ -3617,8 +2265,6 @@ static struct omap_hwmod omap44xx_mcspi4_hwmod = {  		},  	},  	.dev_attr	= &mcspi4_dev_attr, -	.slaves		= omap44xx_mcspi4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mcspi4_slaves),  };  /* @@ -3655,34 +2301,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -/* mmc1 master ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc1_masters[] = { -	&omap44xx_mmc1__l3_main_1, -}; - -static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = { -	{ -		.pa_start	= 0x4809c000, -		.pa_end		= 0x4809c3ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mmc1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mmc1_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mmc1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc1_slaves[] = { -	&omap44xx_l4_per__mmc1, -}; -  /* mmc1 dev_attr */  static struct omap_mmc_dev_attr mmc1_dev_attr = {  	.flags	= OMAP_HSMMC_SUPPORTS_DUAL_VOLT, @@ -3703,10 +2321,6 @@ static struct omap_hwmod omap44xx_mmc1_hwmod = {  		},  	},  	.dev_attr	= &mmc1_dev_attr, -	.slaves		= omap44xx_mmc1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mmc1_slaves), -	.masters	= omap44xx_mmc1_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_mmc1_masters),  };  /* mmc2 */ @@ -3721,34 +2335,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -/* mmc2 master ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc2_masters[] = { -	&omap44xx_mmc2__l3_main_1, -}; - -static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = { -	{ -		.pa_start	= 0x480b4000, -		.pa_end		= 0x480b43ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mmc2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mmc2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mmc2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc2_slaves[] = { -	&omap44xx_l4_per__mmc2, -}; -  static struct omap_hwmod omap44xx_mmc2_hwmod = {  	.name		= "mmc2",  	.class		= &omap44xx_mmc_hwmod_class, @@ -3763,14 +2349,9 @@ static struct omap_hwmod omap44xx_mmc2_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mmc2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mmc2_slaves), -	.masters	= omap44xx_mmc2_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_mmc2_masters),  };  /* mmc3 */ -static struct omap_hwmod omap44xx_mmc3_hwmod;  static struct omap_hwmod_irq_info omap44xx_mmc3_irqs[] = {  	{ .irq = 94 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3782,29 +2363,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc3_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = { -	{ -		.pa_start	= 0x480ad000, -		.pa_end		= 0x480ad3ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mmc3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mmc3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mmc3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc3_slaves[] = { -	&omap44xx_l4_per__mmc3, -}; -  static struct omap_hwmod omap44xx_mmc3_hwmod = {  	.name		= "mmc3",  	.class		= &omap44xx_mmc_hwmod_class, @@ -3819,12 +2377,9 @@ static struct omap_hwmod omap44xx_mmc3_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mmc3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mmc3_slaves),  };  /* mmc4 */ -static struct omap_hwmod omap44xx_mmc4_hwmod;  static struct omap_hwmod_irq_info omap44xx_mmc4_irqs[] = {  	{ .irq = 96 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3836,35 +2391,11 @@ static struct omap_hwmod_dma_info omap44xx_mmc4_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = { -	{ -		.pa_start	= 0x480d1000, -		.pa_end		= 0x480d13ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mmc4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mmc4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mmc4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc4_slaves[] = { -	&omap44xx_l4_per__mmc4, -}; -  static struct omap_hwmod omap44xx_mmc4_hwmod = {  	.name		= "mmc4",  	.class		= &omap44xx_mmc_hwmod_class,  	.clkdm_name	= "l4_per_clkdm",  	.mpu_irqs	= omap44xx_mmc4_irqs, -  	.sdma_reqs	= omap44xx_mmc4_sdma_reqs,  	.main_clk	= "mmc4_fck",  	.prcm = { @@ -3874,12 +2405,9 @@ static struct omap_hwmod omap44xx_mmc4_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mmc4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mmc4_slaves),  };  /* mmc5 */ -static struct omap_hwmod omap44xx_mmc5_hwmod;  static struct omap_hwmod_irq_info omap44xx_mmc5_irqs[] = {  	{ .irq = 59 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -3891,29 +2419,6 @@ static struct omap_hwmod_dma_info omap44xx_mmc5_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = { -	{ -		.pa_start	= 0x480d5000, -		.pa_end		= 0x480d53ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> mmc5 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_mmc5_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_mmc5_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* mmc5 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_mmc5_slaves[] = { -	&omap44xx_l4_per__mmc5, -}; -  static struct omap_hwmod omap44xx_mmc5_hwmod = {  	.name		= "mmc5",  	.class		= &omap44xx_mmc_hwmod_class, @@ -3928,8 +2433,6 @@ static struct omap_hwmod omap44xx_mmc5_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_mmc5_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_mmc5_slaves),  };  /* @@ -3949,13 +2452,6 @@ static struct omap_hwmod_irq_info omap44xx_mpu_irqs[] = {  	{ .irq = -1 }  }; -/* mpu master ports */ -static struct omap_hwmod_ocp_if *omap44xx_mpu_masters[] = { -	&omap44xx_mpu__l3_main_1, -	&omap44xx_mpu__l4_abe, -	&omap44xx_mpu__dmm, -}; -  static struct omap_hwmod omap44xx_mpu_hwmod = {  	.name		= "mpu",  	.class		= &omap44xx_mpu_hwmod_class, @@ -3969,8 +2465,252 @@ static struct omap_hwmod omap44xx_mpu_hwmod = {  			.context_offs = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,  		},  	}, -	.masters	= omap44xx_mpu_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_mpu_masters), +}; + +/* + * 'ocmc_ram' class + * top-level core on-chip ram + */ + +static struct omap_hwmod_class omap44xx_ocmc_ram_hwmod_class = { +	.name	= "ocmc_ram", +}; + +/* ocmc_ram */ +static struct omap_hwmod omap44xx_ocmc_ram_hwmod = { +	.name		= "ocmc_ram", +	.class		= &omap44xx_ocmc_ram_hwmod_class, +	.clkdm_name	= "l3_2_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3_2_OCMC_RAM_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3_2_OCMC_RAM_CONTEXT_OFFSET, +		}, +	}, +}; + +/* + * 'ocp2scp' class + * bridge to transform ocp interface protocol to scp (serial control port) + * protocol + */ + +static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = { +	.name	= "ocp2scp", +}; + +/* ocp2scp_usb_phy */ +static struct omap_hwmod_opt_clk ocp2scp_usb_phy_opt_clks[] = { +	{ .role = "phy_48m", .clk = "ocp2scp_usb_phy_phy_48m" }, +}; + +static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { +	.name		= "ocp2scp_usb_phy", +	.class		= &omap44xx_ocp2scp_hwmod_class, +	.clkdm_name	= "l3_init_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +	.opt_clks	= ocp2scp_usb_phy_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(ocp2scp_usb_phy_opt_clks), +}; + +/* + * 'prcm' class + * power and reset manager (part of the prcm infrastructure) + clock manager 2 + * + clock manager 1 (in always on power domain) + local prm in mpu + */ + +static struct omap_hwmod_class omap44xx_prcm_hwmod_class = { +	.name	= "prcm", +}; + +/* prcm_mpu */ +static struct omap_hwmod omap44xx_prcm_mpu_hwmod = { +	.name		= "prcm_mpu", +	.class		= &omap44xx_prcm_hwmod_class, +	.clkdm_name	= "l4_wkup_clkdm", +}; + +/* cm_core_aon */ +static struct omap_hwmod omap44xx_cm_core_aon_hwmod = { +	.name		= "cm_core_aon", +	.class		= &omap44xx_prcm_hwmod_class, +	.clkdm_name	= "cm_clkdm", +}; + +/* cm_core */ +static struct omap_hwmod omap44xx_cm_core_hwmod = { +	.name		= "cm_core", +	.class		= &omap44xx_prcm_hwmod_class, +	.clkdm_name	= "cm_clkdm", +}; + +/* prm */ +static struct omap_hwmod_irq_info omap44xx_prm_irqs[] = { +	{ .irq = 11 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod_rst_info omap44xx_prm_resets[] = { +	{ .name = "rst_global_warm_sw", .rst_shift = 0 }, +	{ .name = "rst_global_cold_sw", .rst_shift = 1 }, +}; + +static struct omap_hwmod omap44xx_prm_hwmod = { +	.name		= "prm", +	.class		= &omap44xx_prcm_hwmod_class, +	.clkdm_name	= "prm_clkdm", +	.mpu_irqs	= omap44xx_prm_irqs, +	.rst_lines	= omap44xx_prm_resets, +	.rst_lines_cnt	= ARRAY_SIZE(omap44xx_prm_resets), +}; + +/* + * 'scrm' class + * system clock and reset manager + */ + +static struct omap_hwmod_class omap44xx_scrm_hwmod_class = { +	.name	= "scrm", +}; + +/* scrm */ +static struct omap_hwmod omap44xx_scrm_hwmod = { +	.name		= "scrm", +	.class		= &omap44xx_scrm_hwmod_class, +	.clkdm_name	= "l4_wkup_clkdm", +}; + +/* + * 'sl2if' class + * shared level 2 memory interface + */ + +static struct omap_hwmod_class omap44xx_sl2if_hwmod_class = { +	.name	= "sl2if", +}; + +/* sl2if */ +static struct omap_hwmod omap44xx_sl2if_hwmod = { +	.name		= "sl2if", +	.class		= &omap44xx_sl2if_hwmod_class, +	.clkdm_name	= "ivahd_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_IVAHD_SL2_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_IVAHD_SL2_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* + * 'slimbus' class + * bidirectional, multi-drop, multi-channel two-line serial interface between + * the device and external components + */ + +static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.sysc_flags	= (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_SOFTRESET), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = { +	.name	= "slimbus", +	.sysc	= &omap44xx_slimbus_sysc, +}; + +/* slimbus1 */ +static struct omap_hwmod_irq_info omap44xx_slimbus1_irqs[] = { +	{ .irq = 97 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod_dma_info omap44xx_slimbus1_sdma_reqs[] = { +	{ .name = "tx0", .dma_req = 84 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx1", .dma_req = 85 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx2", .dma_req = 86 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx3", .dma_req = 87 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx0", .dma_req = 88 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx1", .dma_req = 89 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx2", .dma_req = 90 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx3", .dma_req = 91 + OMAP44XX_DMA_REQ_START }, +	{ .dma_req = -1 } +}; + +static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = { +	{ .role = "fclk_1", .clk = "slimbus1_fclk_1" }, +	{ .role = "fclk_0", .clk = "slimbus1_fclk_0" }, +	{ .role = "fclk_2", .clk = "slimbus1_fclk_2" }, +	{ .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" }, +}; + +static struct omap_hwmod omap44xx_slimbus1_hwmod = { +	.name		= "slimbus1", +	.class		= &omap44xx_slimbus_hwmod_class, +	.clkdm_name	= "abe_clkdm", +	.mpu_irqs	= omap44xx_slimbus1_irqs, +	.sdma_reqs	= omap44xx_slimbus1_sdma_reqs, +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +	.opt_clks	= slimbus1_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(slimbus1_opt_clks), +}; + +/* slimbus2 */ +static struct omap_hwmod_irq_info omap44xx_slimbus2_irqs[] = { +	{ .irq = 98 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod_dma_info omap44xx_slimbus2_sdma_reqs[] = { +	{ .name = "tx0", .dma_req = 92 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx1", .dma_req = 93 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx2", .dma_req = 94 + OMAP44XX_DMA_REQ_START }, +	{ .name = "tx3", .dma_req = 95 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx0", .dma_req = 96 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx1", .dma_req = 97 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx2", .dma_req = 98 + OMAP44XX_DMA_REQ_START }, +	{ .name = "rx3", .dma_req = 99 + OMAP44XX_DMA_REQ_START }, +	{ .dma_req = -1 } +}; + +static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = { +	{ .role = "fclk_1", .clk = "slimbus2_fclk_1" }, +	{ .role = "fclk_0", .clk = "slimbus2_fclk_0" }, +	{ .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" }, +}; + +static struct omap_hwmod omap44xx_slimbus2_hwmod = { +	.name		= "slimbus2", +	.class		= &omap44xx_slimbus_hwmod_class, +	.clkdm_name	= "l4_per_clkdm", +	.mpu_irqs	= omap44xx_slimbus2_irqs, +	.sdma_reqs	= omap44xx_slimbus2_sdma_reqs, +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +	.opt_clks	= slimbus2_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(slimbus2_opt_clks),  };  /* @@ -4004,35 +2744,11 @@ static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = {  	.sensor_voltdm_name   = "core",  }; -static struct omap_hwmod omap44xx_smartreflex_core_hwmod;  static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {  	{ .irq = 19 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = { -	{ -		.pa_start	= 0x4a0dd000, -		.pa_end		= 0x4a0dd03f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> smartreflex_core */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_smartreflex_core_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_smartreflex_core_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* smartreflex_core slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_smartreflex_core_slaves[] = { -	&omap44xx_l4_cfg__smartreflex_core, -}; -  static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {  	.name		= "smartreflex_core",  	.class		= &omap44xx_smartreflex_hwmod_class, @@ -4047,8 +2763,6 @@ static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_smartreflex_core_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_smartreflex_core_slaves),  	.dev_attr	= &smartreflex_core_dev_attr,  }; @@ -4057,35 +2771,11 @@ static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = {  	.sensor_voltdm_name	= "iva",  }; -static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;  static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {  	{ .irq = 102 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = { -	{ -		.pa_start	= 0x4a0db000, -		.pa_end		= 0x4a0db03f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> smartreflex_iva */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_smartreflex_iva_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_smartreflex_iva_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* smartreflex_iva slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_smartreflex_iva_slaves[] = { -	&omap44xx_l4_cfg__smartreflex_iva, -}; -  static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {  	.name		= "smartreflex_iva",  	.class		= &omap44xx_smartreflex_hwmod_class, @@ -4099,8 +2789,6 @@ static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_smartreflex_iva_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),  	.dev_attr	= &smartreflex_iva_dev_attr,  }; @@ -4109,35 +2797,11 @@ static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = {  	.sensor_voltdm_name	= "mpu",  }; -static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;  static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {  	{ .irq = 18 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = { -	{ -		.pa_start	= 0x4a0d9000, -		.pa_end		= 0x4a0d903f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> smartreflex_mpu */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_smartreflex_mpu_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_smartreflex_mpu_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* smartreflex_mpu slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_smartreflex_mpu_slaves[] = { -	&omap44xx_l4_cfg__smartreflex_mpu, -}; -  static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {  	.name		= "smartreflex_mpu",  	.class		= &omap44xx_smartreflex_hwmod_class, @@ -4151,8 +2815,6 @@ static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_smartreflex_mpu_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),  	.dev_attr	= &smartreflex_mpu_dev_attr,  }; @@ -4180,30 +2842,6 @@ static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = {  };  /* spinlock */ -static struct omap_hwmod omap44xx_spinlock_hwmod; -static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = { -	{ -		.pa_start	= 0x4a0f6000, -		.pa_end		= 0x4a0f6fff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> spinlock */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_spinlock_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_spinlock_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* spinlock slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_spinlock_slaves[] = { -	&omap44xx_l4_cfg__spinlock, -}; -  static struct omap_hwmod omap44xx_spinlock_hwmod = {  	.name		= "spinlock",  	.class		= &omap44xx_spinlock_hwmod_class, @@ -4214,8 +2852,6 @@ static struct omap_hwmod omap44xx_spinlock_hwmod = {  			.context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET,  		},  	}, -	.slaves		= omap44xx_spinlock_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_spinlock_slaves),  };  /* @@ -4267,35 +2903,11 @@ static struct omap_timer_capability_dev_attr capability_pwm_dev_attr = {  };  /* timer1 */ -static struct omap_hwmod omap44xx_timer1_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer1_irqs[] = {  	{ .irq = 37 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = { -	{ -		.pa_start	= 0x4a318000, -		.pa_end		= 0x4a31807f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_wkup -> timer1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = { -	.master		= &omap44xx_l4_wkup_hwmod, -	.slave		= &omap44xx_timer1_hwmod, -	.clk		= "l4_wkup_clk_mux_ck", -	.addr		= omap44xx_timer1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer1_slaves[] = { -	&omap44xx_l4_wkup__timer1, -}; -  static struct omap_hwmod omap44xx_timer1_hwmod = {  	.name		= "timer1",  	.class		= &omap44xx_timer_1ms_hwmod_class, @@ -4310,40 +2922,14 @@ static struct omap_hwmod omap44xx_timer1_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer1_slaves),  };  /* timer2 */ -static struct omap_hwmod omap44xx_timer2_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer2_irqs[] = {  	{ .irq = 38 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = { -	{ -		.pa_start	= 0x48032000, -		.pa_end		= 0x4803207f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer2_slaves[] = { -	&omap44xx_l4_per__timer2, -}; -  static struct omap_hwmod omap44xx_timer2_hwmod = {  	.name		= "timer2",  	.class		= &omap44xx_timer_1ms_hwmod_class, @@ -4358,40 +2944,14 @@ static struct omap_hwmod omap44xx_timer2_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer2_slaves),  };  /* timer3 */ -static struct omap_hwmod omap44xx_timer3_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer3_irqs[] = {  	{ .irq = 39 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = { -	{ -		.pa_start	= 0x48034000, -		.pa_end		= 0x4803407f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer3_slaves[] = { -	&omap44xx_l4_per__timer3, -}; -  static struct omap_hwmod omap44xx_timer3_hwmod = {  	.name		= "timer3",  	.class		= &omap44xx_timer_hwmod_class, @@ -4406,40 +2966,14 @@ static struct omap_hwmod omap44xx_timer3_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer3_slaves),  };  /* timer4 */ -static struct omap_hwmod omap44xx_timer4_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer4_irqs[] = {  	{ .irq = 40 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = { -	{ -		.pa_start	= 0x48036000, -		.pa_end		= 0x4803607f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer4_slaves[] = { -	&omap44xx_l4_per__timer4, -}; -  static struct omap_hwmod omap44xx_timer4_hwmod = {  	.name		= "timer4",  	.class		= &omap44xx_timer_hwmod_class, @@ -4454,59 +2988,14 @@ static struct omap_hwmod omap44xx_timer4_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer4_slaves),  };  /* timer5 */ -static struct omap_hwmod omap44xx_timer5_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer5_irqs[] = {  	{ .irq = 41 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = { -	{ -		.pa_start	= 0x40138000, -		.pa_end		= 0x4013807f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer5 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer5_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer5_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = { -	{ -		.pa_start	= 0x49038000, -		.pa_end		= 0x4903807f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer5 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer5_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer5_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* timer5 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer5_slaves[] = { -	&omap44xx_l4_abe__timer5, -	&omap44xx_l4_abe__timer5_dma, -}; -  static struct omap_hwmod omap44xx_timer5_hwmod = {  	.name		= "timer5",  	.class		= &omap44xx_timer_hwmod_class, @@ -4521,59 +3010,14 @@ static struct omap_hwmod omap44xx_timer5_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer5_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer5_slaves),  };  /* timer6 */ -static struct omap_hwmod omap44xx_timer6_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer6_irqs[] = {  	{ .irq = 42 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = { -	{ -		.pa_start	= 0x4013a000, -		.pa_end		= 0x4013a07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer6 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer6_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer6_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = { -	{ -		.pa_start	= 0x4903a000, -		.pa_end		= 0x4903a07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer6 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer6_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer6_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* timer6 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer6_slaves[] = { -	&omap44xx_l4_abe__timer6, -	&omap44xx_l4_abe__timer6_dma, -}; -  static struct omap_hwmod omap44xx_timer6_hwmod = {  	.name		= "timer6",  	.class		= &omap44xx_timer_hwmod_class, @@ -4589,59 +3033,14 @@ static struct omap_hwmod omap44xx_timer6_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer6_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer6_slaves),  };  /* timer7 */ -static struct omap_hwmod omap44xx_timer7_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer7_irqs[] = {  	{ .irq = 43 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = { -	{ -		.pa_start	= 0x4013c000, -		.pa_end		= 0x4013c07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer7 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer7_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer7_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = { -	{ -		.pa_start	= 0x4903c000, -		.pa_end		= 0x4903c07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer7 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer7_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer7_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* timer7 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer7_slaves[] = { -	&omap44xx_l4_abe__timer7, -	&omap44xx_l4_abe__timer7_dma, -}; -  static struct omap_hwmod omap44xx_timer7_hwmod = {  	.name		= "timer7",  	.class		= &omap44xx_timer_hwmod_class, @@ -4656,59 +3055,14 @@ static struct omap_hwmod omap44xx_timer7_hwmod = {  		},  	},  	.dev_attr	= &capability_alwon_dev_attr, -	.slaves		= omap44xx_timer7_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer7_slaves),  };  /* timer8 */ -static struct omap_hwmod omap44xx_timer8_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer8_irqs[] = {  	{ .irq = 44 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = { -	{ -		.pa_start	= 0x4013e000, -		.pa_end		= 0x4013e07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer8 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer8_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer8_addrs, -	.user		= OCP_USER_MPU, -}; - -static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = { -	{ -		.pa_start	= 0x4903e000, -		.pa_end		= 0x4903e07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_abe -> timer8 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = { -	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_timer8_hwmod, -	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_timer8_dma_addrs, -	.user		= OCP_USER_SDMA, -}; - -/* timer8 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer8_slaves[] = { -	&omap44xx_l4_abe__timer8, -	&omap44xx_l4_abe__timer8_dma, -}; -  static struct omap_hwmod omap44xx_timer8_hwmod = {  	.name		= "timer8",  	.class		= &omap44xx_timer_hwmod_class, @@ -4723,40 +3077,14 @@ static struct omap_hwmod omap44xx_timer8_hwmod = {  		},  	},  	.dev_attr	= &capability_pwm_dev_attr, -	.slaves		= omap44xx_timer8_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer8_slaves),  };  /* timer9 */ -static struct omap_hwmod omap44xx_timer9_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer9_irqs[] = {  	{ .irq = 45 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = { -	{ -		.pa_start	= 0x4803e000, -		.pa_end		= 0x4803e07f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer9 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer9_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer9_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer9 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer9_slaves[] = { -	&omap44xx_l4_per__timer9, -}; -  static struct omap_hwmod omap44xx_timer9_hwmod = {  	.name		= "timer9",  	.class		= &omap44xx_timer_hwmod_class, @@ -4771,40 +3099,14 @@ static struct omap_hwmod omap44xx_timer9_hwmod = {  		},  	},  	.dev_attr	= &capability_pwm_dev_attr, -	.slaves		= omap44xx_timer9_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer9_slaves),  };  /* timer10 */ -static struct omap_hwmod omap44xx_timer10_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer10_irqs[] = {  	{ .irq = 46 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = { -	{ -		.pa_start	= 0x48086000, -		.pa_end		= 0x4808607f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer10 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer10_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer10_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer10 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer10_slaves[] = { -	&omap44xx_l4_per__timer10, -}; -  static struct omap_hwmod omap44xx_timer10_hwmod = {  	.name		= "timer10",  	.class		= &omap44xx_timer_1ms_hwmod_class, @@ -4819,40 +3121,14 @@ static struct omap_hwmod omap44xx_timer10_hwmod = {  		},  	},  	.dev_attr	= &capability_pwm_dev_attr, -	.slaves		= omap44xx_timer10_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer10_slaves),  };  /* timer11 */ -static struct omap_hwmod omap44xx_timer11_hwmod;  static struct omap_hwmod_irq_info omap44xx_timer11_irqs[] = {  	{ .irq = 47 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = { -	{ -		.pa_start	= 0x48088000, -		.pa_end		= 0x4808807f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> timer11 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_timer11_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_timer11_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* timer11 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_timer11_slaves[] = { -	&omap44xx_l4_per__timer11, -}; -  static struct omap_hwmod omap44xx_timer11_hwmod = {  	.name		= "timer11",  	.class		= &omap44xx_timer_hwmod_class, @@ -4867,8 +3143,6 @@ static struct omap_hwmod omap44xx_timer11_hwmod = {  		},  	},  	.dev_attr	= &capability_pwm_dev_attr, -	.slaves		= omap44xx_timer11_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_timer11_slaves),  };  /* @@ -4894,7 +3168,6 @@ static struct omap_hwmod_class omap44xx_uart_hwmod_class = {  };  /* uart1 */ -static struct omap_hwmod omap44xx_uart1_hwmod;  static struct omap_hwmod_irq_info omap44xx_uart1_irqs[] = {  	{ .irq = 72 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -4906,29 +3179,6 @@ static struct omap_hwmod_dma_info omap44xx_uart1_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = { -	{ -		.pa_start	= 0x4806a000, -		.pa_end		= 0x4806a0ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> uart1 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_uart1_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_uart1_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* uart1 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_uart1_slaves[] = { -	&omap44xx_l4_per__uart1, -}; -  static struct omap_hwmod omap44xx_uart1_hwmod = {  	.name		= "uart1",  	.class		= &omap44xx_uart_hwmod_class, @@ -4943,12 +3193,9 @@ static struct omap_hwmod omap44xx_uart1_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_uart1_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_uart1_slaves),  };  /* uart2 */ -static struct omap_hwmod omap44xx_uart2_hwmod;  static struct omap_hwmod_irq_info omap44xx_uart2_irqs[] = {  	{ .irq = 73 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -4960,29 +3207,6 @@ static struct omap_hwmod_dma_info omap44xx_uart2_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = { -	{ -		.pa_start	= 0x4806c000, -		.pa_end		= 0x4806c0ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> uart2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_uart2_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_uart2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* uart2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_uart2_slaves[] = { -	&omap44xx_l4_per__uart2, -}; -  static struct omap_hwmod omap44xx_uart2_hwmod = {  	.name		= "uart2",  	.class		= &omap44xx_uart_hwmod_class, @@ -4997,12 +3221,9 @@ static struct omap_hwmod omap44xx_uart2_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_uart2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_uart2_slaves),  };  /* uart3 */ -static struct omap_hwmod omap44xx_uart3_hwmod;  static struct omap_hwmod_irq_info omap44xx_uart3_irqs[] = {  	{ .irq = 74 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -5014,29 +3235,6 @@ static struct omap_hwmod_dma_info omap44xx_uart3_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = { -	{ -		.pa_start	= 0x48020000, -		.pa_end		= 0x480200ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> uart3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_uart3_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_uart3_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* uart3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_uart3_slaves[] = { -	&omap44xx_l4_per__uart3, -}; -  static struct omap_hwmod omap44xx_uart3_hwmod = {  	.name		= "uart3",  	.class		= &omap44xx_uart_hwmod_class, @@ -5052,12 +3250,9 @@ static struct omap_hwmod omap44xx_uart3_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_uart3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_uart3_slaves),  };  /* uart4 */ -static struct omap_hwmod omap44xx_uart4_hwmod;  static struct omap_hwmod_irq_info omap44xx_uart4_irqs[] = {  	{ .irq = 70 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 } @@ -5069,29 +3264,6 @@ static struct omap_hwmod_dma_info omap44xx_uart4_sdma_reqs[] = {  	{ .dma_req = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = { -	{ -		.pa_start	= 0x4806e000, -		.pa_end		= 0x4806e0ff, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_per -> uart4 */ -static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = { -	.master		= &omap44xx_l4_per_hwmod, -	.slave		= &omap44xx_uart4_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_uart4_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* uart4 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_uart4_slaves[] = { -	&omap44xx_l4_per__uart4, -}; -  static struct omap_hwmod omap44xx_uart4_hwmod = {  	.name		= "uart4",  	.class		= &omap44xx_uart_hwmod_class, @@ -5106,8 +3278,147 @@ static struct omap_hwmod omap44xx_uart4_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_uart4_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_uart4_slaves), +}; + +/* + * 'usb_host_fs' class + * full-speed usb host controller + */ + +/* The IP is not compliant to type1 / type2 scheme */ +static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_usb_host_fs = { +	.midle_shift	= 4, +	.sidle_shift	= 2, +	.srst_shift	= 1, +}; + +static struct omap_hwmod_class_sysconfig omap44xx_usb_host_fs_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0210, +	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_SOFTRESET), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type_usb_host_fs, +}; + +static struct omap_hwmod_class omap44xx_usb_host_fs_hwmod_class = { +	.name	= "usb_host_fs", +	.sysc	= &omap44xx_usb_host_fs_sysc, +}; + +/* usb_host_fs */ +static struct omap_hwmod_irq_info omap44xx_usb_host_fs_irqs[] = { +	{ .name = "std", .irq = 89 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "smi", .irq = 90 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_usb_host_fs_hwmod = { +	.name		= "usb_host_fs", +	.class		= &omap44xx_usb_host_fs_hwmod_class, +	.clkdm_name	= "l3_init_clkdm", +	.mpu_irqs	= omap44xx_usb_host_fs_irqs, +	.main_clk	= "usb_host_fs_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_FS_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3INIT_USB_HOST_FS_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +}; + +/* + * 'usb_host_hs' class + * high-speed multi-port usb host controller + */ + +static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_SOFTRESET), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | +			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | +			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP), +	.sysc_fields	= &omap_hwmod_sysc_type2, +}; + +static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = { +	.name	= "usb_host_hs", +	.sysc	= &omap44xx_usb_host_hs_sysc, +}; + +/* usb_host_hs */ +static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = { +	{ .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START }, +	{ .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_usb_host_hs_hwmod = { +	.name		= "usb_host_hs", +	.class		= &omap44xx_usb_host_hs_hwmod_class, +	.clkdm_name	= "l3_init_clkdm", +	.main_clk	= "usb_host_hs_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +	.mpu_irqs	= omap44xx_usb_host_hs_irqs, + +	/* +	 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock +	 * id: i660 +	 * +	 * Description: +	 * In the following configuration : +	 * - USBHOST module is set to smart-idle mode +	 * - PRCM asserts idle_req to the USBHOST module ( This typically +	 *   happens when the system is going to a low power mode : all ports +	 *   have been suspended, the master part of the USBHOST module has +	 *   entered the standby state, and SW has cut the functional clocks) +	 * - an USBHOST interrupt occurs before the module is able to answer +	 *   idle_ack, typically a remote wakeup IRQ. +	 * Then the USB HOST module will enter a deadlock situation where it +	 * is no more accessible nor functional. +	 * +	 * Workaround: +	 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE +	 */ + +	/* +	 * Errata: USB host EHCI may stall when entering smart-standby mode +	 * Id: i571 +	 * +	 * Description: +	 * When the USBHOST module is set to smart-standby mode, and when it is +	 * ready to enter the standby state (i.e. all ports are suspended and +	 * all attached devices are in suspend mode), then it can wrongly assert +	 * the Mstandby signal too early while there are still some residual OCP +	 * transactions ongoing. If this condition occurs, the internal state +	 * machine may go to an undefined state and the USB link may be stuck +	 * upon the next resume. +	 * +	 * Workaround: +	 * Don't use smart standby; use only force standby, +	 * hence HWMOD_SWSUP_MSTANDBY +	 */ + +	/* +	 * During system boot; If the hwmod framework resets the module +	 * the module will have smart idle settings; which can lead to deadlock +	 * (above Errata Id:i660); so, dont reset the module during boot; +	 * Use HWMOD_INIT_NO_RESET. +	 */ + +	.flags		= HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY | +			  HWMOD_INIT_NO_RESET,  };  /* @@ -5140,34 +3451,6 @@ static struct omap_hwmod_irq_info omap44xx_usb_otg_hs_irqs[] = {  	{ .irq = -1 }  }; -/* usb_otg_hs master ports */ -static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_masters[] = { -	&omap44xx_usb_otg_hs__l3_main_2, -}; - -static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = { -	{ -		.pa_start	= 0x4a0ab000, -		.pa_end		= 0x4a0ab003, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_cfg -> usb_otg_hs */ -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = { -	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_usb_otg_hs_hwmod, -	.clk		= "l4_div_ck", -	.addr		= omap44xx_usb_otg_hs_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* usb_otg_hs slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_usb_otg_hs_slaves[] = { -	&omap44xx_l4_cfg__usb_otg_hs, -}; -  static struct omap_hwmod_opt_clk usb_otg_hs_opt_clks[] = {  	{ .role = "xclk", .clk = "usb_otg_hs_xclk" },  }; @@ -5188,10 +3471,47 @@ static struct omap_hwmod omap44xx_usb_otg_hs_hwmod = {  	},  	.opt_clks	= usb_otg_hs_opt_clks,  	.opt_clks_cnt	= ARRAY_SIZE(usb_otg_hs_opt_clks), -	.slaves		= omap44xx_usb_otg_hs_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_usb_otg_hs_slaves), -	.masters	= omap44xx_usb_otg_hs_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_usb_otg_hs_masters), +}; + +/* + * 'usb_tll_hs' class + * usb_tll_hs module is the adapter on the usb_host_hs ports + */ + +static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | +			   SYSC_HAS_AUTOIDLE), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = { +	.name	= "usb_tll_hs", +	.sysc	= &omap44xx_usb_tll_hs_sysc, +}; + +static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = { +	{ .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START }, +	{ .irq = -1 } +}; + +static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = { +	.name		= "usb_tll_hs", +	.class		= &omap44xx_usb_tll_hs_hwmod_class, +	.clkdm_name	= "l3_init_clkdm", +	.mpu_irqs	= omap44xx_usb_tll_hs_irqs, +	.main_clk	= "usb_tll_hs_ick", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	},  };  /* @@ -5215,38 +3535,15 @@ static struct omap_hwmod_class omap44xx_wd_timer_hwmod_class = {  	.name		= "wd_timer",  	.sysc		= &omap44xx_wd_timer_sysc,  	.pre_shutdown	= &omap2_wd_timer_disable, +	.reset		= &omap2_wd_timer_reset,  };  /* wd_timer2 */ -static struct omap_hwmod omap44xx_wd_timer2_hwmod;  static struct omap_hwmod_irq_info omap44xx_wd_timer2_irqs[] = {  	{ .irq = 80 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = { -	{ -		.pa_start	= 0x4a314000, -		.pa_end		= 0x4a31407f, -		.flags		= ADDR_TYPE_RT -	}, -	{ } -}; - -/* l4_wkup -> wd_timer2 */ -static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = { -	.master		= &omap44xx_l4_wkup_hwmod, -	.slave		= &omap44xx_wd_timer2_hwmod, -	.clk		= "l4_wkup_clk_mux_ck", -	.addr		= omap44xx_wd_timer2_addrs, -	.user		= OCP_USER_MPU | OCP_USER_SDMA, -}; - -/* wd_timer2 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_wd_timer2_slaves[] = { -	&omap44xx_l4_wkup__wd_timer2, -}; -  static struct omap_hwmod omap44xx_wd_timer2_hwmod = {  	.name		= "wd_timer2",  	.class		= &omap44xx_wd_timer_hwmod_class, @@ -5260,431 +3557,2593 @@ static struct omap_hwmod omap44xx_wd_timer2_hwmod = {  			.modulemode   = MODULEMODE_SWCTRL,  		},  	}, -	.slaves		= omap44xx_wd_timer2_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_wd_timer2_slaves),  };  /* wd_timer3 */ -static struct omap_hwmod omap44xx_wd_timer3_hwmod;  static struct omap_hwmod_irq_info omap44xx_wd_timer3_irqs[] = {  	{ .irq = 36 + OMAP44XX_IRQ_GIC_START },  	{ .irq = -1 }  }; -static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = { +static struct omap_hwmod omap44xx_wd_timer3_hwmod = { +	.name		= "wd_timer3", +	.class		= &omap44xx_wd_timer_hwmod_class, +	.clkdm_name	= "abe_clkdm", +	.mpu_irqs	= omap44xx_wd_timer3_irqs, +	.main_clk	= "wd_timer3_fck", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET, +			.context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_SWCTRL, +		}, +	}, +}; + + +/* + * interfaces + */ + +static struct omap_hwmod_addr_space omap44xx_c2c_target_fw_addrs[] = {  	{ -		.pa_start	= 0x40130000, -		.pa_end		= 0x4013007f, +		.pa_start	= 0x4a204000, +		.pa_end		= 0x4a2040ff,  		.flags		= ADDR_TYPE_RT  	},  	{ }  }; -/* l4_abe -> wd_timer3 */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = { +/* c2c -> c2c_target_fw */ +static struct omap_hwmod_ocp_if omap44xx_c2c__c2c_target_fw = { +	.master		= &omap44xx_c2c_hwmod, +	.slave		= &omap44xx_c2c_target_fw_hwmod, +	.clk		= "div_core_ck", +	.addr		= omap44xx_c2c_target_fw_addrs, +	.user		= OCP_USER_MPU, +}; + +/* l4_cfg -> c2c_target_fw */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__c2c_target_fw = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_c2c_target_fw_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_1 -> dmm */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_1__dmm = { +	.master		= &omap44xx_l3_main_1_hwmod, +	.slave		= &omap44xx_dmm_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dmm_addrs[] = { +	{ +		.pa_start	= 0x4e000000, +		.pa_end		= 0x4e0007ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* mpu -> dmm */ +static struct omap_hwmod_ocp_if omap44xx_mpu__dmm = { +	.master		= &omap44xx_mpu_hwmod, +	.slave		= &omap44xx_dmm_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_dmm_addrs, +	.user		= OCP_USER_MPU, +}; + +/* c2c -> emif_fw */ +static struct omap_hwmod_ocp_if omap44xx_c2c__emif_fw = { +	.master		= &omap44xx_c2c_hwmod, +	.slave		= &omap44xx_emif_fw_hwmod, +	.clk		= "div_core_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* dmm -> emif_fw */ +static struct omap_hwmod_ocp_if omap44xx_dmm__emif_fw = { +	.master		= &omap44xx_dmm_hwmod, +	.slave		= &omap44xx_emif_fw_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_emif_fw_addrs[] = { +	{ +		.pa_start	= 0x4a20c000, +		.pa_end		= 0x4a20c0ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> emif_fw */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__emif_fw = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_emif_fw_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_emif_fw_addrs, +	.user		= OCP_USER_MPU, +}; + +/* iva -> l3_instr */ +static struct omap_hwmod_ocp_if omap44xx_iva__l3_instr = { +	.master		= &omap44xx_iva_hwmod, +	.slave		= &omap44xx_l3_instr_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_3 -> l3_instr */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_3__l3_instr = { +	.master		= &omap44xx_l3_main_3_hwmod, +	.slave		= &omap44xx_l3_instr_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* ocp_wp_noc -> l3_instr */ +static struct omap_hwmod_ocp_if omap44xx_ocp_wp_noc__l3_instr = { +	.master		= &omap44xx_ocp_wp_noc_hwmod, +	.slave		= &omap44xx_l3_instr_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* dsp -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_dsp__l3_main_1 = { +	.master		= &omap44xx_dsp_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* dss -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_dss__l3_main_1 = { +	.master		= &omap44xx_dss_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_2 -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_1 = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l4_cfg -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_1 = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* mmc1 -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_mmc1__l3_main_1 = { +	.master		= &omap44xx_mmc1_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* mmc2 -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_mmc2__l3_main_1 = { +	.master		= &omap44xx_mmc2_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_l3_main_1_addrs[] = { +	{ +		.pa_start	= 0x44000000, +		.pa_end		= 0x44000fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* mpu -> l3_main_1 */ +static struct omap_hwmod_ocp_if omap44xx_mpu__l3_main_1 = { +	.master		= &omap44xx_mpu_hwmod, +	.slave		= &omap44xx_l3_main_1_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_l3_main_1_addrs, +	.user		= OCP_USER_MPU, +}; + +/* c2c_target_fw -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_c2c_target_fw__l3_main_2 = { +	.master		= &omap44xx_c2c_target_fw_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* debugss -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_debugss__l3_main_2 = { +	.master		= &omap44xx_debugss_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "dbgclk_mux_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* dma_system -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = { +	.master		= &omap44xx_dma_system_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* fdif -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = { +	.master		= &omap44xx_fdif_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* gpu -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_gpu__l3_main_2 = { +	.master		= &omap44xx_gpu_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* hsi -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = { +	.master		= &omap44xx_hsi_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* ipu -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = { +	.master		= &omap44xx_ipu_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* iss -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_iss__l3_main_2 = { +	.master		= &omap44xx_iss_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* iva -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_iva__l3_main_2 = { +	.master		= &omap44xx_iva_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_l3_main_2_addrs[] = { +	{ +		.pa_start	= 0x44800000, +		.pa_end		= 0x44801fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_1 -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_2 = { +	.master		= &omap44xx_l3_main_1_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_l3_main_2_addrs, +	.user		= OCP_USER_MPU, +}; + +/* l4_cfg -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_2 = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* usb_host_fs -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_usb_host_fs__l3_main_2 = { +	.master		= &omap44xx_usb_host_fs_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* usb_host_hs -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = { +	.master		= &omap44xx_usb_host_hs_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* usb_otg_hs -> l3_main_2 */ +static struct omap_hwmod_ocp_if omap44xx_usb_otg_hs__l3_main_2 = { +	.master		= &omap44xx_usb_otg_hs_hwmod, +	.slave		= &omap44xx_l3_main_2_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_l3_main_3_addrs[] = { +	{ +		.pa_start	= 0x45000000, +		.pa_end		= 0x45000fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_1 -> l3_main_3 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l3_main_3 = { +	.master		= &omap44xx_l3_main_1_hwmod, +	.slave		= &omap44xx_l3_main_3_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_l3_main_3_addrs, +	.user		= OCP_USER_MPU, +}; + +/* l3_main_2 -> l3_main_3 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l3_main_3 = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_l3_main_3_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l4_cfg -> l3_main_3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l3_main_3 = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_l3_main_3_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* aess -> l4_abe */ +static struct omap_hwmod_ocp_if omap44xx_aess__l4_abe = { +	.master		= &omap44xx_aess_hwmod, +	.slave		= &omap44xx_l4_abe_hwmod, +	.clk		= "ocp_abe_iclk", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* dsp -> l4_abe */ +static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { +	.master		= &omap44xx_dsp_hwmod, +	.slave		= &omap44xx_l4_abe_hwmod, +	.clk		= "ocp_abe_iclk", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_1 -> l4_abe */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_abe = { +	.master		= &omap44xx_l3_main_1_hwmod, +	.slave		= &omap44xx_l4_abe_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* mpu -> l4_abe */ +static struct omap_hwmod_ocp_if omap44xx_mpu__l4_abe = { +	.master		= &omap44xx_mpu_hwmod, +	.slave		= &omap44xx_l4_abe_hwmod, +	.clk		= "ocp_abe_iclk", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_1 -> l4_cfg */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_1__l4_cfg = { +	.master		= &omap44xx_l3_main_1_hwmod, +	.slave		= &omap44xx_l4_cfg_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_2 -> l4_per */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__l4_per = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_l4_per_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l4_cfg -> l4_wkup */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__l4_wkup = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_l4_wkup_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* mpu -> mpu_private */ +static struct omap_hwmod_ocp_if omap44xx_mpu__mpu_private = { +	.master		= &omap44xx_mpu_hwmod, +	.slave		= &omap44xx_mpu_private_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_ocp_wp_noc_addrs[] = { +	{ +		.pa_start	= 0x4a102000, +		.pa_end		= 0x4a10207f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> ocp_wp_noc */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp_wp_noc = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_ocp_wp_noc_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_ocp_wp_noc_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_aess_addrs[] = { +	{ +		.pa_start	= 0x401f1000, +		.pa_end		= 0x401f13ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> aess */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess = {  	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_wd_timer3_hwmod, +	.slave		= &omap44xx_aess_hwmod,  	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_wd_timer3_addrs, +	.addr		= omap44xx_aess_addrs,  	.user		= OCP_USER_MPU,  }; -static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = { +static struct omap_hwmod_addr_space omap44xx_aess_dma_addrs[] = {  	{ -		.pa_start	= 0x49030000, -		.pa_end		= 0x4903007f, +		.pa_start	= 0x490f1000, +		.pa_end		= 0x490f13ff,  		.flags		= ADDR_TYPE_RT  	},  	{ }  }; -/* l4_abe -> wd_timer3 (dma) */ -static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = { +/* l4_abe -> aess (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__aess_dma = {  	.master		= &omap44xx_l4_abe_hwmod, -	.slave		= &omap44xx_wd_timer3_hwmod, +	.slave		= &omap44xx_aess_hwmod,  	.clk		= "ocp_abe_iclk", -	.addr		= omap44xx_wd_timer3_dma_addrs, +	.addr		= omap44xx_aess_dma_addrs,  	.user		= OCP_USER_SDMA,  }; -/* wd_timer3 slave ports */ -static struct omap_hwmod_ocp_if *omap44xx_wd_timer3_slaves[] = { -	&omap44xx_l4_abe__wd_timer3, -	&omap44xx_l4_abe__wd_timer3_dma, +/* l3_main_2 -> c2c */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__c2c = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_c2c_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod omap44xx_wd_timer3_hwmod = { -	.name		= "wd_timer3", -	.class		= &omap44xx_wd_timer_hwmod_class, -	.clkdm_name	= "abe_clkdm", -	.mpu_irqs	= omap44xx_wd_timer3_irqs, -	.main_clk	= "wd_timer3_fck", -	.prcm = { -		.omap4 = { -			.clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET, -			.context_offs = OMAP4_RM_ABE_WDT3_CONTEXT_OFFSET, -			.modulemode   = MODULEMODE_SWCTRL, -		}, +static struct omap_hwmod_addr_space omap44xx_counter_32k_addrs[] = { +	{ +		.pa_start	= 0x4a304000, +		.pa_end		= 0x4a30401f, +		.flags		= ADDR_TYPE_RT  	}, -	.slaves		= omap44xx_wd_timer3_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_wd_timer3_slaves), +	{ }  }; -/* - * 'usb_host_hs' class - * high-speed multi-port usb host controller - */ -static struct omap_hwmod_ocp_if omap44xx_usb_host_hs__l3_main_2 = { -	.master		= &omap44xx_usb_host_hs_hwmod, -	.slave		= &omap44xx_l3_main_2_hwmod, +/* l4_wkup -> counter_32k */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_counter_32k_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_counter_32k_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_ctrl_module_core_addrs[] = { +	{ +		.pa_start	= 0x4a002000, +		.pa_end		= 0x4a0027ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> ctrl_module_core */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_core = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_ctrl_module_core_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_ctrl_module_core_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_core_addrs[] = { +	{ +		.pa_start	= 0x4a100000, +		.pa_end		= 0x4a1007ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> ctrl_module_pad_core */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ctrl_module_pad_core = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_ctrl_module_pad_core_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_ctrl_module_pad_core_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_ctrl_module_wkup_addrs[] = { +	{ +		.pa_start	= 0x4a30c000, +		.pa_end		= 0x4a30c7ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> ctrl_module_wkup */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_wkup = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_ctrl_module_wkup_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_ctrl_module_wkup_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_ctrl_module_pad_wkup_addrs[] = { +	{ +		.pa_start	= 0x4a31e000, +		.pa_end		= 0x4a31e7ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> ctrl_module_pad_wkup */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__ctrl_module_pad_wkup = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_ctrl_module_pad_wkup_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_ctrl_module_pad_wkup_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_debugss_addrs[] = { +	{ +		.pa_start	= 0x54160000, +		.pa_end		= 0x54167fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_instr -> debugss */ +static struct omap_hwmod_ocp_if omap44xx_l3_instr__debugss = { +	.master		= &omap44xx_l3_instr_hwmod, +	.slave		= &omap44xx_debugss_hwmod,  	.clk		= "l3_div_ck", +	.addr		= omap44xx_debugss_addrs,  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_class_sysconfig omap44xx_usb_host_hs_sysc = { -	.rev_offs	= 0x0000, -	.sysc_offs	= 0x0010, -	.syss_offs	= 0x0014, -	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE | -			   SYSC_HAS_SOFTRESET), -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | -			   SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | -			   MSTANDBY_SMART | MSTANDBY_SMART_WKUP), -	.sysc_fields	= &omap_hwmod_sysc_type2, +static struct omap_hwmod_addr_space omap44xx_dma_system_addrs[] = { +	{ +		.pa_start	= 0x4a056000, +		.pa_end		= 0x4a056fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -static struct omap_hwmod_class omap44xx_usb_host_hs_hwmod_class = { -	.name = "usb_host_hs", -	.sysc = &omap44xx_usb_host_hs_sysc, +/* l4_cfg -> dma_system */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_dma_system_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dma_system_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_ocp_if *omap44xx_usb_host_hs_masters[] = { -	&omap44xx_usb_host_hs__l3_main_2, +static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = { +	{ +		.name		= "mpu", +		.pa_start	= 0x4012e000, +		.pa_end		= 0x4012e07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = { +/* l4_abe -> dmic */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_dmic_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_dmic_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {  	{ -		.name		= "uhh", -		.pa_start	= 0x4a064000, -		.pa_end		= 0x4a0647ff, +		.name		= "dma", +		.pa_start	= 0x4902e000, +		.pa_end		= 0x4902e07f,  		.flags		= ADDR_TYPE_RT  	}, +	{ } +}; + +/* l4_abe -> dmic (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_dmic_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_dmic_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +/* dsp -> iva */ +static struct omap_hwmod_ocp_if omap44xx_dsp__iva = { +	.master		= &omap44xx_dsp_hwmod, +	.slave		= &omap44xx_iva_hwmod, +	.clk		= "dpll_iva_m5x2_ck", +	.user		= OCP_USER_DSP, +}; + +/* dsp -> sl2if */ +static struct omap_hwmod_ocp_if omap44xx_dsp__sl2if = { +	.master		= &omap44xx_dsp_hwmod, +	.slave		= &omap44xx_sl2if_hwmod, +	.clk		= "dpll_iva_m5x2_ck", +	.user		= OCP_USER_DSP, +}; + +/* l4_cfg -> dsp */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dsp = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_dsp_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dma_addrs[] = {  	{ -		.name		= "ohci", -		.pa_start	= 0x4a064800, -		.pa_end		= 0x4a064bff, +		.pa_start	= 0x58000000, +		.pa_end		= 0x5800007f, +		.flags		= ADDR_TYPE_RT  	}, +	{ } +}; + +/* l3_main_2 -> dss */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_addrs[] = {  	{ -		.name		= "ehci", -		.pa_start	= 0x4a064c00, -		.pa_end		= 0x4a064fff, +		.pa_start	= 0x48040000, +		.pa_end		= 0x4804007f, +		.flags		= ADDR_TYPE_RT  	}, -	{} +	{ }  }; -static struct omap_hwmod_irq_info omap44xx_usb_host_hs_irqs[] = { -	{ .name = "ohci-irq", .irq = 76 + OMAP44XX_IRQ_GIC_START }, -	{ .name = "ehci-irq", .irq = 77 + OMAP44XX_IRQ_GIC_START }, -	{ .irq = -1 } +/* l4_per -> dss */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_addrs, +	.user		= OCP_USER_MPU,  }; -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = { +static struct omap_hwmod_addr_space omap44xx_dss_dispc_dma_addrs[] = { +	{ +		.pa_start	= 0x58001000, +		.pa_end		= 0x58001fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_dispc */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_dispc_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_dispc_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dispc_addrs[] = { +	{ +		.pa_start	= 0x48041000, +		.pa_end		= 0x48041fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_dispc */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dispc = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_dispc_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_dispc_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dsi1_dma_addrs[] = { +	{ +		.pa_start	= 0x58004000, +		.pa_end		= 0x580041ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_dsi1 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_dsi1_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_dsi1_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dsi1_addrs[] = { +	{ +		.pa_start	= 0x48044000, +		.pa_end		= 0x480441ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_dsi1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi1 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_dsi1_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_dsi1_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dsi2_dma_addrs[] = { +	{ +		.pa_start	= 0x58005000, +		.pa_end		= 0x580051ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_dsi2 */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_dsi2_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_dsi2_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_dsi2_addrs[] = { +	{ +		.pa_start	= 0x48045000, +		.pa_end		= 0x480451ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_dsi2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_dsi2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_dsi2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_dsi2_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_hdmi_dma_addrs[] = { +	{ +		.pa_start	= 0x58006000, +		.pa_end		= 0x58006fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_hdmi */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_hdmi_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_hdmi_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_hdmi_addrs[] = { +	{ +		.pa_start	= 0x48046000, +		.pa_end		= 0x48046fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_hdmi */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_hdmi = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_hdmi_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_hdmi_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_rfbi_dma_addrs[] = { +	{ +		.pa_start	= 0x58002000, +		.pa_end		= 0x580020ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_rfbi */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_rfbi_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_rfbi_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_rfbi_addrs[] = { +	{ +		.pa_start	= 0x48042000, +		.pa_end		= 0x480420ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_rfbi */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_rfbi = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_rfbi_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_rfbi_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_venc_dma_addrs[] = { +	{ +		.pa_start	= 0x58003000, +		.pa_end		= 0x580030ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> dss_venc */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_dss_venc_hwmod, +	.clk		= "dss_fck", +	.addr		= omap44xx_dss_venc_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_dss_venc_addrs[] = { +	{ +		.pa_start	= 0x48043000, +		.pa_end		= 0x480430ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> dss_venc */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__dss_venc = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_dss_venc_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_dss_venc_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_elm_addrs[] = { +	{ +		.pa_start	= 0x48078000, +		.pa_end		= 0x48078fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> elm */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_elm_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_elm_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_emif1_addrs[] = { +	{ +		.pa_start	= 0x4c000000, +		.pa_end		= 0x4c0000ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* emif_fw -> emif1 */ +static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif1 = { +	.master		= &omap44xx_emif_fw_hwmod, +	.slave		= &omap44xx_emif1_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_emif1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_emif2_addrs[] = { +	{ +		.pa_start	= 0x4d000000, +		.pa_end		= 0x4d0000ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* emif_fw -> emif2 */ +static struct omap_hwmod_ocp_if omap44xx_emif_fw__emif2 = { +	.master		= &omap44xx_emif_fw_hwmod, +	.slave		= &omap44xx_emif2_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_emif2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_fdif_addrs[] = { +	{ +		.pa_start	= 0x4a10a000, +		.pa_end		= 0x4a10a1ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> fdif */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = {  	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_usb_host_hs_hwmod, +	.slave		= &omap44xx_fdif_hwmod,  	.clk		= "l4_div_ck", -	.addr		= omap44xx_usb_host_hs_addrs, +	.addr		= omap44xx_fdif_addrs,  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_ocp_if *omap44xx_usb_host_hs_slaves[] = { -	&omap44xx_l4_cfg__usb_host_hs, +static struct omap_hwmod_addr_space omap44xx_gpio1_addrs[] = { +	{ +		.pa_start	= 0x4a310000, +		.pa_end		= 0x4a3101ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -static struct omap_hwmod omap44xx_usb_host_hs_hwmod = { -	.name		= "usb_host_hs", -	.class		= &omap44xx_usb_host_hs_hwmod_class, -	.clkdm_name	= "l3_init_clkdm", -	.main_clk	= "usb_host_hs_fck", -	.prcm = { -		.omap4 = { -			.clkctrl_offs = OMAP4_CM_L3INIT_USB_HOST_CLKCTRL_OFFSET, -			.context_offs = OMAP4_RM_L3INIT_USB_HOST_CONTEXT_OFFSET, -			.modulemode   = MODULEMODE_SWCTRL, -		}, +/* l4_wkup -> gpio1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__gpio1 = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_gpio1_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_gpio1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_gpio2_addrs[] = { +	{ +		.pa_start	= 0x48055000, +		.pa_end		= 0x480551ff, +		.flags		= ADDR_TYPE_RT  	}, -	.mpu_irqs	= omap44xx_usb_host_hs_irqs, -	.slaves		= omap44xx_usb_host_hs_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_usb_host_hs_slaves), -	.masters	= omap44xx_usb_host_hs_masters, -	.masters_cnt	= ARRAY_SIZE(omap44xx_usb_host_hs_masters), +	{ } +}; -	/* -	 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock -	 * id: i660 -	 * -	 * Description: -	 * In the following configuration : -	 * - USBHOST module is set to smart-idle mode -	 * - PRCM asserts idle_req to the USBHOST module ( This typically -	 *   happens when the system is going to a low power mode : all ports -	 *   have been suspended, the master part of the USBHOST module has -	 *   entered the standby state, and SW has cut the functional clocks) -	 * - an USBHOST interrupt occurs before the module is able to answer -	 *   idle_ack, typically a remote wakeup IRQ. -	 * Then the USB HOST module will enter a deadlock situation where it -	 * is no more accessible nor functional. -	 * -	 * Workaround: -	 * Don't use smart idle; use only force idle, hence HWMOD_SWSUP_SIDLE -	 */ +/* l4_per -> gpio2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_gpio2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_gpio2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* -	 * Errata: USB host EHCI may stall when entering smart-standby mode -	 * Id: i571 -	 * -	 * Description: -	 * When the USBHOST module is set to smart-standby mode, and when it is -	 * ready to enter the standby state (i.e. all ports are suspended and -	 * all attached devices are in suspend mode), then it can wrongly assert -	 * the Mstandby signal too early while there are still some residual OCP -	 * transactions ongoing. If this condition occurs, the internal state -	 * machine may go to an undefined state and the USB link may be stuck -	 * upon the next resume. -	 * -	 * Workaround: -	 * Don't use smart standby; use only force standby, -	 * hence HWMOD_SWSUP_MSTANDBY -	 */ +static struct omap_hwmod_addr_space omap44xx_gpio3_addrs[] = { +	{ +		.pa_start	= 0x48057000, +		.pa_end		= 0x480571ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* -	 * During system boot; If the hwmod framework resets the module -	 * the module will have smart idle settings; which can lead to deadlock -	 * (above Errata Id:i660); so, dont reset the module during boot; -	 * Use HWMOD_INIT_NO_RESET. -	 */ +/* l4_per -> gpio3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_gpio3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_gpio3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	.flags		= HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY | -			  HWMOD_INIT_NO_RESET, +static struct omap_hwmod_addr_space omap44xx_gpio4_addrs[] = { +	{ +		.pa_start	= 0x48059000, +		.pa_end		= 0x480591ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -/* - * 'usb_tll_hs' class - * usb_tll_hs module is the adapter on the usb_host_hs ports - */ -static struct omap_hwmod_class_sysconfig omap44xx_usb_tll_hs_sysc = { -	.rev_offs	= 0x0000, -	.sysc_offs	= 0x0010, -	.syss_offs	= 0x0014, -	.sysc_flags	= (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | -			   SYSC_HAS_ENAWAKEUP | SYSC_HAS_SOFTRESET | -			   SYSC_HAS_AUTOIDLE), -	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), -	.sysc_fields	= &omap_hwmod_sysc_type1, +/* l4_per -> gpio4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_gpio4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_gpio4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_class omap44xx_usb_tll_hs_hwmod_class = { -	.name = "usb_tll_hs", -	.sysc = &omap44xx_usb_tll_hs_sysc, +static struct omap_hwmod_addr_space omap44xx_gpio5_addrs[] = { +	{ +		.pa_start	= 0x4805b000, +		.pa_end		= 0x4805b1ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -static struct omap_hwmod_irq_info omap44xx_usb_tll_hs_irqs[] = { -	{ .name = "tll-irq", .irq = 78 + OMAP44XX_IRQ_GIC_START }, -	{ .irq = -1 } +/* l4_per -> gpio5 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio5 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_gpio5_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_gpio5_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = { +static struct omap_hwmod_addr_space omap44xx_gpio6_addrs[] = {  	{ -		.name		= "tll", -		.pa_start	= 0x4a062000, -		.pa_end		= 0x4a063fff, +		.pa_start	= 0x4805d000, +		.pa_end		= 0x4805d1ff,  		.flags		= ADDR_TYPE_RT  	}, -	{} +	{ }  }; -static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = { +/* l4_per -> gpio6 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__gpio6 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_gpio6_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_gpio6_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_gpmc_addrs[] = { +	{ +		.pa_start	= 0x50000000, +		.pa_end		= 0x500003ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> gpmc */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_gpmc_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_gpmc_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_gpu_addrs[] = { +	{ +		.pa_start	= 0x56000000, +		.pa_end		= 0x5600ffff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l3_main_2 -> gpu */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpu = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_gpu_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_gpu_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_hdq1w_addrs[] = { +	{ +		.pa_start	= 0x480b2000, +		.pa_end		= 0x480b201f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> hdq1w */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__hdq1w = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_hdq1w_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_hdq1w_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_hsi_addrs[] = { +	{ +		.pa_start	= 0x4a058000, +		.pa_end		= 0x4a05bfff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> hsi */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = {  	.master		= &omap44xx_l4_cfg_hwmod, -	.slave		= &omap44xx_usb_tll_hs_hwmod, +	.slave		= &omap44xx_hsi_hwmod,  	.clk		= "l4_div_ck", -	.addr		= omap44xx_usb_tll_hs_addrs, +	.addr		= omap44xx_hsi_addrs,  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; -static struct omap_hwmod_ocp_if *omap44xx_usb_tll_hs_slaves[] = { -	&omap44xx_l4_cfg__usb_tll_hs, +static struct omap_hwmod_addr_space omap44xx_i2c1_addrs[] = { +	{ +		.pa_start	= 0x48070000, +		.pa_end		= 0x480700ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ }  }; -static struct omap_hwmod omap44xx_usb_tll_hs_hwmod = { -	.name		= "usb_tll_hs", -	.class		= &omap44xx_usb_tll_hs_hwmod_class, -	.clkdm_name	= "l3_init_clkdm", -	.main_clk	= "usb_tll_hs_ick", -	.prcm = { -		.omap4 = { -			.clkctrl_offs = OMAP4_CM_L3INIT_USB_TLL_CLKCTRL_OFFSET, -			.context_offs = OMAP4_RM_L3INIT_USB_TLL_CONTEXT_OFFSET, -			.modulemode   = MODULEMODE_HWCTRL, -		}, +/* l4_per -> i2c1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c1 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_i2c1_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_i2c1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_i2c2_addrs[] = { +	{ +		.pa_start	= 0x48072000, +		.pa_end		= 0x480720ff, +		.flags		= ADDR_TYPE_RT  	}, -	.mpu_irqs	= omap44xx_usb_tll_hs_irqs, -	.slaves		= omap44xx_usb_tll_hs_slaves, -	.slaves_cnt	= ARRAY_SIZE(omap44xx_usb_tll_hs_slaves), +	{ }  }; -static __initdata struct omap_hwmod *omap44xx_hwmods[] = { +/* l4_per -> i2c2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_i2c2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_i2c2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* dmm class */ -	&omap44xx_dmm_hwmod, +static struct omap_hwmod_addr_space omap44xx_i2c3_addrs[] = { +	{ +		.pa_start	= 0x48060000, +		.pa_end		= 0x480600ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* emif_fw class */ -	&omap44xx_emif_fw_hwmod, +/* l4_per -> i2c3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_i2c3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_i2c3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* l3 class */ -	&omap44xx_l3_instr_hwmod, -	&omap44xx_l3_main_1_hwmod, -	&omap44xx_l3_main_2_hwmod, -	&omap44xx_l3_main_3_hwmod, +static struct omap_hwmod_addr_space omap44xx_i2c4_addrs[] = { +	{ +		.pa_start	= 0x48350000, +		.pa_end		= 0x483500ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* l4 class */ -	&omap44xx_l4_abe_hwmod, -	&omap44xx_l4_cfg_hwmod, -	&omap44xx_l4_per_hwmod, -	&omap44xx_l4_wkup_hwmod, +/* l4_per -> i2c4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__i2c4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_i2c4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_i2c4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* mpu_bus class */ -	&omap44xx_mpu_private_hwmod, +/* l3_main_2 -> ipu */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ipu = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_ipu_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* aess class */ -/*	&omap44xx_aess_hwmod, */ +static struct omap_hwmod_addr_space omap44xx_iss_addrs[] = { +	{ +		.pa_start	= 0x52000000, +		.pa_end		= 0x520000ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* bandgap class */ -	&omap44xx_bandgap_hwmod, +/* l3_main_2 -> iss */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iss = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_iss_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_iss_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* counter class */ -/*	&omap44xx_counter_32k_hwmod, */ +/* iva -> sl2if */ +static struct omap_hwmod_ocp_if omap44xx_iva__sl2if = { +	.master		= &omap44xx_iva_hwmod, +	.slave		= &omap44xx_sl2if_hwmod, +	.clk		= "dpll_iva_m5x2_ck", +	.user		= OCP_USER_IVA, +}; -	/* dma class */ -	&omap44xx_dma_system_hwmod, +static struct omap_hwmod_addr_space omap44xx_iva_addrs[] = { +	{ +		.pa_start	= 0x5a000000, +		.pa_end		= 0x5a07ffff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* dmic class */ -	&omap44xx_dmic_hwmod, +/* l3_main_2 -> iva */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__iva = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_iva_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_iva_addrs, +	.user		= OCP_USER_MPU, +}; -	/* dsp class */ -	&omap44xx_dsp_hwmod, -	&omap44xx_dsp_c0_hwmod, +static struct omap_hwmod_addr_space omap44xx_kbd_addrs[] = { +	{ +		.pa_start	= 0x4a31c000, +		.pa_end		= 0x4a31c07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* dss class */ -	&omap44xx_dss_hwmod, -	&omap44xx_dss_dispc_hwmod, -	&omap44xx_dss_dsi1_hwmod, -	&omap44xx_dss_dsi2_hwmod, -	&omap44xx_dss_hdmi_hwmod, -	&omap44xx_dss_rfbi_hwmod, -	&omap44xx_dss_venc_hwmod, +/* l4_wkup -> kbd */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_kbd_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_kbd_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* gpio class */ -	&omap44xx_gpio1_hwmod, -	&omap44xx_gpio2_hwmod, -	&omap44xx_gpio3_hwmod, -	&omap44xx_gpio4_hwmod, -	&omap44xx_gpio5_hwmod, -	&omap44xx_gpio6_hwmod, +static struct omap_hwmod_addr_space omap44xx_mailbox_addrs[] = { +	{ +		.pa_start	= 0x4a0f4000, +		.pa_end		= 0x4a0f41ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* hsi class */ -/*	&omap44xx_hsi_hwmod, */ +/* l4_cfg -> mailbox */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mailbox = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_mailbox_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mailbox_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; -	/* i2c class */ -	&omap44xx_i2c1_hwmod, -	&omap44xx_i2c2_hwmod, -	&omap44xx_i2c3_hwmod, -	&omap44xx_i2c4_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcasp_addrs[] = { +	{ +		.pa_start	= 0x40128000, +		.pa_end		= 0x401283ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* ipu class */ -	&omap44xx_ipu_hwmod, -	&omap44xx_ipu_c0_hwmod, -	&omap44xx_ipu_c1_hwmod, +/* l4_abe -> mcasp */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcasp_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcasp_addrs, +	.user		= OCP_USER_MPU, +}; -	/* iss class */ -/*	&omap44xx_iss_hwmod, */ +static struct omap_hwmod_addr_space omap44xx_mcasp_dma_addrs[] = { +	{ +		.pa_start	= 0x49028000, +		.pa_end		= 0x490283ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* iva class */ -	&omap44xx_iva_hwmod, -	&omap44xx_iva_seq0_hwmod, -	&omap44xx_iva_seq1_hwmod, +/* l4_abe -> mcasp (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcasp_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcasp_dma_addrs, +	.user		= OCP_USER_SDMA, +}; -	/* kbd class */ -	&omap44xx_kbd_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp1_addrs[] = { +	{ +		.name		= "mpu", +		.pa_start	= 0x40122000, +		.pa_end		= 0x401220ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* mailbox class */ -	&omap44xx_mailbox_hwmod, +/* l4_abe -> mcbsp1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp1_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp1_addrs, +	.user		= OCP_USER_MPU, +}; -	/* mcbsp class */ -	&omap44xx_mcbsp1_hwmod, -	&omap44xx_mcbsp2_hwmod, -	&omap44xx_mcbsp3_hwmod, -	&omap44xx_mcbsp4_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp1_dma_addrs[] = { +	{ +		.name		= "dma", +		.pa_start	= 0x49022000, +		.pa_end		= 0x490220ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* mcpdm class */ -	&omap44xx_mcpdm_hwmod, +/* l4_abe -> mcbsp1 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp1_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp1_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp1_dma_addrs, +	.user		= OCP_USER_SDMA, +}; -	/* mcspi class */ -	&omap44xx_mcspi1_hwmod, -	&omap44xx_mcspi2_hwmod, -	&omap44xx_mcspi3_hwmod, -	&omap44xx_mcspi4_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp2_addrs[] = { +	{ +		.name		= "mpu", +		.pa_start	= 0x40124000, +		.pa_end		= 0x401240ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* mmc class */ -	&omap44xx_mmc1_hwmod, -	&omap44xx_mmc2_hwmod, -	&omap44xx_mmc3_hwmod, -	&omap44xx_mmc4_hwmod, -	&omap44xx_mmc5_hwmod, +/* l4_abe -> mcbsp2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp2_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp2_addrs, +	.user		= OCP_USER_MPU, +}; -	/* mpu class */ -	&omap44xx_mpu_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp2_dma_addrs[] = { +	{ +		.name		= "dma", +		.pa_start	= 0x49024000, +		.pa_end		= 0x490240ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* smartreflex class */ -	&omap44xx_smartreflex_core_hwmod, -	&omap44xx_smartreflex_iva_hwmod, -	&omap44xx_smartreflex_mpu_hwmod, +/* l4_abe -> mcbsp2 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp2_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp2_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp2_dma_addrs, +	.user		= OCP_USER_SDMA, +}; -	/* spinlock class */ -	&omap44xx_spinlock_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp3_addrs[] = { +	{ +		.name		= "mpu", +		.pa_start	= 0x40126000, +		.pa_end		= 0x401260ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* timer class */ -	&omap44xx_timer1_hwmod, -	&omap44xx_timer2_hwmod, -	&omap44xx_timer3_hwmod, -	&omap44xx_timer4_hwmod, -	&omap44xx_timer5_hwmod, -	&omap44xx_timer6_hwmod, -	&omap44xx_timer7_hwmod, -	&omap44xx_timer8_hwmod, -	&omap44xx_timer9_hwmod, -	&omap44xx_timer10_hwmod, -	&omap44xx_timer11_hwmod, +/* l4_abe -> mcbsp3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp3_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp3_addrs, +	.user		= OCP_USER_MPU, +}; -	/* uart class */ -	&omap44xx_uart1_hwmod, -	&omap44xx_uart2_hwmod, -	&omap44xx_uart3_hwmod, -	&omap44xx_uart4_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp3_dma_addrs[] = { +	{ +		.name		= "dma", +		.pa_start	= 0x49026000, +		.pa_end		= 0x490260ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* usb host class */ -	&omap44xx_usb_host_hs_hwmod, -	&omap44xx_usb_tll_hs_hwmod, +/* l4_abe -> mcbsp3 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcbsp3_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcbsp3_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcbsp3_dma_addrs, +	.user		= OCP_USER_SDMA, +}; -	/* usb_otg_hs class */ -	&omap44xx_usb_otg_hs_hwmod, +static struct omap_hwmod_addr_space omap44xx_mcbsp4_addrs[] = { +	{ +		.pa_start	= 0x48096000, +		.pa_end		= 0x480960ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; -	/* wd_timer class */ -	&omap44xx_wd_timer2_hwmod, -	&omap44xx_wd_timer3_hwmod, +/* l4_per -> mcbsp4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mcbsp4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mcbsp4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mcbsp4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mcpdm_addrs[] = { +	{ +		.pa_start	= 0x40132000, +		.pa_end		= 0x4013207f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> mcpdm */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcpdm_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcpdm_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_mcpdm_dma_addrs[] = { +	{ +		.pa_start	= 0x49032000, +		.pa_end		= 0x4903207f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> mcpdm (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_mcpdm_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_mcpdm_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mcspi1_addrs[] = { +	{ +		.pa_start	= 0x48098000, +		.pa_end		= 0x480981ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mcspi1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi1 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mcspi1_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mcspi1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mcspi2_addrs[] = { +	{ +		.pa_start	= 0x4809a000, +		.pa_end		= 0x4809a1ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mcspi2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mcspi2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mcspi2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mcspi3_addrs[] = { +	{ +		.pa_start	= 0x480b8000, +		.pa_end		= 0x480b81ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mcspi3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mcspi3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mcspi3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mcspi4_addrs[] = { +	{ +		.pa_start	= 0x480ba000, +		.pa_end		= 0x480ba1ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mcspi4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mcspi4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mcspi4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mcspi4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mmc1_addrs[] = { +	{ +		.pa_start	= 0x4809c000, +		.pa_end		= 0x4809c3ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mmc1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc1 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mmc1_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mmc1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mmc2_addrs[] = { +	{ +		.pa_start	= 0x480b4000, +		.pa_end		= 0x480b43ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mmc2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mmc2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mmc2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mmc3_addrs[] = { +	{ +		.pa_start	= 0x480ad000, +		.pa_end		= 0x480ad3ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mmc3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mmc3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mmc3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mmc4_addrs[] = { +	{ +		.pa_start	= 0x480d1000, +		.pa_end		= 0x480d13ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mmc4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mmc4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mmc4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_mmc5_addrs[] = { +	{ +		.pa_start	= 0x480d5000, +		.pa_end		= 0x480d53ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> mmc5 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__mmc5 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_mmc5_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_mmc5_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_2 -> ocmc_ram */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_ocmc_ram_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l4_cfg -> ocp2scp_usb_phy */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_ocp2scp_usb_phy_hwmod, +	.clk		= "l4_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_prcm_mpu_addrs[] = { +	{ +		.pa_start	= 0x48243000, +		.pa_end		= 0x48243fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* mpu_private -> prcm_mpu */ +static struct omap_hwmod_ocp_if omap44xx_mpu_private__prcm_mpu = { +	.master		= &omap44xx_mpu_private_hwmod, +	.slave		= &omap44xx_prcm_mpu_hwmod, +	.clk		= "l3_div_ck", +	.addr		= omap44xx_prcm_mpu_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_cm_core_aon_addrs[] = { +	{ +		.pa_start	= 0x4a004000, +		.pa_end		= 0x4a004fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> cm_core_aon */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__cm_core_aon = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_cm_core_aon_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_cm_core_aon_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_cm_core_addrs[] = { +	{ +		.pa_start	= 0x4a008000, +		.pa_end		= 0x4a009fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> cm_core */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__cm_core = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_cm_core_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_cm_core_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_prm_addrs[] = { +	{ +		.pa_start	= 0x4a306000, +		.pa_end		= 0x4a307fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> prm */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__prm = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_prm_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_prm_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_scrm_addrs[] = { +	{ +		.pa_start	= 0x4a30a000, +		.pa_end		= 0x4a30a7ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> scrm */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__scrm = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_scrm_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_scrm_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_2 -> sl2if */ +static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sl2if = { +	.master		= &omap44xx_l3_main_2_hwmod, +	.slave		= &omap44xx_sl2if_hwmod, +	.clk		= "l3_div_ck", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_slimbus1_addrs[] = { +	{ +		.pa_start	= 0x4012c000, +		.pa_end		= 0x4012c3ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> slimbus1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_slimbus1_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_slimbus1_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_slimbus1_dma_addrs[] = { +	{ +		.pa_start	= 0x4902c000, +		.pa_end		= 0x4902c3ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> slimbus1 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_slimbus1_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_slimbus1_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_slimbus2_addrs[] = { +	{ +		.pa_start	= 0x48076000, +		.pa_end		= 0x480763ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> slimbus2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_slimbus2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_slimbus2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = { +	{ +		.pa_start	= 0x4a0dd000, +		.pa_end		= 0x4a0dd03f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> smartreflex_core */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_smartreflex_core_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_smartreflex_core_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = { +	{ +		.pa_start	= 0x4a0db000, +		.pa_end		= 0x4a0db03f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> smartreflex_iva */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_smartreflex_iva_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_smartreflex_iva_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = { +	{ +		.pa_start	= 0x4a0d9000, +		.pa_end		= 0x4a0d903f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> smartreflex_mpu */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_smartreflex_mpu_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_smartreflex_mpu_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_spinlock_addrs[] = { +	{ +		.pa_start	= 0x4a0f6000, +		.pa_end		= 0x4a0f6fff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> spinlock */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_spinlock_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_spinlock_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer1_addrs[] = { +	{ +		.pa_start	= 0x4a318000, +		.pa_end		= 0x4a31807f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> timer1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_timer1_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_timer1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer2_addrs[] = { +	{ +		.pa_start	= 0x48032000, +		.pa_end		= 0x4803207f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer3_addrs[] = { +	{ +		.pa_start	= 0x48034000, +		.pa_end		= 0x4803407f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer4_addrs[] = { +	{ +		.pa_start	= 0x48036000, +		.pa_end		= 0x4803607f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer5_addrs[] = { +	{ +		.pa_start	= 0x40138000, +		.pa_end		= 0x4013807f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer5 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer5_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer5_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_timer5_dma_addrs[] = { +	{ +		.pa_start	= 0x49038000, +		.pa_end		= 0x4903807f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer5 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer5_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer5_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer6_addrs[] = { +	{ +		.pa_start	= 0x4013a000, +		.pa_end		= 0x4013a07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer6 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer6_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer6_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_timer6_dma_addrs[] = { +	{ +		.pa_start	= 0x4903a000, +		.pa_end		= 0x4903a07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer6 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer6_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer6_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer7_addrs[] = { +	{ +		.pa_start	= 0x4013c000, +		.pa_end		= 0x4013c07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer7 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer7_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer7_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_timer7_dma_addrs[] = { +	{ +		.pa_start	= 0x4903c000, +		.pa_end		= 0x4903c07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer7 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer7_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer7_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer8_addrs[] = { +	{ +		.pa_start	= 0x4013e000, +		.pa_end		= 0x4013e07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer8 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer8_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer8_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_timer8_dma_addrs[] = { +	{ +		.pa_start	= 0x4903e000, +		.pa_end		= 0x4903e07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> timer8 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_timer8_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_timer8_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer9_addrs[] = { +	{ +		.pa_start	= 0x4803e000, +		.pa_end		= 0x4803e07f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer9 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer9_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer9_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer10_addrs[] = { +	{ +		.pa_start	= 0x48086000, +		.pa_end		= 0x4808607f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer10 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer10_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer10_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_timer11_addrs[] = { +	{ +		.pa_start	= 0x48088000, +		.pa_end		= 0x4808807f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> timer11 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_timer11_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_timer11_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_uart1_addrs[] = { +	{ +		.pa_start	= 0x4806a000, +		.pa_end		= 0x4806a0ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> uart1 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__uart1 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_uart1_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_uart1_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_uart2_addrs[] = { +	{ +		.pa_start	= 0x4806c000, +		.pa_end		= 0x4806c0ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> uart2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__uart2 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_uart2_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_uart2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_uart3_addrs[] = { +	{ +		.pa_start	= 0x48020000, +		.pa_end		= 0x480200ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> uart3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__uart3 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_uart3_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_uart3_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_uart4_addrs[] = { +	{ +		.pa_start	= 0x4806e000, +		.pa_end		= 0x4806e0ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_per -> uart4 */ +static struct omap_hwmod_ocp_if omap44xx_l4_per__uart4 = { +	.master		= &omap44xx_l4_per_hwmod, +	.slave		= &omap44xx_uart4_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_uart4_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_usb_host_fs_addrs[] = { +	{ +		.pa_start	= 0x4a0a9000, +		.pa_end		= 0x4a0a93ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> usb_host_fs */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_fs = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_usb_host_fs_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_usb_host_fs_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_usb_host_hs_addrs[] = { +	{ +		.name		= "uhh", +		.pa_start	= 0x4a064000, +		.pa_end		= 0x4a0647ff, +		.flags		= ADDR_TYPE_RT +	}, +	{ +		.name		= "ohci", +		.pa_start	= 0x4a064800, +		.pa_end		= 0x4a064bff, +	}, +	{ +		.name		= "ehci", +		.pa_start	= 0x4a064c00, +		.pa_end		= 0x4a064fff, +	}, +	{} +}; + +/* l4_cfg -> usb_host_hs */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_host_hs = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_usb_host_hs_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_usb_host_hs_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_usb_otg_hs_addrs[] = { +	{ +		.pa_start	= 0x4a0ab000, +		.pa_end		= 0x4a0ab003, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_cfg -> usb_otg_hs */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_otg_hs = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_usb_otg_hs_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_usb_otg_hs_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_usb_tll_hs_addrs[] = { +	{ +		.name		= "tll", +		.pa_start	= 0x4a062000, +		.pa_end		= 0x4a063fff, +		.flags		= ADDR_TYPE_RT +	}, +	{} +}; + +/* l4_cfg -> usb_tll_hs */ +static struct omap_hwmod_ocp_if omap44xx_l4_cfg__usb_tll_hs = { +	.master		= &omap44xx_l4_cfg_hwmod, +	.slave		= &omap44xx_usb_tll_hs_hwmod, +	.clk		= "l4_div_ck", +	.addr		= omap44xx_usb_tll_hs_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_wd_timer2_addrs[] = { +	{ +		.pa_start	= 0x4a314000, +		.pa_end		= 0x4a31407f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_wkup -> wd_timer2 */ +static struct omap_hwmod_ocp_if omap44xx_l4_wkup__wd_timer2 = { +	.master		= &omap44xx_l4_wkup_hwmod, +	.slave		= &omap44xx_wd_timer2_hwmod, +	.clk		= "l4_wkup_clk_mux_ck", +	.addr		= omap44xx_wd_timer2_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +static struct omap_hwmod_addr_space omap44xx_wd_timer3_addrs[] = { +	{ +		.pa_start	= 0x40130000, +		.pa_end		= 0x4013007f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> wd_timer3 */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3 = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_wd_timer3_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_wd_timer3_addrs, +	.user		= OCP_USER_MPU, +}; + +static struct omap_hwmod_addr_space omap44xx_wd_timer3_dma_addrs[] = { +	{ +		.pa_start	= 0x49030000, +		.pa_end		= 0x4903007f, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +/* l4_abe -> wd_timer3 (dma) */ +static struct omap_hwmod_ocp_if omap44xx_l4_abe__wd_timer3_dma = { +	.master		= &omap44xx_l4_abe_hwmod, +	.slave		= &omap44xx_wd_timer3_hwmod, +	.clk		= "ocp_abe_iclk", +	.addr		= omap44xx_wd_timer3_dma_addrs, +	.user		= OCP_USER_SDMA, +}; + +static struct omap_hwmod_ocp_if *omap44xx_hwmod_ocp_ifs[] __initdata = { +	&omap44xx_c2c__c2c_target_fw, +	&omap44xx_l4_cfg__c2c_target_fw, +	&omap44xx_l3_main_1__dmm, +	&omap44xx_mpu__dmm, +	&omap44xx_c2c__emif_fw, +	&omap44xx_dmm__emif_fw, +	&omap44xx_l4_cfg__emif_fw, +	&omap44xx_iva__l3_instr, +	&omap44xx_l3_main_3__l3_instr, +	&omap44xx_ocp_wp_noc__l3_instr, +	&omap44xx_dsp__l3_main_1, +	&omap44xx_dss__l3_main_1, +	&omap44xx_l3_main_2__l3_main_1, +	&omap44xx_l4_cfg__l3_main_1, +	&omap44xx_mmc1__l3_main_1, +	&omap44xx_mmc2__l3_main_1, +	&omap44xx_mpu__l3_main_1, +	&omap44xx_c2c_target_fw__l3_main_2, +	&omap44xx_debugss__l3_main_2, +	&omap44xx_dma_system__l3_main_2, +	&omap44xx_fdif__l3_main_2, +	&omap44xx_gpu__l3_main_2, +	&omap44xx_hsi__l3_main_2, +	&omap44xx_ipu__l3_main_2, +	&omap44xx_iss__l3_main_2, +	&omap44xx_iva__l3_main_2, +	&omap44xx_l3_main_1__l3_main_2, +	&omap44xx_l4_cfg__l3_main_2, +	&omap44xx_usb_host_fs__l3_main_2, +	&omap44xx_usb_host_hs__l3_main_2, +	&omap44xx_usb_otg_hs__l3_main_2, +	&omap44xx_l3_main_1__l3_main_3, +	&omap44xx_l3_main_2__l3_main_3, +	&omap44xx_l4_cfg__l3_main_3, +	&omap44xx_aess__l4_abe, +	&omap44xx_dsp__l4_abe, +	&omap44xx_l3_main_1__l4_abe, +	&omap44xx_mpu__l4_abe, +	&omap44xx_l3_main_1__l4_cfg, +	&omap44xx_l3_main_2__l4_per, +	&omap44xx_l4_cfg__l4_wkup, +	&omap44xx_mpu__mpu_private, +	&omap44xx_l4_cfg__ocp_wp_noc, +	&omap44xx_l4_abe__aess, +	&omap44xx_l4_abe__aess_dma, +	&omap44xx_l3_main_2__c2c, +	&omap44xx_l4_wkup__counter_32k, +	&omap44xx_l4_cfg__ctrl_module_core, +	&omap44xx_l4_cfg__ctrl_module_pad_core, +	&omap44xx_l4_wkup__ctrl_module_wkup, +	&omap44xx_l4_wkup__ctrl_module_pad_wkup, +	&omap44xx_l3_instr__debugss, +	&omap44xx_l4_cfg__dma_system, +	&omap44xx_l4_abe__dmic, +	&omap44xx_l4_abe__dmic_dma, +	&omap44xx_dsp__iva, +	&omap44xx_dsp__sl2if, +	&omap44xx_l4_cfg__dsp, +	&omap44xx_l3_main_2__dss, +	&omap44xx_l4_per__dss, +	&omap44xx_l3_main_2__dss_dispc, +	&omap44xx_l4_per__dss_dispc, +	&omap44xx_l3_main_2__dss_dsi1, +	&omap44xx_l4_per__dss_dsi1, +	&omap44xx_l3_main_2__dss_dsi2, +	&omap44xx_l4_per__dss_dsi2, +	&omap44xx_l3_main_2__dss_hdmi, +	&omap44xx_l4_per__dss_hdmi, +	&omap44xx_l3_main_2__dss_rfbi, +	&omap44xx_l4_per__dss_rfbi, +	&omap44xx_l3_main_2__dss_venc, +	&omap44xx_l4_per__dss_venc, +	&omap44xx_l4_per__elm, +	&omap44xx_emif_fw__emif1, +	&omap44xx_emif_fw__emif2, +	&omap44xx_l4_cfg__fdif, +	&omap44xx_l4_wkup__gpio1, +	&omap44xx_l4_per__gpio2, +	&omap44xx_l4_per__gpio3, +	&omap44xx_l4_per__gpio4, +	&omap44xx_l4_per__gpio5, +	&omap44xx_l4_per__gpio6, +	&omap44xx_l3_main_2__gpmc, +	&omap44xx_l3_main_2__gpu, +	&omap44xx_l4_per__hdq1w, +	&omap44xx_l4_cfg__hsi, +	&omap44xx_l4_per__i2c1, +	&omap44xx_l4_per__i2c2, +	&omap44xx_l4_per__i2c3, +	&omap44xx_l4_per__i2c4, +	&omap44xx_l3_main_2__ipu, +	&omap44xx_l3_main_2__iss, +	&omap44xx_iva__sl2if, +	&omap44xx_l3_main_2__iva, +	&omap44xx_l4_wkup__kbd, +	&omap44xx_l4_cfg__mailbox, +	&omap44xx_l4_abe__mcasp, +	&omap44xx_l4_abe__mcasp_dma, +	&omap44xx_l4_abe__mcbsp1, +	&omap44xx_l4_abe__mcbsp1_dma, +	&omap44xx_l4_abe__mcbsp2, +	&omap44xx_l4_abe__mcbsp2_dma, +	&omap44xx_l4_abe__mcbsp3, +	&omap44xx_l4_abe__mcbsp3_dma, +	&omap44xx_l4_per__mcbsp4, +	&omap44xx_l4_abe__mcpdm, +	&omap44xx_l4_abe__mcpdm_dma, +	&omap44xx_l4_per__mcspi1, +	&omap44xx_l4_per__mcspi2, +	&omap44xx_l4_per__mcspi3, +	&omap44xx_l4_per__mcspi4, +	&omap44xx_l4_per__mmc1, +	&omap44xx_l4_per__mmc2, +	&omap44xx_l4_per__mmc3, +	&omap44xx_l4_per__mmc4, +	&omap44xx_l4_per__mmc5, +	&omap44xx_l3_main_2__ocmc_ram, +	&omap44xx_l4_cfg__ocp2scp_usb_phy, +	&omap44xx_mpu_private__prcm_mpu, +	&omap44xx_l4_wkup__cm_core_aon, +	&omap44xx_l4_cfg__cm_core, +	&omap44xx_l4_wkup__prm, +	&omap44xx_l4_wkup__scrm, +	&omap44xx_l3_main_2__sl2if, +	&omap44xx_l4_abe__slimbus1, +	&omap44xx_l4_abe__slimbus1_dma, +	&omap44xx_l4_per__slimbus2, +	&omap44xx_l4_cfg__smartreflex_core, +	&omap44xx_l4_cfg__smartreflex_iva, +	&omap44xx_l4_cfg__smartreflex_mpu, +	&omap44xx_l4_cfg__spinlock, +	&omap44xx_l4_wkup__timer1, +	&omap44xx_l4_per__timer2, +	&omap44xx_l4_per__timer3, +	&omap44xx_l4_per__timer4, +	&omap44xx_l4_abe__timer5, +	&omap44xx_l4_abe__timer5_dma, +	&omap44xx_l4_abe__timer6, +	&omap44xx_l4_abe__timer6_dma, +	&omap44xx_l4_abe__timer7, +	&omap44xx_l4_abe__timer7_dma, +	&omap44xx_l4_abe__timer8, +	&omap44xx_l4_abe__timer8_dma, +	&omap44xx_l4_per__timer9, +	&omap44xx_l4_per__timer10, +	&omap44xx_l4_per__timer11, +	&omap44xx_l4_per__uart1, +	&omap44xx_l4_per__uart2, +	&omap44xx_l4_per__uart3, +	&omap44xx_l4_per__uart4, +	&omap44xx_l4_cfg__usb_host_fs, +	&omap44xx_l4_cfg__usb_host_hs, +	&omap44xx_l4_cfg__usb_otg_hs, +	&omap44xx_l4_cfg__usb_tll_hs, +	&omap44xx_l4_wkup__wd_timer2, +	&omap44xx_l4_abe__wd_timer3, +	&omap44xx_l4_abe__wd_timer3_dma,  	NULL,  };  int __init omap44xx_hwmod_init(void)  { -	return omap_hwmod_register(omap44xx_hwmods); +	return omap_hwmod_register_links(omap44xx_hwmod_ocp_ifs);  }  |