.set_rate = clk_multiplier_set_rate,
};
EXPORT_SYMBOL_GPL(clk_multiplier_ops);
-
-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)
-{
- struct clk_init_data init;
- struct clk_multiplier *mult;
- struct clk *clk;
-
- mult = kmalloc(sizeof(*mult), GFP_KERNEL);
- if (!mult)
- return ERR_PTR(-ENOMEM);
-
- init.name = name;
- init.ops = &clk_multiplier_ops;
- init.flags = flags | CLK_IS_BASIC;
- init.parent_names = &parent_name;
- init.num_parents = 1;
-
- mult->reg = reg;
- mult->shift = shift;
- mult->width = width;
- mult->flags = clk_mult_flags;
- mult->lock = lock;
- mult->hw.init = &init;
-
- clk = clk_register(dev, &mult->hw);
- if (IS_ERR(clk))
- kfree(mult);
-
- return clk;
-}
-EXPORT_SYMBOL_GPL(clk_register_multiplier);
-
-void clk_unregister_multiplier(struct clk *clk)
-{
- struct clk_multiplier *mult;
- struct clk_hw *hw;
-
- hw = __clk_get_hw(clk);
- if (!hw)
- return;
-
- mult = to_clk_multiplier(hw);
-
- clk_unregister(clk);
- kfree(mult);
-}
-EXPORT_SYMBOL_GPL(clk_unregister_multiplier);
extern const struct clk_ops clk_multiplier_ops;
-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);
-void clk_unregister_multiplier(struct clk *clk);
-
/***
* struct clk_composite - aggregate clock of mux, divider and gate clocks
*