| From a9739d33ac8dc2737905cebf412502c55f5c9d4d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 8 Nov 2022 22:56:25 +0100 |
| Subject: clk: qcom: clk-krait: fix wrong div2 functions |
| |
| From: Christian Marangi <ansuelsmth@gmail.com> |
| |
| [ Upstream commit d676d3a3717cf726d3affedbe5ba98fc4ccad7b3 ] |
| |
| Currently div2 value is applied to the wrong bits. This is caused by a |
| bug in the code where the shift is done only for lpl, for anything |
| else the mask is not shifted to the correct bits. |
| |
| Fix this by correctly shift if lpl is not supported. |
| |
| Fixes: 4d7dc77babfe ("clk: qcom: Add support for Krait clocks") |
| Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> |
| Signed-off-by: Bjorn Andersson <andersson@kernel.org> |
| Link: https://lore.kernel.org/r/20221108215625.30186-1-ansuelsmth@gmail.com |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/clk/qcom/clk-krait.c | 2 ++ |
| 1 file changed, 2 insertions(+) |
| |
| diff --git a/drivers/clk/qcom/clk-krait.c b/drivers/clk/qcom/clk-krait.c |
| index 45da736bd5f4..293a9dfa7151 100644 |
| --- a/drivers/clk/qcom/clk-krait.c |
| +++ b/drivers/clk/qcom/clk-krait.c |
| @@ -114,6 +114,8 @@ static int krait_div2_set_rate(struct clk_hw *hw, unsigned long rate, |
| |
| if (d->lpl) |
| mask = mask << (d->shift + LPL_SHIFT) | mask << d->shift; |
| + else |
| + mask <<= d->shift; |
| |
| spin_lock_irqsave(&krait_clock_reg_lock, flags); |
| val = krait_get_l2_indirect_reg(d->offset); |
| -- |
| 2.35.1 |
| |