Merge "ASoC: wcd934x: Update OCP before HPH PA enable/disable"
This commit is contained in:
commit
3968f84b45
1 changed files with 20 additions and 0 deletions
|
@ -2178,6 +2178,18 @@ static void tavil_codec_clear_anc_tx_hold(struct tavil_priv *tavil)
|
|||
tavil_codec_set_tx_hold(tavil->codec, WCD934X_ANA_AMIC4, false);
|
||||
}
|
||||
|
||||
|
||||
static void tavil_ocp_control(struct snd_soc_codec *codec, bool enable)
|
||||
{
|
||||
if (enable) {
|
||||
snd_soc_update_bits(codec, WCD934X_HPH_OCP_CTL, 0x10, 0x10);
|
||||
snd_soc_update_bits(codec, WCD934X_RX_OCP_CTL, 0x0F, 0x02);
|
||||
} else {
|
||||
snd_soc_update_bits(codec, WCD934X_RX_OCP_CTL, 0x0F, 0x0F);
|
||||
snd_soc_update_bits(codec, WCD934X_HPH_OCP_CTL, 0x10, 0x00);
|
||||
}
|
||||
}
|
||||
|
||||
static int tavil_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol,
|
||||
int event)
|
||||
|
@ -2191,6 +2203,7 @@ static int tavil_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w,
|
|||
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
tavil_ocp_control(codec, false);
|
||||
if (TAVIL_IS_1_0(tavil->wcd9xxx))
|
||||
snd_soc_update_bits(codec, WCD934X_HPH_REFBUFF_LP_CTL,
|
||||
0x06, (0x03 << 1));
|
||||
|
@ -2287,8 +2300,10 @@ static int tavil_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w,
|
|||
ret = tavil_codec_enable_anc(w, kcontrol, event);
|
||||
}
|
||||
tavil_codec_override(codec, tavil->hph_mode, event);
|
||||
tavil_ocp_control(codec, true);
|
||||
break;
|
||||
case SND_SOC_DAPM_PRE_PMD:
|
||||
tavil_ocp_control(codec, false);
|
||||
blocking_notifier_call_chain(&tavil->mbhc->notifier,
|
||||
WCD_EVENT_PRE_HPHR_PA_OFF,
|
||||
&tavil->mbhc->wcd_mbhc);
|
||||
|
@ -2327,6 +2342,7 @@ static int tavil_codec_enable_hphr_pa(struct snd_soc_dapm_widget *w,
|
|||
WCD934X_CDC_RX2_RX_PATH_CFG0,
|
||||
0x10, 0x00);
|
||||
}
|
||||
tavil_ocp_control(codec, true);
|
||||
break;
|
||||
};
|
||||
|
||||
|
@ -2346,6 +2362,7 @@ static int tavil_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w,
|
|||
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
tavil_ocp_control(codec, false);
|
||||
if (TAVIL_IS_1_0(tavil->wcd9xxx))
|
||||
snd_soc_update_bits(codec, WCD934X_HPH_REFBUFF_LP_CTL,
|
||||
0x06, (0x03 << 1));
|
||||
|
@ -2439,8 +2456,10 @@ static int tavil_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w,
|
|||
ret = tavil_codec_enable_anc(w, kcontrol, event);
|
||||
}
|
||||
tavil_codec_override(codec, tavil->hph_mode, event);
|
||||
tavil_ocp_control(codec, true);
|
||||
break;
|
||||
case SND_SOC_DAPM_PRE_PMD:
|
||||
tavil_ocp_control(codec, false);
|
||||
blocking_notifier_call_chain(&tavil->mbhc->notifier,
|
||||
WCD_EVENT_PRE_HPHL_PA_OFF,
|
||||
&tavil->mbhc->wcd_mbhc);
|
||||
|
@ -2480,6 +2499,7 @@ static int tavil_codec_enable_hphl_pa(struct snd_soc_dapm_widget *w,
|
|||
snd_soc_update_bits(codec,
|
||||
WCD934X_CDC_RX1_RX_PATH_CFG0, 0x10, 0x00);
|
||||
}
|
||||
tavil_ocp_control(codec, true);
|
||||
break;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue