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 | 37 | 
1 files changed, 32 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c index bc9035ec87f..7f8915ad509 100644 --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c @@ -1369,9 +1369,14 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_slaves[] = {  };  static struct omap_hwmod_opt_clk dss_opt_clks[] = { -	{ .role = "tv_clk", .clk = "dss_tv_fck" }, -	{ .role = "video_clk", .clk = "dss_96m_fck" }, +	/* +	 * The DSS HW needs all DSS clocks enabled during reset. The dss_core +	 * driver does not use these clocks. +	 */  	{ .role = "sys_clk", .clk = "dss2_alwon_fck" }, +	{ .role = "tv_clk", .clk = "dss_tv_fck" }, +	/* required only on OMAP3430 */ +	{ .role = "tv_dac_clk", .clk = "dss_96m_fck" },  };  static struct omap_hwmod omap3430es1_dss_core_hwmod = { @@ -1394,11 +1399,12 @@ static struct omap_hwmod omap3430es1_dss_core_hwmod = {  	.slaves_cnt	= ARRAY_SIZE(omap3430es1_dss_slaves),  	.masters	= omap3xxx_dss_masters,  	.masters_cnt	= ARRAY_SIZE(omap3xxx_dss_masters), -	.flags		= HWMOD_NO_IDLEST, +	.flags		= HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,  };  static struct omap_hwmod omap3xxx_dss_core_hwmod = {  	.name		= "dss_core", +	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,  	.class		= &omap2_dss_hwmod_class,  	.main_clk	= "dss1_alwon_fck", /* instead of dss_fck */  	.sdma_reqs	= omap3xxx_dss_sdma_chs, @@ -1456,6 +1462,7 @@ static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {  	.slaves		= omap3xxx_dss_dispc_slaves,  	.slaves_cnt	= ARRAY_SIZE(omap3xxx_dss_dispc_slaves),  	.flags		= HWMOD_NO_IDLEST, +	.dev_attr	= &omap2_3_dss_dispc_dev_attr  };  /* @@ -1486,6 +1493,7 @@ static struct omap_hwmod_addr_space omap3xxx_dss_dsi1_addrs[] = {  static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dsi1 = {  	.master		= &omap3xxx_l4_core_hwmod,  	.slave		= &omap3xxx_dss_dsi1_hwmod, +	.clk		= "dss_ick",  	.addr		= omap3xxx_dss_dsi1_addrs,  	.fw = {  		.omap2 = { @@ -1502,6 +1510,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dsi1_slaves[] = {  	&omap3xxx_l4_core__dss_dsi1,  }; +static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = { +	{ .role = "sys_clk", .clk = "dss2_alwon_fck" }, +}; +  static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {  	.name		= "dss_dsi1",  	.class		= &omap3xxx_dsi_hwmod_class, @@ -1514,6 +1526,8 @@ static struct omap_hwmod omap3xxx_dss_dsi1_hwmod = {  			.module_offs = OMAP3430_DSS_MOD,  		},  	}, +	.opt_clks	= dss_dsi1_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(dss_dsi1_opt_clks),  	.slaves		= omap3xxx_dss_dsi1_slaves,  	.slaves_cnt	= ARRAY_SIZE(omap3xxx_dss_dsi1_slaves),  	.flags		= HWMOD_NO_IDLEST, @@ -1540,6 +1554,10 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_rfbi_slaves[] = {  	&omap3xxx_l4_core__dss_rfbi,  }; +static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = { +	{ .role = "ick", .clk = "dss_ick" }, +}; +  static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {  	.name		= "dss_rfbi",  	.class		= &omap2_rfbi_hwmod_class, @@ -1551,6 +1569,8 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {  			.module_offs = OMAP3430_DSS_MOD,  		},  	}, +	.opt_clks	= dss_rfbi_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),  	.slaves		= omap3xxx_dss_rfbi_slaves,  	.slaves_cnt	= ARRAY_SIZE(omap3xxx_dss_rfbi_slaves),  	.flags		= HWMOD_NO_IDLEST, @@ -1560,7 +1580,7 @@ static struct omap_hwmod omap3xxx_dss_rfbi_hwmod = {  static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {  	.master		= &omap3xxx_l4_core_hwmod,  	.slave		= &omap3xxx_dss_venc_hwmod, -	.clk		= "dss_tv_fck", +	.clk		= "dss_ick",  	.addr		= omap2_dss_venc_addrs,  	.fw = {  		.omap2 = { @@ -1578,10 +1598,15 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_venc_slaves[] = {  	&omap3xxx_l4_core__dss_venc,  }; +static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = { +	/* required only on OMAP3430 */ +	{ .role = "tv_dac_clk", .clk = "dss_96m_fck" }, +}; +  static struct omap_hwmod omap3xxx_dss_venc_hwmod = {  	.name		= "dss_venc",  	.class		= &omap2_venc_hwmod_class, -	.main_clk	= "dss1_alwon_fck", +	.main_clk	= "dss_tv_fck",  	.prcm		= {  		.omap2 = {  			.prcm_reg_id = 1, @@ -1589,6 +1614,8 @@ static struct omap_hwmod omap3xxx_dss_venc_hwmod = {  			.module_offs = OMAP3430_DSS_MOD,  		},  	}, +	.opt_clks	= dss_venc_opt_clks, +	.opt_clks_cnt	= ARRAY_SIZE(dss_venc_opt_clks),  	.slaves		= omap3xxx_dss_venc_slaves,  	.slaves_cnt	= ARRAY_SIZE(omap3xxx_dss_venc_slaves),  	.flags		= HWMOD_NO_IDLEST,  |