Commit 1f9dfd7a authored by Kuninori Morimoto's avatar Kuninori Morimoto Committed by Michael Turquette

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: default avatarKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: default avatarStephen Boyd <sboyd@codeaurora.org>
Signed-off-by: default avatarMichael Turquette <mturquette@baylibre.com>
parent a62ca337
...@@ -36,15 +36,27 @@ ...@@ -36,15 +36,27 @@
/* DEVICE_CTRL */ /* DEVICE_CTRL */
#define PLL_UNLOCK (1 << 7) #define PLL_UNLOCK (1 << 7)
#define AUXOUTDIS (1 << 1)
#define CLKOUTDIS (1 << 0)
/* DEVICE_CFG1 */ /* DEVICE_CFG1 */
#define RSEL(x) (((x) & 0x3) << 3) #define RSEL(x) (((x) & 0x3) << 3)
#define RSEL_MASK RSEL(0x3) #define RSEL_MASK RSEL(0x3)
#define ENDEV1 (0x1) #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 */ /* GLOBAL_CFG */
#define ENDEV2 (0x1) #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 CH_SIZE_ERR(ch) ((ch < 0) || (ch >= CH_MAX))
#define hw_to_priv(_hw) container_of(_hw, struct cs2000_priv, hw) #define hw_to_priv(_hw) container_of(_hw, struct cs2000_priv, hw)
#define priv_to_client(priv) (priv->client) #define priv_to_client(priv) (priv->client)
...@@ -127,7 +139,9 @@ static int cs2000_clk_in_bound_rate(struct cs2000_priv *priv, ...@@ -127,7 +139,9 @@ static int cs2000_clk_in_bound_rate(struct cs2000_priv *priv,
else else
return -EINVAL; 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) static int cs2000_wait_pll_lock(struct cs2000_priv *priv)
...@@ -153,7 +167,10 @@ 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) static int cs2000_clk_out_enable(struct cs2000_priv *priv, bool enable)
{ {
/* enable both AUX_OUT, CLK_OUT */ /* 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) 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) ...@@ -243,7 +260,9 @@ static int cs2000_ratio_select(struct cs2000_priv *priv, int ch)
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = cs2000_write(priv, DEVICE_CFG2, 0x0); ret = cs2000_bset(priv, DEVICE_CFG2,
(AUTORMOD | LOCKCLK_MASK | FRACNSRC),
0);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment