Re: [PATCH 4/4] OMAP4: HWMOD: fix DSS reset

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Tomi,

On 8/2/2011 12:33 PM, Valkeinen, Tomi wrote:
The HWMOD code currently fails to reset dispc and rfbi modules.

This patch adds all DSS clocks as opt clocks for dispc, and sets
HWMOD_CONTROL_OPT_CLKS_IN_RESET. This seems to fix the issue, although
this feels like a hack.

Enabling the opt clock for a proper reset seems to be a feature in several IPs. GPIO does require the same kind of trick.

The reason why this patch fixes the reset issue is probably because
dispc is the first DSS module being reset, and by enabling all the
clocks during dispc's reset we also allow the other DSS modules to
finish their reset as a side effect.

That part is a little bit unclear. Did you check that assumption with the HW architect?

Cc: Benoit Cousson<b-cousson@xxxxxx>
Signed-off-by: Tomi Valkeinen<tomi.valkeinen@xxxxxx>
---
  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    9 +++++++++
  1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index 21f03d4..4731f6b 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -1349,8 +1349,15 @@ static struct omap_hwmod_ocp_if *omap44xx_dss_dispc_slaves[] = {
  	&omap44xx_l4_per__dss_dispc,
  };

+static struct omap_hwmod_opt_clk dss_dispc_opt_clks[] = {
+	{ .role = "sys_clk", .clk = "dss_sys_clk" },
+	{ .role = "tv_clk", .clk = "dss_tv_clk" },
+	{ .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
+};
+

It seems that your are adding back the optional clocks your remove the patch before. Is it done on purpose?

Benoit

  static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
  	.name		= "dss_dispc",
+	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
  	.class		=&omap44xx_dispc_hwmod_class,
  	.clkdm_name	= "l3_dss_clkdm",
  	.mpu_irqs	= omap44xx_dss_dispc_irqs,
@@ -1362,6 +1369,8 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
  			.context_offs = OMAP4_RM_DSS_DSS_CONTEXT_OFFSET,
  		},
  	},
+	.opt_clks	= dss_dispc_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_dispc_opt_clks),
  	.slaves		= omap44xx_dss_dispc_slaves,
  	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dispc_slaves),
  	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP4430),

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux