]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
clk: imx: scu: convert from round_rate() to determine_rate()
authorBrian Masney <bmasney@redhat.com>
Thu, 10 Jul 2025 21:10:45 +0000 (17:10 -0400)
committerStephen Boyd <sboyd@kernel.org>
Thu, 24 Jul 2025 22:17:58 +0000 (15:17 -0700)
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.

This driver also implements both the determine_rate() and round_rate()
clk ops, and the round_rate() clk ops is deprecated. When both are
defined, clk_core_determine_round_nolock() from the clk core will only
use the determine_rate() clk ops, so let's remove the round_rate() clk
ops since it's unused.

Signed-off-by: Brian Masney <bmasney@redhat.com>
Link: https://lore.kernel.org/r/20250710-clk-imx-round-rate-v1-13-5726f98e6d8d@redhat.com
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/imx/clk-scu.c

index b27186aaf2a15628910ea6a3d4aaa5320ec4295a..77c4cde8a72bd71653bbd2e95148bc1357ec1aae 100644 (file)
@@ -269,24 +269,6 @@ static int clk_scu_determine_rate(struct clk_hw *hw,
        return 0;
 }
 
-/*
- * clk_scu_round_rate - Round clock rate for a SCU clock
- * @hw: clock to round rate for
- * @rate: rate to round
- * @parent_rate: parent rate provided by common clock framework, not used
- *
- * Returns the current clock rate, or zero in failure.
- */
-static long clk_scu_round_rate(struct clk_hw *hw, unsigned long rate,
-                              unsigned long *parent_rate)
-{
-       /*
-        * Assume we support all the requested rate and let the SCU firmware
-        * to handle the left work
-        */
-       return rate;
-}
-
 static int clk_scu_atf_set_cpu_rate(struct clk_hw *hw, unsigned long rate,
                                    unsigned long parent_rate)
 {
@@ -454,7 +436,7 @@ static const struct clk_ops clk_scu_ops = {
 
 static const struct clk_ops clk_scu_cpu_ops = {
        .recalc_rate = clk_scu_recalc_rate,
-       .round_rate = clk_scu_round_rate,
+       .determine_rate = clk_scu_determine_rate,
        .set_rate = clk_scu_atf_set_cpu_rate,
        .prepare = clk_scu_prepare,
        .unprepare = clk_scu_unprepare,
@@ -462,7 +444,7 @@ static const struct clk_ops clk_scu_cpu_ops = {
 
 static const struct clk_ops clk_scu_pi_ops = {
        .recalc_rate = clk_scu_recalc_rate,
-       .round_rate  = clk_scu_round_rate,
+       .determine_rate = clk_scu_determine_rate,
        .set_rate    = clk_scu_set_rate,
 };
 
@@ -766,15 +748,15 @@ static unsigned long clk_gpr_div_scu_recalc_rate(struct clk_hw *hw,
        return err ? 0 : rate;
 }
 
-static long clk_gpr_div_scu_round_rate(struct clk_hw *hw, unsigned long rate,
-                                  unsigned long *prate)
+static int clk_gpr_div_scu_determine_rate(struct clk_hw *hw,
+                                         struct clk_rate_request *req)
 {
-       if (rate < *prate)
-               rate = *prate / 2;
+       if (req->rate < req->best_parent_rate)
+               req->rate = req->best_parent_rate / 2;
        else
-               rate = *prate;
+               req->rate = req->best_parent_rate;
 
-       return rate;
+       return 0;
 }
 
 static int clk_gpr_div_scu_set_rate(struct clk_hw *hw, unsigned long rate,
@@ -793,7 +775,7 @@ static int clk_gpr_div_scu_set_rate(struct clk_hw *hw, unsigned long rate,
 
 static const struct clk_ops clk_gpr_div_scu_ops = {
        .recalc_rate = clk_gpr_div_scu_recalc_rate,
-       .round_rate = clk_gpr_div_scu_round_rate,
+       .determine_rate = clk_gpr_div_scu_determine_rate,
        .set_rate = clk_gpr_div_scu_set_rate,
 };