diff options
Diffstat (limited to 'sound/soc/codecs/tlv320aic23.c')
-rw-r--r-- | sound/soc/codecs/tlv320aic23.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/soc/codecs/tlv320aic23.c b/sound/soc/codecs/tlv320aic23.c index b0bae3508b29..0a4b0fef3355 100644 --- a/sound/soc/codecs/tlv320aic23.c +++ b/sound/soc/codecs/tlv320aic23.c | |||
@@ -560,13 +560,16 @@ static int tlv320aic23_set_bias_level(struct snd_soc_codec *codec, | |||
560 | switch (level) { | 560 | switch (level) { |
561 | case SND_SOC_BIAS_ON: | 561 | case SND_SOC_BIAS_ON: |
562 | /* vref/mid, osc on, dac unmute */ | 562 | /* vref/mid, osc on, dac unmute */ |
563 | reg &= ~(TLV320AIC23_DEVICE_PWR_OFF | TLV320AIC23_OSC_OFF | \ | ||
564 | TLV320AIC23_DAC_OFF); | ||
563 | tlv320aic23_write(codec, TLV320AIC23_PWR, reg); | 565 | tlv320aic23_write(codec, TLV320AIC23_PWR, reg); |
564 | break; | 566 | break; |
565 | case SND_SOC_BIAS_PREPARE: | 567 | case SND_SOC_BIAS_PREPARE: |
566 | break; | 568 | break; |
567 | case SND_SOC_BIAS_STANDBY: | 569 | case SND_SOC_BIAS_STANDBY: |
568 | /* everything off except vref/vmid, */ | 570 | /* everything off except vref/vmid, */ |
569 | tlv320aic23_write(codec, TLV320AIC23_PWR, reg | 0x0040); | 571 | tlv320aic23_write(codec, TLV320AIC23_PWR, reg | \ |
572 | TLV320AIC23_CLK_OFF); | ||
570 | break; | 573 | break; |
571 | case SND_SOC_BIAS_OFF: | 574 | case SND_SOC_BIAS_OFF: |
572 | /* everything off, dac mute, inactive */ | 575 | /* everything off, dac mute, inactive */ |
@@ -615,7 +618,6 @@ static int tlv320aic23_suspend(struct platform_device *pdev, | |||
615 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); | 618 | struct snd_soc_device *socdev = platform_get_drvdata(pdev); |
616 | struct snd_soc_codec *codec = socdev->card->codec; | 619 | struct snd_soc_codec *codec = socdev->card->codec; |
617 | 620 | ||
618 | tlv320aic23_write(codec, TLV320AIC23_ACTIVE, 0x0); | ||
619 | tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF); | 621 | tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_OFF); |
620 | 622 | ||
621 | return 0; | 623 | return 0; |
@@ -632,7 +634,6 @@ static int tlv320aic23_resume(struct platform_device *pdev) | |||
632 | u16 val = tlv320aic23_read_reg_cache(codec, reg); | 634 | u16 val = tlv320aic23_read_reg_cache(codec, reg); |
633 | tlv320aic23_write(codec, reg, val); | 635 | tlv320aic23_write(codec, reg, val); |
634 | } | 636 | } |
635 | |||
636 | tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 637 | tlv320aic23_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |
637 | 638 | ||
638 | return 0; | 639 | return 0; |