Merge remote-tracking branch 'asoc/fix/wm8962' into asoc-linus
authorMark Brown <broonie@linaro.org>
Fri, 15 Nov 2013 10:20:16 +0000 (10:20 +0000)
committerMark Brown <broonie@linaro.org>
Fri, 15 Nov 2013 10:20:16 +0000 (10:20 +0000)
1  2 
sound/soc/codecs/wm8962.c

@@@ -1758,9 -1758,6 +1758,9 @@@ SOC_DOUBLE_R_TLV("EQ4 Volume", WM8962_E
                 WM8962_EQL_B4_GAIN_SHIFT, 31, 0, eq_tlv),
  SOC_DOUBLE_R_TLV("EQ5 Volume", WM8962_EQ3, WM8962_EQ23,
                 WM8962_EQL_B5_GAIN_SHIFT, 31, 0, eq_tlv),
 +SND_SOC_BYTES("EQL Coefficients", WM8962_EQ4, 18),
 +SND_SOC_BYTES("EQR Coefficients", WM8962_EQ24, 18),
 +
  
  SOC_SINGLE("3D Switch", WM8962_THREED1, 0, 1, 0),
  SND_SOC_BYTES_MASK("3D Coefficients", WM8962_THREED1, 4, WM8962_THREED_ENA),
@@@ -1778,11 -1775,6 +1778,11 @@@ WM8962_DSP2_ENABLE("HPF2 Switch", WM896
  SND_SOC_BYTES("HPF Coefficients", WM8962_LHPF2, 1),
  WM8962_DSP2_ENABLE("HD Bass Switch", WM8962_HDBASS_ENA_SHIFT),
  SND_SOC_BYTES("HD Bass Coefficients", WM8962_HDBASS_AI_1, 30),
 +
 +SOC_DOUBLE("ALC Switch", WM8962_ALC1, WM8962_ALCL_ENA_SHIFT,
 +              WM8962_ALCR_ENA_SHIFT, 1, 0),
 +SND_SOC_BYTES_MASK("ALC Coefficients", WM8962_ALC1, 4,
 +              WM8962_ALCL_ENA_MASK | WM8962_ALCR_ENA_MASK),
  };
  
  static const struct snd_kcontrol_new wm8962_spk_mono_controls[] = {
@@@ -3624,28 -3616,28 +3624,28 @@@ static int wm8962_i2c_probe(struct i2c_
                           0);
  
        /* Apply static configuration for GPIOs */
 -      for (i = 0; i < ARRAY_SIZE(pdata->gpio_init); i++)
 -              if (pdata->gpio_init[i]) {
 +      for (i = 0; i < ARRAY_SIZE(wm8962->pdata.gpio_init); i++)
 +              if (wm8962->pdata.gpio_init[i]) {
                        wm8962_set_gpio_mode(wm8962, i + 1);
                        regmap_write(wm8962->regmap, 0x200 + i,
 -                                   pdata->gpio_init[i] & 0xffff);
 +                                   wm8962->pdata.gpio_init[i] & 0xffff);
                }
  
  
        /* Put the speakers into mono mode? */
 -      if (pdata->spk_mono)
 +      if (wm8962->pdata.spk_mono)
                regmap_update_bits(wm8962->regmap, WM8962_CLASS_D_CONTROL_2,
                                   WM8962_SPK_MONO_MASK, WM8962_SPK_MONO);
  
        /* Micbias setup, detection enable and detection
         * threasholds. */
 -      if (pdata->mic_cfg)
 +      if (wm8962->pdata.mic_cfg)
                regmap_update_bits(wm8962->regmap, WM8962_ADDITIONAL_CONTROL_4,
                                   WM8962_MICDET_ENA |
                                   WM8962_MICDET_THR_MASK |
                                   WM8962_MICSHORT_THR_MASK |
                                   WM8962_MICBIAS_LVL,
 -                                 pdata->mic_cfg);
 +                                 wm8962->pdata.mic_cfg);
  
        /* Latch volume update bits */
        regmap_update_bits(wm8962->regmap, WM8962_LEFT_INPUT_VOLUME,
        }
  
        if (wm8962->irq) {
 -              if (pdata->irq_active_low) {
 +              if (wm8962->pdata.irq_active_low) {
                        trigger = IRQF_TRIGGER_LOW;
                        irq_pol = WM8962_IRQ_POL;
                } else {
        if (ret < 0)
                goto err_enable;
  
+       regcache_cache_only(wm8962->regmap, true);
        /* The drivers should power up as needed */
        regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies);