asoc: lpass-cdc: udpate MSM DMIC power up sequence to reduce pop
Udpate MSM DMIC power up sequence to reduce pop. Change-Id: I5f3f2e439e31877d3f21c05575c95942b937252e Signed-off-by: Meng Wang <quic_mengw@quicinc.com>
This commit is contained in:

کامیت شده توسط
Gerrit - the friendly Code Review server

والد
f21b04af12
کامیت
72189f1f59
@@ -831,26 +831,13 @@ static int lpass_cdc_tx_macro_put_bcs_ch_sel(struct snd_kcontrol *kcontrol,
|
||||
}
|
||||
|
||||
static int lpass_cdc_tx_macro_enable_dmic(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event)
|
||||
struct snd_kcontrol *kcontrol, int event, u16 adc_mux0_cfg)
|
||||
{
|
||||
struct snd_soc_component *component =
|
||||
snd_soc_dapm_to_component(w->dapm);
|
||||
unsigned int dmic = 0;
|
||||
int ret = 0;
|
||||
char *wname = NULL;
|
||||
|
||||
wname = strpbrk(w->name, "01234567");
|
||||
if (!wname) {
|
||||
dev_err(component->dev, "%s: widget not found\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = kstrtouint(wname, 10, &dmic);
|
||||
if (ret < 0) {
|
||||
dev_err(component->dev, "%s: Invalid DMIC line on the codec\n",
|
||||
__func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
dmic = (snd_soc_component_read(component, adc_mux0_cfg) >> 4) - 1;
|
||||
|
||||
dev_dbg(component->dev, "%s: event %d DMIC%d\n",
|
||||
__func__, event, dmic);
|
||||
@@ -880,6 +867,7 @@ static int lpass_cdc_tx_macro_enable_dec(struct snd_soc_dapm_widget *w,
|
||||
u16 tx_fs_reg = 0;
|
||||
u8 hpf_cut_off_freq = 0;
|
||||
u16 adc_mux_reg = 0;
|
||||
u16 adc_mux0_reg = 0;
|
||||
int hpf_delay = LPASS_CDC_TX_MACRO_DMIC_HPF_DELAY_MS;
|
||||
int unmute_delay = LPASS_CDC_TX_MACRO_DMIC_UNMUTE_DELAY_MS;
|
||||
struct device *tx_dev = NULL;
|
||||
@@ -903,12 +891,17 @@ static int lpass_cdc_tx_macro_enable_dec(struct snd_soc_dapm_widget *w,
|
||||
LPASS_CDC_TX_MACRO_TX_PATH_OFFSET * decimator;
|
||||
adc_mux_reg = LPASS_CDC_TX_INP_MUX_ADC_MUX0_CFG1 +
|
||||
LPASS_CDC_TX_MACRO_ADC_MUX_CFG_OFFSET * decimator;
|
||||
adc_mux0_reg = LPASS_CDC_TX_INP_MUX_ADC_MUX0_CFG0 +
|
||||
LPASS_CDC_TX_MACRO_ADC_MUX_CFG_OFFSET * decimator;
|
||||
tx_fs_reg = LPASS_CDC_TX0_TX_PATH_CTL +
|
||||
LPASS_CDC_TX_MACRO_TX_PATH_OFFSET * decimator;
|
||||
|
||||
tx_priv->pcm_rate[decimator] = (snd_soc_component_read(component,
|
||||
tx_fs_reg) & 0x0F);
|
||||
|
||||
if(!is_amic_enabled(component, decimator))
|
||||
lpass_cdc_tx_macro_enable_dmic(w, kcontrol, event, adc_mux0_reg);
|
||||
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
snd_soc_component_update_bits(component,
|
||||
@@ -1446,37 +1439,21 @@ static const struct snd_soc_dapm_widget lpass_cdc_tx_macro_dapm_widgets[] = {
|
||||
lpass_cdc_tx_macro_enable_micbias,
|
||||
SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC0", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC0", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC1", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC1", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC2", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC2", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC3", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC3", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC4", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC4", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC5", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC5", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC6", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC6", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_ADC_E("TX DMIC7", NULL, SND_SOC_NOPM, 0, 0,
|
||||
lpass_cdc_tx_macro_enable_dmic, SND_SOC_DAPM_PRE_PMU |
|
||||
SND_SOC_DAPM_POST_PMD),
|
||||
SND_SOC_DAPM_ADC("TX DMIC7", NULL, SND_SOC_NOPM, 0, 0),
|
||||
|
||||
SND_SOC_DAPM_INPUT("TX SWR_INPUT"),
|
||||
|
||||
|
مرجع در شماره جدید
Block a user