diff options
Diffstat (limited to 'drivers/clk/rockchip/clk.c')
-rw-r--r-- | drivers/clk/rockchip/clk.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/clk/rockchip/clk.c b/drivers/clk/rockchip/clk.c index 6e7bba414f..aedb02a8d3 100644 --- a/drivers/clk/rockchip/clk.c +++ b/drivers/clk/rockchip/clk.c @@ -17,7 +17,7 @@ #include <common.h> #include <malloc.h> #include <linux/clk.h> -#include <regmap.h> +#include <linux/regmap.h> #include <mfd/syscon.h> #include <linux/spinlock.h> #include <linux/rational.h> @@ -59,6 +59,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, mux->width = mux_width; mux->flags = mux_flags; mux->lock = lock; + mux->hw.clk.name = basprintf("%s.mux", name); mux->hw.clk.ops = (mux_flags & CLK_MUX_READ_ONLY) ? &clk_mux_ro_ops : &clk_mux_ops; } @@ -74,6 +75,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, gate->reg = base + gate_offset; gate->shift = gate_shift; gate->lock = lock; + gate->hw.clk.name = basprintf("%s.gate", name); gate->hw.clk.ops = &clk_gate_ops; } @@ -93,6 +95,7 @@ static struct clk *rockchip_clk_register_branch(const char *name, div->width = div_width; div->lock = lock; div->table = div_table; + div->hw.clk.name = basprintf("%s.div", name); div->hw.clk.ops = (div_flags & CLK_DIVIDER_READ_ONLY) ? &clk_divider_ro_ops : &clk_divider_ops; @@ -392,6 +395,23 @@ void rockchip_clk_register_plls(struct rockchip_clk_provider *ctx, } EXPORT_SYMBOL_GPL(rockchip_clk_register_plls); +unsigned long rockchip_clk_find_max_clk_id(struct rockchip_clk_branch *list, + unsigned int nr_clk) +{ + unsigned long max = 0; + unsigned int idx; + + for (idx = 0; idx < nr_clk; idx++, list++) { + if (list->id > max) + max = list->id; + if (list->child && list->child->id > max) + max = list->id; + } + + return max; +} +EXPORT_SYMBOL_GPL(rockchip_clk_find_max_clk_id); + void rockchip_clk_register_branches(struct rockchip_clk_provider *ctx, struct rockchip_clk_branch *list, unsigned int nr_clk) |