]> git.baikalelectronics.ru Git - kernel.git/commitdiff
clk: qcom: clk-krait: fix wrong div2 functions
authorChristian Marangi <ansuelsmth@gmail.com>
Tue, 8 Nov 2022 21:56:25 +0000 (22:56 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Jan 2023 10:41:09 +0000 (11:41 +0100)
[ 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: ab4d2c82be72 ("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

index 90046428693c25a6be6410ab2f0371a8ba3cccf3..e74fc81a14d0051bbdf77ee24508bc06fb7247ec 100644 (file)
@@ -98,6 +98,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);