[PATCH 2/2] clk: Generic support for fixed-rate clocks

Jeremy Kerr jeremy.kerr at canonical.com
Mon Dec 13 07:35:37 EST 2010


Hi Sascha,

> > +extern struct clk_ops clk_fixed_ops;
> > +
> > +#define INIT_CLK_FIXED(name, r) { \
> > +	.clk = INIT_CLK(name.clk, clk_fixed_ops), \
> > +	.rate = (r) \
> > +}
> 
> Is there any other valid usecase for this other than
> 
> struct clk_fixed bla = INIT_CLK_FIXED(bla, rate);
> 
> Otherwise I suggest to convert the macro to:
> 
> #define INIT_CLK_FIXED(name, r) \
> 	struct clk_fixed name = { \
> 		.clk = INIT_CLK(name.clk, clk_fixed_ops), \
> 		.rate = (r) \
> 	}
> 
> This way we do not have to specify the same name twice (and it has
> to be exactly the same name, otherwise it won't compile).

For the system-wide INIT_CLK* macros, I've intentionally made them initalisers 
rather than declarators, so that we can use them in other declarators (ie, the 
usage of INIT_CLK() above). This would be relevant if someone is using 
clk_fixed in their struct - probably not likely, but good to be consistent.

But yes, it would be good to avoid having to specify the name twice - how 
about adding a:

#define DEFINE_CLK_FIXED(name, r) \
	struct clk_fixed name = INIT_CLK_FIXED(name, r)

- just like DEFINE_MUTEX and MUTEX_INITIALIZER.

Cheers,


Jeremy



More information about the linux-arm-kernel mailing list