audio: Power manage Realtek codec when TFA is in use.
Vinod Subbarayalu [Wed, 16 Jan 2013 02:29:08 +0000 (18:29 -0800)]
Change-Id: I4c32cdde467c597e55eadee54c7a9202ee219975
Signed-off-by: Vinod Subbarayalu <vsubbarayalu@nvidia.com>
Reviewed-on: http://git-master/r/191520
Reviewed-by: Scott Peterson <speterson@nvidia.com>

sound/soc/tegra/tegra_rt5640.c

index d1280d3..a66b4c6 100644 (file)
@@ -66,6 +66,7 @@
 #define GPIO_HP_DET     BIT(4)
 
 struct tegra30_i2s *i2s_tfa = NULL;
+struct snd_soc_codec *codec_rt;
 
 struct tegra_rt5640 {
        struct tegra_asoc_utils_data util_data;
@@ -437,6 +438,8 @@ static int tegra_rt5640_event_int_spk(struct snd_soc_dapm_widget *w,
        if(machine_is_roth()) {
                if (SND_SOC_DAPM_EVENT_ON(event)) {
                        if(i2s_tfa) {
+                               if (codec_rt)
+                                       snd_soc_update_bits(codec_rt, RT5640_PWR_DIG1, 0x0001, 0x0000);
                                tegra_asoc_enable_clocks();
                                Tfa9887_Powerdown(0);
                                tegra_asoc_disable_clocks();
@@ -445,7 +448,7 @@ static int tegra_rt5640_event_int_spk(struct snd_soc_dapm_widget *w,
                else {
                                Tfa9887_Powerdown(1);
                }
-       }       
+       }
        if (!(machine->gpio_requested & GPIO_SPKR_EN))
                return 0;
 
@@ -554,6 +557,8 @@ static int tegra_rt5640_init(struct snd_soc_pcm_runtime *rtd)
        struct tegra_asoc_platform_data *pdata = machine->pdata;
        int ret;
 
+       codec_rt = codec;
+
        if (gpio_is_valid(pdata->gpio_spkr_en)) {
                ret = gpio_request(pdata->gpio_spkr_en, "spkr_en");
                if (ret) {