Commit 7d1be0a6 authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Liam Girdwood

ASoC: tlv320aic3x: Let the codec hit SND_SOC_BIAS_OFF when idle

Now codec hits the SND_SOC_BIAS_OFF also when it is idle. This is also
the default state after probing and codec is left unconfigured and
unpowered by default. Initialization will happen when the bias state changes
and aic3x_set_power does power-up and cache sync.
Signed-off-by: default avatarJarkko Nikula <jhnikula@gmail.com>
Acked-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent 5a895f8a
...@@ -1341,9 +1341,6 @@ static int aic3x_init(struct snd_soc_codec *codec) ...@@ -1341,9 +1341,6 @@ static int aic3x_init(struct snd_soc_codec *codec)
snd_soc_write(codec, CLASSD_CTRL, 0); snd_soc_write(codec, CLASSD_CTRL, 0);
} }
/* off, with power on */
aic3x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
return 0; return 0;
} }
...@@ -1354,6 +1351,7 @@ static int aic3x_probe(struct snd_soc_codec *codec) ...@@ -1354,6 +1351,7 @@ static int aic3x_probe(struct snd_soc_codec *codec)
codec->control_data = aic3x->control_data; codec->control_data = aic3x->control_data;
aic3x->codec = codec; aic3x->codec = codec;
codec->idle_bias_off = 1;
ret = snd_soc_codec_set_cache_io(codec, 8, 8, aic3x->control_type); ret = snd_soc_codec_set_cache_io(codec, 8, 8, aic3x->control_type);
if (ret != 0) { if (ret != 0) {
...@@ -1390,19 +1388,7 @@ static int aic3x_probe(struct snd_soc_codec *codec) ...@@ -1390,19 +1388,7 @@ static int aic3x_probe(struct snd_soc_codec *codec)
} }
} }
ret = regulator_bulk_enable(ARRAY_SIZE(aic3x->supplies), codec->cache_only = 1;
aic3x->supplies);
if (ret != 0) {
dev_err(codec->dev, "Failed to enable supplies: %d\n", ret);
goto err_enable;
}
aic3x->power = 1;
if (aic3x->gpio_reset >= 0) {
udelay(1);
gpio_set_value(aic3x->gpio_reset, 1);
}
aic3x_init(codec); aic3x_init(codec);
if (aic3x->setup) { if (aic3x->setup) {
...@@ -1422,7 +1408,6 @@ static int aic3x_probe(struct snd_soc_codec *codec) ...@@ -1422,7 +1408,6 @@ static int aic3x_probe(struct snd_soc_codec *codec)
return 0; return 0;
err_enable:
err_notif: err_notif:
while (i--) while (i--)
regulator_unregister_notifier(aic3x->supplies[i].consumer, regulator_unregister_notifier(aic3x->supplies[i].consumer,
...@@ -1446,7 +1431,6 @@ static int aic3x_remove(struct snd_soc_codec *codec) ...@@ -1446,7 +1431,6 @@ static int aic3x_remove(struct snd_soc_codec *codec)
gpio_set_value(aic3x->gpio_reset, 0); gpio_set_value(aic3x->gpio_reset, 0);
gpio_free(aic3x->gpio_reset); gpio_free(aic3x->gpio_reset);
} }
regulator_bulk_disable(ARRAY_SIZE(aic3x->supplies), aic3x->supplies);
for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++)
regulator_unregister_notifier(aic3x->supplies[i].consumer, regulator_unregister_notifier(aic3x->supplies[i].consumer,
&aic3x->disable_nb[i].nb); &aic3x->disable_nb[i].nb);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment