Commit a229965c authored by Tero Kristo's avatar Tero Kristo

clk: ti: divider: cleanup ti_clk_parse_divider_data API

Cleanup the ti_clk_parse_divider_data to pass the divider data struct
directly instead of individual values of it. This makes it easier
to modify the implementation later on.
Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
Tested-by: default avatarAdam Ford <aford173@gmail.com>
parent fbbc1859
...@@ -383,7 +383,7 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider, ...@@ -383,7 +383,7 @@ _ti_clkctrl_setup_div(struct omap_clkctrl_provider *provider,
if (ti_clk_parse_divider_data((int *)div_data->dividers, 0, if (ti_clk_parse_divider_data((int *)div_data->dividers, 0,
div_data->max_div, div_flags, div_data->max_div, div_flags,
&div->width, &div->table)) { div)) {
pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__, pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__,
node, offset, data->bit); node, offset, data->bit);
kfree(div); kfree(div);
......
...@@ -220,8 +220,7 @@ void ti_clk_latch(struct clk_omap_reg *reg, s8 shift); ...@@ -220,8 +220,7 @@ void ti_clk_latch(struct clk_omap_reg *reg, s8 shift);
struct clk_hw *ti_clk_build_component_mux(struct ti_clk_mux *setup); struct clk_hw *ti_clk_build_component_mux(struct ti_clk_mux *setup);
int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div, int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
u8 flags, u8 *width, u8 flags, struct clk_omap_divider *div);
const struct clk_div_table **table);
int ti_clk_get_reg_addr(struct device_node *node, int index, int ti_clk_get_reg_addr(struct device_node *node, int index,
struct clk_omap_reg *reg); struct clk_omap_reg *reg);
......
...@@ -338,8 +338,7 @@ static struct clk *_register_divider(struct device_node *node, ...@@ -338,8 +338,7 @@ static struct clk *_register_divider(struct device_node *node,
} }
int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div, int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
u8 flags, u8 *width, u8 flags, struct clk_omap_divider *divider)
const struct clk_div_table **table)
{ {
int valid_div = 0; int valid_div = 0;
u32 val; u32 val;
...@@ -363,8 +362,7 @@ int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div, ...@@ -363,8 +362,7 @@ int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
val++; val++;
} }
*width = fls(val); divider->width = fls(val);
*table = NULL;
return 0; return 0;
} }
...@@ -382,24 +380,22 @@ int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div, ...@@ -382,24 +380,22 @@ int ti_clk_parse_divider_data(int *div_table, int num_dividers, int max_div,
num_dividers = i; num_dividers = i;
tmp = kcalloc(valid_div + 1, sizeof(*tmp), GFP_KERNEL); tmp = kcalloc(valid_div + 1, sizeof(*tmp), GFP_KERNEL);
if (!tmp) { if (!tmp)
*table = ERR_PTR(-ENOMEM);
return -ENOMEM; return -ENOMEM;
}
valid_div = 0; valid_div = 0;
*width = 0; divider->width = 0;
for (i = 0; i < num_dividers; i++) for (i = 0; i < num_dividers; i++)
if (div_table[i] > 0) { if (div_table[i] > 0) {
tmp[valid_div].div = div_table[i]; tmp[valid_div].div = div_table[i];
tmp[valid_div].val = i; tmp[valid_div].val = i;
valid_div++; valid_div++;
*width = i; divider->width = i;
} }
*width = fls(*width); divider->width = fls(divider->width);
*table = tmp; divider->table = tmp;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment