Patchwork [3/3] ARM: OMAP2+: hwmod code: convert missing clockdomain warnings to debug messages

login
register
mail settings
Submitter Paul Walmsley
Date Sept. 18, 2012, 9:12 p.m.
Message ID <20120918211251.16484.18401.stgit@dusk.lan>
Download mbox | patch
Permalink /patch/184859/
State New
Headers show

Comments

Paul Walmsley - Sept. 18, 2012, 9:12 p.m.
The decision was made a few months ago to allow struct omap_hwmod
records and struct clk records to omit clockdomain information if the
clockdomain is not software-controllable.  See for example commit
868c157df9721675c19729eed2c96bac6c3f1d01 ("ARM: OMAP2+: hwmod: remove
prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain").

So convert an existing pr_warning() to a pr_debug() (regarding missing
clockdomains in clocks), and add a pr_debug() for missing hwmod
clockdomains.  It's still useful to enable these messages for
debugging, since missing clockdomains can cause hard-to-debug problems
with power management; see for example commit
6c4a057bffe9823221eab547e11fac181dc18a2b ("ARM: OMAP4: clock data:
Force a DPLL clkdm/pwrdm ON before a relock").

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Benoît Cousson <b-cousson@ti.com>
---
 arch/arm/mach-omap2/omap_hwmod.c |    8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)
Cousson, Benoit - Sept. 18, 2012, 9:50 p.m.
Hi Paul,

On 9/18/2012 4:12 PM, Paul Walmsley wrote:
> The decision was made a few months ago to allow struct omap_hwmod
> records and struct clk records to omit clockdomain information if the
> clockdomain is not software-controllable.  See for example commit
> 868c157df9721675c19729eed2c96bac6c3f1d01 ("ARM: OMAP2+: hwmod: remove
> prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain").
>
> So convert an existing pr_warning() to a pr_debug() (regarding missing
> clockdomains in clocks), and add a pr_debug() for missing hwmod
> clockdomains.

At some point I sent you a small RFC to still keep the message if 
neither oh->clkdm nor oh->_clk->clkdm was there. I've never had the time 
to test it, but that should then cover OMAP2, 3 & 4 cases.

Regards,
Benoit

>  It's still useful to enable these messages for
> debugging, since missing clockdomains can cause hard-to-debug problems
> with power management; see for example commit
> 6c4a057bffe9823221eab547e11fac181dc18a2b ("ARM: OMAP4: clock data:
> Force a DPLL clkdm/pwrdm ON before a relock").
>
> Signed-off-by: Paul Walmsley <paul@pwsan.com>
> Cc: Benoît Cousson <b-cousson@ti.com>
> ---
>   arch/arm/mach-omap2/omap_hwmod.c |    8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
> index 80cea5b..e05228a 100644
> --- a/arch/arm/mach-omap2/omap_hwmod.c
> +++ b/arch/arm/mach-omap2/omap_hwmod.c
> @@ -685,8 +685,8 @@ static int _init_main_clk(struct omap_hwmod *oh)
>   	}
>
>   	if (!oh->_clk->clkdm)
> -		pr_warning("omap_hwmod: %s: missing clockdomain for %s.\n",
> -			   oh->main_clk, oh->_clk->name);
> +		pr_debug("omap_hwmod: %s: missing clockdomain for %s.\n",
> +			 oh->main_clk, oh->_clk->name);
>
>   	return ret;
>   }
> @@ -1380,8 +1380,10 @@ static struct omap_hwmod *_lookup(const char *name)
>    */
>   static int _init_clkdm(struct omap_hwmod *oh)
>   {
> -	if (!oh->clkdm_name)
> +	if (!oh->clkdm_name) {
> +		pr_debug("omap_hwmod: %s: missing clockdomain\n", oh->name);
>   		return 0;
> +	}
>
>   	oh->clkdm = clkdm_lookup(oh->clkdm_name);
>   	if (!oh->clkdm) {
>
>
Paul Walmsley - Sept. 19, 2012, 10:48 p.m.
Hi Benoît,

On Tue, 18 Sep 2012, Cousson, Benoit wrote:

> On 9/18/2012 4:12 PM, Paul Walmsley wrote:
> > The decision was made a few months ago to allow struct omap_hwmod
> > records and struct clk records to omit clockdomain information if the
> > clockdomain is not software-controllable.  See for example commit
> > 868c157df9721675c19729eed2c96bac6c3f1d01 ("ARM: OMAP2+: hwmod: remove
> > prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain").
> > 
> > So convert an existing pr_warning() to a pr_debug() (regarding missing
> > clockdomains in clocks), and add a pr_debug() for missing hwmod
> > clockdomains.
> 
> At some point I sent you a small RFC to still keep the message if neither
> oh->clkdm nor oh->_clk->clkdm was there. I've never had the time to test it,
> but that should then cover OMAP2, 3 & 4 cases.

OK let's plan to test and add something like that during the 3.8 time 
frame... probably it should also depend on the value of clkdm_control.  
It's not clear to me exactly what that conditional should look like...


- Paul
Cousson, Benoit - Sept. 19, 2012, 10:58 p.m.
Hi Paul,

On 9/19/2012 5:48 PM, Paul Walmsley wrote:
> Hi Benoît,
>
> On Tue, 18 Sep 2012, Cousson, Benoit wrote:
>
>> On 9/18/2012 4:12 PM, Paul Walmsley wrote:
>>> The decision was made a few months ago to allow struct omap_hwmod
>>> records and struct clk records to omit clockdomain information if the
>>> clockdomain is not software-controllable.  See for example commit
>>> 868c157df9721675c19729eed2c96bac6c3f1d01 ("ARM: OMAP2+: hwmod: remove
>>> prm_clkdm, cm_clkdm; allow hwmods to have no clockdomain").
>>>
>>> So convert an existing pr_warning() to a pr_debug() (regarding missing
>>> clockdomains in clocks), and add a pr_debug() for missing hwmod
>>> clockdomains.
>>
>> At some point I sent you a small RFC to still keep the message if neither
>> oh->clkdm nor oh->_clk->clkdm was there. I've never had the time to test it,
>> but that should then cover OMAP2, 3 & 4 cases.
>
> OK let's plan to test and add something like that during the 3.8 time
> frame... probably it should also depend on the value of clkdm_control.
> It's not clear to me exactly what that conditional should look like...

OK, I was thinking of a more basic thing. If some more values have to be 
checked it might be a little bit more tricky.

Let's see that later.

Thanks,
Benoit

Patch

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 80cea5b..e05228a 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -685,8 +685,8 @@  static int _init_main_clk(struct omap_hwmod *oh)
 	}
 
 	if (!oh->_clk->clkdm)
-		pr_warning("omap_hwmod: %s: missing clockdomain for %s.\n",
-			   oh->main_clk, oh->_clk->name);
+		pr_debug("omap_hwmod: %s: missing clockdomain for %s.\n",
+			 oh->main_clk, oh->_clk->name);
 
 	return ret;
 }
@@ -1380,8 +1380,10 @@  static struct omap_hwmod *_lookup(const char *name)
  */
 static int _init_clkdm(struct omap_hwmod *oh)
 {
-	if (!oh->clkdm_name)
+	if (!oh->clkdm_name) {
+		pr_debug("omap_hwmod: %s: missing clockdomain\n", oh->name);
 		return 0;
+	}
 
 	oh->clkdm = clkdm_lookup(oh->clkdm_name);
 	if (!oh->clkdm) {