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

clk: rp1: 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>
Link: https://lore.kernel.org/linux-clk/20250828-clk-round-rate-v2-v1-0-b97ec8ba6cc4@redhat.com/T/#mbb878a331cf0f8930257a356c1d9e2ab458e3efb
Signed-off-by: Florian Fainelli <florian.fainelli@broadcom.com>

authored by

Brian Masney and committed by
Florian Fainelli
41c9570e 2d503aaf

+33 -25
+33 -25
drivers/clk/clk-rp1.c
··· 532 532 return calc_rate; 533 533 } 534 534 535 - static long rp1_pll_core_round_rate(struct clk_hw *hw, unsigned long rate, 536 - unsigned long *parent_rate) 535 + static int rp1_pll_core_determine_rate(struct clk_hw *hw, 536 + struct clk_rate_request *req) 537 537 { 538 538 u32 fbdiv_int, fbdiv_frac; 539 539 540 - return get_pll_core_divider(hw, rate, *parent_rate, 541 - &fbdiv_int, &fbdiv_frac); 540 + req->rate = get_pll_core_divider(hw, req->rate, req->best_parent_rate, 541 + &fbdiv_int, 542 + &fbdiv_frac); 543 + 544 + return 0; 542 545 } 543 546 544 547 static void get_pll_prim_dividers(unsigned long rate, unsigned long parent_rate, ··· 619 616 return DIV_ROUND_CLOSEST(parent_rate, prim_div1 * prim_div2); 620 617 } 621 618 622 - static long rp1_pll_round_rate(struct clk_hw *hw, unsigned long rate, 623 - unsigned long *parent_rate) 619 + static int rp1_pll_determine_rate(struct clk_hw *hw, 620 + struct clk_rate_request *req) 624 621 { 625 622 struct clk_hw *clk_audio_hw = &clk_audio->hw; 626 623 u32 div1, div2; 627 624 628 - if (hw == clk_audio_hw && clk_audio->cached_rate == rate) 629 - *parent_rate = clk_audio_core->cached_rate; 625 + if (hw == clk_audio_hw && clk_audio->cached_rate == req->rate) 626 + req->best_parent_rate = clk_audio_core->cached_rate; 630 627 631 - get_pll_prim_dividers(rate, *parent_rate, &div1, &div2); 628 + get_pll_prim_dividers(req->rate, req->best_parent_rate, &div1, &div2); 632 629 633 - return DIV_ROUND_CLOSEST(*parent_rate, div1 * div2); 630 + req->rate = DIV_ROUND_CLOSEST(req->best_parent_rate, div1 * div2); 631 + 632 + return 0; 634 633 } 635 634 636 635 static int rp1_pll_ph_is_on(struct clk_hw *hw) ··· 682 677 return parent_rate / data->fixed_divider; 683 678 } 684 679 685 - static long rp1_pll_ph_round_rate(struct clk_hw *hw, unsigned long rate, 686 - unsigned long *parent_rate) 680 + static int rp1_pll_ph_determine_rate(struct clk_hw *hw, 681 + struct clk_rate_request *req) 687 682 { 688 683 struct rp1_clk_desc *pll_ph = container_of(hw, struct rp1_clk_desc, hw); 689 684 const struct rp1_pll_ph_data *data = pll_ph->data; 690 685 691 - return *parent_rate / data->fixed_divider; 686 + req->rate = req->best_parent_rate / data->fixed_divider; 687 + 688 + return 0; 692 689 } 693 690 694 691 static int rp1_pll_divider_is_on(struct clk_hw *hw) ··· 767 760 return clk_divider_ops.recalc_rate(hw, parent_rate); 768 761 } 769 762 770 - static long rp1_pll_divider_round_rate(struct clk_hw *hw, 771 - unsigned long rate, 772 - unsigned long *parent_rate) 763 + static int rp1_pll_divider_determine_rate(struct clk_hw *hw, 764 + struct clk_rate_request *req) 773 765 { 774 - return clk_divider_ops.round_rate(hw, rate, parent_rate); 766 + req->rate = clk_divider_ops.determine_rate(hw, req); 767 + 768 + return 0; 775 769 } 776 770 777 771 static int rp1_clock_is_on(struct clk_hw *hw) ··· 1174 1166 return clock->cached_rate; 1175 1167 } 1176 1168 1177 - static long rp1_varsrc_round_rate(struct clk_hw *hw, unsigned long rate, 1178 - unsigned long *parent_rate) 1169 + static int rp1_varsrc_determine_rate(struct clk_hw *hw, 1170 + struct clk_rate_request *req) 1179 1171 { 1180 - return rate; 1172 + return 0; 1181 1173 } 1182 1174 1183 1175 static const struct clk_ops rp1_pll_core_ops = { ··· 1186 1178 .unprepare = rp1_pll_core_off, 1187 1179 .set_rate = rp1_pll_core_set_rate, 1188 1180 .recalc_rate = rp1_pll_core_recalc_rate, 1189 - .round_rate = rp1_pll_core_round_rate, 1181 + .determine_rate = rp1_pll_core_determine_rate, 1190 1182 }; 1191 1183 1192 1184 static const struct clk_ops rp1_pll_ops = { 1193 1185 .set_rate = rp1_pll_set_rate, 1194 1186 .recalc_rate = rp1_pll_recalc_rate, 1195 - .round_rate = rp1_pll_round_rate, 1187 + .determine_rate = rp1_pll_determine_rate, 1196 1188 }; 1197 1189 1198 1190 static const struct clk_ops rp1_pll_ph_ops = { ··· 1200 1192 .prepare = rp1_pll_ph_on, 1201 1193 .unprepare = rp1_pll_ph_off, 1202 1194 .recalc_rate = rp1_pll_ph_recalc_rate, 1203 - .round_rate = rp1_pll_ph_round_rate, 1195 + .determine_rate = rp1_pll_ph_determine_rate, 1204 1196 }; 1205 1197 1206 1198 static const struct clk_ops rp1_pll_divider_ops = { ··· 1209 1201 .unprepare = rp1_pll_divider_off, 1210 1202 .set_rate = rp1_pll_divider_set_rate, 1211 1203 .recalc_rate = rp1_pll_divider_recalc_rate, 1212 - .round_rate = rp1_pll_divider_round_rate, 1204 + .determine_rate = rp1_pll_divider_determine_rate, 1213 1205 }; 1214 1206 1215 1207 static const struct clk_ops rp1_clk_ops = { ··· 1227 1219 static const struct clk_ops rp1_varsrc_ops = { 1228 1220 .set_rate = rp1_varsrc_set_rate, 1229 1221 .recalc_rate = rp1_varsrc_recalc_rate, 1230 - .round_rate = rp1_varsrc_round_rate, 1222 + .determine_rate = rp1_varsrc_determine_rate, 1231 1223 }; 1232 1224 1233 1225 static struct clk_hw *rp1_register_pll(struct rp1_clockman *clockman,