aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Kristo <[email protected]>2020-09-07 11:57:40 +0300
committerStephen Boyd <[email protected]>2020-09-22 12:58:52 -0700
commit4630ef134e41389a7170b05790c0ddcd88977b01 (patch)
treed812db563368295091401be1138463048ced1094
parentd3f3f499cb335eba84788a9456f7d6f92a069bbe (diff)
clk: keystone: sci-clk: add 10% slack to set_rate
Currently, we request exact clock rates from the firmware to be set with set_rate. Due to some rounding errors and internal functionality of the firmware itself, this can fail. Thus, add some slack to the set_rate functionality so that we are always guaranteed to pass. The firmware always attempts to use frequency as close to the target freq as possible despite the slack given here. Signed-off-by: Tero Kristo <[email protected]> Link: https://lore.kernel.org/r/[email protected] Acked-by: Santosh Shilimkar <[email protected]> Signed-off-by: Stephen Boyd <[email protected]>
-rw-r--r--drivers/clk/keystone/sci-clk.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c
index b6477b08af04..aaf31abe1c8f 100644
--- a/drivers/clk/keystone/sci-clk.c
+++ b/drivers/clk/keystone/sci-clk.c
@@ -221,7 +221,8 @@ static int sci_clk_set_rate(struct clk_hw *hw, unsigned long rate,
struct sci_clk *clk = to_sci_clk(hw);
return clk->provider->ops->set_freq(clk->provider->sci, clk->dev_id,
- clk->clk_id, rate, rate, rate);
+ clk->clk_id, rate / 10 * 9, rate,
+ rate / 10 * 11);
}
/**