Ver código fonte

ASoC: wcd938x: Disable ADC mode for tx at power down after record

ADC mode for tx 0,1,2,3 is not disabled at power down after record
causing noise during next headset record. Disable ADC mode
to resolve noise.

Change-Id: I0a98b06318b55cfce20c6a90fecd71d83dce28c5
Signed-off-by: Vatsal Bucha <[email protected]>
Vatsal Bucha 5 anos atrás
pai
commit
a267a11e94
1 arquivos alterados com 12 adições e 0 exclusões
  1. 12 0
      asoc/codecs/wcd938x/wcd938x.c

+ 12 - 0
asoc/codecs/wcd938x/wcd938x.c

@@ -1626,18 +1626,30 @@ static int wcd938x_enable_req(struct snd_soc_dapm_widget *w,
 	case SND_SOC_DAPM_POST_PMD:
 		switch (w->shift) {
 		case 0:
+			snd_soc_component_update_bits(component,
+				WCD938X_DIGITAL_CDC_TX_ANA_MODE_0_1, 0x0F,
+				0x00);
 			snd_soc_component_update_bits(component,
 				WCD938X_DIGITAL_CDC_DIG_CLK_CTL, 0x10, 0x00);
 			break;
 		case 1:
+			snd_soc_component_update_bits(component,
+				WCD938X_DIGITAL_CDC_TX_ANA_MODE_0_1, 0xF0,
+				0x00);
 			snd_soc_component_update_bits(component,
 				WCD938X_DIGITAL_CDC_DIG_CLK_CTL, 0x20, 0x00);
 			break;
 		case 2:
+			snd_soc_component_update_bits(component,
+				WCD938X_DIGITAL_CDC_TX_ANA_MODE_2_3, 0x0F,
+				0x00);
 			snd_soc_component_update_bits(component,
 				WCD938X_DIGITAL_CDC_DIG_CLK_CTL, 0x40, 0x00);
 			break;
 		case 3:
+			snd_soc_component_update_bits(component,
+				WCD938X_DIGITAL_CDC_TX_ANA_MODE_2_3, 0xF0,
+				0x00);
 			snd_soc_component_update_bits(component,
 				WCD938X_DIGITAL_CDC_DIG_CLK_CTL, 0x80, 0x00);
 			break;