linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] ARM: OMAP2PLUS: DSS hwmod fixes
@ 2012-04-13  8:01 Archit Taneja
  2012-04-13  8:01 ` [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface Archit Taneja
  2012-04-13  8:01 ` [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces Archit Taneja
  0 siblings, 2 replies; 11+ messages in thread
From: Archit Taneja @ 2012-04-13  8:01 UTC (permalink / raw)
  To: linux-arm-kernel

This set makes changes related to the OCPIF_SWSUP_IDLE flag for DSS slave
interfaces. This is required since the clocks of these interfaces were changed
recently with the patches below for OMAP2, OMAP3 and OMAP4 respectively:

b8ac10d8b75843c9ddd6aadf70a0cdf8aa783659
ARM: OMAP2xxx: HWMOD: fix DSS clock data

6c3d7e34d68ffae888d33bf364f447e0b415591f
ARM: OMAP3: HWMOD: fix DSS clock data

da7cdfac1b0c58d6863532dd3b432c3fbc034978
OMAP4: hwmod data: Change DSS main_clk scheme

Tested on beagle and OMAP4 SDP over 3.4-rc2 kernel.

Archit Taneja (2):
  ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC
    slave interface
  ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave
    interfaces

 arch/arm/mach-omap2/omap_hwmod_2420_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_2430_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    7 +++++++
 4 files changed, 7 insertions(+), 3 deletions(-)

-- 
1.7.5.4

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface
  2012-04-13  8:01 [PATCH 0/2] ARM: OMAP2PLUS: DSS hwmod fixes Archit Taneja
@ 2012-04-13  8:01 ` Archit Taneja
  2012-04-13 11:20   ` Paul Walmsley
  2012-04-13  8:01 ` [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces Archit Taneja
  1 sibling, 1 reply; 11+ messages in thread
From: Archit Taneja @ 2012-04-13  8:01 UTC (permalink / raw)
  To: linux-arm-kernel

The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
hence the OCPIF_SWSUP_IDLE flag was needed.

Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is now
"dss_ick".

Signed-off-by: Archit Taneja <archit@ti.com>
---
 arch/arm/mach-omap2/omap_hwmod_2420_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_2430_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |    1 -
 3 files changed, 0 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index a5409ce..a6bde34 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -1000,7 +1000,6 @@ static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
 			.flags	= OMAP_FIREWALL_L4,
 		}
 	},
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index c4f56cb..04a3885 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -1049,7 +1049,6 @@ static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
 	.slave		= &omap2430_dss_venc_hwmod,
 	.clk		= "dss_ick",
 	.addr		= omap2_dss_venc_addrs,
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 34b9766d..db86ce9 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -1676,7 +1676,6 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
 			.flags	= OMAP_FIREWALL_L4,
 		}
 	},
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-04-13  8:01 [PATCH 0/2] ARM: OMAP2PLUS: DSS hwmod fixes Archit Taneja
  2012-04-13  8:01 ` [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface Archit Taneja
@ 2012-04-13  8:01 ` Archit Taneja
  2012-04-13  8:43   ` Cousson, Benoit
  1 sibling, 1 reply; 11+ messages in thread
From: Archit Taneja @ 2012-04-13  8:01 UTC (permalink / raw)
  To: linux-arm-kernel

The clock for all DSS L3 slave interfaces had been recently changed to
"dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS clock domain
which can't autoidle when enabled.

Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS hwmods so
that clock is explicitly enabled and disabled by software. Without this,
"dss_fck" would be left as enabled and the OMAP4 device won't idle even when
DSS is not in use.

Signed-off-by: Archit Taneja <archit@ti.com>
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    7 +++++++
 1 files changed, 7 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 cc9bd10..f928347 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -1216,6 +1216,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss = {
 	.slave		= &omap44xx_dss_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1319,6 +1320,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dispc = {
 	.slave		= &omap44xx_dss_dispc_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_dispc_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1417,6 +1419,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi1 = {
 	.slave		= &omap44xx_dss_dsi1_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_dsi1_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1494,6 +1497,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_dsi2 = {
 	.slave		= &omap44xx_dss_dsi2_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_dsi2_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1591,6 +1595,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_hdmi = {
 	.slave		= &omap44xx_dss_hdmi_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_hdmi_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1683,6 +1688,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_rfbi = {
 	.slave		= &omap44xx_dss_rfbi_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_rfbi_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
@@ -1758,6 +1764,7 @@ static struct omap_hwmod_ocp_if omap44xx_l3_main_2__dss_venc = {
 	.slave		= &omap44xx_dss_venc_hwmod,
 	.clk		= "dss_fck",
 	.addr		= omap44xx_dss_venc_dma_addrs,
+	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_SDMA,
 };
 
-- 
1.7.5.4

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-04-13  8:01 ` [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces Archit Taneja
@ 2012-04-13  8:43   ` Cousson, Benoit
  2012-04-13  8:51     ` Archit Taneja
  0 siblings, 1 reply; 11+ messages in thread
From: Cousson, Benoit @ 2012-04-13  8:43 UTC (permalink / raw)
  To: linux-arm-kernel

On 4/13/2012 10:01 AM, Archit Taneja wrote:
> The clock for all DSS L3 slave interfaces had been recently changed to
> "dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS clock domain
> which can't autoidle when enabled.
>
> Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS hwmods so
> that clock is explicitly enabled and disabled by software. Without this,
> "dss_fck" would be left as enabled and the OMAP4 device won't idle even when
> DSS is not in use.

Yeah, that was done on purpose with Tomi knowning well that limitation.

The issue was mainly due to the lack of proper parent / child 
relationship between the DSS (the whole subsystem) and the DSS children 
at that time.

I think that Tomi posted a series to fix that for 3.4. So if we ensure 
that every DSS IPs are children of the DSS, then pm_runtime will always 
ensure that the DSS will be enabled each time a submodule is used.

So the right fix is to put back the proper iclk (l3_div) to the DSS 
instead of the dss_fck.

The current OMAP4 DSS clock setup is clearly a hack that should be fixed.

Regards,
Benoit

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-04-13  8:43   ` Cousson, Benoit
@ 2012-04-13  8:51     ` Archit Taneja
  2012-05-04  6:39       ` Paul Walmsley
  0 siblings, 1 reply; 11+ messages in thread
From: Archit Taneja @ 2012-04-13  8:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Friday 13 April 2012 02:13 PM, Cousson, Benoit wrote:
> On 4/13/2012 10:01 AM, Archit Taneja wrote:
>> The clock for all DSS L3 slave interfaces had been recently changed to
>> "dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS
>> clock domain
>> which can't autoidle when enabled.
>>
>> Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS
>> hwmods so
>> that clock is explicitly enabled and disabled by software. Without this,
>> "dss_fck" would be left as enabled and the OMAP4 device won't idle
>> even when
>> DSS is not in use.
>
> Yeah, that was done on purpose with Tomi knowning well that limitation.
>
> The issue was mainly due to the lack of proper parent / child
> relationship between the DSS (the whole subsystem) and the DSS children
> at that time.
>
> I think that Tomi posted a series to fix that for 3.4. So if we ensure
> that every DSS IPs are children of the DSS, then pm_runtime will always
> ensure that the DSS will be enabled each time a submodule is used.
>
> So the right fix is to put back the proper iclk (l3_div) to the DSS
> instead of the dss_fck.

Ok, I get it now. Tomi's patch series ensured the parent-child 
dependency, but they didn't switch the iclks back to l3_div, I guess 
that should be a part of the series too.

Thanks,
Archit

>
> The current OMAP4 DSS clock setup is clearly a hack that should be fixed.
>
> Regards,
> Benoit
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface
  2012-04-13  8:01 ` [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface Archit Taneja
@ 2012-04-13 11:20   ` Paul Walmsley
  2012-04-13 11:24     ` Paul Walmsley
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Walmsley @ 2012-04-13 11:20 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, 13 Apr 2012, Archit Taneja wrote:

> The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
> OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
> previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
> hence the OCPIF_SWSUP_IDLE flag was needed.
> 
> Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is now
> "dss_ick".
> 
> Signed-off-by: Archit Taneja <archit@ti.com>

Thanks, queued for 3.4-rc.


- Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface
  2012-04-13 11:20   ` Paul Walmsley
@ 2012-04-13 11:24     ` Paul Walmsley
  2012-04-13 11:37       ` Archit Taneja
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Walmsley @ 2012-04-13 11:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, 13 Apr 2012, Paul Walmsley wrote:

> On Fri, 13 Apr 2012, Archit Taneja wrote:
> 
> > The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
> > OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
> > previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
> > hence the OCPIF_SWSUP_IDLE flag was needed.
> > 
> > Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is now
> > "dss_ick".
> > 
> > Signed-off-by: Archit Taneja <archit@ti.com>
> 
> Thanks, queued for 3.4-rc.

By the way, I added another sentence to the commit log to describe what is 
being fixed.  Please let me know if you have any comments.


- Paul

From: Archit Taneja <archit@ti.com>
Date: Fri, 13 Apr 2012 13:31:55 +0530
Subject: [PATCH 3/3] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag
 from VENC slave interface

The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
hence the OCPIF_SWSUP_IDLE flag was needed.

Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is
now "dss_ick".  This allows the PRCM hardware to autoidle the VENC
interface clocks when they are not active, rather than relying on the
software to do it, which can keep the interface clocks active
unnecessarily.

Signed-off-by: Archit Taneja <archit@ti.com>
[paul at pwsan.com: add a short description of the fix to the commit log]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
 arch/arm/mach-omap2/omap_hwmod_2420_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_2430_data.c |    1 -
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |    1 -
 3 files changed, 3 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
index a5409ce..a6bde34 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
@@ -1000,7 +1000,6 @@ static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
 			.flags	= OMAP_FIREWALL_L4,
 		}
 	},
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
index c4f56cb..04a3885 100644
--- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
@@ -1049,7 +1049,6 @@ static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
 	.slave		= &omap2430_dss_venc_hwmod,
 	.clk		= "dss_ick",
 	.addr		= omap2_dss_venc_addrs,
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
index 34b9766d..db86ce9 100644
--- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
@@ -1676,7 +1676,6 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
 			.flags	= OMAP_FIREWALL_L4,
 		}
 	},
-	.flags		= OCPIF_SWSUP_IDLE,
 	.user		= OCP_USER_MPU | OCP_USER_SDMA,
 };
 
-- 
1.7.10

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface
  2012-04-13 11:24     ` Paul Walmsley
@ 2012-04-13 11:37       ` Archit Taneja
  0 siblings, 0 replies; 11+ messages in thread
From: Archit Taneja @ 2012-04-13 11:37 UTC (permalink / raw)
  To: linux-arm-kernel

Hi,

On Friday 13 April 2012 04:54 PM, Paul Walmsley wrote:
> On Fri, 13 Apr 2012, Paul Walmsley wrote:
>
>> On Fri, 13 Apr 2012, Archit Taneja wrote:
>>
>>> The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
>>> OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
>>> previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
>>> hence the OCPIF_SWSUP_IDLE flag was needed.
>>>
>>> Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is now
>>> "dss_ick".
>>>
>>> Signed-off-by: Archit Taneja<archit@ti.com>
>>
>> Thanks, queued for 3.4-rc.
>
> By the way, I added another sentence to the commit log to describe what is
> being fixed.  Please let me know if you have any comments.

Thanks for improving the commit. It looks good to me.

Archit


>
>
> - Paul
>
> From: Archit Taneja<archit@ti.com>
> Date: Fri, 13 Apr 2012 13:31:55 +0530
> Subject: [PATCH 3/3] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag
>   from VENC slave interface
>
> The clocks for all DSS slave interfaces were recently changed to "dss_ick" on
> OMAP2 and OMAP3, this clock can be autoidled by PRCM. The VENC interface
> previously had "dss_54m_fck" as it's clock which couldn't be autoidled, and
> hence the OCPIF_SWSUP_IDLE flag was needed.
>
> Remove the OCPIF_SWSUP_IDLE flag from VENC interfaces as it's clock is
> now "dss_ick".  This allows the PRCM hardware to autoidle the VENC
> interface clocks when they are not active, rather than relying on the
> software to do it, which can keep the interface clocks active
> unnecessarily.
>
> Signed-off-by: Archit Taneja<archit@ti.com>
> [paul at pwsan.com: add a short description of the fix to the commit log]
> Signed-off-by: Paul Walmsley<paul@pwsan.com>
> ---
>   arch/arm/mach-omap2/omap_hwmod_2420_data.c |    1 -
>   arch/arm/mach-omap2/omap_hwmod_2430_data.c |    1 -
>   arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |    1 -
>   3 files changed, 3 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> index a5409ce..a6bde34 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c
> @@ -1000,7 +1000,6 @@ static struct omap_hwmod_ocp_if omap2420_l4_core__dss_venc = {
>   			.flags	= OMAP_FIREWALL_L4,
>   		}
>   	},
> -	.flags		= OCPIF_SWSUP_IDLE,
>   	.user		= OCP_USER_MPU | OCP_USER_SDMA,
>   };
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_2430_data.c b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> index c4f56cb..04a3885 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_2430_data.c
> @@ -1049,7 +1049,6 @@ static struct omap_hwmod_ocp_if omap2430_l4_core__dss_venc = {
>   	.slave		=&omap2430_dss_venc_hwmod,
>   	.clk		= "dss_ick",
>   	.addr		= omap2_dss_venc_addrs,
> -	.flags		= OCPIF_SWSUP_IDLE,
>   	.user		= OCP_USER_MPU | OCP_USER_SDMA,
>   };
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> index 34b9766d..db86ce9 100644
> --- a/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> +++ b/arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
> @@ -1676,7 +1676,6 @@ static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_venc = {
>   			.flags	= OMAP_FIREWALL_L4,
>   		}
>   	},
> -	.flags		= OCPIF_SWSUP_IDLE,
>   	.user		= OCP_USER_MPU | OCP_USER_SDMA,
>   };
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-04-13  8:51     ` Archit Taneja
@ 2012-05-04  6:39       ` Paul Walmsley
  2012-05-04  7:03         ` Archit Taneja
  0 siblings, 1 reply; 11+ messages in thread
From: Paul Walmsley @ 2012-05-04  6:39 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Archit,

On Fri, 13 Apr 2012, Archit Taneja wrote:

> On Friday 13 April 2012 02:13 PM, Cousson, Benoit wrote:
> > On 4/13/2012 10:01 AM, Archit Taneja wrote:
> > > The clock for all DSS L3 slave interfaces had been recently changed to
> > > "dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS
> > > clock domain
> > > which can't autoidle when enabled.
> > > 
> > > Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS
> > > hwmods so
> > > that clock is explicitly enabled and disabled by software. Without this,
> > > "dss_fck" would be left as enabled and the OMAP4 device won't idle
> > > even when
> > > DSS is not in use.
> > 
> > Yeah, that was done on purpose with Tomi knowning well that limitation.
> > 
> > The issue was mainly due to the lack of proper parent / child
> > relationship between the DSS (the whole subsystem) and the DSS children
> > at that time.
> > 
> > I think that Tomi posted a series to fix that for 3.4. So if we ensure
> > that every DSS IPs are children of the DSS, then pm_runtime will always
> > ensure that the DSS will be enabled each time a submodule is used.
> > 
> > So the right fix is to put back the proper iclk (l3_div) to the DSS
> > instead of the dss_fck.
> 
> Ok, I get it now. Tomi's patch series ensured the parent-child 
> dependency, but they didn't switch the iclks back to l3_div, I guess 
> that should be a part of the series too.

Just checking on this one.  Does this patch need to be updated ?


- Paul

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-05-04  6:39       ` Paul Walmsley
@ 2012-05-04  7:03         ` Archit Taneja
  2012-05-04  8:51           ` Tomi Valkeinen
  0 siblings, 1 reply; 11+ messages in thread
