1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- From 18ae57b1e8abee6c453381470f6e18991d2901a8 Mon Sep 17 00:00:00 2001
- From: Christian Marangi <[email protected]>
- 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 <[email protected]>
- Signed-off-by: Bjorn Andersson <[email protected]>
- Link: https://lore.kernel.org/r/[email protected]
- ---
- 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]);
|