[PATCH v6 1/5] clk: Add a basic multiplier clock

Michael Turquette mturquette at baylibre.com
Tue Oct 20 06:43:43 PDT 2015

Hi Maxime,

Quoting Maxime Ripard (2015-10-20 00:36:45)
> +struct clk *clk_register_multiplier(struct device *dev, const char *name,
> +                                   const char *parent_name,
> +                                   unsigned long flags,
> +                                   void __iomem *reg, u8 shift, u8 width,
> +                                   u8 clk_mult_flags, spinlock_t *lock)
> +{

Patch looks good in general. However this is a good opportunity to stop
the madness around the registration functions in these basic clock

clk_register is really all that we need since we've had struct
clk_init_data for a while. Initializing a multiplier should be as simple

	struct clk_multiplier clk_foo = {
		.hw.init = &(struct clk_init_data){
			.name = "foo",
			.parent_names = (const char *[]){
			.num_parents = 1;
			.ops = &clk_multiplier_ops,
		.reg = 0xd34db33f,
		.shift = 1,
		.width = 2,

	clk_register(dev, &clk_foo.hw);

This is nice since it turns these basic clocks into even more of a
library and less of a poor mans driver.

(I really hope the above works. I did not test it)

Is it possible you can convert to using this method, and if it is
correct for you then just remove clk_multiplier_register altogether? (In
fact you might not use the registration function at all since you use
the composite clock...)


More information about the linux-arm-kernel mailing list