openwrt/target/linux/bcm27xx/patches-5.15/950-0848-clk-Add-our-reques...

63 lines
2.0 KiB
Diff

From 30e22b06c4ea57dba7ac18bf4ee229eda0705b73 Mon Sep 17 00:00:00 2001
From: Maxime Ripard <maxime@cerno.tech>
Date: Sat, 2 Apr 2022 13:45:05 +0200
Subject: [PATCH] clk: Add our request boundaries in
clk_core_init_rate_req
The expectation is that a new clk_rate_request is initialized through a
call to clk_core_init_rate_req().
However, at the moment it only fills the parent rate and clk_hw pointer,
but omits the other fields such as the clock rate boundaries.
Some users of that function will update them after calling it, but most
don't.
As we are passed the clk_core pointer, we have access to those
boundaries in clk_core_init_rate_req() however, so let's just fill it
there and remove it from the few callers that do it right.
Tested-by: Alexander Stein <alexander.stein@ew.tq-group.com> # imx8mp
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> # exynos4210, meson g12b
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
drivers/clk/clk.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -1380,6 +1380,8 @@ static void clk_core_init_rate_req(struc
if (WARN_ON(!core || !req))
return;
+ clk_core_get_boundaries(core, &req->min_rate, &req->max_rate);
+
parent = core->parent;
if (parent) {
req->best_parent_hw = parent->hw;
@@ -1454,7 +1456,6 @@ unsigned long clk_hw_round_rate(struct c
int ret;
struct clk_rate_request req;
- clk_core_get_boundaries(hw->core, &req.min_rate, &req.max_rate);
req.rate = rate;
ret = clk_core_round_rate_nolock(hw->core, &req);
@@ -1487,7 +1488,6 @@ long clk_round_rate(struct clk *clk, uns
if (clk->exclusive_count)
clk_core_rate_unprotect(clk->core);
- clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate);
req.rate = rate;
ret = clk_core_round_rate_nolock(clk->core, &req);
@@ -1994,8 +1994,6 @@ static struct clk_core *clk_calc_new_rat
struct clk_rate_request req;
req.rate = rate;
- req.min_rate = min_rate;
- req.max_rate = max_rate;
clk_core_init_rate_req(core, &req);