aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTero Kristo <t-kristo@ti.com>2017-10-11 10:56:10 -0400
committerTero Kristo <t-kristo@ti.com>2017-12-01 08:17:09 -0500
commit49eec6fbe125d691944d077f6155c3ccac3a0e71 (patch)
tree4f9aaf72c73c970ae4488af7bf4f58b5a99a7849
parent729e13bf58e643b9accd2a14c55b555958702fb0 (diff)
clk: ti: clkctrl: fix flags for mux and divider opt clocks
Flag handling was missing for these two, so add it. Signed-off-by: Tero Kristo <t-kristo@ti.com>
-rw-r--r--drivers/clk/ti/clkctrl.c12
-rw-r--r--drivers/clk/ti/clock.h1
2 files changed, 11 insertions, 2 deletions
diff --git a/drivers/clk/ti/clkctrl.c b/drivers/clk/ti/clkctrl.c
index 7d82fff25d5b..3bab88e4fffa 100644
--- a/drivers/clk/ti/clkctrl.c
+++ b/drivers/clk/ti/clkctrl.c
@@ -335,6 +335,9 @@ _ti_clkctrl_setup_mux(struct omap_clkctrl_provider *provider,
335 } 335 }
336 336
337 mux->mask = num_parents; 337 mux->mask = num_parents;
338 if (!(mux->flags & CLK_MUX_INDEX_ONE))
339 mux->mask--;
340
338 mux->mask = (1 << fls(mux->mask)) - 1; 341 mux->mask = (1 << fls(mux->mask)) - 1;
339 342
340 mux->shift = data->bit; 343 mux->shift = data->bit;
@@ -354,6 +357,7 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider,
354{ 357{
355 struct clk_omap_divider *div; 358 struct clk_omap_divider *div;
356 const struct omap_clkctrl_div_data *div_data = data->data; 359 const struct omap_clkctrl_div_data *div_data = data->data;
360 u8 div_flags = 0;
357 361
358 div = kzalloc(sizeof(*div), GFP_KERNEL); 362 div = kzalloc(sizeof(*div), GFP_KERNEL);
359 if (!div) 363 if (!div)
@@ -361,9 +365,13 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider,
361 365
362 div->reg.ptr = reg; 366 div->reg.ptr = reg;
363 div->shift = data->bit; 367 div->shift = data->bit;
368 div->flags = div_data->flags;
369
370 if (div->flags & CLK_DIVIDER_POWER_OF_TWO)
371 div_flags |= CLKF_INDEX_POWER_OF_TWO;
364 372
365 if (ti_clk_parse_divider_data((int *)div_data->dividers, 373 if (ti_clk_parse_divider_data((int *)div_data->dividers, 0,
366 div_data->max_div, 0, 0, 374 div_data->max_div, div_flags,
367 &div->width, &div->table)) { 375 &div->width, &div->table)) {
368 pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__, 376 pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__,
369 node, offset, data->bit); 377 node, offset, data->bit);
diff --git a/drivers/clk/ti/clock.h b/drivers/clk/ti/clock.h
index 999fe7211394..24250e665991 100644
--- a/drivers/clk/ti/clock.h
+++ b/drivers/clk/ti/clock.h
@@ -207,6 +207,7 @@ struct ti_dt_clk {
207struct omap_clkctrl_div_data { 207struct omap_clkctrl_div_data {
208 const int *dividers; 208 const int *dividers;
209 int max_div; 209 int max_div;
210 u32 flags;
210}; 211};
211 212
212struct omap_clkctrl_bit_data { 213struct omap_clkctrl_bit_data {