public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks
@ 2011-01-28 11:17 Rajendra Nayak
  2011-01-31 23:08 ` Paul Walmsley
  0 siblings, 1 reply; 5+ messages in thread
From: Rajendra Nayak @ 2011-01-28 11:17 UTC (permalink / raw)
  To: linux-omap; +Cc: Rajendra Nayak

The _add_optional_clock_alias function expects an entry
already existing in the clkdev table in the form of
<dev-id=NULL, con-id=role> which might not be the case
always.

Instead, just check if an entry already exists in clkdev
in the <dev-id=dev_name, con-id=role> form, else go ahead
and add one.

Remove any assumption of an entry already existing in clkdev
table in any form.

Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Reported-by: Sumit Semwal <sumit.semwal@ti.com>
---
 arch/arm/plat-omap/omap_device.c |   25 +++++++++++++++++++------
 1 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 57adb27..80d4f35 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -83,9 +83,11 @@
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/clk.h>
+#include <linux/clkdev.h>
 
 #include <plat/omap_device.h>
 #include <plat/omap_hwmod.h>
+#include <plat/clock.h>
 
 /* These parameters are passed to _omap_device_{de,}activate() */
 #define USE_WAKEUP_LAT			0
@@ -244,7 +246,7 @@ static inline struct omap_device *_find_by_pdev(struct platform_device *pdev)
  *
  * For every optional clock present per hwmod per omap_device, this function
  * adds an entry in the clocks list of the form <dev-id=dev_name, con-id=role>
- * if an entry is already present in it with the form <dev-id=NULL, con-id=role>
+ * if it does not exist already.
  *
  * The function is called from inside omap_device_build_ss(), after
  * omap_device_register.
@@ -258,21 +260,32 @@ static void _add_optional_clock_alias(struct omap_device *od,
 				      struct omap_hwmod *oh)
 {
 	int i;
+	struct clk_lookup *l;
+	struct omap_hwmod_opt_clk *oc;
 
 	for (i = 0; i < oh->opt_clks_cnt; i++) {
-		struct omap_hwmod_opt_clk *oc;
-		int r;
+		struct clk *r;
 
 		oc = &oh->opt_clks[i];
 
 		if (!oc->_clk)
 			continue;
 
-		r = clk_add_alias(oc->role, dev_name(&od->pdev.dev),
-				  (char *)oc->clk, &od->pdev.dev);
-		if (r)
+		r = clk_get_sys(dev_name(&od->pdev.dev), oc->role);
+		if (!IS_ERR(r))
+			continue; /* clkdev entry exists */
+
+		r = omap_clk_get_by_name((char *)oc->clk);
+		if (IS_ERR(r)) {
 			pr_err("omap_device: %s: clk_add_alias for %s failed\n",
 			       dev_name(&od->pdev.dev), oc->role);
+			continue;
+		}
+
+		l = clkdev_alloc(r, oc->role, dev_name(&od->pdev.dev));
+		if (!l)
+			return;
+		clkdev_add(l);
 	}
 }
 
-- 
1.7.0.4


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

* Re: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks
  2011-01-28 11:17 [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks Rajendra Nayak
@ 2011-01-31 23:08 ` Paul Walmsley
  2011-02-01  5:23   ` Rajendra Nayak
  0 siblings, 1 reply; 5+ messages in thread
From: Paul Walmsley @ 2011-01-31 23:08 UTC (permalink / raw)
  To: Rajendra Nayak; +Cc: linux-omap

Hi Rajendra

one brief comment below.  Also, when you post an updated version, could 
you cc the linux-arm-kernel mailing list?  That way I won't have to do 
it...

On Fri, 28 Jan 2011, Rajendra Nayak wrote:

> The _add_optional_clock_alias function expects an entry
> already existing in the clkdev table in the form of
> <dev-id=NULL, con-id=role> which might not be the case
> always.
> 
> Instead, just check if an entry already exists in clkdev
> in the <dev-id=dev_name, con-id=role> form, else go ahead
> and add one.
> 
> Remove any assumption of an entry already existing in clkdev
> table in any form.
> 
> Signed-off-by: Rajendra Nayak <rnayak@ti.com>
> Reported-by: Sumit Semwal <sumit.semwal@ti.com>
> ---
>  arch/arm/plat-omap/omap_device.c |   25 +++++++++++++++++++------
>  1 files changed, 19 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
> index 57adb27..80d4f35 100644
> --- a/arch/arm/plat-omap/omap_device.c
> +++ b/arch/arm/plat-omap/omap_device.c
> @@ -83,9 +83,11 @@
>  #include <linux/err.h>
>  #include <linux/io.h>
>  #include <linux/clk.h>
> +#include <linux/clkdev.h>
>  
>  #include <plat/omap_device.h>
>  #include <plat/omap_hwmod.h>
> +#include <plat/clock.h>
>  
>  /* These parameters are passed to _omap_device_{de,}activate() */
>  #define USE_WAKEUP_LAT			0
> @@ -244,7 +246,7 @@ static inline struct omap_device *_find_by_pdev(struct platform_device *pdev)
>   *
>   * For every optional clock present per hwmod per omap_device, this function
>   * adds an entry in the clocks list of the form <dev-id=dev_name, con-id=role>
> - * if an entry is already present in it with the form <dev-id=NULL, con-id=role>
> + * if it does not exist already.
>   *
>   * The function is called from inside omap_device_build_ss(), after
>   * omap_device_register.
> @@ -258,21 +260,32 @@ static void _add_optional_clock_alias(struct omap_device *od,
>  				      struct omap_hwmod *oh)
>  {
>  	int i;
> +	struct clk_lookup *l;
> +	struct omap_hwmod_opt_clk *oc;
>  
>  	for (i = 0; i < oh->opt_clks_cnt; i++) {
> -		struct omap_hwmod_opt_clk *oc;
> -		int r;
> +		struct clk *r;
>  
>  		oc = &oh->opt_clks[i];
>  
>  		if (!oc->_clk)
>  			continue;
>  
> -		r = clk_add_alias(oc->role, dev_name(&od->pdev.dev),
> -				  (char *)oc->clk, &od->pdev.dev);
> -		if (r)
> +		r = clk_get_sys(dev_name(&od->pdev.dev), oc->role);
> +		if (!IS_ERR(r))
> +			continue; /* clkdev entry exists */
> +
> +		r = omap_clk_get_by_name((char *)oc->clk);
> +		if (IS_ERR(r)) {
>  			pr_err("omap_device: %s: clk_add_alias for %s failed\n",
>  			       dev_name(&od->pdev.dev), oc->role);
> +			continue;
> +		}
> +
> +		l = clkdev_alloc(r, oc->role, dev_name(&od->pdev.dev));
> +		if (!l)
> +			return;

Please add a pr_err() in this case, similar to the above one; that way 
in the unlikely event that this fails, there will be some sign of what is 
happening...  other than that, it looks good to me


> +		clkdev_add(l);
>  	}
>  }
>  
> -- 
> 1.7.0.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


- Paul

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

* RE: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks
  2011-01-31 23:08 ` Paul Walmsley
