[alsa-devel] [PATCH] ASoC: cs35l32: Simplify implementation of cs35l32_codec_set_sysclk
Axel Lin
axel.lin at ingics.com
Thu Aug 28 10:27:56 CEST 2014
Use single snd_soc_update_bits() call to update the register bits.
Signed-off-by: Axel Lin <axel.lin at ingics.com>
---
sound/soc/codecs/cs35l32.c | 28 +++++++---------------------
1 file changed, 7 insertions(+), 21 deletions(-)
diff --git a/sound/soc/codecs/cs35l32.c b/sound/soc/codecs/cs35l32.c
index 9c6b272..380c212 100644
--- a/sound/soc/codecs/cs35l32.c
+++ b/sound/soc/codecs/cs35l32.c
@@ -242,41 +242,27 @@ static struct snd_soc_dai_driver cs35l32_dai[] = {
static int cs35l32_codec_set_sysclk(struct snd_soc_codec *codec,
int clk_id, int source, unsigned int freq, int dir)
{
+ unsigned int val;
switch (freq) {
case 6000000:
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_DIV2_MASK, 0);
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_RATIO_MASK,
- CS35L32_MCLK_RATIO);
+ val = CS35L32_MCLK_RATIO;
break;
case 12000000:
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_DIV2_MASK,
- CS35L32_MCLK_DIV2_MASK);
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_RATIO_MASK,
- CS35L32_MCLK_RATIO);
+ val = CS35L32_MCLK_DIV2_MASK | CS35L32_MCLK_RATIO;
break;
case 6144000:
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_DIV2_MASK, 0);
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_RATIO_MASK, 0);
+ val = 0;
break;
case 12288000:
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_DIV2_MASK,
- CS35L32_MCLK_DIV2_MASK);
- snd_soc_update_bits(codec, CS35L32_CLK_CTL,
- CS35L32_MCLK_RATIO_MASK, 0);
+ val = CS35L32_MCLK_DIV2_MASK;
break;
default:
return -EINVAL;
}
- return 0;
+ return snd_soc_update_bits(codec, CS35L32_CLK_CTL,
+ CS35L32_MCLK_DIV2_MASK | CS35L32_MCLK_RATIO_MASK, val);
}
static struct snd_soc_codec_driver soc_codec_dev_cs35l32 = {
--
1.9.1
More information about the Alsa-devel
mailing list