clk: Make clk API return per-user struct clk instances
Moves clock state to struct clk_core, but takes care to change as little API as possible. struct clk_hw still has a pointer to a struct clk, which is the implementation's per-user clk instance, for backwards compatibility. The struct clk that clk_get_parent() returns isn't owned by the caller, but by the clock implementation, so the former shouldn't call clk_put() on it. Because some boards in mach-omap2 still register clocks statically, their clock registration had to be updated to take into account that the clock information is stored in struct clk_core now. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> Tested-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Michael Turquette <mturquette@linaro.org> [mturquette@linaro.org: adapted clk_has_parent to struct clk_core applied OMAP3+ DPLL fix from Tero & Tony]
This commit is contained in:

committed by
Michael Turquette

parent
af0f349b29
commit
035a61c314
@@ -33,6 +33,7 @@
|
||||
#define CLK_GET_ACCURACY_NOCACHE BIT(8) /* do not use the cached clk accuracy */
|
||||
|
||||
struct clk_hw;
|
||||
struct clk_core;
|
||||
struct dentry;
|
||||
|
||||
/**
|
||||
@@ -216,13 +217,17 @@ struct clk_init_data {
|
||||
* clk_foo and then referenced by the struct clk instance that uses struct
|
||||
* clk_foo's clk_ops
|
||||
*
|
||||
* @clk: pointer to the struct clk instance that points back to this struct
|
||||
* clk_hw instance
|
||||
* @core: pointer to the struct clk_core instance that points back to this
|
||||
* struct clk_hw instance
|
||||
*
|
||||
* @clk: pointer to the per-user struct clk instance that can be used to call
|
||||
* into the clk API
|
||||
*
|
||||
* @init: pointer to struct clk_init_data that contains the init data shared
|
||||
* with the common clock framework.
|
||||
*/
|
||||
struct clk_hw {
|
||||
struct clk_core *core;
|
||||
struct clk *clk;
|
||||
const struct clk_init_data *init;
|
||||
};
|
||||
@@ -577,9 +582,6 @@ long __clk_mux_determine_rate_closest(struct clk_hw *hw, unsigned long rate,
|
||||
/*
|
||||
* FIXME clock api without lock protection
|
||||
*/
|
||||
int __clk_prepare(struct clk *clk);
|
||||
void __clk_unprepare(struct clk *clk);
|
||||
void __clk_reparent(struct clk *clk, struct clk *new_parent);
|
||||
unsigned long __clk_round_rate(struct clk *clk, unsigned long rate);
|
||||
|
||||
struct of_device_id;
|
||||
|
Reference in New Issue
Block a user