diff options
author | Tero Kristo <t-kristo@ti.com> | 2017-10-11 10:56:10 -0400 |
---|---|---|
committer | Tero Kristo <t-kristo@ti.com> | 2017-12-01 08:17:09 -0500 |
commit | 49eec6fbe125d691944d077f6155c3ccac3a0e71 (patch) | |
tree | 4f9aaf72c73c970ae4488af7bf4f58b5a99a7849 | |
parent | 729e13bf58e643b9accd2a14c55b555958702fb0 (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.c | 12 | ||||
-rw-r--r-- | drivers/clk/ti/clock.h | 1 |
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 { | |||
207 | struct omap_clkctrl_div_data { | 207 | struct 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 | ||
212 | struct omap_clkctrl_bit_data { | 213 | struct omap_clkctrl_bit_data { |