mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-27 17:21:34 +00:00
43 lines
1.3 KiB
Diff
43 lines
1.3 KiB
Diff
From fe7933da09cfadd75af72256a1d11f41ea5e46f0 Mon Sep 17 00:00:00 2001
|
|
From: Jerome Brunet <jbrunet@baylibre.com>
|
|
Date: Mon, 20 Mar 2017 15:02:19 +0100
|
|
Subject: [PATCH 52/79] clk: rollback set_rate_range changes on failure
|
|
|
|
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
|
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
---
|
|
drivers/clk/clk.c | 8 ++++++++
|
|
1 file changed, 8 insertions(+)
|
|
|
|
diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c
|
|
index d91236e..253f1d3 100644
|
|
--- a/drivers/clk/clk.c
|
|
+++ b/drivers/clk/clk.c
|
|
@@ -1864,6 +1864,7 @@ int clk_set_rate_protect(struct clk *clk, unsigned long rate)
|
|
int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
|
|
{
|
|
int ret = 0;
|
|
+ unsigned int old_min, old_max;
|
|
|
|
if (!clk)
|
|
return 0;
|
|
@@ -1881,9 +1882,16 @@ int clk_set_rate_range(struct clk *clk, unsigned long min, unsigned long max)
|
|
clk_core_rate_unprotect(clk->core);
|
|
|
|
if (min != clk->min_rate || max != clk->max_rate) {
|
|
+ old_min = clk->min_rate;
|
|
+ old_max = clk->max_rate;
|
|
clk->min_rate = min;
|
|
clk->max_rate = max;
|
|
ret = clk_core_set_rate_nolock(clk->core, clk->core->req_rate);
|
|
+ if (ret) {
|
|
+ /* undo changes */
|
|
+ clk->min_rate = old_min;
|
|
+ clk->max_rate = old_max;
|
|
+ }
|
|
}
|
|
|
|
if (clk->protect_count)
|
|
--
|
|
1.9.1
|
|
|