[PATCH] ARM: imx: remove clk_hw from clk_busy

Sascha Hauer s.hauer at pengutronix.de
Fri Apr 13 10:34:04 EDT 2012


On Fri, Apr 13, 2012 at 10:09:57AM +0800, Shawn Guo wrote:
> Signed-off-by: Shawn Guo <shawn.guo at 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
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the linux-arm-kernel mailing list