diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_7xx_data.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_7xx_data.c | 182 | 
1 files changed, 181 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c index 1ab7096af8e2..d0585293a381 100644 --- a/arch/arm/mach-omap2/omap_hwmod_7xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_7xx_data.c @@ -690,6 +690,78 @@ static struct omap_hwmod dra7xx_dss_hdmi_hwmod = {  	.parent_hwmod	= &dra7xx_dss_hwmod,  }; +/* AES (the 'P' (public) device) */ +static struct omap_hwmod_class_sysconfig dra7xx_aes_sysc = { +	.rev_offs	= 0x0080, +	.sysc_offs	= 0x0084, +	.syss_offs	= 0x0088, +	.sysc_flags	= SYSS_HAS_RESET_STATUS, +}; + +static struct omap_hwmod_class dra7xx_aes_hwmod_class = { +	.name	= "aes", +	.sysc	= &dra7xx_aes_sysc, +	.rev	= 2, +}; + +/* AES1 */ +static struct omap_hwmod dra7xx_aes1_hwmod = { +	.name		= "aes1", +	.class		= &dra7xx_aes_hwmod_class, +	.clkdm_name	= "l4sec_clkdm", +	.main_clk	= "l3_iclk_div", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = DRA7XX_CM_L4SEC_AES1_CLKCTRL_OFFSET, +			.context_offs = DRA7XX_RM_L4SEC_AES1_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* AES2 */ +static struct omap_hwmod dra7xx_aes2_hwmod = { +	.name		= "aes2", +	.class		= &dra7xx_aes_hwmod_class, +	.clkdm_name	= "l4sec_clkdm", +	.main_clk	= "l3_iclk_div", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = DRA7XX_CM_L4SEC_AES2_CLKCTRL_OFFSET, +			.context_offs = DRA7XX_RM_L4SEC_AES2_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* sha0 HIB2 (the 'P' (public) device) */ +static struct omap_hwmod_class_sysconfig dra7xx_sha0_sysc = { +	.rev_offs	= 0x100, +	.sysc_offs	= 0x110, +	.syss_offs	= 0x114, +	.sysc_flags	= SYSS_HAS_RESET_STATUS, +}; + +static struct omap_hwmod_class dra7xx_sha0_hwmod_class = { +	.name		= "sham", +	.sysc		= &dra7xx_sha0_sysc, +	.rev		= 2, +}; + +struct omap_hwmod dra7xx_sha0_hwmod = { +	.name		= "sham", +	.class		= &dra7xx_sha0_hwmod_class, +	.clkdm_name	= "l4sec_clkdm", +	.main_clk	= "l3_iclk_div", +	.prcm		= { +		.omap4 = { +			.clkctrl_offs = DRA7XX_CM_L4SEC_SHA2MD51_CLKCTRL_OFFSET, +			.context_offs = DRA7XX_RM_L4SEC_SHA2MD51_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; +  /*   * 'elm' class   * @@ -2541,6 +2613,62 @@ static struct omap_hwmod dra7xx_uart10_hwmod = {  	},  }; +/* DES (the 'P' (public) device) */ +static struct omap_hwmod_class_sysconfig dra7xx_des_sysc = { +	.rev_offs	= 0x0030, +	.sysc_offs	= 0x0034, +	.syss_offs	= 0x0038, +	.sysc_flags	= SYSS_HAS_RESET_STATUS, +}; + +static struct omap_hwmod_class dra7xx_des_hwmod_class = { +	.name	= "des", +	.sysc	= &dra7xx_des_sysc, +}; + +/* DES */ +static struct omap_hwmod dra7xx_des_hwmod = { +	.name		= "des", +	.class		= &dra7xx_des_hwmod_class, +	.clkdm_name	= "l4sec_clkdm", +	.main_clk	= "l3_iclk_div", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = DRA7XX_CM_L4SEC_DES3DES_CLKCTRL_OFFSET, +			.context_offs = DRA7XX_RM_L4SEC_DES3DES_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; + +/* rng */ +static struct omap_hwmod_class_sysconfig dra7xx_rng_sysc = { +	.rev_offs       = 0x1fe0, +	.sysc_offs      = 0x1fe4, +	.sysc_flags     = SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE, +	.idlemodes      = SIDLE_FORCE | SIDLE_NO, +	.sysc_fields    = &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class dra7xx_rng_hwmod_class = { +	.name           = "rng", +	.sysc           = &dra7xx_rng_sysc, +}; + +static struct omap_hwmod dra7xx_rng_hwmod = { +	.name           = "rng", +	.class          = &dra7xx_rng_hwmod_class, +	.flags		= HWMOD_SWSUP_SIDLE, +	.clkdm_name     = "l4sec_clkdm", +	.prcm = { +		.omap4 = { +			.clkctrl_offs = DRA7XX_CM_L4SEC_RNG_CLKCTRL_OFFSET, +			.context_offs = DRA7XX_RM_L4SEC_RNG_CONTEXT_OFFSET, +			.modulemode   = MODULEMODE_HWCTRL, +		}, +	}, +}; +  /*   * 'usb_otg_ss' class   * @@ -2929,6 +3057,30 @@ static struct omap_hwmod_ocp_if dra7xx_l3_main_1__hdmi = {  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; +/* l3_main_1 -> aes1 */ +static struct omap_hwmod_ocp_if dra7xx_l3_main_1__aes1 = { +	.master		= &dra7xx_l3_main_1_hwmod, +	.slave		= &dra7xx_aes1_hwmod, +	.clk		= "l3_iclk_div", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_1 -> aes2 */ +static struct omap_hwmod_ocp_if dra7xx_l3_main_1__aes2 = { +	.master		= &dra7xx_l3_main_1_hwmod, +	.slave		= &dra7xx_aes2_hwmod, +	.clk		= "l3_iclk_div", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3_main_1 -> sha0 */ +static struct omap_hwmod_ocp_if dra7xx_l3_main_1__sha0 = { +	.master		= &dra7xx_l3_main_1_hwmod, +	.slave		= &dra7xx_sha0_hwmod, +	.clk		= "l3_iclk_div", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; +  /* l4_per2 -> mcasp1 */  static struct omap_hwmod_ocp_if dra7xx_l4_per2__mcasp1 = {  	.master		= &dra7xx_l4_per2_hwmod, @@ -3642,6 +3794,14 @@ static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart7 = {  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; +/* l4_per1 -> des */ +static struct omap_hwmod_ocp_if dra7xx_l4_per1__des = { +	.master		= &dra7xx_l4_per1_hwmod, +	.slave		= &dra7xx_des_hwmod, +	.clk		= "l3_iclk_div", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; +  /* l4_per2 -> uart8 */  static struct omap_hwmod_ocp_if dra7xx_l4_per2__uart8 = {  	.master		= &dra7xx_l4_per2_hwmod, @@ -3666,6 +3826,13 @@ static struct omap_hwmod_ocp_if dra7xx_l4_wkup__uart10 = {  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; +/* l4_per1 -> rng */ +static struct omap_hwmod_ocp_if dra7xx_l4_per1__rng = { +	.master         = &dra7xx_l4_per1_hwmod, +	.slave          = &dra7xx_rng_hwmod, +	.user           = OCP_USER_MPU, +}; +  /* l4_per3 -> usb_otg_ss1 */  static struct omap_hwmod_ocp_if dra7xx_l4_per3__usb_otg_ss1 = {  	.master		= &dra7xx_l4_per3_hwmod, @@ -3800,6 +3967,9 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {  	&dra7xx_l3_main_1__dss,  	&dra7xx_l3_main_1__dispc,  	&dra7xx_l3_main_1__hdmi, +	&dra7xx_l3_main_1__aes1, +	&dra7xx_l3_main_1__aes2, +	&dra7xx_l3_main_1__sha0,  	&dra7xx_l4_per1__elm,  	&dra7xx_l4_wkup__gpio1,  	&dra7xx_l4_per1__gpio2, @@ -3845,7 +4015,6 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {  	&dra7xx_l3_main_1__pciess2,  	&dra7xx_l4_cfg__pciess2,  	&dra7xx_l3_main_1__qspi, -	&dra7xx_l4_per3__rtcss,  	&dra7xx_l4_cfg__sata,  	&dra7xx_l4_cfg__smartreflex_core,  	&dra7xx_l4_cfg__smartreflex_mpu, @@ -3875,6 +4044,7 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {  	&dra7xx_l4_per2__uart8,  	&dra7xx_l4_per2__uart9,  	&dra7xx_l4_wkup__uart10, +	&dra7xx_l4_per1__des,  	&dra7xx_l4_per3__usb_otg_ss1,  	&dra7xx_l4_per3__usb_otg_ss2,  	&dra7xx_l4_per3__usb_otg_ss3, @@ -3892,6 +4062,7 @@ static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = {  /* GP-only hwmod links */  static struct omap_hwmod_ocp_if *dra7xx_gp_hwmod_ocp_ifs[] __initdata = {  	&dra7xx_l4_wkup__timer12, +	&dra7xx_l4_per1__rng,  	NULL,  }; @@ -3905,6 +4076,11 @@ static struct omap_hwmod_ocp_if *dra72x_hwmod_ocp_ifs[] __initdata = {  	NULL,  }; +static struct omap_hwmod_ocp_if *dra74x_dra72x_hwmod_ocp_ifs[] __initdata = { +	&dra7xx_l4_per3__rtcss, +	NULL, +}; +  int __init dra7xx_hwmod_init(void)  {  	int ret; @@ -3920,5 +4096,9 @@ int __init dra7xx_hwmod_init(void)  	if (!ret && omap_type() == OMAP2_DEVICE_TYPE_GP)  		ret = omap_hwmod_register_links(dra7xx_gp_hwmod_ocp_ifs); +	/* now for the IPs *NOT* in dra71 */ +	if (!ret && !of_machine_is_compatible("ti,dra718")) +		ret = omap_hwmod_register_links(dra74x_dra72x_hwmod_ocp_ifs); +  	return ret;  }  |