Merge remote-tracking branches 'asoc/topic/dwc', 'asoc/topic/fallthrough', 'asoc...
authorMark Brown <broonie@kernel.org>
Fri, 10 Nov 2017 21:31:13 +0000 (21:31 +0000)
committerMark Brown <broonie@kernel.org>
Fri, 10 Nov 2017 21:31:13 +0000 (21:31 +0000)
1  2  3  4  5  6 
sound/soc/codecs/msm8916-wcd-analog.c

      #define MICB_1_EN_TX3_GND_SEL_TX_GND      0
      
      #define CDC_A_MICB_1_VAL          (0xf141)
 --- -#define MICB_VOLTAGE_REGVAL(v)            ((v - MICB_MIN_VAL)/MICB_STEP_SIZE)
    + #define MICB_MIN_VAL 1600
    + #define MICB_STEP_SIZE 50
 +++++#define MICB_VOLTAGE_REGVAL(v)            (((v - MICB_MIN_VAL)/MICB_STEP_SIZE) << 3)
      #define MICB_1_VAL_MICB_OUT_VAL_MASK      GENMASK(7, 3)
      #define MICB_1_VAL_MICB_OUT_VAL_V2P70V    ((0x16)  << 3)
    + #define MICB_1_VAL_MICB_OUT_VAL_V1P80V    ((0x4)  << 3)
      #define CDC_A_MICB_1_CTL          (0xf142)
      
      #define MICB_1_CTL_CFILT_REF_SEL_MASK             BIT(1)
@@@@@@@ -348,18 -348,17 -348,17 -348,17 -271,12 -348,17 +348,18 @@@@@@@ static void pm8916_wcd_analog_micbias_e
                            MICB_1_CTL_INT_PRECHARG_BYP_EXT_PRECHRG_SEL
                            | MICB_1_CTL_EXT_PRECHARG_EN_ENABLE);
      
    -   snd_soc_write(codec, CDC_A_MICB_1_VAL, MICB_1_VAL_MICB_OUT_VAL_V2P70V);
    -   /*
    -    * Special headset needs MICBIAS as 2.7V so wait for
    -    * 50 msec for the MICBIAS to reach 2.7 volts.
    -    */
    -   msleep(50);
    +   if (wcd->micbias_mv) {
 --- -          snd_soc_write(codec, CDC_A_MICB_1_VAL,
 --- -                        MICB_VOLTAGE_REGVAL(wcd->micbias_mv));
 +++++          snd_soc_update_bits(codec, CDC_A_MICB_1_VAL,
 +++++                              MICB_1_VAL_MICB_OUT_VAL_MASK,
 +++++                              MICB_VOLTAGE_REGVAL(wcd->micbias_mv));
    +           /*
    +            * Special headset needs MICBIAS as 2.7V so wait for
    +            * 50 msec for the MICBIAS to reach 2.7 volts.
    +            */
    +           if (wcd->micbias_mv >= 2700)
    +                   msleep(50);
    +   }
    + 
        snd_soc_update_bits(codec, CDC_A_MICB_1_CTL,
                            MICB_1_CTL_EXT_PRECHARG_EN_MASK |
                            MICB_1_CTL_INT_PRECHARG_BYP_MASK, 0);