Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: tegra: divider: 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.

Signed-off-by: Brian Masney <bmasney@redhat.com>

+18 -10
+18 -10
drivers/clk/tegra/clk-divider.c
··· 58 58 return rate; 59 59 } 60 60 61 - static long clk_frac_div_round_rate(struct clk_hw *hw, unsigned long rate, 62 - unsigned long *prate) 61 + static int clk_frac_div_determine_rate(struct clk_hw *hw, 62 + struct clk_rate_request *req) 63 63 { 64 64 struct tegra_clk_frac_div *divider = to_clk_frac_div(hw); 65 65 int div, mul; 66 - unsigned long output_rate = *prate; 66 + unsigned long output_rate = req->best_parent_rate; 67 67 68 - if (!rate) 69 - return output_rate; 68 + if (!req->rate) { 69 + req->rate = output_rate; 70 70 71 - div = get_div(divider, rate, output_rate); 72 - if (div < 0) 73 - return *prate; 71 + return 0; 72 + } 73 + 74 + div = get_div(divider, req->rate, output_rate); 75 + if (div < 0) { 76 + req->rate = req->best_parent_rate; 77 + 78 + return 0; 79 + } 74 80 75 81 mul = get_mul(divider); 76 82 77 - return DIV_ROUND_UP(output_rate * mul, div + mul); 83 + req->rate = DIV_ROUND_UP(output_rate * mul, div + mul); 84 + 85 + return 0; 78 86 } 79 87 80 88 static int clk_frac_div_set_rate(struct clk_hw *hw, unsigned long rate, ··· 135 127 const struct clk_ops tegra_clk_frac_div_ops = { 136 128 .recalc_rate = clk_frac_div_recalc_rate, 137 129 .set_rate = clk_frac_div_set_rate, 138 - .round_rate = clk_frac_div_round_rate, 130 + .determine_rate = clk_frac_div_determine_rate, 139 131 .restore_context = clk_divider_restore_context, 140 132 }; 141 133