]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
clk: qcom: regmap-divider: convert from round_rate() to determine_rate()
authorBrian Masney <bmasney@redhat.com>
Mon, 11 Aug 2025 15:19:23 +0000 (11:19 -0400)
committerBrian Masney <bmasney@redhat.com>
Mon, 8 Sep 2025 13:41:30 +0000 (09:41 -0400)
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.

Note that prior to running the Coccinelle, div_round_ro_rate() was
renamed to div_ro_round_rate().

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Brian Masney <bmasney@redhat.com>
drivers/clk/qcom/clk-regmap-divider.c

index 63c9fca0d65d7436db4fe45c17d347baea922900..4f5395f0ab6d0ed8cebbb32cc231063932ba85a1 100644 (file)
@@ -15,8 +15,8 @@ static inline struct clk_regmap_div *to_clk_regmap_div(struct clk_hw *hw)
        return container_of(to_clk_regmap(hw), struct clk_regmap_div, clkr);
 }
 
-static long div_round_ro_rate(struct clk_hw *hw, unsigned long rate,
-                             unsigned long *prate)
+static int div_ro_determine_rate(struct clk_hw *hw,
+                                struct clk_rate_request *req)
 {
        struct clk_regmap_div *divider = to_clk_regmap_div(hw);
        struct clk_regmap *clkr = &divider->clkr;
@@ -26,17 +26,24 @@ static long div_round_ro_rate(struct clk_hw *hw, unsigned long rate,
        val >>= divider->shift;
        val &= BIT(divider->width) - 1;
 
-       return divider_ro_round_rate(hw, rate, prate, NULL, divider->width,
-                                    CLK_DIVIDER_ROUND_CLOSEST, val);
+       req->rate = divider_ro_round_rate(hw, req->rate,
+                                         &req->best_parent_rate, NULL,
+                                         divider->width,
+                                         CLK_DIVIDER_ROUND_CLOSEST, val);
+
+       return 0;
 }
 
-static long div_round_rate(struct clk_hw *hw, unsigned long rate,
-                          unsigned long *prate)
+static int div_determine_rate(struct clk_hw *hw, struct clk_rate_request *req)
 {
        struct clk_regmap_div *divider = to_clk_regmap_div(hw);
 
-       return divider_round_rate(hw, rate, prate, NULL, divider->width,
-                                 CLK_DIVIDER_ROUND_CLOSEST);
+       req->rate = divider_round_rate(hw, req->rate, &req->best_parent_rate,
+                                      NULL,
+                                      divider->width,
+                                      CLK_DIVIDER_ROUND_CLOSEST);
+
+       return 0;
 }
 
 static int div_set_rate(struct clk_hw *hw, unsigned long rate,
@@ -70,14 +77,14 @@ static unsigned long div_recalc_rate(struct clk_hw *hw,
 }
 
 const struct clk_ops clk_regmap_div_ops = {
-       .round_rate = div_round_rate,
+       .determine_rate = div_determine_rate,
        .set_rate = div_set_rate,
        .recalc_rate = div_recalc_rate,
 };
 EXPORT_SYMBOL_GPL(clk_regmap_div_ops);
 
 const struct clk_ops clk_regmap_div_ro_ops = {
-       .round_rate = div_round_ro_rate,
+       .determine_rate = div_ro_determine_rate,
        .recalc_rate = div_recalc_rate,
 };
 EXPORT_SYMBOL_GPL(clk_regmap_div_ro_ops);