clk: keystone: sci-clk: add 10% slack to set_rate
authorTero Kristo <t-kristo@ti.com>
Mon, 7 Sep 2020 08:57:40 +0000 (11:57 +0300)
committerStephen Boyd <sboyd@kernel.org>
Tue, 22 Sep 2020 19:58:52 +0000 (12:58 -0700)
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 <t-kristo@ti.com>
Link: https://lore.kernel.org/r/20200907085740.1083-4-t-kristo@ti.com
Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/keystone/sci-clk.c

index b6477b08af04b7358f5b052bfa9820fa2f2f7dd4..aaf31abe1c8ff38e8fcb131f7725e2c30095a870 100644 (file)
@@ -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);
 }
 
 /**