123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- From 74492b9ecd874496578693d9985649665b560308 Mon Sep 17 00:00:00 2001
- From: Samuel Holland <[email protected]>
- Date: Sun, 7 Aug 2022 20:08:49 -0500
- Subject: [PATCH 002/117] clk: sunxi-ng: mp: Avoid computing the rate twice
- ccu_mp_find_best() already computes a best_rate at the same time as the
- best m and p factors. Return it so the caller does not need to duplicate
- the division.
- Series-to: Chen-Yu Tsai <[email protected]>
- Series-to: Jernej Skrabec <[email protected]>
- Signed-off-by: Samuel Holland <[email protected]>
- ---
- drivers/clk/sunxi-ng/ccu_mp.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
- --- a/drivers/clk/sunxi-ng/ccu_mp.c
- +++ b/drivers/clk/sunxi-ng/ccu_mp.c
- @@ -10,9 +10,9 @@
- #include "ccu_gate.h"
- #include "ccu_mp.h"
-
- -static void ccu_mp_find_best(unsigned long parent, unsigned long rate,
- - unsigned int max_m, unsigned int max_p,
- - unsigned int *m, unsigned int *p)
- +static unsigned long ccu_mp_find_best(unsigned long parent, unsigned long rate,
- + unsigned int max_m, unsigned int max_p,
- + unsigned int *m, unsigned int *p)
- {
- unsigned long best_rate = 0;
- unsigned int best_m = 0, best_p = 0;
- @@ -35,6 +35,8 @@ static void ccu_mp_find_best(unsigned lo
-
- *m = best_m;
- *p = best_p;
- +
- + return best_rate;
- }
-
- static unsigned long ccu_mp_find_best_with_parent_adj(struct clk_hw *hw,
- @@ -109,8 +111,7 @@ static unsigned long ccu_mp_round_rate(s
- max_p = cmp->p.max ?: 1 << ((1 << cmp->p.width) - 1);
-
- if (!clk_hw_can_set_rate_parent(&cmp->common.hw)) {
- - ccu_mp_find_best(*parent_rate, rate, max_m, max_p, &m, &p);
- - rate = *parent_rate / p / m;
- + rate = ccu_mp_find_best(*parent_rate, rate, max_m, max_p, &m, &p);
- } else {
- rate = ccu_mp_find_best_with_parent_adj(hw, parent_rate, rate,
- max_m, max_p);
|