Merge "ASoC: wcd937x: Fix pop after PDR"
This commit is contained in:

committed by
Gerrit - the friendly Code Review server

commit
3a0e91bf0c
@@ -599,6 +599,7 @@ static void bolero_ssr_disable(struct device *dev, void *data)
|
||||
struct bolero_priv *priv = data;
|
||||
int macro_idx;
|
||||
|
||||
bolero_cdc_notifier_call(priv, BOLERO_WCD_EVT_PA_OFF_PRE_SSR);
|
||||
regcache_cache_only(priv->regmap, true);
|
||||
|
||||
mutex_lock(&priv->clk_lock);
|
||||
|
@@ -20,6 +20,7 @@
|
||||
/* from bolero to WCD events */
|
||||
enum {
|
||||
BOLERO_WCD_EVT_TX_CH_HOLD_CLEAR = 1,
|
||||
BOLERO_WCD_EVT_PA_OFF_PRE_SSR,
|
||||
BOLERO_WCD_EVT_SSR_DOWN,
|
||||
BOLERO_WCD_EVT_SSR_UP,
|
||||
};
|
||||
|
@@ -1122,7 +1122,7 @@ static int rx_macro_mclk_ctrl(struct device *dev, bool enable)
|
||||
static int rx_macro_event_handler(struct snd_soc_codec *codec, u16 event,
|
||||
u32 data)
|
||||
{
|
||||
u16 reg = 0, reg_mix = 0, rx_idx = 0, mute = 0x0;
|
||||
u16 reg = 0, reg_mix = 0, rx_idx = 0, mute = 0x0, val = 0;
|
||||
struct device *rx_dev = NULL;
|
||||
struct rx_macro_priv *rx_priv = NULL;
|
||||
|
||||
@@ -1133,12 +1133,13 @@ static int rx_macro_event_handler(struct snd_soc_codec *codec, u16 event,
|
||||
case BOLERO_MACRO_EVT_RX_MUTE:
|
||||
rx_idx = data >> 0x10;
|
||||
mute = data & 0xffff;
|
||||
val = mute ? 0x10 : 0x00;
|
||||
reg = BOLERO_CDC_RX_RX0_RX_PATH_CTL + (rx_idx *
|
||||
RX_MACRO_RX_PATH_OFFSET);
|
||||
reg_mix = BOLERO_CDC_RX_RX0_RX_PATH_MIX_CTL + (rx_idx *
|
||||
RX_MACRO_RX_PATH_OFFSET);
|
||||
snd_soc_update_bits(codec, reg, 0x10, mute << 0x10);
|
||||
snd_soc_update_bits(codec, reg_mix, 0x10, mute << 0x10);
|
||||
snd_soc_update_bits(codec, reg, 0x10, val);
|
||||
snd_soc_update_bits(codec, reg_mix, 0x10, val);
|
||||
break;
|
||||
case BOLERO_MACRO_EVT_IMPED_TRUE:
|
||||
rx_macro_wcd_clsh_imped_config(codec, data, true);
|
||||
|
@@ -126,6 +126,7 @@ enum {
|
||||
|
||||
enum {
|
||||
BOLERO_WCD_EVT_TX_CH_HOLD_CLEAR = 1,
|
||||
BOLERO_WCD_EVT_PA_OFF_PRE_SSR,
|
||||
BOLERO_WCD_EVT_SSR_DOWN,
|
||||
BOLERO_WCD_EVT_SSR_UP,
|
||||
};
|
||||
|
@@ -1295,6 +1295,11 @@ static int wcd937x_event_notify(struct notifier_block *block,
|
||||
mask = 0x20;
|
||||
snd_soc_update_bits(codec, reg, mask, 0x00);
|
||||
break;
|
||||
case BOLERO_WCD_EVT_PA_OFF_PRE_SSR:
|
||||
snd_soc_update_bits(codec, WCD937X_ANA_HPH, 0xC0, 0x00);
|
||||
snd_soc_update_bits(codec, WCD937X_ANA_EAR, 0x80, 0x00);
|
||||
snd_soc_update_bits(codec, WCD937X_AUX_AUXPA, 0x80, 0x00);
|
||||
break;
|
||||
case BOLERO_WCD_EVT_SSR_DOWN:
|
||||
wcd937x_reset_low(wcd937x->dev);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user