clk: ti: fapll: convert from round_rate() to determine_rate()

The round_rate() clk ops is deprecated, so migrate this driver from
round_rate() to determine_rate() using the Coccinelle semantic patch
on the cover letter of this series.

Tested-by: Anddreas Kemnade <andreas@kemnade.info> # OMAP3 GTA04, OMAP4 Panda
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
Tested-by: Kevin Hilman <khilman@baylibre.com>
Signed-off-by: Brian Masney <bmasney@redhat.com>
This commit is contained in:
Brian Masney 2025-08-11 08:48:12 -04:00
parent 48f8fb402a
commit d8a97749ba

View File

@ -214,24 +214,27 @@ static int ti_fapll_set_div_mult(unsigned long rate,
return 0; return 0;
} }
static long ti_fapll_round_rate(struct clk_hw *hw, unsigned long rate, static int ti_fapll_determine_rate(struct clk_hw *hw,
unsigned long *parent_rate) struct clk_rate_request *req)
{ {
u32 pre_div_p, mult_n; u32 pre_div_p, mult_n;
int error; int error;
if (!rate) if (!req->rate)
return -EINVAL; return -EINVAL;
error = ti_fapll_set_div_mult(rate, *parent_rate, error = ti_fapll_set_div_mult(req->rate, req->best_parent_rate,
&pre_div_p, &mult_n); &pre_div_p, &mult_n);
if (error) if (error) {
return error; req->rate = error;
rate = *parent_rate / pre_div_p; return 0;
rate *= mult_n; }
return rate; req->rate = req->best_parent_rate / pre_div_p;
req->rate *= mult_n;
return 0;
} }
static int ti_fapll_set_rate(struct clk_hw *hw, unsigned long rate, static int ti_fapll_set_rate(struct clk_hw *hw, unsigned long rate,
@ -268,7 +271,7 @@ static const struct clk_ops ti_fapll_ops = {
.is_enabled = ti_fapll_is_enabled, .is_enabled = ti_fapll_is_enabled,
.recalc_rate = ti_fapll_recalc_rate, .recalc_rate = ti_fapll_recalc_rate,
.get_parent = ti_fapll_get_parent, .get_parent = ti_fapll_get_parent,
.round_rate = ti_fapll_round_rate, .determine_rate = ti_fapll_determine_rate,
.set_rate = ti_fapll_set_rate, .set_rate = ti_fapll_set_rate,
}; };
@ -399,14 +402,14 @@ static u32 ti_fapll_synth_set_frac_rate(struct fapll_synth *synth,
return post_div_m; return post_div_m;
} }
static long ti_fapll_synth_round_rate(struct clk_hw *hw, unsigned long rate, static int ti_fapll_synth_determine_rate(struct clk_hw *hw,
unsigned long *parent_rate) struct clk_rate_request *req)
{ {
struct fapll_synth *synth = to_synth(hw); struct fapll_synth *synth = to_synth(hw);
struct fapll_data *fd = synth->fd; struct fapll_data *fd = synth->fd;
unsigned long r; unsigned long r;
if (ti_fapll_clock_is_bypass(fd) || !synth->div || !rate) if (ti_fapll_clock_is_bypass(fd) || !synth->div || !req->rate)
return -EINVAL; return -EINVAL;
/* Only post divider m available with no fractional divider? */ /* Only post divider m available with no fractional divider? */
@ -414,23 +417,26 @@ static long ti_fapll_synth_round_rate(struct clk_hw *hw, unsigned long rate,
unsigned long frac_rate; unsigned long frac_rate;
u32 synth_post_div_m; u32 synth_post_div_m;
frac_rate = ti_fapll_synth_get_frac_rate(hw, *parent_rate); frac_rate = ti_fapll_synth_get_frac_rate(hw,
synth_post_div_m = DIV_ROUND_UP(frac_rate, rate); req->best_parent_rate);
synth_post_div_m = DIV_ROUND_UP(frac_rate, req->rate);
r = DIV_ROUND_UP(frac_rate, synth_post_div_m); r = DIV_ROUND_UP(frac_rate, synth_post_div_m);
goto out; goto out;
} }
r = *parent_rate * SYNTH_PHASE_K; r = req->best_parent_rate * SYNTH_PHASE_K;
if (rate > r) if (req->rate > r)
goto out; goto out;
r = DIV_ROUND_UP_ULL(r, SYNTH_MAX_INT_DIV * SYNTH_MAX_DIV_M); r = DIV_ROUND_UP_ULL(r, SYNTH_MAX_INT_DIV * SYNTH_MAX_DIV_M);
if (rate < r) if (req->rate < r)
goto out; goto out;
r = rate; r = req->rate;
out: out:
return r; req->rate = r;
return 0;
} }
static int ti_fapll_synth_set_rate(struct clk_hw *hw, unsigned long rate, static int ti_fapll_synth_set_rate(struct clk_hw *hw, unsigned long rate,
@ -477,7 +483,7 @@ static const struct clk_ops ti_fapll_synt_ops = {
.disable = ti_fapll_synth_disable, .disable = ti_fapll_synth_disable,
.is_enabled = ti_fapll_synth_is_enabled, .is_enabled = ti_fapll_synth_is_enabled,
.recalc_rate = ti_fapll_synth_recalc_rate, .recalc_rate = ti_fapll_synth_recalc_rate,
.round_rate = ti_fapll_synth_round_rate, .determine_rate = ti_fapll_synth_determine_rate,
.set_rate = ti_fapll_synth_set_rate, .set_rate = ti_fapll_synth_set_rate,
}; };