ASoC: wcd938x: Clear tx hold hpf after device path setup

During capture path setup, tx path hpf is set to hold.
Clear tx path hpf hold after device path setup.

Change-Id: I3299fc5d84d6e86e23c9ef150c8770ef9d59a870
Signed-off-by: Sudheer Papothi <spapothi@codeaurora.org>
This commit is contained in:
Sudheer Papothi
2019-02-23 05:11:43 +05:30
والد 2b5cb6ac75
کامیت d6c61bd617

مشاهده پرونده

@@ -49,6 +49,10 @@ enum {
};
enum {
WCD_ADC1 = 0,
WCD_ADC2,
WCD_ADC3,
WCD_ADC4,
ALLOW_BUCK_DISABLE,
HPH_COMP_DELAY,
HPH_PA_DELAY,
@@ -1227,12 +1231,14 @@ static int wcd938x_codec_enable_adc(struct snd_soc_dapm_widget *w,
default:
break;
}
set_bit(w->shift, &wcd938x->status_mask);
wcd938x_tx_connect_port(component, ADC1 + (w->shift), true);
break;
case SND_SOC_DAPM_POST_PMD:
wcd938x_tx_connect_port(component, ADC1 + (w->shift), false);
snd_soc_component_update_bits(component,
WCD938X_DIGITAL_CDC_ANA_CLK_CTL, 0x08, 0x00);
clear_bit(w->shift, &wcd938x->status_mask);
break;
};
@@ -1469,8 +1475,6 @@ static int wcd938x_event_notify(struct notifier_block *block,
void *data)
{
u16 event = (val & 0xffff);
u16 amic;
u16 mask = 0x40, reg = 0x0;
int ret = 0;
struct wcd938x_priv *wcd938x = dev_get_drvdata((struct device *)data);
struct snd_soc_component *component = wcd938x->component;
@@ -1478,16 +1482,26 @@ static int wcd938x_event_notify(struct notifier_block *block,
switch (event) {
case BOLERO_WCD_EVT_TX_CH_HOLD_CLEAR:
amic = (val >> 0x10);
if (amic == 0x1 || amic == 0x2)
reg = WCD938X_ANA_TX_CH2;
else if (amic == 0x3)
reg = WCD938X_ANA_TX_CH4;
else
return 0;
if (amic == 0x2)
mask = 0x20;
snd_soc_component_update_bits(component, reg, mask, 0x00);
if (test_bit(WCD_ADC1, &wcd938x->status_mask)) {
snd_soc_component_update_bits(component,
WCD938X_ANA_TX_CH2, 0x40, 0x00);
clear_bit(WCD_ADC1, &wcd938x->status_mask);
}
if (test_bit(WCD_ADC2, &wcd938x->status_mask)) {
snd_soc_component_update_bits(component,
WCD938X_ANA_TX_CH2, 0x20, 0x00);
clear_bit(WCD_ADC2, &wcd938x->status_mask);
}
if (test_bit(WCD_ADC3, &wcd938x->status_mask)) {
snd_soc_component_update_bits(component,
WCD938X_ANA_TX_CH4, 0x40, 0x00);
clear_bit(WCD_ADC3, &wcd938x->status_mask);
}
if (test_bit(WCD_ADC4, &wcd938x->status_mask)) {
snd_soc_component_update_bits(component,
WCD938X_ANA_TX_CH4, 0x20, 0x00);
clear_bit(WCD_ADC4, &wcd938x->status_mask);
}
break;
case BOLERO_WCD_EVT_PA_OFF_PRE_SSR:
snd_soc_component_update_bits(component, WCD938X_ANA_HPH,