linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q sabresd
@ 2013-01-29  7:49 Gary Zhang
  2013-01-29 11:28 ` Shawn Guo
  0 siblings, 1 reply; 3+ messages in thread
From: Gary Zhang @ 2013-01-29  7:49 UTC (permalink / raw)
  To: shawn.guo, kernel, linux; +Cc: linux-kernel

in imx6q sabresd board, wm8962 uses CKO1 as MCLK. set ahb as CKO1
parent clock source

Signed-off-by: Gary Zhang <b13634@freescale.com>
---
 arch/arm/mach-imx/mach-imx6q.c |   32 ++++++++++++++++++++++++++++++++
 1 files changed, 32 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
index 4eb1b3a..ee3f357 100644
--- a/arch/arm/mach-imx/mach-imx6q.c
+++ b/arch/arm/mach-imx/mach-imx6q.c
@@ -151,6 +151,36 @@ static void __init imx6q_sabrelite_init(void)
 	imx6q_sabrelite_cko1_setup();
 }
 
+static void __init imx6q_sabresd_cko1_setup(void)
+{
+	struct clk *cko1_sel, *ahb, *cko1;
+	unsigned long rate;
+
+	cko1_sel = clk_get_sys(NULL, "cko1_sel");
+	ahb = clk_get_sys(NULL, "ahb");
+	cko1 = clk_get_sys(NULL, "cko1");
+	if (IS_ERR(cko1_sel) || IS_ERR(ahb) || IS_ERR(cko1)) {
+		pr_err("cko1 setup failed!\n");
+		goto put_clk;
+	}
+	clk_set_parent(cko1_sel, ahb);
+	rate = clk_round_rate(cko1, 24000000);
+	clk_set_rate(cko1, rate);
+
+	return;
+put_clk:
+	if (!IS_ERR(cko1_sel))
+		clk_put(cko1_sel);
+	if (!IS_ERR(ahb))
+		clk_put(ahb);
+	if (!IS_ERR(cko1))
+		clk_put(cko1);
+}
+static void __init imx6q_sabresd_init(void)
+{
+	imx6q_sabresd_cko1_setup();
+}
+
 static void __init imx6q_1588_init(void)
 {
 	struct regmap *gpr;
@@ -193,6 +223,8 @@ static void __init imx6q_init_machine(void)
 {
 	if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
 		imx6q_sabrelite_init();
+	else if (of_machine_is_compatible("fsl,imx6q-sabresd"))
+		imx6q_sabresd_init();
 
 	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
 
-- 
1.7.0.4



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

* Re: [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q sabresd
  2013-01-29  7:49 [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q sabresd Gary Zhang
@ 2013-01-29 11:28 ` Shawn Guo
  2013-01-31  2:55   ` Zhang Quan-B13634
  0 siblings, 1 reply; 3+ messages in thread
From: Shawn Guo @ 2013-01-29 11:28 UTC (permalink / raw)
  To: Gary Zhang; +Cc: kernel, linux, linux-kernel

Gary,

For arch/arm/ patches, list linux-arm-kernel@lists.infradead.org rather
than linux-kernel@vger.kernel.org should be copied.

One comment blow.

On Tue, Jan 29, 2013 at 03:49:39PM +0800, Gary Zhang wrote:
> in imx6q sabresd board, wm8962 uses CKO1 as MCLK. set ahb as CKO1
> parent clock source
> 
> Signed-off-by: Gary Zhang <b13634@freescale.com>
> ---
>  arch/arm/mach-imx/mach-imx6q.c |   32 ++++++++++++++++++++++++++++++++
>  1 files changed, 32 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c
> index 4eb1b3a..ee3f357 100644
> --- a/arch/arm/mach-imx/mach-imx6q.c
> +++ b/arch/arm/mach-imx/mach-imx6q.c
> @@ -151,6 +151,36 @@ static void __init imx6q_sabrelite_init(void)
>  	imx6q_sabrelite_cko1_setup();
>  }
>  
> +static void __init imx6q_sabresd_cko1_setup(void)
> +{
> +	struct clk *cko1_sel, *ahb, *cko1;
> +	unsigned long rate;
> +
> +	cko1_sel = clk_get_sys(NULL, "cko1_sel");
> +	ahb = clk_get_sys(NULL, "ahb");
> +	cko1 = clk_get_sys(NULL, "cko1");
> +	if (IS_ERR(cko1_sel) || IS_ERR(ahb) || IS_ERR(cko1)) {
> +		pr_err("cko1 setup failed!\n");
> +		goto put_clk;
> +	}
> +	clk_set_parent(cko1_sel, ahb);
> +	rate = clk_round_rate(cko1, 24000000);
> +	clk_set_rate(cko1, rate);
> +
> +	return;
> +put_clk:
> +	if (!IS_ERR(cko1_sel))
> +		clk_put(cko1_sel);
> +	if (!IS_ERR(ahb))
> +		clk_put(ahb);
> +	if (!IS_ERR(cko1))
> +		clk_put(cko1);
> +}

So the only difference between this function and imx6q_sabrelite_cko1_setup()
is the frequency set on cko1?  If so, we should consolidate them with
frequency passed in as a parameter.

Shawn

> +static void __init imx6q_sabresd_init(void)
> +{
> +	imx6q_sabresd_cko1_setup();
> +}
> +
>  static void __init imx6q_1588_init(void)
>  {
>  	struct regmap *gpr;
> @@ -193,6 +223,8 @@ static void __init imx6q_init_machine(void)
>  {
>  	if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
>  		imx6q_sabrelite_init();
> +	else if (of_machine_is_compatible("fsl,imx6q-sabresd"))
> +		imx6q_sabresd_init();
>  
>  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  
> -- 
> 1.7.0.4
> 
> 


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

* RE: [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q sabresd
  2013-01-29 11:28 ` Shawn Guo
@ 2013-01-31  2:55   ` Zhang Quan-B13634
  0 siblings, 0 replies; 3+ messages in thread
From: Zhang Quan-B13634 @ 2013-01-31  2:55 UTC (permalink / raw)
  To: Shawn Guo; +Cc: kernel, linux, linux-kernel

Shawn,
Thank your feedback, please see the comments inline


Best Regards
Gary


>  -----Original Message-----
>  From: Shawn Guo [mailto:shawn.guo@linaro.org]
>  Sent: Tuesday, January 29, 2013 19:29
>  To: Zhang Quan-B13634
>  Cc: kernel@pengutronix.de; linux@arm.linux.org.uk; linux-kernel@vger.kernel.org
>  Subject: Re: [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q
>  sabresd
>  
>  Gary,
>  
>  For arch/arm/ patches, list linux-arm-kernel@lists.infradead.org rather than
>  linux-kernel@vger.kernel.org should be copied.
[Gary-b13634] agree

>  
>  One comment blow.
>  
>  On Tue, Jan 29, 2013 at 03:49:39PM +0800, Gary Zhang wrote:
>  > in imx6q sabresd board, wm8962 uses CKO1 as MCLK. set ahb as CKO1
>  > parent clock source
>  >
>  > Signed-off-by: Gary Zhang <b13634@freescale.com>
>  > ---
>  >  arch/arm/mach-imx/mach-imx6q.c |   32 ++++++++++++++++++++++++++++++++
>  >  1 files changed, 32 insertions(+), 0 deletions(-)
>  >
>  > diff --git a/arch/arm/mach-imx/mach-imx6q.c
>  > b/arch/arm/mach-imx/mach-imx6q.c index 4eb1b3a..ee3f357 100644
>  > --- a/arch/arm/mach-imx/mach-imx6q.c
>  > +++ b/arch/arm/mach-imx/mach-imx6q.c
>  > @@ -151,6 +151,36 @@ static void __init imx6q_sabrelite_init(void)
>  >  	imx6q_sabrelite_cko1_setup();
>  >  }
>  >
>  > +static void __init imx6q_sabresd_cko1_setup(void) {
>  > +	struct clk *cko1_sel, *ahb, *cko1;
>  > +	unsigned long rate;
>  > +
>  > +	cko1_sel = clk_get_sys(NULL, "cko1_sel");
>  > +	ahb = clk_get_sys(NULL, "ahb");
>  > +	cko1 = clk_get_sys(NULL, "cko1");
>  > +	if (IS_ERR(cko1_sel) || IS_ERR(ahb) || IS_ERR(cko1)) {
>  > +		pr_err("cko1 setup failed!\n");
>  > +		goto put_clk;
>  > +	}
>  > +	clk_set_parent(cko1_sel, ahb);
>  > +	rate = clk_round_rate(cko1, 24000000);
>  > +	clk_set_rate(cko1, rate);
>  > +
>  > +	return;
>  > +put_clk:
>  > +	if (!IS_ERR(cko1_sel))
>  > +		clk_put(cko1_sel);
>  > +	if (!IS_ERR(ahb))
>  > +		clk_put(ahb);
>  > +	if (!IS_ERR(cko1))
>  > +		clk_put(cko1);
>  > +}
>  
>  So the only difference between this function and imx6q_sabrelite_cko1_setup()
>  is the frequency set on cko1?  If so, we should consolidate them with frequency
>  passed in as a parameter.
[Gary-b13634] OK, I	 will do it.

>  
>  Shawn
>  
>  > +static void __init imx6q_sabresd_init(void) {
>  > +	imx6q_sabresd_cko1_setup();
>  > +}
>  > +
>  >  static void __init imx6q_1588_init(void)  {
>  >  	struct regmap *gpr;
>  > @@ -193,6 +223,8 @@ static void __init imx6q_init_machine(void)  {
>  >  	if (of_machine_is_compatible("fsl,imx6q-sabrelite"))
>  >  		imx6q_sabrelite_init();
>  > +	else if (of_machine_is_compatible("fsl,imx6q-sabresd"))
>  > +		imx6q_sabresd_init();
>  >
>  >  	of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
>  >
>  > --
>  > 1.7.0.4
>  >
>  >


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

end of thread, other threads:[~2013-01-31  2:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-29  7:49 [PATCH 2/4] ARM: imx: set CKO1 parent clock source in imx6q sabresd Gary Zhang
2013-01-29 11:28 ` Shawn Guo
2013-01-31  2:55   ` Zhang Quan-B13634

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).