ASoC: codecs: enable swr dmic for va

Enable soundwire dmic's for VA macro.

Change-Id: Ie88ad57f1906ea81363cffd2ae5904f0a5de7bdc
Signed-off-by: Vignesh Kulothungan <vigneshk@codeaurora.org>
This commit is contained in:
Vignesh Kulothungan 2020-02-21 11:12:56 -08:00
commit 5a5e32093f

View file

@ -1068,6 +1068,7 @@ static int va_macro_enable_dec(struct snd_soc_dapm_widget *w,
u16 tx_vol_ctl_reg, dec_cfg_reg, hpf_gate_reg;
u16 tx_gain_ctl_reg;
u8 hpf_cut_off_freq;
u16 adc_mux_reg = 0;
struct device *va_dev = NULL;
struct va_macro_priv *va_priv = NULL;
int hpf_delay = BOLERO_CDC_VA_TX_DMIC_HPF_DELAY_MS;
@ -1089,6 +1090,8 @@ static int va_macro_enable_dec(struct snd_soc_dapm_widget *w,
VA_MACRO_TX_PATH_OFFSET * decimator;
tx_gain_ctl_reg = BOLERO_CDC_VA_TX0_TX_VOL_CTL +
VA_MACRO_TX_PATH_OFFSET * decimator;
adc_mux_reg = BOLERO_CDC_VA_INP_MUX_ADC_MUX0_CFG1 +
VA_MACRO_ADC_MUX_CFG_OFFSET * decimator;
switch (event) {
case SND_SOC_DAPM_PRE_PMU:
@ -1149,6 +1152,32 @@ static int va_macro_enable_dec(struct snd_soc_dapm_widget *w,
/* apply gain after decimator is enabled */
snd_soc_component_write(component, tx_gain_ctl_reg,
snd_soc_component_read32(component, tx_gain_ctl_reg));
if (va_priv->version == BOLERO_VERSION_2_0) {
if (snd_soc_component_read32(component, adc_mux_reg)
& SWR_MIC) {
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_CTRL,
0x01, 0x01);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC0_CTL,
0x0E, 0x0C);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC1_CTL,
0x0E, 0x0C);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC2_CTL,
0x0E, 0x00);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC3_CTL,
0x0E, 0x00);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC4_CTL,
0x0E, 0x00);
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_MIC5_CTL,
0x0E, 0x00);
}
}
break;
case SND_SOC_DAPM_PRE_PMD:
hpf_cut_off_freq =
@ -1177,6 +1206,13 @@ static int va_macro_enable_dec(struct snd_soc_dapm_widget *w,
}
cancel_delayed_work_sync(
&va_priv->va_mute_dwork[decimator].dwork);
if (va_priv->version == BOLERO_VERSION_2_0) {
if (snd_soc_component_read32(component, adc_mux_reg)
& SWR_MIC)
snd_soc_component_update_bits(component,
BOLERO_CDC_TX_TOP_CSR_SWR_CTRL,
0x01, 0x00);
}
break;
case SND_SOC_DAPM_POST_PMD:
/* Disable TX CLK */