summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-06-07 16:12:56 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-06-09 13:52:22 +0200
commit923e9d37912059378c5efab3244ebcbfbcd6833d (patch)
tree4b6d52b9b0541c304f72c81d6a7681c5f8630aa4 /drivers
parentb2cc56e396b666f0c4d373a76e6660e95193c165 (diff)
downloadbarebox-923e9d37912059378c5efab3244ebcbfbcd6833d.tar.gz
barebox-923e9d37912059378c5efab3244ebcbfbcd6833d.tar.xz
clk: bail out early when rate is already desired one
Return successfully from clk_set_rate() when the rate is already the desired one. This prevents a failure in clk_set_rate() when the current clock doesn't have a set_rate hook. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Link: https://lore.barebox.org/20210607141256.24801-1-s.hauer@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/clk/clk.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
index 8b90f30486..ba726c342c 100644
--- a/drivers/clk/clk.c
+++ b/drivers/clk/clk.c
@@ -169,6 +169,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
if (IS_ERR(clk))
return PTR_ERR(clk);
+ if (clk_get_rate(clk) == clk_round_rate(clk, rate))
+ return 0;
+
if (!clk->ops->set_rate)
return -ENOSYS;