From: Archit Taneja @ 2012-05-04  7:03 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Paul,

On Friday 04 May 2012 12:09 PM, Paul Walmsley wrote:
> Hi Archit,
>
> On Fri, 13 Apr 2012, Archit Taneja wrote:
>
>> On Friday 13 April 2012 02:13 PM, Cousson, Benoit wrote:
>>> On 4/13/2012 10:01 AM, Archit Taneja wrote:
>>>> The clock for all DSS L3 slave interfaces had been recently changed to
>>>> "dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS
>>>> clock domain
>>>> which can't autoidle when enabled.
>>>>
>>>> Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS
>>>> hwmods so
>>>> that clock is explicitly enabled and disabled by software. Without this,
>>>> "dss_fck" would be left as enabled and the OMAP4 device won't idle
>>>> even when
>>>> DSS is not in use.
>>>
>>> Yeah, that was done on purpose with Tomi knowning well that limitation.
>>>
>>> The issue was mainly due to the lack of proper parent / child
>>> relationship between the DSS (the whole subsystem) and the DSS children
>>> at that time.
>>>
>>> I think that Tomi posted a series to fix that for 3.4. So if we ensure
>>> that every DSS IPs are children of the DSS, then pm_runtime will always
>>> ensure that the DSS will be enabled each time a submodule is used.
>>>
>>> So the right fix is to put back the proper iclk (l3_div) to the DSS
>>> instead of the dss_fck.
>>
>> Ok, I get it now. Tomi's patch series ensured the parent-child
>> dependency, but they didn't switch the iclks back to l3_div, I guess
>> that should be a part of the series too.
>
> Just checking on this one.  Does this patch need to be updated ?
>

