[PATCH 09/11] clk: lpc32xx: add common clock framework driver
Arnd Bergmann
arnd at arndb.de
Fri Nov 20 06:04:11 PST 2015
On Friday 20 November 2015 03:05:09 Vladimir Zapolskiy wrote:
> +
> +struct clk_proto_t {
> + const char *name;
> + const u8 parents[LPC32XX_CLK_PARENTS_MAX];
> + u8 num_parents;
> + unsigned long flags;
> +};
> +
> +#define CLK_PREFIX(LITERAL) LPC32XX_CLK_ ## LITERAL
> +#define NUMARGS(...) (sizeof((int[]){__VA_ARGS__})/sizeof(int))
> +
> +#define LPC32XX_CLK_DEFINE(_idx, _name, _flags, ...) \
> + [CLK_PREFIX(_idx)] = { \
> + .name = #_name, \
> + .flags = _flags, \
> + .parents = { __VA_ARGS__ }, \
> + .num_parents = NUMARGS(__VA_ARGS__), \
> + }
> +
Try to not outsmart yourself with the macros. It's better to avoid
string concatenation so it's possible to grep for uses of some
constant.
I would probably not use a macro at all here and just open-code the
entire table. If you ensure that '0' is not a valid parent, then
you can leave out the .num_parents field and just look for the
zero-termination.
Arnd
More information about the linux-arm-kernel
mailing list