ASoC: tlv320aic32x4: Use snd_soc_update_bits for read-modify-write
authorAxel Lin <axel.lin@gmail.com>
Thu, 13 Oct 2011 14:56:34 +0000 (22:56 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 13 Oct 2011 16:38:36 +0000 (17:38 +0100)
Use snd_soc_update_bits for read-modify-write register access instead of
open-coding it using snd_soc_read and snd_soc_write.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/tlv320aic32x4.c

index a68982e0a1ae0547366e2c778e1019137f3e73d9..b21c610051c0f53c03ab2f6c42bf9b12ef20dda9 100644 (file)
@@ -528,40 +528,33 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
                                  enum snd_soc_bias_level level)
 {
        struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec);
-       u8 value;
 
        switch (level) {
        case SND_SOC_BIAS_ON:
                if (aic32x4->master) {
                        /* Switch on PLL */
-                       value = snd_soc_read(codec, AIC32X4_PLLPR);
-                       snd_soc_write(codec, AIC32X4_PLLPR,
-                                     (value | AIC32X4_PLLEN));
+                       snd_soc_update_bits(codec, AIC32X4_PLLPR,
+                                           AIC32X4_PLLEN, AIC32X4_PLLEN);
 
                        /* Switch on NDAC Divider */
-                       value = snd_soc_read(codec, AIC32X4_NDAC);
-                       snd_soc_write(codec, AIC32X4_NDAC,
-                                     value | AIC32X4_NDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_NDAC,
+                                           AIC32X4_NDACEN, AIC32X4_NDACEN);
 
                        /* Switch on MDAC Divider */
-                       value = snd_soc_read(codec, AIC32X4_MDAC);
-                       snd_soc_write(codec, AIC32X4_MDAC,
-                                     value | AIC32X4_MDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_MDAC,
+                                           AIC32X4_MDACEN, AIC32X4_MDACEN);
 
                        /* Switch on NADC Divider */
-                       value = snd_soc_read(codec, AIC32X4_NADC);
-                       snd_soc_write(codec, AIC32X4_NADC,
-                                     value | AIC32X4_MDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_NADC,
+                                           AIC32X4_NADCEN, AIC32X4_NADCEN);
 
                        /* Switch on MADC Divider */
-                       value = snd_soc_read(codec, AIC32X4_MADC);
-                       snd_soc_write(codec, AIC32X4_MADC,
-                                     value | AIC32X4_MDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_MADC,
+                                           AIC32X4_MADCEN, AIC32X4_MADCEN);
 
                        /* Switch on BCLK_N Divider */
-                       value = snd_soc_read(codec, AIC32X4_BCLKN);
-                       snd_soc_write(codec, AIC32X4_BCLKN,
-                                     value | AIC32X4_BCLKEN);
+                       snd_soc_update_bits(codec, AIC32X4_BCLKN,
+                                           AIC32X4_BCLKEN, AIC32X4_BCLKEN);
                }
                break;
        case SND_SOC_BIAS_PREPARE:
@@ -569,34 +562,28 @@ static int aic32x4_set_bias_level(struct snd_soc_codec *codec,
        case SND_SOC_BIAS_STANDBY:
                if (aic32x4->master) {
                        /* Switch off PLL */
-                       value = snd_soc_read(codec, AIC32X4_PLLPR);
-                       snd_soc_write(codec, AIC32X4_PLLPR,
-                                     (value & ~AIC32X4_PLLEN));
+                       snd_soc_update_bits(codec, AIC32X4_PLLPR,
+                                           AIC32X4_PLLEN, 0);
 
                        /* Switch off NDAC Divider */
-                       value = snd_soc_read(codec, AIC32X4_NDAC);
-                       snd_soc_write(codec, AIC32X4_NDAC,
-                                     value & ~AIC32X4_NDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_NDAC,
+                                           AIC32X4_NDACEN, 0);
 
                        /* Switch off MDAC Divider */
-                       value = snd_soc_read(codec, AIC32X4_MDAC);
-                       snd_soc_write(codec, AIC32X4_MDAC,
-                                     value & ~AIC32X4_MDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_MDAC,
+                                           AIC32X4_MDACEN, 0);
 
                        /* Switch off NADC Divider */
-                       value = snd_soc_read(codec, AIC32X4_NADC);
-                       snd_soc_write(codec, AIC32X4_NADC,
-                                     value & ~AIC32X4_NDACEN);
+                       snd_soc_update_bits(codec, AIC32X4_NADC,
+                                           AIC32X4_NADCEN, 0);
 
                        /* Switch off MADC Divider */
-                       value = snd_soc_read(codec, AIC32X4_MADC);
-                       snd_soc_write(codec, AIC32X4_MADC,
-                                     value & ~AIC32X4_MDACEN);
-                       value = snd_soc_read(codec, AIC32X4_BCLKN);
+                       snd_soc_update_bits(codec, AIC32X4_MADC,
+                                           AIC32X4_MADCEN, 0);
 
                        /* Switch off BCLK_N Divider */
-                       snd_soc_write(codec, AIC32X4_BCLKN,
-                                     value & ~AIC32X4_BCLKEN);
+                       snd_soc_update_bits(codec, AIC32X4_BCLKN,
+                                           AIC32X4_BCLKEN, 0);
                }
                break;
        case SND_SOC_BIAS_OFF: