diff mbox

[v2,17/18] OMAP4: hwmod data: Modify DSS opt clocks

Message ID 1309552901-8944-18-git-send-email-b-cousson@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Benoit Cousson July 1, 2011, 8:41 p.m. UTC
From: Tomi Valkeinen <tomi.valkeinen@ti.com>

Add missing DSS optional clocks to HWMOD data for OMAP4xxx.

Add HWMOD_CONTROL_OPT_CLKS_IN_RESET flag for dispc to fix dispc reset.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
[b-cousson@ti.com: Remove a comment and update the subject]
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |   44 ++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)

Comments

Tomi Valkeinen July 2, 2011, 9:13 a.m. UTC | #1
Hi Benoit,

On Fri, 2011-07-01 at 22:41 +0200, Benoit Cousson wrote:
> From: Tomi Valkeinen <tomi.valkeinen@ti.com>
> 
> Add missing DSS optional clocks to HWMOD data for OMAP4xxx.
> 
> Add HWMOD_CONTROL_OPT_CLKS_IN_RESET flag for dispc to fix dispc reset.
> 
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> [b-cousson@ti.com: Remove a comment and update the subject]
> Signed-off-by: Benoit Cousson <b-cousson@ti.com>

This patch adds "fck" opt-clocks for DSS. After your patch set
for_3.1/5_auto_fck_clkdev, in which you create "fck" automatically, I
see:

[    0.218231] omap_device: omapdss_dss: fck already exist
[    0.218261] omap_device: omapdss_dss: fck already exist
[    0.218261] omap_device: omapdss_dss: sys_clk already exist
[    0.218261] omap_device: omapdss_dss: tv_clk already exist
[    0.218322] omap_device: omapdss_dss: video_clk already exist
[    0.218627] omap_device: omapdss_dispc: fck already exist
[    0.219329] omap_device: omapdss_venc: fck already exist
[    0.219635] omap_device: omapdss_dsi1: fck already exist
[    0.219970] omap_device: omapdss_dsi2: fck already exist
[    0.220336] omap_device: omapdss_hdmi: fck already exist

So I think the "fck" clocks in this patch should be removed. I only
added them for compatibility, as I didn't have the automatic "fck"
creation patch in my tree.

Also, either you didn't email the patch set in
for_3.1/5_auto_fck_clkdev, or I'm just blind... 

 Tomi
Tomi Valkeinen July 2, 2011, 9:36 a.m. UTC | #2
On Sat, 2011-07-02 at 12:13 +0300, Tomi Valkeinen wrote:
> Hi Benoit,
> 
> On Fri, 2011-07-01 at 22:41 +0200, Benoit Cousson wrote:
> > From: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > 
> > Add missing DSS optional clocks to HWMOD data for OMAP4xxx.
> > 
> > Add HWMOD_CONTROL_OPT_CLKS_IN_RESET flag for dispc to fix dispc reset.
> > 
> > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
> > [b-cousson@ti.com: Remove a comment and update the subject]
> > Signed-off-by: Benoit Cousson <b-cousson@ti.com>
> 
> This patch adds "fck" opt-clocks for DSS. After your patch set
> for_3.1/5_auto_fck_clkdev, in which you create "fck" automatically, I
> see:
> 
> [    0.218231] omap_device: omapdss_dss: fck already exist
> [    0.218261] omap_device: omapdss_dss: fck already exist
> [    0.218261] omap_device: omapdss_dss: sys_clk already exist
> [    0.218261] omap_device: omapdss_dss: tv_clk already exist
> [    0.218322] omap_device: omapdss_dss: video_clk already exist
> [    0.218627] omap_device: omapdss_dispc: fck already exist
> [    0.219329] omap_device: omapdss_venc: fck already exist
> [    0.219635] omap_device: omapdss_dsi1: fck already exist
> [    0.219970] omap_device: omapdss_dsi2: fck already exist
> [    0.220336] omap_device: omapdss_hdmi: fck already exist
> 
> So I think the "fck" clocks in this patch should be removed. I only
> added them for compatibility, as I didn't have the automatic "fck"
> creation patch in my tree.

Even after removing the "fck"s from the hwmod data, I see:

[    0.218200] omap_device: omapdss_dss: fck already exist
[    0.218231] omap_device: omapdss_dss: sys_clk already exist
[    0.218231] omap_device: omapdss_dss: tv_clk already exist
[    0.218292] omap_device: omapdss_dss: video_clk already exist

