ASoC: wm8903: Cleanup manual bias level transitions
authorLars-Peter Clausen <lars@metafoo.de>
Sun, 23 Nov 2014 12:37:30 +0000 (13:37 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 24 Nov 2014 18:27:02 +0000 (18:27 +0000)
Set the CODEC driver's suspend_bias_off flag rather than manually going to
SND_SOC_BIAS_OFF in suspend and SND_SOC_BIAS_STANDBY in resume. This makes
the code a bit shorter and cleaner.

Since the ASoC core now takes care of setting the bias level to
SND_SOC_BIAS_OFF when removing the CODEC there is no need to do it manually
anymore either.

The manual transition to SND_SOC_BIAS_STANDBY at the end of CODEC probe()
can also be removed as the core will automatically do this after the CODEC
has been probed. Also remove the unused codec field from the wm8903_priv
struct so we can remove the whole probe callback.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Acked-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/wm8903.c

index c038b3e04398069b050b526ab2b6baca5cdfd2a9..9758d2ed542ef93e9108be939bf0992d6acd42b1 100644 (file)
@@ -117,7 +117,6 @@ static const struct reg_default wm8903_reg_defaults[] = {
 struct wm8903_priv {
        struct wm8903_platform_data *pdata;
        struct device *dev;
-       struct snd_soc_codec *codec;
        struct regmap *regmap;
 
        int sysclk;
@@ -1757,21 +1756,12 @@ static struct snd_soc_dai_driver wm8903_dai = {
        .symmetric_rates = 1,
 };
 
-static int wm8903_suspend(struct snd_soc_codec *codec)
-{
-       wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-       return 0;
-}
-
 static int wm8903_resume(struct snd_soc_codec *codec)
 {
        struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
 
        regcache_sync(wm8903->regmap);
 
-       wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
        return 0;
 }
 
@@ -1889,33 +1879,12 @@ static void wm8903_free_gpio(struct wm8903_priv *wm8903)
 }
 #endif
 
-static int wm8903_probe(struct snd_soc_codec *codec)
-{
-       struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec);
-
-       wm8903->codec = codec;
-
-       /* power on device */
-       wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
-
-       return 0;
-}
-
-/* power down chip */
-static int wm8903_remove(struct snd_soc_codec *codec)
-{
-       wm8903_set_bias_level(codec, SND_SOC_BIAS_OFF);
-
-       return 0;
-}
-
 static struct snd_soc_codec_driver soc_codec_dev_wm8903 = {
-       .probe =        wm8903_probe,
-       .remove =       wm8903_remove,
-       .suspend =      wm8903_suspend,
        .resume =       wm8903_resume,
        .set_bias_level = wm8903_set_bias_level,
        .seq_notifier = wm8903_seq_notifier,
+       .suspend_bias_off = true,
+
        .controls = wm8903_snd_controls,
        .num_controls = ARRAY_SIZE(wm8903_snd_controls),
        .dapm_widgets = wm8903_dapm_widgets,