mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
69 lines
1.9 KiB
Diff
69 lines
1.9 KiB
Diff
|
From 18ae57b1e8abee6c453381470f6e18991d2901a8 Mon Sep 17 00:00:00 2001
|
||
|
From: Christian Marangi <ansuelsmth@gmail.com>
|
||
|
Date: Wed, 9 Nov 2022 01:56:28 +0100
|
||
|
Subject: [PATCH 3/6] clk: qcom: krait-cc: also enable secondary mux and div
|
||
|
clk
|
||
|
|
||
|
clk-krait ignore any rate change if clk is not flagged as enabled.
|
||
|
Correctly enable the secondary mux and div clk to correctly change rate
|
||
|
instead of silently ignoring the request.
|
||
|
|
||
|
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
||
|
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
|
||
|
Link: https://lore.kernel.org/r/20221109005631.3189-2-ansuelsmth@gmail.com
|
||
|
---
|
||
|
drivers/clk/qcom/krait-cc.c | 21 ++++++++++++++++++++-
|
||
|
1 file changed, 20 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/clk/qcom/krait-cc.c
|
||
|
+++ b/drivers/clk/qcom/krait-cc.c
|
||
|
@@ -80,6 +80,7 @@ krait_add_div(struct device *dev, int id
|
||
|
};
|
||
|
const char *p_names[1];
|
||
|
struct clk *clk;
|
||
|
+ int cpu;
|
||
|
|
||
|
div = devm_kzalloc(dev, sizeof(*div), GFP_KERNEL);
|
||
|
if (!div)
|
||
|
@@ -103,6 +104,17 @@ krait_add_div(struct device *dev, int id
|
||
|
}
|
||
|
|
||
|
clk = devm_clk_register(dev, &div->hw);
|
||
|
+ if (IS_ERR(clk))
|
||
|
+ goto err;
|
||
|
+
|
||
|
+ /* clk-krait ignore any rate change if mux is not flagged as enabled */
|
||
|
+ if (id < 0)
|
||
|
+ for_each_online_cpu(cpu)
|
||
|
+ clk_prepare_enable(div->hw.clk);
|
||
|
+ else
|
||
|
+ clk_prepare_enable(div->hw.clk);
|
||
|
+
|
||
|
+err:
|
||
|
kfree(p_names[0]);
|
||
|
kfree(init.name);
|
||
|
|
||
|
@@ -113,7 +125,7 @@ static int
|
||
|
krait_add_sec_mux(struct device *dev, int id, const char *s,
|
||
|
unsigned int offset, bool unique_aux)
|
||
|
{
|
||
|
- int ret;
|
||
|
+ int cpu, ret;
|
||
|
struct krait_mux_clk *mux;
|
||
|
static const char *sec_mux_list[] = {
|
||
|
"qsb",
|
||
|
@@ -165,6 +177,13 @@ krait_add_sec_mux(struct device *dev, in
|
||
|
if (ret)
|
||
|
goto unique_aux;
|
||
|
|
||
|
+ /* clk-krait ignore any rate change if mux is not flagged as enabled */
|
||
|
+ if (id < 0)
|
||
|
+ for_each_online_cpu(cpu)
|
||
|
+ clk_prepare_enable(mux->hw.clk);
|
||
|
+ else
|
||
|
+ clk_prepare_enable(mux->hw.clk);
|
||
|
+
|
||
|
unique_aux:
|
||
|
if (unique_aux)
|
||
|
kfree(sec_mux_list[0]);
|