mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
clk: qcom: clk-krait: unlock spin after mux completion
[ Upstream commitdf83d2c9e7] 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:4d7dc77bab("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>
This commit is contained in:
parent
a93f33aeef
commit
42f1827096
|
|
@ -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);
|
regval |= (sel & mux->mask) << (mux->shift + LPL_SHIFT);
|
||||||
}
|
}
|
||||||
krait_set_l2_indirect_reg(mux->offset, regval);
|
krait_set_l2_indirect_reg(mux->offset, regval);
|
||||||
spin_unlock_irqrestore(&krait_clock_reg_lock, flags);
|
|
||||||
|
|
||||||
/* Wait for switch to complete. */
|
/* Wait for switch to complete. */
|
||||||
mb();
|
mb();
|
||||||
udelay(1);
|
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)
|
static int krait_mux_set_parent(struct clk_hw *hw, u8 index)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user