diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_33xx_data.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_33xx_data.c | 92 | 
1 files changed, 78 insertions, 14 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c index 31bea1ce3de..01d8f324450 100644 --- a/arch/arm/mach-omap2/omap_hwmod_33xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_33xx_data.c @@ -418,8 +418,6 @@ static struct omap_hwmod am33xx_adc_tsc_hwmod = {   *    - clkdiv32k   *    - debugss   *    - ocp watch point - *    - aes0 - *    - sha0   */  #if 0  /* @@ -500,25 +498,41 @@ static struct omap_hwmod am33xx_ocpwp_hwmod = {  		},  	},  }; +#endif  /* - * 'aes' class + * 'aes0' class   */ -static struct omap_hwmod_class am33xx_aes_hwmod_class = { -	.name		= "aes", +static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = { +	.rev_offs	= 0x80, +	.sysc_offs	= 0x84, +	.syss_offs	= 0x88, +	.sysc_flags	= SYSS_HAS_RESET_STATUS, +}; + +static struct omap_hwmod_class am33xx_aes0_hwmod_class = { +	.name		= "aes0", +	.sysc		= &am33xx_aes0_sysc,  };  static struct omap_hwmod_irq_info am33xx_aes0_irqs[] = { -	{ .irq = 102 + OMAP_INTC_START, }, +	{ .irq = 103 + OMAP_INTC_START, },  	{ .irq = -1 },  }; +static struct omap_hwmod_dma_info am33xx_aes0_edma_reqs[] = { +	{ .name = "tx", .dma_req = 6, }, +	{ .name = "rx", .dma_req = 5, }, +	{ .dma_req = -1 } +}; +  static struct omap_hwmod am33xx_aes0_hwmod = { -	.name		= "aes0", -	.class		= &am33xx_aes_hwmod_class, +	.name		= "aes", +	.class		= &am33xx_aes0_hwmod_class,  	.clkdm_name	= "l3_clkdm",  	.mpu_irqs	= am33xx_aes0_irqs, -	.main_clk	= "l3_gclk", +	.sdma_reqs	= am33xx_aes0_edma_reqs, +	.main_clk	= "aes0_fck",  	.prcm		= {  		.omap4	= {  			.clkctrl_offs	= AM33XX_CM_PER_AES0_CLKCTRL_OFFSET, @@ -527,21 +541,35 @@ static struct omap_hwmod am33xx_aes0_hwmod = {  	},  }; -/* sha0 */ +/* sha0 HIB2 (the 'P' (public) device) */ +static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = { +	.rev_offs	= 0x100, +	.sysc_offs	= 0x110, +	.syss_offs	= 0x114, +	.sysc_flags	= SYSS_HAS_RESET_STATUS, +}; +  static struct omap_hwmod_class am33xx_sha0_hwmod_class = {  	.name		= "sha0", +	.sysc		= &am33xx_sha0_sysc,  };  static struct omap_hwmod_irq_info am33xx_sha0_irqs[] = { -	{ .irq = 108 + OMAP_INTC_START, }, +	{ .irq = 109 + OMAP_INTC_START, },  	{ .irq = -1 },  }; +static struct omap_hwmod_dma_info am33xx_sha0_edma_reqs[] = { +	{ .name = "rx", .dma_req = 36, }, +	{ .dma_req = -1 } +}; +  static struct omap_hwmod am33xx_sha0_hwmod = { -	.name		= "sha0", +	.name		= "sham",  	.class		= &am33xx_sha0_hwmod_class,  	.clkdm_name	= "l3_clkdm",  	.mpu_irqs	= am33xx_sha0_irqs, +	.sdma_reqs	= am33xx_sha0_edma_reqs,  	.main_clk	= "l3_gclk",  	.prcm		= {  		.omap4	= { @@ -551,8 +579,6 @@ static struct omap_hwmod am33xx_sha0_hwmod = {  	},  }; -#endif -  /* ocmcram */  static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {  	.name = "ocmcram", @@ -3449,6 +3475,42 @@ static struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = {  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; +/* l3 main -> sha0 HIB2 */ +static struct omap_hwmod_addr_space am33xx_sha0_addrs[] = { +	{ +		.pa_start	= 0x53100000, +		.pa_end		= 0x53100000 + SZ_512 - 1, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +static struct omap_hwmod_ocp_if am33xx_l3_main__sha0 = { +	.master		= &am33xx_l3_main_hwmod, +	.slave		= &am33xx_sha0_hwmod, +	.clk		= "sha0_fck", +	.addr		= am33xx_sha0_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; + +/* l3 main -> AES0 HIB2 */ +static struct omap_hwmod_addr_space am33xx_aes0_addrs[] = { +	{ +		.pa_start	= 0x53500000, +		.pa_end		= 0x53500000 + SZ_1M - 1, +		.flags		= ADDR_TYPE_RT +	}, +	{ } +}; + +static struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = { +	.master		= &am33xx_l3_main_hwmod, +	.slave		= &am33xx_aes0_hwmod, +	.clk		= "aes0_fck", +	.addr		= am33xx_aes0_addrs, +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; +  static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {  	&am33xx_l4_fw__emif_fw,  	&am33xx_l3_main__emif, @@ -3529,6 +3591,8 @@ static struct omap_hwmod_ocp_if *am33xx_hwmod_ocp_ifs[] __initdata = {  	&am33xx_l3_s__usbss,  	&am33xx_l4_hs__cpgmac0,  	&am33xx_cpgmac0__mdio, +	&am33xx_l3_main__sha0, +	&am33xx_l3_main__aes0,  	NULL,  };  |