I think those come from the clock44xxx_data.c. I believe those are more
or less exact duplicates from the driver's point of view? If so, I guess
the ones in clockdata could be removed after adding those to hwmod data?

I also see that the main_clk for all dss hwmods is dss_dss_clk. Is that
correct? In some earlier version the clocks were a bit different, and,
at least according to TRM pictures, correct. For example, rfbi didn't
have a main_clk at all, hdmi's main_clk was dss_48mhz_clk etc. Was that
changed on purpose?

I've tested all the branches from 1 to 7 on OMAP4 SDP, and I'm able to
boot all of them (branch 7 needed merging the mmc branch), and I was
able to start the dss driver. I also merged my latest dss pmruntime
branch, which worked fine.

I still need to test OMAP2/3, and the different outputs on OMAP4 (only
DSI is tested so far).

 Tomi
Paul Walmsley July 9, 2011, 8:24 a.m. UTC | #3
Hi,

On Sat, 2 Jul 2011, Tomi Valkeinen wrote:

> This patch adds "fck" opt-clocks for DSS. After your patch set
> for_3.1/5_auto_fck_clkdev, in which you create "fck" automatically, I
> see:
> 
> [    0.218231] omap_device: omapdss_dss: fck already exist
> [    0.218261] omap_device: omapdss_dss: fck already exist
> [    0.218261] omap_device: omapdss_dss: sys_clk already exist
> [    0.218261] omap_device: omapdss_dss: tv_clk already exist
> [    0.218322] omap_device: omapdss_dss: video_clk already exist
> [    0.218627] omap_device: omapdss_dispc: fck already exist
> [    0.219329] omap_device: omapdss_venc: fck already exist
> [    0.219635] omap_device: omapdss_dsi1: fck already exist
> [    0.219970] omap_device: omapdss_dsi2: fck already exist
> [    0.220336] omap_device: omapdss_hdmi: fck already exist
> 
> So I think the "fck" clocks in this patch should be removed. I only
> added them for compatibility, as I didn't have the automatic "fck"
> creation patch in my tree.

Thanks Tomi, I've gone ahead and removed these.


- Paul
Paul Walmsley July 9, 2011, 8:26 a.m. UTC | #4
On Sat, 2 Jul 2011, Tomi Valkeinen wrote:

> Even after removing the "fck"s from the hwmod data, I see:
> 
> [    0.218200] omap_device: omapdss_dss: fck already exist
> [    0.218231] omap_device: omapdss_dss: sys_clk already exist
> [    0.218231] omap_device: omapdss_dss: tv_clk already exist
> [    0.218292] omap_device: omapdss_dss: video_clk already exist
> 
> I think those come from the clock44xxx_data.c. I believe those are more
> or less exact duplicates from the driver's point of view? If so, I guess
> the ones in clockdata could be removed after adding those to hwmod data?

I've removed these too.


thanks,

- Paul
diff mbox

Patch

diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index f7f4840..ce4259d 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -1165,6 +1165,7 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_slaves[] = {
 };
 
 static struct omap_hwmod_opt_clk dss_opt_clks[] = {
+	{ .role = "fck", .clk = "dss_dss_clk" },
 	{ .role = "sys_clk", .clk = "dss_sys_clk" },
 	{ .role = "tv_clk", .clk = "dss_tv_clk" },
 	{ .role = "dss_clk", .clk = "dss_dss_clk" },
@@ -1264,9 +1265,17 @@  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 = "fck", .clk = "dss_dss_clk" },
+	{ .role = "sys_clk", .clk = "dss_sys_clk" },
+	{ .role = "tv_clk", .clk = "dss_tv_clk" },
+	{ .role = "hdmi_clk", .clk = "dss_48mhz_clk" },
+};
+
 static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
 	.name		= "dss_dispc",
 	.class		= &omap44xx_dispc_hwmod_class,
+	.flags		= HWMOD_CONTROL_OPT_CLKS_IN_RESET,
 	.mpu_irqs	= omap44xx_dss_dispc_irqs,
 	.mpu_irqs_cnt	= ARRAY_SIZE(omap44xx_dss_dispc_irqs),
 	.sdma_reqs	= omap44xx_dss_dispc_sdma_reqs,