We were working on this, but we realised that only having a parent-child 
relation in dss platform devices won't be sufficient to remove "the use 
of dss_fck(or MODULEMODE bits) as a slave clock" hack.

The issue is that during bootup(when omap_hwmod_setup_all() is called), 
all hwmods are enabled independently, so all dss hwmods need to enable 
the MODULEMODE bits for them to be setup correctly.

With the parent-child relation in platform devices in DSS, only the 
parent platform device's hwmod("dss_core" in our case) should enable and 
disable the MODULEMODE bits. If the children also become capable of 
enabling/disabling it, then things wouldn't work.

Hence, to go ahead with this approach, the hwmod's themselves need to 
have some sort of parent child relationship, or atleast some sort of use 
counting for MODULEMODE bits. Benoit and Tomi could comment more on this.

Hence we are sort of stuck :)

Archit

>
> - Paul
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces
  2012-05-04  7:03         ` Archit Taneja
@ 2012-05-04  8:51           ` Tomi Valkeinen
  0 siblings, 0 replies; 11+ messages in thread
From: Tomi Valkeinen @ 2012-05-04  8:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, 2012-05-04 at 12:33 +0530, Archit Taneja wrote:
> Hi Paul,
> 
> On Friday 04 May 2012 12:09 PM, Paul Walmsley wrote:
> > Hi Archit,
> >
> > On Fri, 13 Apr 2012, Archit Taneja wrote:
> >
> >> On Friday 13 April 2012 02:13 PM, Cousson, Benoit wrote:
> >>> On 4/13/2012 10:01 AM, Archit Taneja wrote:
> >>>> The clock for all DSS L3 slave interfaces had been recently changed to
> >>>> "dss_fck" from "l3_div_ck". "dss_fck" is an optional clock in DSS
> >>>> clock domain
> >>>> which can't autoidle when enabled.
> >>>>
> >>>> Add OCPIF_SWSUP_IDLE flag to all the L3 slave interfaces used by DSS
> >>>> hwmods so
> >>>> that clock is explicitly enabled and disabled by software. Without this,
> >>>> "dss_fck" would be left as enabled and the OMAP4 device won't idle
> >>>> even when
> >>>> DSS is not in use.
> >>>
> >>> Yeah, that was done on purpose with Tomi knowning well that limitation.
> >>>
> >>> The issue was mainly due to the lack of proper parent / child
> >>> relationship between the DSS (the whole subsystem) and the DSS children
> >>> at that time.
> >>>
> >>> I think that Tomi posted a series to fix that for 3.4. So if we ensure
> >>> that every DSS IPs are children of the DSS, then pm_runtime will always
> >>> ensure that the DSS will be enabled each time a submodule is used.
> >>>
> >>> So the right fix is to put back the proper iclk (l3_div) to the DSS
> >>> instead of the dss_fck.
> >>
> >> Ok, I get it now. Tomi's patch series ensured the parent-child
> >> dependency, but they didn't switch the iclks back to l3_div, I guess
> >> that should be a part of the series too.
> >
> > Just checking on this one.  Does this patch need to be updated ?
> >
> 
> We were working on this, but we realised that only having a parent-child 
> relation in dss platform devices won't be sufficient to remove "the use 
> of dss_fck(or MODULEMODE bits) as a slave clock" hack.
> 
> The issue is that during bootup(when omap_hwmod_setup_all() is called), 
> all hwmods are enabled independently, so all dss hwmods need to enable 
> the MODULEMODE bits for them to be setup correctly.
> 
> With the parent-child relation in platform devices in DSS, only the 
> parent platform device's hwmod("dss_core" in our case) should enable and 
> disable the MODULEMODE bits. If the children also become capable of 
> enabling/disabling it, then things wouldn't work.
> 
> Hence, to go ahead with this approach, the hwmod's themselves need to 
> have some sort of parent child relationship, or atleast some sort of use 
> counting for MODULEMODE bits. Benoit and Tomi could comment more on this.
> 
> Hence we are sort of stuck :)

Yes, this is my understanding also. I got the impression from Benoit
that adding such a parent-child relationship is not trivial.

 Tomi

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120504/c2262ca4/attachment-0001.sig>

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2012-05-04  8:51 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-04-13  8:01 [PATCH 0/2] ARM: OMAP2PLUS: DSS hwmod fixes Archit Taneja
2012-04-13  8:01 ` [PATCH 1/2] ARM: OMAP2/3: VENC hwmods: Remove OCPIF_SWSUP_IDLE flag from VENC slave interface Archit Taneja
2012-04-13 11:20   ` Paul Walmsley
2012-04-13 11:24     ` Paul Walmsley
2012-04-13 11:37       ` Archit Taneja
2012-04-13  8:01 ` [PATCH 2/2] ARM: OMAP4: DSS hwmods: Add OCPIF_SWSUP_IDLE to all DSS L3 slave interfaces Archit Taneja
2012-04-13  8:43   ` Cousson, Benoit
2012-04-13  8:51     ` Archit Taneja
2012-05-04  6:39       ` Paul Walmsley
2012-05-04  7:03         ` Archit Taneja
2012-05-04  8:51           ` Tomi Valkeinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).