diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2014-11-23 07:47:50 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2014-11-24 13:06:02 -0500 |
commit | 2849bde56aac38645c5ed2af3971358b89a929f6 (patch) | |
tree | 61bf26af97c22ffec601fd8a9132090088fe0c52 | |
parent | f114040e3ea6e07372334ade75d1ee0775c355e1 (diff) |
ASoC: alc5623: Cleanup 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. Also remove the manual sequencing back
to SND_SOC_BIAS_ON in resume as this is already handled by the ASoC core.
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.
Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/codecs/alc5623.c | 22 |
1 files changed, 1 insertions, 21 deletions
diff --git a/sound/soc/codecs/alc5623.c b/sound/soc/codecs/alc5623.c index 9d0755aa1d16..bdf8c5ac8ca4 100644 --- a/sound/soc/codecs/alc5623.c +++ b/sound/soc/codecs/alc5623.c | |||
@@ -866,7 +866,6 @@ static int alc5623_suspend(struct snd_soc_codec *codec) | |||
866 | { | 866 | { |
867 | struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); | 867 | struct alc5623_priv *alc5623 = snd_soc_codec_get_drvdata(codec); |
868 | 868 | ||
869 | alc5623_set_bias_level(codec, SND_SOC_BIAS_OFF); | ||
870 | regcache_cache_only(alc5623->regmap, true); | 869 | regcache_cache_only(alc5623->regmap, true); |
871 | 870 | ||
872 | return 0; | 871 | return 0; |
@@ -887,15 +886,6 @@ static int alc5623_resume(struct snd_soc_codec *codec) | |||
887 | return ret; | 886 | return ret; |
888 | } | 887 | } |
889 | 888 | ||
890 | alc5623_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||
891 | |||
892 | /* charge alc5623 caps */ | ||
893 | if (codec->dapm.suspend_bias_level == SND_SOC_BIAS_ON) { | ||
894 | alc5623_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||
895 | codec->dapm.bias_level = SND_SOC_BIAS_ON; | ||
896 | alc5623_set_bias_level(codec, codec->dapm.bias_level); | ||
897 | } | ||
898 | |||
899 | return 0; | 889 | return 0; |
900 | } | 890 | } |
901 | 891 | ||
@@ -906,9 +896,6 @@ static int alc5623_probe(struct snd_soc_codec *codec) | |||
906 | 896 | ||
907 | alc5623_reset(codec); | 897 | alc5623_reset(codec); |
908 | 898 | ||
909 | /* power on device */ | ||
910 | alc5623_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||
911 | |||
912 | if (alc5623->add_ctrl) { | 899 | if (alc5623->add_ctrl) { |
913 | snd_soc_write(codec, ALC5623_ADD_CTRL_REG, | 900 | snd_soc_write(codec, ALC5623_ADD_CTRL_REG, |
914 | alc5623->add_ctrl); | 901 | alc5623->add_ctrl); |
@@ -964,19 +951,12 @@ static int alc5623_probe(struct snd_soc_codec *codec) | |||
964 | return 0; | 951 | return 0; |
965 | } | 952 | } |
966 | 953 | ||
967 | /* power down chip */ | ||
968 | static int alc5623_remove(struct snd_soc_codec *codec) | ||
969 | { | ||
970 | alc5623_set_bias_level(codec, SND_SOC_BIAS_OFF); | ||
971 | return 0; | ||
972 | } | ||
973 | |||
974 | static struct snd_soc_codec_driver soc_codec_device_alc5623 = { | 954 | static struct snd_soc_codec_driver soc_codec_device_alc5623 = { |
975 | .probe = alc5623_probe, | 955 | .probe = alc5623_probe, |
976 | .remove = alc5623_remove, | ||
977 | .suspend = alc5623_suspend, | 956 | .suspend = alc5623_suspend, |
978 | .resume = alc5623_resume, | 957 | .resume = alc5623_resume, |
979 | .set_bias_level = alc5623_set_bias_level, | 958 | .set_bias_level = alc5623_set_bias_level, |
959 | .suspend_bias_off = true, | ||
980 | }; | 960 | }; |
981 | 961 | ||
982 | static const struct regmap_config alc5623_regmap = { | 962 | static const struct regmap_config alc5623_regmap = { |