@@ -1277,6 +1286,8 @@  static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.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_OMAP44XX),
@@ -1355,6 +1366,11 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_dsi1_slaves[] = {
 	&omap44xx_l4_per__dss_dsi1,
 };
 
+static struct omap_hwmod_opt_clk dss_dsi1_opt_clks[] = {
+	{ .role = "fck", .clk = "dss_dss_clk" },
+	{ .role = "sys_clk", .clk = "dss_sys_clk" },
+};
+
 static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
 	.name		= "dss_dsi1",
 	.class		= &omap44xx_dsi_hwmod_class,
@@ -1368,6 +1384,8 @@  static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.opt_clks	= dss_dsi1_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_dsi1_opt_clks),
 	.slaves		= omap44xx_dss_dsi1_slaves,
 	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dsi1_slaves),
 	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP44XX),
@@ -1425,6 +1443,11 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_dsi2_slaves[] = {
 	&omap44xx_l4_per__dss_dsi2,
 };
 
+static struct omap_hwmod_opt_clk dss_dsi2_opt_clks[] = {
+	{ .role = "fck", .clk = "dss_dss_clk" },
+	{ .role = "sys_clk", .clk = "dss_sys_clk" },
+};
+
 static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
 	.name		= "dss_dsi2",
 	.class		= &omap44xx_dsi_hwmod_class,
@@ -1438,6 +1461,8 @@  static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.opt_clks	= dss_dsi2_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_dsi2_opt_clks),
 	.slaves		= omap44xx_dss_dsi2_slaves,
 	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_dsi2_slaves),
 	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP44XX),
@@ -1515,6 +1540,11 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_hdmi_slaves[] = {
 	&omap44xx_l4_per__dss_hdmi,
 };
 
+static struct omap_hwmod_opt_clk dss_hdmi_opt_clks[] = {
+	{ .role = "sys_clk", .clk = "dss_sys_clk" },
+	{ .role = "fck", .clk = "dss_48mhz_clk" },
+};
+
 static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
 	.name		= "dss_hdmi",
 	.class		= &omap44xx_hdmi_hwmod_class,
@@ -1528,6 +1558,8 @@  static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.opt_clks	= dss_hdmi_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_hdmi_opt_clks),
 	.slaves		= omap44xx_dss_hdmi_slaves,
 	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_hdmi_slaves),
 	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP44XX),
@@ -1601,6 +1633,10 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_rfbi_slaves[] = {
 	&omap44xx_l4_per__dss_rfbi,
 };
 
+static struct omap_hwmod_opt_clk dss_rfbi_opt_clks[] = {
+	{ .role = "ick", .clk = "dss_fck" },
+};
+
 static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
 	.name		= "dss_rfbi",
 	.class		= &omap44xx_rfbi_hwmod_class,
@@ -1612,6 +1648,8 @@  static struct omap_hwmod omap44xx_dss_rfbi_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.opt_clks	= dss_rfbi_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_rfbi_opt_clks),
 	.slaves		= omap44xx_dss_rfbi_slaves,
 	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_rfbi_slaves),
 	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP44XX),
@@ -1670,6 +1708,10 @@  static struct omap_hwmod_ocp_if *omap44xx_dss_venc_slaves[] = {
 	&omap44xx_l4_per__dss_venc,
 };
 
+static struct omap_hwmod_opt_clk dss_venc_opt_clks[] = {
+	{ .role = "fck", .clk = "dss_tv_clk" },
+};
+
 static struct omap_hwmod omap44xx_dss_venc_hwmod = {
 	.name		= "dss_venc",
 	.class		= &omap44xx_venc_hwmod_class,
@@ -1679,6 +1721,8 @@  static struct omap_hwmod omap44xx_dss_venc_hwmod = {
 			.clkctrl_reg = OMAP4430_CM_DSS_DSS_CLKCTRL,
 		},
 	},
+	.opt_clks	= dss_venc_opt_clks,
+	.opt_clks_cnt	= ARRAY_SIZE(dss_venc_opt_clks),
 	.slaves		= omap44xx_dss_venc_slaves,
 	.slaves_cnt	= ARRAY_SIZE(omap44xx_dss_venc_slaves),
 	.omap_chip	= OMAP_CHIP_INIT(CHIP_IS_OMAP44XX),