Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fd48c69 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "ASoc: wcd: Modify Headset TX path register sequence"

parents b2108864 ada7aaca
Loading
Loading
Loading
Loading
+35 −10
Original line number Diff line number Diff line
@@ -950,7 +950,7 @@ static const struct snd_kcontrol_new msm8x16_wcd_snd_controls[] = {
			0,  -84,	40, digital_gain),

	SOC_SINGLE("MICBIAS1 CAPLESS Switch",
		   MSM8X16_WCD_A_ANALOG_MICB_1_EN, 4, 1, 1),
		   MSM8X16_WCD_A_ANALOG_MICB_1_EN, 6, 1, 1),

	SOC_ENUM("TX1 HPF cut off", cf_dec1_enum),
	SOC_ENUM("TX2 HPF cut off", cf_dec2_enum),
@@ -1335,14 +1335,25 @@ static int msm8x16_wcd_codec_enable_adc(struct snd_soc_dapm_widget *w,
		msm8x16_wcd_codec_enable_adc_block(codec, 1);
		snd_soc_update_bits(codec, adc_reg, 1 << init_bit_shift,
				1 << init_bit_shift);
		snd_soc_update_bits(codec,
				MSM8X16_WCD_A_DIGITAL_CDC_CONN_TX2_CTL,
				0x03, 0x00);
		usleep_range(CODEC_DELAY_1_MS, CODEC_DELAY_1_1_MS);
		break;
	case SND_SOC_DAPM_POST_PMU:
		snd_soc_update_bits(codec, adc_reg, 1 << init_bit_shift, 0x00);
		usleep_range(CODEC_DELAY_1_MS, CODEC_DELAY_1_1_MS);
		if (w->reg == MSM8X16_WCD_A_ANALOG_TX_2_EN)
			snd_soc_update_bits(codec, w->reg, 0x60, 0x60);
		break;
	case SND_SOC_DAPM_POST_PMD:
		msm8x16_wcd_codec_enable_adc_block(codec, 0);
		snd_soc_update_bits(codec,
				MSM8X16_WCD_A_DIGITAL_CDC_CONN_TX2_CTL,
				0x03, 0x02);
		if (w->reg == MSM8X16_WCD_A_ANALOG_TX_2_EN)
			snd_soc_update_bits(codec, w->reg, 0x60, 0x00);

		break;
	}
	return 0;
@@ -1485,6 +1496,7 @@ static int msm8x16_wcd_codec_enable_micbias(struct snd_soc_dapm_widget *w,
	dev_dbg(codec->dev, "%s %d\n", __func__, event);
	switch (w->reg) {
	case MSM8X16_WCD_A_ANALOG_MICB_1_EN:
	case MSM8X16_WCD_A_ANALOG_MICB_2_EN:
		micb_int_reg = MSM8X16_WCD_A_ANALOG_MICB_1_INT_RBIAS;
		break;
	default:
@@ -1496,26 +1508,39 @@ static int msm8x16_wcd_codec_enable_micbias(struct snd_soc_dapm_widget *w,

	switch (event) {
	case SND_SOC_DAPM_PRE_PMU:
		if (strnstr(w->name, internal1_text, 30))
		if (strnstr(w->name, internal1_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x80, 0x80);
		else if (strnstr(w->name, internal2_text, 30))
			snd_soc_update_bits(codec, w->reg, 0x1, 0x0);
		} else if (strnstr(w->name, internal2_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x10, 0x10);
		else if (strnstr(w->name, internal3_text, 30))
			snd_soc_update_bits(codec,
					MSM8X16_WCD_A_ANALOG_MICB_1_EN,
					0x45, 0x44);
			snd_soc_update_bits(codec, w->reg, 0x20, 0x00);
		} else if (strnstr(w->name, internal3_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x2, 0x2);
			snd_soc_update_bits(codec, w->reg, 0x1, 0x0);
		}

		break;
	case SND_SOC_DAPM_POST_PMU:
		usleep_range(20000, 20100);
		break;
	case SND_SOC_DAPM_POST_PMD:
		if (strnstr(w->name, internal1_text, 30))
		if (strnstr(w->name, internal1_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x80, 0x00);
		else if (strnstr(w->name, internal2_text, 30))
			snd_soc_update_bits(codec, w->reg, 0x1, 0x1);
		} else if (strnstr(w->name, internal2_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x10, 0x00);
		else if (strnstr(w->name, internal3_text, 30))
			snd_soc_update_bits(codec,
					MSM8X16_WCD_A_ANALOG_MICB_1_EN,
					0x45, 0x00);
			snd_soc_update_bits(codec, w->reg, 0x20, 0x20);
		} else if (strnstr(w->name, internal3_text, 30)) {
			snd_soc_update_bits(codec, micb_int_reg, 0x2, 0x0);

			snd_soc_update_bits(codec, w->reg, 0x1, 0x1);
		}

		break;
	}
	return 0;
@@ -2437,7 +2462,7 @@ static const struct snd_soc_dapm_widget msm8x16_wcd_dapm_widgets[] = {
		msm8x16_wcd_codec_enable_micbias, SND_SOC_DAPM_PRE_PMU |
		SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_MICBIAS_E("MIC BIAS Internal2",
		MSM8X16_WCD_A_ANALOG_MICB_1_EN, 7, 0,
		MSM8X16_WCD_A_ANALOG_MICB_2_EN, 7, 0,
		msm8x16_wcd_codec_enable_micbias, SND_SOC_DAPM_PRE_PMU |
		SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_POST_PMD),
	SND_SOC_DAPM_MICBIAS_E("MIC BIAS Internal3",