@ 2011-02-01  5:23   ` Rajendra Nayak
  2011-02-01 16:53     ` Paul Walmsley
  0 siblings, 1 reply; 5+ messages in thread
From: Rajendra Nayak @ 2011-02-01  5:23 UTC (permalink / raw)
  To: Paul Walmsley; +Cc: linux-omap

Hi Paul,

> -----Original Message-----
> From: Paul Walmsley [mailto:paul@pwsan.com]
> Sent: Tuesday, February 01, 2011 4:39 AM
> To: Rajendra Nayak
> Cc: linux-omap@vger.kernel.org
> Subject: Re: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to
add alias for opt_clks
>
> Hi Rajendra
>
> one brief comment below.  Also, when you post an updated version, could
> you cc the linux-arm-kernel mailing list?  That way I won't have to do
> it...

Sure, I will. Sorry I missed it again. Will make sure I have
linux-arm-kernel
Cc'ed for all my patches hence forth.
Have a few comments below.

>
> On Fri, 28 Jan 2011, Rajendra Nayak wrote:
>
> > The _add_optional_clock_alias function expects an entry
> > already existing in the clkdev table in the form of
> > <dev-id=NULL, con-id=role> which might not be the case
> > always.
> >
> > Instead, just check if an entry already exists in clkdev
> > in the <dev-id=dev_name, con-id=role> form, else go ahead
> > and add one.
> >
> > Remove any assumption of an entry already existing in clkdev
> > table in any form.
> >
> > Signed-off-by: Rajendra Nayak <rnayak@ti.com>
> > Reported-by: Sumit Semwal <sumit.semwal@ti.com>
> > ---
> >  arch/arm/plat-omap/omap_device.c |   25 +++++++++++++++++++------
> >  1 files changed, 19 insertions(+), 6 deletions(-)
> >
> > diff --git a/arch/arm/plat-omap/omap_device.c
b/arch/arm/plat-omap/omap_device.c
> > index 57adb27..80d4f35 100644
> > --- a/arch/arm/plat-omap/omap_device.c
> > +++ b/arch/arm/plat-omap/omap_device.c
> > @@ -83,9 +83,11 @@
> >  #include <linux/err.h>
> >  #include <linux/io.h>
> >  #include <linux/clk.h>
> > +#include <linux/clkdev.h>
> >
> >  #include <plat/omap_device.h>
> >  #include <plat/omap_hwmod.h>
> > +#include <plat/clock.h>
> >
> >  /* These parameters are passed to _omap_device_{de,}activate() */
> >  #define USE_WAKEUP_LAT			0
> > @@ -244,7 +246,7 @@ static inline struct omap_device
*_find_by_pdev(struct platform_device *pdev)
> >   *
> >   * For every optional clock present per hwmod per omap_device, this
function
> >   * adds an entry in the clocks list of the form <dev-id=dev_name,
con-id=role>
> > - * if an entry is already present in it with the form <dev-id=NULL,
con-id=role>
> > + * if it does not exist already.
> >   *
> >   * The function is called from inside omap_device_build_ss(), after
> >   * omap_device_register.
> > @@ -258,21 +260,32 @@ static void _add_optional_clock_alias(struct
omap_device *od,
> >  				      struct omap_hwmod *oh)
> >  {
> >  	int i;
> > +	struct clk_lookup *l;
> > +	struct omap_hwmod_opt_clk *oc;

This was a stray change. Will fix in the updated version.

> >
> >  	for (i = 0; i < oh->opt_clks_cnt; i++) {
> > -		struct omap_hwmod_opt_clk *oc;
> > -		int r;
> > +		struct clk *r;
> >
> >  		oc = &oh->opt_clks[i];
> >
> >  		if (!oc->_clk)
> >  			continue;
> >
> > -		r = clk_add_alias(oc->role, dev_name(&od->pdev.dev),
> > -				  (char *)oc->clk, &od->pdev.dev);
> > -		if (r)
> > +		r = clk_get_sys(dev_name(&od->pdev.dev), oc->role);
> > +		if (!IS_ERR(r))
> > +			continue; /* clkdev entry exists */
> > +
> > +		r = omap_clk_get_by_name((char *)oc->clk);
> > +		if (IS_ERR(r)) {
> >  			pr_err("omap_device: %s: clk_add_alias for %s
failed\n",
> >  			       dev_name(&od->pdev.dev), oc->role);
> > +			continue;
> > +		}
> > +
> > +		l = clkdev_alloc(r, oc->role, dev_name(&od->pdev.dev));
> > +		if (!l)
> > +			return;
>
> Please add a pr_err() in this case, similar to the above one; that way
> in the unlikely event that this fails, there will be some sign of what
is
> happening...  other than that, it looks good to me

Ok, will add the pr_err().
One other thing I was thinking of is if the function name
_add_optional_clock_alias need to be changed to something like
_add_optional_clock_clkdev since we are adding a new clkdev entry,
if it does not exist, and no longer adding an 'alias' for an existing
entry.

Also, the adding of an entry in clkdev is today done for
optional clocks alone. Is there any reason why we should not do
this at runtime for all main clks and interface clks also.
That way we get rid of all dependencies with the static clkdev
table, and we might infact not need one if all entries are added
runtime.

Regards,
Rajendra

>
>
> > +		clkdev_add(l);
> >  	}
> >  }
> >
> > --
> > 1.7.0.4
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap"
in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
>
>
> - Paul

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

