Merge branch 'topic/asoc' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 9 Jul 2011 14:16:12 +0000 (23:16 +0900)
committerMark Brown <broonie@opensource.wolfsonmicro.com>
Sat, 9 Jul 2011 14:16:12 +0000 (23:16 +0900)
1  2 
sound/soc/codecs/tlv320aic3x.c

index 789453d44ec5d212d2974d8c1db28dc95b81b52f,6e35b5109c193c9a75e6ca4a1c8cd44481ff6ae8..0963c4c7a83f7bae464c4b2b7165d82d42370e5b
@@@ -226,11 -226,13 +226,13 @@@ static const char *aic3x_adc_hpf[] 
  #define RDAC_ENUM     1
  #define LHPCOM_ENUM   2
  #define RHPCOM_ENUM   3
- #define LINE1L_ENUM   4
- #define LINE1R_ENUM   5
- #define LINE2L_ENUM   6
- #define LINE2R_ENUM   7
- #define ADC_HPF_ENUM  8
+ #define LINE1L_2_L_ENUM       4
+ #define LINE1L_2_R_ENUM       5
+ #define LINE1R_2_L_ENUM       6
+ #define LINE1R_2_R_ENUM       7
+ #define LINE2L_ENUM   8
+ #define LINE2R_ENUM   9
+ #define ADC_HPF_ENUM  10
  
  static const struct soc_enum aic3x_enum[] = {
        SOC_ENUM_SINGLE(DAC_LINE_MUX, 6, 3, aic3x_left_dac_mux),
        SOC_ENUM_SINGLE(HPLCOM_CFG, 4, 3, aic3x_left_hpcom_mux),
        SOC_ENUM_SINGLE(HPRCOM_CFG, 3, 5, aic3x_right_hpcom_mux),
        SOC_ENUM_SINGLE(LINE1L_2_LADC_CTRL, 7, 2, aic3x_linein_mode_mux),
+       SOC_ENUM_SINGLE(LINE1L_2_RADC_CTRL, 7, 2, aic3x_linein_mode_mux),
+       SOC_ENUM_SINGLE(LINE1R_2_LADC_CTRL, 7, 2, aic3x_linein_mode_mux),
        SOC_ENUM_SINGLE(LINE1R_2_RADC_CTRL, 7, 2, aic3x_linein_mode_mux),
        SOC_ENUM_SINGLE(LINE2L_2_LADC_CTRL, 7, 2, aic3x_linein_mode_mux),
        SOC_ENUM_SINGLE(LINE2R_2_RADC_CTRL, 7, 2, aic3x_linein_mode_mux),
@@@ -490,12 -494,16 +494,16 @@@ static const struct snd_kcontrol_new ai
  };
  
  /* Left Line1 Mux */
- static const struct snd_kcontrol_new aic3x_left_line1_mux_controls =
- SOC_DAPM_ENUM("Route", aic3x_enum[LINE1L_ENUM]);
+ static const struct snd_kcontrol_new aic3x_left_line1l_mux_controls =
+ SOC_DAPM_ENUM("Route", aic3x_enum[LINE1L_2_L_ENUM]);
+ static const struct snd_kcontrol_new aic3x_right_line1l_mux_controls =
+ SOC_DAPM_ENUM("Route", aic3x_enum[LINE1L_2_R_ENUM]);
  
  /* Right Line1 Mux */
- static const struct snd_kcontrol_new aic3x_right_line1_mux_controls =
- SOC_DAPM_ENUM("Route", aic3x_enum[LINE1R_ENUM]);
+ static const struct snd_kcontrol_new aic3x_right_line1r_mux_controls =
+ SOC_DAPM_ENUM("Route", aic3x_enum[LINE1R_2_R_ENUM]);
+ static const struct snd_kcontrol_new aic3x_left_line1r_mux_controls =
+ SOC_DAPM_ENUM("Route", aic3x_enum[LINE1R_2_L_ENUM]);
  
  /* Left Line2 Mux */
  static const struct snd_kcontrol_new aic3x_left_line2_mux_controls =
@@@ -535,9 -543,9 +543,9 @@@ static const struct snd_soc_dapm_widge
                           &aic3x_left_pga_mixer_controls[0],
                           ARRAY_SIZE(aic3x_left_pga_mixer_controls)),
        SND_SOC_DAPM_MUX("Left Line1L Mux", SND_SOC_NOPM, 0, 0,
-                        &aic3x_left_line1_mux_controls),
+                        &aic3x_left_line1l_mux_controls),
        SND_SOC_DAPM_MUX("Left Line1R Mux", SND_SOC_NOPM, 0, 0,
-                        &aic3x_left_line1_mux_controls),
+                        &aic3x_left_line1r_mux_controls),
        SND_SOC_DAPM_MUX("Left Line2L Mux", SND_SOC_NOPM, 0, 0,
                         &aic3x_left_line2_mux_controls),
  
                           &aic3x_right_pga_mixer_controls[0],
                           ARRAY_SIZE(aic3x_right_pga_mixer_controls)),
        SND_SOC_DAPM_MUX("Right Line1L Mux", SND_SOC_NOPM, 0, 0,
-                        &aic3x_right_line1_mux_controls),
+                        &aic3x_right_line1l_mux_controls),
        SND_SOC_DAPM_MUX("Right Line1R Mux", SND_SOC_NOPM, 0, 0,
-                        &aic3x_right_line1_mux_controls),
+                        &aic3x_right_line1r_mux_controls),
        SND_SOC_DAPM_MUX("Right Line2R Mux", SND_SOC_NOPM, 0, 0,
                         &aic3x_right_line2_mux_controls),
  
@@@ -1114,19 -1122,12 +1122,19 @@@ static int aic3x_set_power(struct snd_s
  
                /* Sync reg_cache with the hardware */
                codec->cache_only = 0;
 -              for (i = 0; i < ARRAY_SIZE(aic3x_reg); i++)
 +              for (i = AIC3X_SAMPLE_RATE_SEL_REG; i < ARRAY_SIZE(aic3x_reg); i++)
                        snd_soc_write(codec, i, cache[i]);
                if (aic3x->model == AIC3X_MODEL_3007)
                        aic3x_init_3007(codec);
                codec->cache_sync = 0;
        } else {
 +              /*
 +               * Do soft reset to this codec instance in order to clear
 +               * possible VDD leakage currents in case the supply regulators
 +               * remain on
 +               */
 +              snd_soc_write(codec, AIC3X_RESET, SOFT_RESET);
 +              codec->cache_sync = 1;
                aic3x->power = 0;
                /* HW writes are needless when bias is off */
                codec->cache_only = 1;