mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
clk: cs2000-cp: freeze config during register fiddling
Make sure to freeze the configuration of the chip during the programming of 32-bit registers. This avoids the processing of invalid intermediate states. Signed-off-by: Daniel Mack <daniel@zonque.org> Link: https://lore.kernel.org/r/20220125093336.226787-9-daniel@zonque.org Signed-off-by: Stephen Boyd <sboyd@kernel.org>
This commit is contained in:
parent
b836882586
commit
2f3d32fe9d
|
|
@ -52,6 +52,7 @@
|
|||
#define FRACNSRC_DYNAMIC (1 << 0)
|
||||
|
||||
/* GLOBAL_CFG */
|
||||
#define FREEZE (1 << 7)
|
||||
#define ENDEV2 (0x1)
|
||||
|
||||
/* FUNC_CFG1 */
|
||||
|
|
@ -335,6 +336,10 @@ static int __cs2000_set_rate(struct cs2000_priv *priv, int ch,
|
|||
{
|
||||
int ret;
|
||||
|
||||
ret = cs2000_bset(priv, GLOBAL_CFG, FREEZE, FREEZE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = cs2000_select_ratio_mode(priv, rate, parent_rate);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
|
@ -347,6 +352,10 @@ static int __cs2000_set_rate(struct cs2000_priv *priv, int ch,
|
|||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = cs2000_bset(priv, GLOBAL_CFG, FREEZE, 0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
priv->saved_rate = rate;
|
||||
priv->saved_parent_rate = parent_rate;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user