forked from Minki/linux
ARM: OMAP2xxx: HWMOD: Fix DSS reset
DSS needs all DSS clocks to be enabled to be able to finish reset properly. Before v3.1-rc1 the omapdss driver was managing clocks and resets correctly. However, when omapdss started using runtime PM at v3.1-rc1, the responsibility for the reset moved to HWMOD framework. HWMOD framework does not currently enable all the DSS clocks when resetting the DSS hardware. This hasn't caused any problems so far, but we may just have been lucky. This patch sets HWMOD_CONTROL_OPT_CLKS_IN_RESET for dss_core in OMAP2xxx HWMOD data, fixing the issue. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> [paul@pwsan.com: merged duplicate .flags fields] Signed-off-by: Paul Walmsley <paul@pwsan.com>
This commit is contained in:
parent
1ea6b8f489
commit
1258ea596f
@ -875,6 +875,10 @@ static struct omap_hwmod_ocp_if *omap2420_dss_slaves[] = {
|
||||
};
|
||||
|
||||
static struct omap_hwmod_opt_clk dss_opt_clks[] = {
|
||||
/*
|
||||
* The DSS HW needs all DSS clocks enabled during reset. The dss_core
|
||||
* driver does not use these clocks.
|
||||
*/
|
||||
{ .role = "tv_clk", .clk = "dss_54m_fck" },
|
||||
{ .role = "sys_clk", .clk = "dss2_fck" },
|
||||
};
|
||||
@ -899,7 +903,7 @@ static struct omap_hwmod omap2420_dss_core_hwmod = {
|
||||
.slaves_cnt = ARRAY_SIZE(omap2420_dss_slaves),
|
||||
.masters = omap2420_dss_masters,
|
||||
.masters_cnt = ARRAY_SIZE(omap2420_dss_masters),
|
||||
.flags = HWMOD_NO_IDLEST,
|
||||
.flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
||||
};
|
||||
|
||||
/* l4_core -> dss_dispc */
|
||||
|
@ -942,6 +942,10 @@ static struct omap_hwmod_ocp_if *omap2430_dss_slaves[] = {
|
||||
};
|
||||
|
||||
static struct omap_hwmod_opt_clk dss_opt_clks[] = {
|
||||
/*
|
||||
* The DSS HW needs all DSS clocks enabled during reset. The dss_core
|
||||
* driver does not use these clocks.
|
||||
*/
|
||||
{ .role = "tv_clk", .clk = "dss_54m_fck" },
|
||||
{ .role = "sys_clk", .clk = "dss2_fck" },
|
||||
};
|
||||
@ -966,7 +970,7 @@ static struct omap_hwmod omap2430_dss_core_hwmod = {
|
||||
.slaves_cnt = ARRAY_SIZE(omap2430_dss_slaves),
|
||||
.masters = omap2430_dss_masters,
|
||||
.masters_cnt = ARRAY_SIZE(omap2430_dss_masters),
|
||||
.flags = HWMOD_NO_IDLEST,
|
||||
.flags = HWMOD_NO_IDLEST | HWMOD_CONTROL_OPT_CLKS_IN_RESET,
|
||||
};
|
||||
|
||||
/* l4_core -> dss_dispc */
|
||||
|
Loading…
Reference in New Issue
Block a user