On Wed, Apr 25, 2012 at 10:58:56PM -0700, Saravana Kannan wrote:
> Create a struct clk_init_data to hold all data that needs to be passed from
> the platfrom specific driver to the common clock framework during clock
> registration. Add a pointer to this struct inside clk_hw.
> 
> This has several advantages:
> * Completely hides struct clk from many clock platform drivers and static
>   clock initialization code that don't care for static initialization of
>   the struct clks.
> * For platforms that want to do complete static initialization, it removed
>   the need to directly mess with the struct clk's fields while still
>   allowing to statically allocate struct clk. This keeps the code more
>   future proof even if they include clk-private.h.
> * Simplifies the generic clk_register() function and allows adding optional
>   fields in the future without modifying the function signature.
> * Simplifies the static initialization of clocks on all platforms by
>   removing the need for forward delcarations or convoluted macros.
> 
> Signed-off-by: Saravana Kannan <[email protected]>
> Cc: Mike Turquette <[email protected]>
> Cc: Andrew Lunn <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: Russell King <[email protected]>
> Cc: Jeremy Kerr <[email protected]>
> Cc: Thomas Gleixner <[email protected]>
> Cc: Arnd Bergman <[email protected]>
> Cc: Paul Walmsley <[email protected]>
> Cc: Shawn Guo <[email protected]>
> Cc: Sascha Hauer <[email protected]>
> Cc: Jamie Iles <[email protected]>
> Cc: Richard Zhao <[email protected]>
> Cc: Saravana Kannan <[email protected]>
> Cc: Magnus Damm <[email protected]>
> Cc: Mark Brown <[email protected]>
> Cc: Linus Walleij <[email protected]>
> Cc: Stephen Boyd <[email protected]>
> Cc: Amit Kucheria <[email protected]>
> Cc: Deepak Saxena <[email protected]>
> Cc: Grant Likely <[email protected]>
> ---
>  drivers/clk/clk-divider.c    |   14 +++--
>  drivers/clk/clk-fixed-rate.c |   14 +++--
>  drivers/clk/clk-gate.c       |   15 +++--
>  drivers/clk/clk-mux.c        |   10 +++-
>  drivers/clk/clk.c            |   91 +++++++++++++++++++------------
>  include/linux/clk-private.h  |  121 
> +-----------------------------------------
>  include/linux/clk-provider.h |   59 +++++++++++++-------
>  7 files changed, 129 insertions(+), 195 deletions(-)
> 
> diff --git a/drivers/clk/clk-mux.c b/drivers/clk/clk-mux.c
> index 6e58f11..8e97491 100644
> --- a/drivers/clk/clk-mux.c
> +++ b/drivers/clk/clk-mux.c
> @@ -95,6 +95,7 @@ struct clk *clk_register_mux(struct device *dev, const char 
> *name,
>  {
>       struct clk_mux *mux;
>       struct clk *clk;
> +     struct clk_init_data init;
>  
>       /* allocate the mux */
>       mux = kzalloc(sizeof(struct clk_mux), GFP_KERNEL);
> @@ -103,6 +104,12 @@ struct clk *clk_register_mux(struct device *dev, const 
> char *name,
>               return ERR_PTR(-ENOMEM);
>       }
>  
> +     init.name = name;
> +     init.ops = &clk_mux_ops;
> +     init.flags = flags;
> +     init.parent_names = parent_names;
> +     init.num_parents = num_parents;
> +
>       /* struct clk_mux assignments */
>       mux->reg = reg;
>       mux->shift = shift;
> @@ -110,8 +117,7 @@ struct clk *clk_register_mux(struct device *dev, const 
> char *name,
>       mux->flags = clk_mux_flags;
>       mux->lock = lock;

There is a mux->hw.init = &init missing here.

Sascha

>  
> -     clk = clk_register(dev, name, &clk_mux_ops, &mux->hw,
> -                     parent_names, num_parents, flags);
> +     clk = clk_register(dev, &mux->hw);
>  
>       if (IS_ERR(clk))
>               kfree(mux);

-- 
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 |
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to