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

clk: x86: cgu: 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>

+20 -15
+20 -15
drivers/clk/x86/clk-cgu.c
··· 132 132 divider->flags, divider->width); 133 133 } 134 134 135 - static long 136 - lgm_clk_divider_round_rate(struct clk_hw *hw, unsigned long rate, 137 - unsigned long *prate) 135 + static int lgm_clk_divider_determine_rate(struct clk_hw *hw, 136 + struct clk_rate_request *req) 138 137 { 139 138 struct lgm_clk_divider *divider = to_lgm_clk_divider(hw); 140 139 141 - return divider_round_rate(hw, rate, prate, divider->table, 142 - divider->width, divider->flags); 140 + req->rate = divider_round_rate(hw, req->rate, &req->best_parent_rate, divider->table, 141 + divider->width, divider->flags); 142 + 143 + return 0; 143 144 } 144 145 145 146 static int ··· 183 182 184 183 static const struct clk_ops lgm_clk_divider_ops = { 185 184 .recalc_rate = lgm_clk_divider_recalc_rate, 186 - .round_rate = lgm_clk_divider_round_rate, 185 + .determine_rate = lgm_clk_divider_determine_rate, 187 186 .set_rate = lgm_clk_divider_set_rate, 188 187 .enable = lgm_clk_divider_enable, 189 188 .disable = lgm_clk_divider_disable, ··· 488 487 return 0; 489 488 } 490 489 491 - static long 492 - lgm_clk_ddiv_round_rate(struct clk_hw *hw, unsigned long rate, 493 - unsigned long *prate) 490 + static int lgm_clk_ddiv_determine_rate(struct clk_hw *hw, 491 + struct clk_rate_request *req) 494 492 { 495 493 struct lgm_clk_ddiv *ddiv = to_lgm_clk_ddiv(hw); 496 494 u32 div, ddiv1, ddiv2; 497 495 u64 rate64; 498 496 499 - div = DIV_ROUND_CLOSEST_ULL((u64)*prate, rate); 497 + div = DIV_ROUND_CLOSEST_ULL((u64)req->best_parent_rate, req->rate); 500 498 501 499 /* if predivide bit is enabled, modify div by factor of 2.5 */ 502 500 if (lgm_get_clk_val(ddiv->membase, ddiv->reg, ddiv->shift2, 1)) { ··· 503 503 div = DIV_ROUND_CLOSEST_ULL((u64)div, 5); 504 504 } 505 505 506 - if (div <= 0) 507 - return *prate; 506 + if (div <= 0) { 507 + req->rate = req->best_parent_rate; 508 + 509 + return 0; 510 + } 508 511 509 512 if (lgm_clk_get_ddiv_val(div, &ddiv1, &ddiv2) != 0) 510 513 if (lgm_clk_get_ddiv_val(div + 1, &ddiv1, &ddiv2) != 0) 511 514 return -EINVAL; 512 515 513 - rate64 = *prate; 516 + rate64 = req->best_parent_rate; 514 517 do_div(rate64, ddiv1); 515 518 do_div(rate64, ddiv2); 516 519 ··· 523 520 rate64 = DIV_ROUND_CLOSEST_ULL(rate64, 5); 524 521 } 525 522 526 - return rate64; 523 + req->rate = rate64; 524 + 525 + return 0; 527 526 } 528 527 529 528 static const struct clk_ops lgm_clk_ddiv_ops = { ··· 533 528 .enable = lgm_clk_ddiv_enable, 534 529 .disable = lgm_clk_ddiv_disable, 535 530 .set_rate = lgm_clk_ddiv_set_rate, 536 - .round_rate = lgm_clk_ddiv_round_rate, 531 + .determine_rate = lgm_clk_ddiv_determine_rate, 537 532 }; 538 533 539 534 int lgm_clk_register_ddiv(struct lgm_clk_provider *ctx,