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

index a42f8ebb96701d1a5e392465ad00db73a3b83f00,549c269acc7dfd0a084c333f08076b77390d1c79,518fa2a4ac7878f5029a315f758c9d9d2ab0a57d,549c269acc7dfd0a084c333f08076b77390d1c79,a78802920c3cc098af2526a4ba335dba0df5a59f,549c269acc7dfd0a084c333f08076b77390d1c79..8d5821bddf58254a2876989233aee09077a7635b
      #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);