diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_3xxx_data.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_3xxx_data.c | 86 | 
1 files changed, 57 insertions, 29 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index 0c3a427da54..1cd0cfdc03e 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -1943,7 +1943,8 @@ static struct omap_hwmod_class_sysconfig omap3xxx_usb_host_hs_sysc = {  	.syss_offs	= 0x0014,  	.sysc_flags	= (SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY |  			   SYSC_HAS_SIDLEMODE | SYSC_HAS_ENAWAKEUP | -			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), +			   SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | +			   SYSS_HAS_RESET_STATUS),  	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |  			   MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),  	.sysc_fields	= &omap_hwmod_sysc_type1, @@ -1954,10 +1955,6 @@ static struct omap_hwmod_class omap3xxx_usb_host_hs_hwmod_class = {  	.sysc = &omap3xxx_usb_host_hs_sysc,  }; -static struct omap_hwmod_opt_clk omap3xxx_usb_host_hs_opt_clks[] = { -	  { .role = "ehci_logic_fck", .clk = "usbhost_120m_fck", }, -}; -  static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = {  	{ .name = "ohci-irq", .irq = 76 + OMAP_INTC_START, },  	{ .name = "ehci-irq", .irq = 77 + OMAP_INTC_START, }, @@ -1967,7 +1964,7 @@ static struct omap_hwmod_irq_info omap3xxx_usb_host_hs_irqs[] = {  static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {  	.name		= "usb_host_hs",  	.class		= &omap3xxx_usb_host_hs_hwmod_class, -	.clkdm_name	= "l3_init_clkdm", +	.clkdm_name	= "usbhost_clkdm",  	.mpu_irqs	= omap3xxx_usb_host_hs_irqs,  	.main_clk	= "usbhost_48m_fck",  	.prcm = { @@ -1980,8 +1977,6 @@ static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {  			.idlest_stdby_bit = OMAP3430ES2_ST_USBHOST_STDBY_SHIFT,  		},  	}, -	.opt_clks	= omap3xxx_usb_host_hs_opt_clks, -	.opt_clks_cnt	= ARRAY_SIZE(omap3xxx_usb_host_hs_opt_clks),  	/*  	 * Errata: USBHOST Configured In Smart-Idle Can Lead To a Deadlock @@ -2021,15 +2016,7 @@ static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = {  	 * 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, +	.flags		= HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY,  };  /* @@ -2060,7 +2047,7 @@ static struct omap_hwmod_irq_info omap3xxx_usb_tll_hs_irqs[] = {  static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = {  	.name		= "usb_tll_hs",  	.class		= &omap3xxx_usb_tll_hs_hwmod_class, -	.clkdm_name	= "l3_init_clkdm", +	.clkdm_name	= "core_l4_clkdm",  	.mpu_irqs	= omap3xxx_usb_tll_hs_irqs,  	.main_clk	= "usbtll_fck",  	.prcm = { @@ -2172,7 +2159,7 @@ static struct omap_hwmod_class omap3xxx_gpmc_hwmod_class = {  };  static struct omap_hwmod_irq_info omap3xxx_gpmc_irqs[] = { -	{ .irq = 20 }, +	{ .irq = 20 + OMAP_INTC_START, },  	{ .irq = -1 }  }; @@ -3006,7 +2993,7 @@ static struct omap_mmu_dev_attr mmu_isp_dev_attr = {  static struct omap_hwmod omap3xxx_mmu_isp_hwmod;  static struct omap_hwmod_irq_info omap3xxx_mmu_isp_irqs[] = { -	{ .irq = 24 }, +	{ .irq = 24 + OMAP_INTC_START, },  	{ .irq = -1 }  }; @@ -3036,8 +3023,6 @@ static struct omap_hwmod omap3xxx_mmu_isp_hwmod = {  	.flags		= HWMOD_NO_IDLEST,  }; -#ifdef CONFIG_OMAP_IOMMU_IVA2 -  /* mmu iva */  static struct omap_mmu_dev_attr mmu_iva_dev_attr = { @@ -3048,7 +3033,7 @@ static struct omap_mmu_dev_attr mmu_iva_dev_attr = {  static struct omap_hwmod omap3xxx_mmu_iva_hwmod;  static struct omap_hwmod_irq_info omap3xxx_mmu_iva_irqs[] = { -	{ .irq = 28 }, +	{ .irq = 28 + OMAP_INTC_START, },  	{ .irq = -1 }  }; @@ -3077,20 +3062,22 @@ static struct omap_hwmod omap3xxx_mmu_iva_hwmod = {  	.name		= "mmu_iva",  	.class		= &omap3xxx_mmu_hwmod_class,  	.mpu_irqs	= omap3xxx_mmu_iva_irqs, +	.clkdm_name	= "iva2_clkdm",  	.rst_lines	= omap3xxx_mmu_iva_resets,  	.rst_lines_cnt	= ARRAY_SIZE(omap3xxx_mmu_iva_resets),  	.main_clk	= "iva2_ck",  	.prcm = {  		.omap2 = {  			.module_offs = OMAP3430_IVA2_MOD, +			.module_bit = OMAP3430_CM_FCLKEN_IVA2_EN_IVA2_SHIFT, +			.idlest_reg_id = 1, +			.idlest_idle_bit = OMAP3430_ST_IVA2_SHIFT,  		},  	},  	.dev_attr	= &mmu_iva_dev_attr,  	.flags		= HWMOD_NO_IDLEST,  }; -#endif -  /* l4_per -> gpio4 */  static struct omap_hwmod_addr_space omap3xxx_gpio4_addrs[] = {  	{ @@ -3693,6 +3680,50 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__aes = {  	.user		= OCP_USER_MPU | OCP_USER_SDMA,  }; +/* + * 'ssi' class + * synchronous serial interface (multichannel and full-duplex serial if) + */ + +static struct omap_hwmod_class_sysconfig omap34xx_ssi_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_MIDLEMODE | +			   SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap34xx_ssi_hwmod_class = { +	.name	= "ssi", +	.sysc	= &omap34xx_ssi_sysc, +}; + +static struct omap_hwmod omap34xx_ssi_hwmod = { +	.name		= "ssi", +	.class		= &omap34xx_ssi_hwmod_class, +	.clkdm_name	= "core_l4_clkdm", +	.main_clk	= "ssi_ssr_fck", +	.prcm		= { +		.omap2 = { +			.prcm_reg_id		= 1, +			.module_bit		= OMAP3430_EN_SSI_SHIFT, +			.module_offs		= CORE_MOD, +			.idlest_reg_id		= 1, +			.idlest_idle_bit	= OMAP3430ES2_ST_SSI_IDLE_SHIFT, +		}, +	}, +}; + +/* L4 CORE -> SSI */ +static struct omap_hwmod_ocp_if omap34xx_l4_core__ssi = { +	.master		= &omap3xxx_l4_core_hwmod, +	.slave		= &omap34xx_ssi_hwmod, +	.clk		= "ssi_ick", +	.user		= OCP_USER_MPU | OCP_USER_SDMA, +}; +  static struct omap_hwmod_ocp_if *omap3xxx_hwmod_ocp_ifs[] __initdata = {  	&omap3xxx_l3_main__l4_core,  	&omap3xxx_l3_main__l4_per, @@ -3815,9 +3846,8 @@ static struct omap_hwmod_ocp_if *omap34xx_hwmod_ocp_ifs[] __initdata = {  	&omap3xxx_l4_core__hdq1w,  	&omap3xxx_sad2d__l3,  	&omap3xxx_l4_core__mmu_isp, -#ifdef CONFIG_OMAP_IOMMU_IVA2  	&omap3xxx_l3_main__mmu_iva, -#endif +	&omap34xx_l4_core__ssi,  	NULL  }; @@ -3840,9 +3870,7 @@ static struct omap_hwmod_ocp_if *omap36xx_hwmod_ocp_ifs[] __initdata = {  	&omap3xxx_l4_core__hdq1w,  	&omap3xxx_sad2d__l3,  	&omap3xxx_l4_core__mmu_isp, -#ifdef CONFIG_OMAP_IOMMU_IVA2  	&omap3xxx_l3_main__mmu_iva, -#endif  	NULL  };  | 
