ASoC: uda134x: fix bias level setup on initialization
authorVladimir Zapolskiy <vzapolskiy@gmail.com>
Thu, 24 Jun 2010 13:38:51 +0000 (17:38 +0400)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Fri, 25 Jun 2010 11:29:02 +0000 (12:29 +0100)
On initialization ADC/DAC are enabled only for UDA1341, that's why
bias_level shall be set to off explicitly, otherwise dapm is
misinformed about bias_level on startup.

Signed-off-by: Vladimir Zapolskiy <vzapolskiy@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
sound/soc/codecs/uda134x.c

index 30cf2f9d329836160ef67ea8634d62561fd4af73..52eada1f17fc761e656ca984e171459a9cfb822e 100644 (file)
@@ -519,10 +519,6 @@ static int uda134x_soc_probe(struct platform_device *pdev)
        codec->read = uda134x_read_reg_cache;
        codec->write = uda134x_write;
 
-       if (!pd->is_powered_on_standby) {
-               codec->set_bias_level = uda134x_set_bias_level;
-       }
-
        INIT_LIST_HEAD(&codec->dapm_widgets);
        INIT_LIST_HEAD(&codec->dapm_paths);
 
@@ -533,6 +529,14 @@ static int uda134x_soc_probe(struct platform_device *pdev)
 
        uda134x_reset(codec);
 
+       if (pd->is_powered_on_standby) {
+               codec->set_bias_level = NULL;
+               uda134x_set_bias_level(codec, SND_SOC_BIAS_ON);
+       } else {
+               codec->set_bias_level = uda134x_set_bias_level;
+               uda134x_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
+       }
+
        /* register pcms */
        ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
        if (ret < 0) {