Patchwork ARM: imx: remove clk_hw from clk_busy

login
register
mail settings
Submitter Shawn Guo
Date April 13, 2012, 2:09 a.m.
Message ID <1334282997-23071-1-git-send-email-shawn.guo@linaro.org>
Download mbox | patch
Permalink /patch/152245/
State New
Headers show

Comments

Shawn Guo - April 13, 2012, 2:09 a.m.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
Hi Sascha,

I'm convinced by Richard that we do not need a clk_hw duplication
in clk_busy for a better OOP view.  So please consider to squash
the patch to "ARM: imx: add common clock support for clk busy".

Thanks,
Shawn

 arch/arm/mach-imx/clk-busy.c |   32 ++++++++++++++++++--------------
 1 files changed, 18 insertions(+), 14 deletions(-)
Sascha Hauer - April 13, 2012, 2:34 p.m.
On Fri, Apr 13, 2012 at 10:09:57AM +0800, Shawn Guo wrote:
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> ---
> Hi Sascha,
> 
> I'm convinced by Richard that we do not need a clk_hw duplication
> in clk_busy for a better OOP view.  So please consider to squash
> the patch to "ARM: imx: add common clock support for clk busy".

Ok, will do.

Thanks
 Sascha

> 
> Thanks,
> Shawn
> 
>  arch/arm/mach-imx/clk-busy.c |   32 ++++++++++++++++++--------------
>  1 files changed, 18 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm/mach-imx/clk-busy.c b/arch/arm/mach-imx/clk-busy.c
> index 9450f0b..977d50a 100644
> --- a/arch/arm/mach-imx/clk-busy.c
> +++ b/arch/arm/mach-imx/clk-busy.c
> @@ -29,14 +29,18 @@ static int clk_busy_wait(void __iomem *reg, u8 shift)
>  }
>  
>  struct clk_busy_divider {
> -	struct clk_hw hw;
> -	void __iomem *reg;
> -	u8 shift;
>  	struct clk_divider div;
>  	const struct clk_ops *div_ops;
> +	void __iomem *reg;
> +	u8 shift;
>  };
>  
> -#define to_clk_busy_divider(_hw) container_of(_hw, struct clk_busy_divider, hw)
> +static inline struct clk_busy_divider *to_clk_busy_divider(struct clk_hw *hw)
> +{
> +	struct clk_divider *div = container_of(hw, struct clk_divider, hw);
> +
> +	return container_of(div, struct clk_busy_divider, div);
> +}
>  
>  static unsigned long clk_busy_divider_recalc_rate(struct clk_hw *hw,
>  						  unsigned long parent_rate)
> @@ -92,25 +96,27 @@ struct clk *imx_clk_busy_divider(const char *name, char *parent_name,
>  	busy->div.lock = &imx_ccm_lock;
>  	busy->div_ops = &clk_divider_ops;
>  
> -	clk = clk_register(NULL, name, &clk_busy_divider_ops, &busy->hw,
> +	clk = clk_register(NULL, name, &clk_busy_divider_ops, &busy->div.hw,
>  			   &parent_name, 1, CLK_SET_RATE_PARENT);
>  	if (!clk)
>  		kfree(busy);
>  
> -	busy->div.hw.clk = clk;
> -
>  	return clk;
>  }
>  
>  struct clk_busy_mux {
> -	struct clk_hw hw;
> -	void __iomem *reg;
> -	u8 shift;
>  	struct clk_mux mux;
>  	const struct clk_ops *mux_ops;
> +	void __iomem *reg;
> +	u8 shift;
>  };
>  
> -#define to_clk_busy_mux(_hw) container_of(_hw, struct clk_busy_mux, hw)
> +static inline struct clk_busy_mux *to_clk_busy_mux(struct clk_hw *hw)
> +{
> +	struct clk_mux *mux = container_of(hw, struct clk_mux, hw);
> +
> +	return container_of(mux, struct clk_busy_mux, mux);
> +}
>  
>  static u8 clk_busy_mux_get_parent(struct clk_hw *hw)
>  {
> @@ -156,12 +162,10 @@ struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift,
>  	busy->mux.lock = &imx_ccm_lock;
>  	busy->mux_ops = &clk_mux_ops;
>  
> -	clk = clk_register(NULL, name, &clk_busy_mux_ops, &busy->hw,
> +	clk = clk_register(NULL, name, &clk_busy_mux_ops, &busy->mux.hw,
>  			   parent_names, num_parents, 0);
>  	if (!clk)
>  		kfree(busy);
>  
> -	busy->mux.hw.clk = clk;
> -
>  	return clk;
>  }
> -- 
> 1.7.5.4
> 
>

Patch

diff --git a/arch/arm/mach-imx/clk-busy.c b/arch/arm/mach-imx/clk-busy.c
index 9450f0b..977d50a 100644
--- a/arch/arm/mach-imx/clk-busy.c
+++ b/arch/arm/mach-imx/clk-busy.c
@@ -29,14 +29,18 @@  static int clk_busy_wait(void __iomem *reg, u8 shift)
 }
 
 struct clk_busy_divider {
-	struct clk_hw hw;
-	void __iomem *reg;
-	u8 shift;
 	struct clk_divider div;
 	const struct clk_ops *div_ops;
+	void __iomem *reg;
+	u8 shift;
 };
 
-#define to_clk_busy_divider(_hw) container_of(_hw, struct clk_busy_divider, hw)
+static inline struct clk_busy_divider *to_clk_busy_divider(struct clk_hw *hw)
+{
+	struct clk_divider *div = container_of(hw, struct clk_divider, hw);
+
+	return container_of(div, struct clk_busy_divider, div);
+}
 
 static unsigned long clk_busy_divider_recalc_rate(struct clk_hw *hw,
 						  unsigned long parent_rate)
@@ -92,25 +96,27 @@  struct clk *imx_clk_busy_divider(const char *name, char *parent_name,
 	busy->div.lock = &imx_ccm_lock;
 	busy->div_ops = &clk_divider_ops;
 
-	clk = clk_register(NULL, name, &clk_busy_divider_ops, &busy->hw,
+	clk = clk_register(NULL, name, &clk_busy_divider_ops, &busy->div.hw,
 			   &parent_name, 1, CLK_SET_RATE_PARENT);
 	if (!clk)
 		kfree(busy);
 
-	busy->div.hw.clk = clk;
-
 	return clk;
 }
 
 struct clk_busy_mux {
-	struct clk_hw hw;
-	void __iomem *reg;
-	u8 shift;
 	struct clk_mux mux;
 	const struct clk_ops *mux_ops;
+	void __iomem *reg;
+	u8 shift;
 };
 
-#define to_clk_busy_mux(_hw) container_of(_hw, struct clk_busy_mux, hw)
+static inline struct clk_busy_mux *to_clk_busy_mux(struct clk_hw *hw)
+{
+	struct clk_mux *mux = container_of(hw, struct clk_mux, hw);
+
+	return container_of(mux, struct clk_busy_mux, mux);
+}
 
 static u8 clk_busy_mux_get_parent(struct clk_hw *hw)
 {
@@ -156,12 +162,10 @@  struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift,
 	busy->mux.lock = &imx_ccm_lock;
 	busy->mux_ops = &clk_mux_ops;
 
-	clk = clk_register(NULL, name, &clk_busy_mux_ops, &busy->hw,
+	clk = clk_register(NULL, name, &clk_busy_mux_ops, &busy->mux.hw,
 			   parent_names, num_parents, 0);
 	if (!clk)
 		kfree(busy);
 
-	busy->mux.hw.clk = clk;
-
 	return clk;
 }