* RE: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks
  2011-02-01  5:23   ` Rajendra Nayak
@ 2011-02-01 16:53     ` Paul Walmsley
  2011-02-02  4:10       ` Rajendra Nayak
  0 siblings, 1 reply; 5+ messages in thread
From: Paul Walmsley @ 2011-02-01 16:53 UTC (permalink / raw)
  To: Rajendra Nayak; +Cc: linux-omap

On Tue, 1 Feb 2011, Rajendra Nayak wrote:

> One other thing I was thinking of is if the function name
> _add_optional_clock_alias need to be changed to something like
> _add_optional_clock_clkdev since we are adding a new clkdev entry,
> if it does not exist, and no longer adding an 'alias' for an existing
> entry.

Fine with me.

> Also, the adding of an entry in clkdev is today done for
> optional clocks alone. Is there any reason why we should not do
> this at runtime for all main clks and interface clks also.
> That way we get rid of all dependencies with the static clkdev
> table, and we might infact not need one if all entries are added
> runtime.

Heh, you've just uncovered my "secret" plan.  It seemed best to me to wait 
until all of the hwmod conversions were done to avoid alarming certain 
people who might be consulting the static clkdev table in 
mach-omap2/clock*_data.c as a platform reference...


- Paul

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

* RE: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks
  2011-02-01 16:53     ` Paul Walmsley
