diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/ab5500.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sound/soc/codecs/ab5500.c b/sound/soc/codecs/ab5500.c index 3482d139c57..79df2a6e812 100644 --- a/sound/soc/codecs/ab5500.c +++ b/sound/soc/codecs/ab5500.c @@ -1104,6 +1104,9 @@ static void power_for_playback(enum enum_power onoff, int ifsel) __func__); return; } + mask_set_reg(ENV_THR, ENV_THR_HIGH_MASK, 0x0F << ENV_THR_HIGH_SHIFT); + mask_set_reg(ENV_THR, ENV_THR_LOW_MASK, 0x0F << ENV_THR_LOW_SHIFT); + power_widget_unlocked(onoff, ifsel == 0 ? widget_if0_dld_l : widget_if1_dld_l); power_widget_unlocked(onoff, ifsel == 0 ? @@ -1112,6 +1115,8 @@ static void power_for_playback(enum enum_power onoff, int ifsel) mask_set_reg(SPKR1, SPKRx_PWR_MASK, 0x03 << SPKRx_PWR_SHIFT); mask_set_reg(SPKR1, SPKRx_GAIN_MASK, 0x12 << SPKRx_GAIN_SHIFT); mask_set_reg(RX3_DPGA, RXx_DPGA_MASK, 0x3F << RXx_DPGA_SHIFT); + mask_set_reg(DC_CANCEL, DC_CANCEL_AUXO12_MASK, + 0x01 << DC_CANCEL_AUXO12_SHIFT); mutex_unlock(&ab5500_pm_mutex); } @@ -1592,11 +1597,11 @@ static inline void init_playback_gain(void) { /* 0x43, 0x0C: pure gain values */ mask_set_reg(RX1_DPGA, RXx_DPGA_MASK, - 0x43 << RXx_DPGA_SHIFT); + 0x2C << RXx_DPGA_SHIFT); mask_set_reg(RX2_DPGA, RXx_DPGA_MASK, - 0x43 << RXx_DPGA_SHIFT); - mask_set_reg(AUXO1, AUXOx_GAIN_MASK, 0x0C << AUXOx_GAIN_SHIFT); - mask_set_reg(AUXO2, AUXOx_GAIN_MASK, 0x0C << AUXOx_GAIN_SHIFT); + 0x2C << RXx_DPGA_SHIFT); + mask_set_reg(AUXO1, AUXOx_GAIN_MASK, 0x0A << AUXOx_GAIN_SHIFT); + mask_set_reg(AUXO2, AUXOx_GAIN_MASK, 0x0A << AUXOx_GAIN_SHIFT); } static inline void init_capture_gain(void) |