Message ID | 1574172496-12987-2-git-send-email-abel.vesa@nxp.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | clk: imx: Trivial cleanups for clk_hw based API | expand |
On 2019-11-19 4:08 PM, Abel Vesa wrote: > Replacing with macros all the clk based API helpers we reduce the code > duplication. The end goal is to get rid of all these macros when there > will be no more users of the clk based API, that is, when all the i.MX > clock provider drivers will be switched completely to the clk_hw based > API. I personally prefer inline functions to macros whenever possible (so everything other than for_each and similar). BTW: All of these macros will crash if the underlying clk_hw registration returns null or error. > This is another step in moving away from the non clk_hw based API usage > throughout the i.MX clock drivers. The reason for doing that is to > have a clear split between the clock provider and the clock consumer API. > > Signed-off-by: Abel Vesa <abel.vesa@nxp.com> > --- > drivers/clk/imx/clk.h | 39 ++++++++++++--------------------------- > 1 file changed, 12 insertions(+), 27 deletions(-) > > diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h > index bc5bb6a..945ce4d 100644 > --- a/drivers/clk/imx/clk.h > +++ b/drivers/clk/imx/clk.h > @@ -73,9 +73,18 @@ extern struct imx_pll14xx_clk imx_1443x_pll; > #define imx_clk_fixed_factor(name, parent, mult, div) \ > imx_clk_hw_fixed_factor(name, parent, mult, div)->clk > > +#define imx_clk_divider(name, parent, reg, shift, width) \ > + imx_clk_hw_divider(name, parent, reg, shift, width)->clk > + > #define imx_clk_divider2(name, parent, reg, shift, width) \ > imx_clk_hw_divider2(name, parent, reg, shift, width)->clk > > +#define imx_clk_divider_flags(name, parent, reg, shift, width, flags) \ > + imx_clk_hw_divider_flags(name, parent, reg, shift, width, flags)->clk > + > +#define imx_clk_gate(name, parent, reg, shift) \ > + imx_clk_hw_gate(name, parent, reg, shift)->clk > + > #define imx_clk_gate_dis(name, parent, reg, shift) \ > imx_clk_hw_gate_dis(name, parent, reg, shift)->clk > > @@ -97,6 +106,9 @@ extern struct imx_pll14xx_clk imx_1443x_pll; > #define imx_clk_mux(name, reg, shift, width, parents, num_parents) \ > imx_clk_hw_mux(name, reg, shift, width, parents, num_parents)->clk > > +#define imx_clk_fixed(name, rate) \ > + imx_clk_hw_fixed(name, rate)->clk > + > struct clk *imx_clk_pll14xx(const char *name, const char *parent_name, > void __iomem *base, const struct imx_pll14xx_clk *pll_clk); > > @@ -198,11 +210,6 @@ struct clk_hw *imx_clk_hw_fixup_mux(const char *name, void __iomem *reg, > u8 shift, u8 width, const char * const *parents, > int num_parents, void (*fixup)(u32 *val)); > > -static inline struct clk *imx_clk_fixed(const char *name, int rate) > -{ > - return clk_register_fixed_rate(NULL, name, NULL, 0, rate); > -} > - > static inline struct clk_hw *imx_clk_hw_fixed(const char *name, int rate) > { > return clk_hw_register_fixed_rate(NULL, name, NULL, 0, rate); > @@ -224,13 +231,6 @@ static inline struct clk_hw *imx_clk_hw_fixed_factor(const char *name, > CLK_SET_RATE_PARENT, mult, div); > } > > -static inline struct clk *imx_clk_divider(const char *name, const char *parent, > - void __iomem *reg, u8 shift, u8 width) > -{ > - return clk_register_divider(NULL, name, parent, CLK_SET_RATE_PARENT, > - reg, shift, width, 0, &imx_ccm_lock); > -} > - > static inline struct clk_hw *imx_clk_hw_divider(const char *name, > const char *parent, > void __iomem *reg, u8 shift, > @@ -240,14 +240,6 @@ static inline struct clk_hw *imx_clk_hw_divider(const char *name, > reg, shift, width, 0, &imx_ccm_lock); > } > > -static inline struct clk *imx_clk_divider_flags(const char *name, > - const char *parent, void __iomem *reg, u8 shift, u8 width, > - unsigned long flags) > -{ > - return clk_register_divider(NULL, name, parent, flags, > - reg, shift, width, 0, &imx_ccm_lock); > -} > - > static inline struct clk_hw *imx_clk_hw_divider_flags(const char *name, > const char *parent, > void __iomem *reg, u8 shift, > @@ -274,13 +266,6 @@ static inline struct clk *imx_clk_divider2_flags(const char *name, > reg, shift, width, 0, &imx_ccm_lock); > } > > -static inline struct clk *imx_clk_gate(const char *name, const char *parent, > - void __iomem *reg, u8 shift) > -{ > - return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT, reg, > - shift, 0, &imx_ccm_lock); > -} > - > static inline struct clk_hw *imx_clk_hw_gate_flags(const char *name, const char *parent, > void __iomem *reg, u8 shift, unsigned long flags) > { >
diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h index bc5bb6a..945ce4d 100644 --- a/drivers/clk/imx/clk.h +++ b/drivers/clk/imx/clk.h @@ -73,9 +73,18 @@ extern struct imx_pll14xx_clk imx_1443x_pll; #define imx_clk_fixed_factor(name, parent, mult, div) \ imx_clk_hw_fixed_factor(name, parent, mult, div)->clk +#define imx_clk_divider(name, parent, reg, shift, width) \ + imx_clk_hw_divider(name, parent, reg, shift, width)->clk + #define imx_clk_divider2(name, parent, reg, shift, width) \ imx_clk_hw_divider2(name, parent, reg, shift, width)->clk +#define imx_clk_divider_flags(name, parent, reg, shift, width, flags) \ + imx_clk_hw_divider_flags(name, parent, reg, shift, width, flags)->clk + +#define imx_clk_gate(name, parent, reg, shift) \ + imx_clk_hw_gate(name, parent, reg, shift)->clk + #define imx_clk_gate_dis(name, parent, reg, shift) \ imx_clk_hw_gate_dis(name, parent, reg, shift)->clk @@ -97,6 +106,9 @@ extern struct imx_pll14xx_clk imx_1443x_pll; #define imx_clk_mux(name, reg, shift, width, parents, num_parents) \ imx_clk_hw_mux(name, reg, shift, width, parents, num_parents)->clk +#define imx_clk_fixed(name, rate) \ + imx_clk_hw_fixed(name, rate)->clk + struct clk *imx_clk_pll14xx(const char *name, const char *parent_name, void __iomem *base, const struct imx_pll14xx_clk *pll_clk); @@ -198,11 +210,6 @@ struct clk_hw *imx_clk_hw_fixup_mux(const char *name, void __iomem *reg, u8 shift, u8 width, const char * const *parents, int num_parents, void (*fixup)(u32 *val)); -static inline struct clk *imx_clk_fixed(const char *name, int rate) -{ - return clk_register_fixed_rate(NULL, name, NULL, 0, rate); -} - static inline struct clk_hw *imx_clk_hw_fixed(const char *name, int rate) { return clk_hw_register_fixed_rate(NULL, name, NULL, 0, rate); @@ -224,13 +231,6 @@ static inline struct clk_hw *imx_clk_hw_fixed_factor(const char *name, CLK_SET_RATE_PARENT, mult, div); } -static inline struct clk *imx_clk_divider(const char *name, const char *parent, - void __iomem *reg, u8 shift, u8 width) -{ - return clk_register_divider(NULL, name, parent, CLK_SET_RATE_PARENT, - reg, shift, width, 0, &imx_ccm_lock); -} - static inline struct clk_hw *imx_clk_hw_divider(const char *name, const char *parent, void __iomem *reg, u8 shift, @@ -240,14 +240,6 @@ static inline struct clk_hw *imx_clk_hw_divider(const char *name, reg, shift, width, 0, &imx_ccm_lock); } -static inline struct clk *imx_clk_divider_flags(const char *name, - const char *parent, void __iomem *reg, u8 shift, u8 width, - unsigned long flags) -{ - return clk_register_divider(NULL, name, parent, flags, - reg, shift, width, 0, &imx_ccm_lock); -} - static inline struct clk_hw *imx_clk_hw_divider_flags(const char *name, const char *parent, void __iomem *reg, u8 shift, @@ -274,13 +266,6 @@ static inline struct clk *imx_clk_divider2_flags(const char *name, reg, shift, width, 0, &imx_ccm_lock); } -static inline struct clk *imx_clk_gate(const char *name, const char *parent, - void __iomem *reg, u8 shift) -{ - return clk_register_gate(NULL, name, parent, CLK_SET_RATE_PARENT, reg, - shift, 0, &imx_ccm_lock); -} - static inline struct clk_hw *imx_clk_hw_gate_flags(const char *name, const char *parent, void __iomem *reg, u8 shift, unsigned long flags) {
Replacing with macros all the clk based API helpers we reduce the code duplication. The end goal is to get rid of all these macros when there will be no more users of the clk based API, that is, when all the i.MX clock provider drivers will be switched completely to the clk_hw based API. This is another step in moving away from the non clk_hw based API usage throughout the i.MX clock drivers. The reason for doing that is to have a clear split between the clock provider and the clock consumer API. Signed-off-by: Abel Vesa <abel.vesa@nxp.com> --- drivers/clk/imx/clk.h | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-)