ASoC: wm8903: Cleanup manual bias level transitions

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>
This commit is contained in:
Lars-Peter Clausen 2014-11-23 13:37:30 +01:00 committed by Mark Brown
parent f114040e3e
commit b0d55b1a63
1 changed files with 2 additions and 33 deletions

View File

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