ASoC: wm8994: Slightly optimize configure_clock
authorAxel Lin <axel.lin@gmail.com>
Tue, 4 Oct 2011 12:07:03 +0000 (20:07 +0800)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Tue, 4 Oct 2011 12:09:55 +0000 (13:09 +0100)
snd_soc_update_bits() will only write new register value
if the old value is different from the new value.
In additional, snd_soc_update_bits() returns 0 for no change.
No need to read WM8994_CLOCKING_1 register before calling snd_soc_update_bits().

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

index 5e8d66d..546173f 100644 (file)
@@ -208,7 +208,7 @@ static int configure_aif_clock(struct snd_soc_codec *codec, int aif)
 static int configure_clock(struct snd_soc_codec *codec)
 {
        struct wm8994_priv *wm8994 = snd_soc_codec_get_drvdata(codec);
-       int old, new;
+       int change, new;
 
        /* Bring up the AIF clocks first */
        configure_aif_clock(codec, 0);
@@ -229,14 +229,11 @@ static int configure_clock(struct snd_soc_codec *codec)
        else
                new = 0;
 
-       old = snd_soc_read(codec, WM8994_CLOCKING_1) & WM8994_SYSCLK_SRC;
-
-       /* If there's no change then we're done. */
-       if (old == new)
+       change = snd_soc_update_bits(codec, WM8994_CLOCKING_1,
+                                    WM8994_SYSCLK_SRC, new);
+       if (!change)
                return 0;
 
-       snd_soc_update_bits(codec, WM8994_CLOCKING_1, WM8994_SYSCLK_SRC, new);
-
        snd_soc_dapm_sync(&codec->dapm);
 
        return 0;