Message ID | 1553269010-15591-6-git-send-email-abel.vesa@nxp.com (mailing list archive) |
---|---|
State | RFC, archived |
Headers | show |
Series | clk: imx: Switch the imx6 and imx7 to clk_hw based API | expand |
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 >
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);
Switch all the clk_busy clock registering functions to clk_hw based API. 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(-)