forked from Minki/linux
cs-2000-cp: keep Reserved bit on each register
Thus CS2000 datasheet is indicating below, this patch follows it. WARNING: All "Reserved" registers must maintain their default state to ensure proper functional operation. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org> Signed-off-by: Michael Turquette <mturquette@baylibre.com>
This commit is contained in:
parent
a62ca337b3
commit
1f9dfd7ac7
@ -36,15 +36,27 @@
|
||||
|
||||
/* DEVICE_CTRL */
|
||||
#define PLL_UNLOCK (1 << 7)
|
||||
#define AUXOUTDIS (1 << 1)
|
||||
#define CLKOUTDIS (1 << 0)
|
||||
|
||||
/* DEVICE_CFG1 */
|
||||
#define RSEL(x) (((x) & 0x3) << 3)
|
||||
#define RSEL_MASK RSEL(0x3)
|
||||
#define ENDEV1 (0x1)
|
||||
|
||||
/* DEVICE_CFG2 */
|
||||
#define AUTORMOD (1 << 3)
|
||||
#define LOCKCLK(x) (((x) & 0x3) << 1)
|
||||
#define LOCKCLK_MASK LOCKCLK(0x3)
|
||||
#define FRACNSRC (1 << 0)
|
||||
|
||||
/* GLOBAL_CFG */
|
||||
#define ENDEV2 (0x1)
|
||||
|
||||
/* FUNC_CFG1 */
|
||||
#define REFCLKDIV(x) (((x) & 0x3) << 3)
|
||||
#define REFCLKDIV_MASK REFCLKDIV(0x3)
|
||||
|
||||
#define CH_SIZE_ERR(ch) ((ch < 0) || (ch >= CH_MAX))
|
||||
#define hw_to_priv(_hw) container_of(_hw, struct cs2000_priv, hw)
|
||||
#define priv_to_client(priv) (priv->client)
|
||||
@ -127,7 +139,9 @@ static int cs2000_clk_in_bound_rate(struct cs2000_priv *priv,
|
||||
else
|
||||
return -EINVAL;
|
||||
|
||||
return cs2000_bset(priv, FUNC_CFG1, 0x3 << 3, val << 3);
|
||||
return cs2000_bset(priv, FUNC_CFG1,
|
||||
REFCLKDIV_MASK,
|
||||
REFCLKDIV(val));
|
||||
}
|
||||
|
||||
static int cs2000_wait_pll_lock(struct cs2000_priv *priv)
|
||||
@ -153,7 +167,10 @@ static int cs2000_wait_pll_lock(struct cs2000_priv *priv)
|
||||
static int cs2000_clk_out_enable(struct cs2000_priv *priv, bool enable)
|
||||
{
|
||||
/* enable both AUX_OUT, CLK_OUT */
|
||||
return cs2000_write(priv, DEVICE_CTRL, enable ? 0 : 0x3);
|
||||
return cs2000_bset(priv, DEVICE_CTRL,
|
||||
(AUXOUTDIS | CLKOUTDIS),
|
||||
enable ? 0 :
|
||||
(AUXOUTDIS | CLKOUTDIS));
|
||||
}
|
||||
|
||||
static u32 cs2000_rate_to_ratio(u32 rate_in, u32 rate_out)
|
||||
@ -243,7 +260,9 @@ static int cs2000_ratio_select(struct cs2000_priv *priv, int ch)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = cs2000_write(priv, DEVICE_CFG2, 0x0);
|
||||
ret = cs2000_bset(priv, DEVICE_CFG2,
|
||||
(AUTORMOD | LOCKCLK_MASK | FRACNSRC),
|
||||
0);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user