lkml.org 
[lkml]   [2022]   [Aug]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 294/545] clk: qcom: clk-krait: unlock spin after mux completion
    Date
    From: Ansuel Smith <ansuelsmth@gmail.com>

    [ Upstream commit df83d2c9e72910416f650ade1e07cc314ff02731 ]

    Unlock spinlock after the mux switch is completed to prevent any corner
    case of mux request while the switch still needs to be done.

    Fixes: 4d7dc77babfe ("clk: qcom: Add support for Krait clocks")
    Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
    Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20220430054458.31321-3-ansuelsmth@gmail.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clk/qcom/clk-krait.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    diff --git a/drivers/clk/qcom/clk-krait.c b/drivers/clk/qcom/clk-krait.c
    index 59f1af415b58..90046428693c 100644
    --- a/drivers/clk/qcom/clk-krait.c
    +++ b/drivers/clk/qcom/clk-krait.c
    @@ -32,11 +32,16 @@ static void __krait_mux_set_sel(struct krait_mux_clk *mux, int sel)
    regval |= (sel & mux->mask) << (mux->shift + LPL_SHIFT);
    }
    krait_set_l2_indirect_reg(mux->offset, regval);
    - spin_unlock_irqrestore(&krait_clock_reg_lock, flags);

    /* Wait for switch to complete. */
    mb();
    udelay(1);
    +
    + /*
    + * Unlock now to make sure the mux register is not
    + * modified while switching to the new parent.
    + */
    + spin_unlock_irqrestore(&krait_clock_reg_lock, flags);
    }

    static int krait_mux_set_parent(struct clk_hw *hw, u8 index)
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-19 18:23    [W:4.119 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site