@ 2011-02-02  4:10       ` Rajendra Nayak
  0 siblings, 0 replies; 5+ messages in thread
From: Rajendra Nayak @ 2011-02-02  4:10 UTC (permalink / raw)
  To: Paul Walmsley; +Cc: linux-omap

> -----Original Message-----
> From: Paul Walmsley [mailto:paul@pwsan.com]
> Sent: Tuesday, February 01, 2011 10:23 PM
> To: Rajendra Nayak
> Cc: linux-omap@vger.kernel.org
> Subject: RE: [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to
add alias for opt_clks
>
> On Tue, 1 Feb 2011, Rajendra Nayak wrote:
>
> > One other thing I was thinking of is if the function name
> > _add_optional_clock_alias need to be changed to something like
> > _add_optional_clock_clkdev since we are adding a new clkdev entry,
> > if it does not exist, and no longer adding an 'alias' for an existing
> > entry.
>
> Fine with me.
>
> > Also, the adding of an entry in clkdev is today done for
> > optional clocks alone. Is there any reason why we should not do
> > this at runtime for all main clks and interface clks also.
> > That way we get rid of all dependencies with the static clkdev
> > table, and we might infact not need one if all entries are added
> > runtime.
>
> Heh, you've just uncovered my "secret" plan.  It seemed best to me to
wait
> until all of the hwmod conversions were done to avoid alarming certain
> people who might be consulting the static clkdev table in
> mach-omap2/clock*_data.c as a platform reference...

Ok, sounds good to me, thanks.
Will repost this one with the mentioned changes.

>
>
> - Paul

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

end of thread, other threads:[~2011-02-02  4:10 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-28 11:17 [PATCH] OMAP: hwmod: Do not expect an entry in clkdev to add alias for opt_clks Rajendra Nayak
2011-01-31 23:08 ` Paul Walmsley
2011-02-01  5:23   ` Rajendra Nayak
2011-02-01 16:53     ` Paul Walmsley
2011-02-02  4:10       ` Rajendra Nayak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox