Messages in this thread | | | From | Daniel Baluta <> | Date | Sat, 23 Mar 2019 08:59:09 +0200 | Subject | Re: [RFC 05/19] clk: imx: clk-busy: Switch to clk_hw based API |
| |
On Fri, Mar 22, 2019 at 5:39 PM Abel Vesa <abel.vesa@nxp.com> wrote: > > Switch all the clk_busy clock registering functions > to clk_hw based API. >
Hi Abel,
The commit message should explain why such a change is needed.
thanks, Daniel. > Signed-off-by: Abel Vesa <abel.vesa@nxp.com> > --- > drivers/clk/imx/clk-busy.c | 30 ++++++++++++++++++++---------- > drivers/clk/imx/clk.h | 11 +++++++++-- > 2 files changed, 29 insertions(+), 12 deletions(-) > > diff --git a/drivers/clk/imx/clk-busy.c b/drivers/clk/imx/clk-busy.c > index e695622..51f75500 100644 > --- a/drivers/clk/imx/clk-busy.c > +++ b/drivers/clk/imx/clk-busy.c > @@ -78,13 +78,14 @@ static const struct clk_ops clk_busy_divider_ops = { > .set_rate = clk_busy_divider_set_rate, > }; > > -struct clk *imx_clk_busy_divider(const char *name, const char *parent_name, > +struct clk_hw *imx_clk_hw_busy_divider(const char *name, const char *parent_name, > void __iomem *reg, u8 shift, u8 width, > void __iomem *busy_reg, u8 busy_shift) > { > struct clk_busy_divider *busy; > - struct clk *clk; > + struct clk_hw *hw; > struct clk_init_data init; > + int ret; > > busy = kzalloc(sizeof(*busy), GFP_KERNEL); > if (!busy) > @@ -107,11 +108,15 @@ struct clk *imx_clk_busy_divider(const char *name, const char *parent_name, > > busy->div.hw.init = &init; > > - clk = clk_register(NULL, &busy->div.hw); > - if (IS_ERR(clk)) > + hw = &busy->div.hw; > + > + ret = clk_hw_register(NULL, hw); > + if (ret) { > kfree(busy); > + return ERR_PTR(ret); > + } > > - return clk; > + return hw; > } > > struct clk_busy_mux { > @@ -152,13 +157,14 @@ static const struct clk_ops clk_busy_mux_ops = { > .set_parent = clk_busy_mux_set_parent, > }; > > -struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift, > +struct clk_hw *imx_clk_hw_busy_mux(const char *name, void __iomem *reg, u8 shift, > u8 width, void __iomem *busy_reg, u8 busy_shift, > const char * const *parent_names, int num_parents) > { > struct clk_busy_mux *busy; > - struct clk *clk; > + struct clk_hw *hw; > struct clk_init_data init; > + int ret; > > busy = kzalloc(sizeof(*busy), GFP_KERNEL); > if (!busy) > @@ -181,9 +187,13 @@ struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift, > > busy->mux.hw.init = &init; > > - clk = clk_register(NULL, &busy->mux.hw); > - if (IS_ERR(clk)) > + hw = &busy->mux.hw; > + > + ret = clk_hw_register(NULL, hw); > + if (ret) { > kfree(busy); > + return ERR_PTR(ret); > + } > > - return clk; > + return hw; > } > diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h > index e78519c..69b2a13 100644 > --- a/drivers/clk/imx/clk.h > +++ b/drivers/clk/imx/clk.h > @@ -10,6 +10,7 @@ extern spinlock_t imx_ccm_lock; > void imx_check_clocks(struct clk *clks[], unsigned int count); > void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count); > void imx_register_uart_clocks(struct clk ** const clks[]); > +void imx_register_uart_clocks_hws(struct clk_hw ** const hws[]); > > extern void imx_cscmr1_fixup(u32 *val); > > @@ -48,6 +49,12 @@ struct imx_pll14xx_clk { > int flags; > }; > > +#define imx_clk_busy_divider(name, parent_name, reg, shift, width, busy_reg, busy_shift) \ > + imx_clk_hw_busy_divider(name, parent_name, reg, shift, width, busy_reg, busy_shift)->clk > + > +#define imx_clk_busy_mux(name, reg, shift, width, busy_reg, busy_shift, parent_names, num_parents) \ > + imx_clk_hw_busy_mux(name, reg, shift, width, busy_reg, busy_shift, parent_names, num_parents)->clk > + > struct clk *imx_clk_pll14xx(const char *name, const char *parent_name, > void __iomem *base, const struct imx_pll14xx_clk *pll_clk); > > @@ -109,11 +116,11 @@ struct clk *imx_clk_pfd(const char *name, const char *parent_name, > struct clk_hw *imx_clk_pfdv2(const char *name, const char *parent_name, > void __iomem *reg, u8 idx); > > -struct clk *imx_clk_busy_divider(const char *name, const char *parent_name, > +struct clk_hw *imx_clk_hw_busy_divider(const char *name, const char *parent_name, > void __iomem *reg, u8 shift, u8 width, > void __iomem *busy_reg, u8 busy_shift); > > -struct clk *imx_clk_busy_mux(const char *name, void __iomem *reg, u8 shift, > +struct clk_hw *imx_clk_hw_busy_mux(const char *name, void __iomem *reg, u8 shift, > u8 width, void __iomem *busy_reg, u8 busy_shift, > const char * const *parent_names, int num_parents); > > -- > 2.7.4 >
| |