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:
parent
f114040e3e
commit
b0d55b1a63
|
@ -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,
|
||||||
|
|
Loading…
Reference in New Issue