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

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

Merge "ASoC: wcd934x: fix MAD enable sequence for ADC2"

parents 33938e12 a26e7432
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -5116,14 +5116,18 @@ static int tavil_mad_input_put(struct snd_kcontrol *kcontrol,
	u32 adc, i, mic_bias_found = 0;
	int ret = 0;
	char *mad_input;
	bool is_adc2_input = false;

	tavil_mad_input = ucontrol->value.integer.value[0];

	if (strnstr(tavil_conn_mad_text[tavil_mad_input], "NOTUSED",
				sizeof("NOTUSED"))) {
		dev_err(codec->dev,
		dev_dbg(codec->dev,
			"%s: Unsupported tavil_mad_input = %s\n",
			__func__, tavil_conn_mad_text[tavil_mad_input]);
		/* Make sure the MAD register is updated */
		snd_soc_update_bits(codec, WCD934X_ANA_MAD_SETUP,
				    0x88, 0x00);
		return -EINVAL;
	}

@@ -5152,14 +5156,16 @@ static int tavil_mad_input_put(struct snd_kcontrol *kcontrol,
		snprintf(mad_amic_input_widget, 6, "%s%u", "AMIC", adc);

		mad_input_widget = mad_amic_input_widget;
		if (adc == 2)
			is_adc2_input = true;
	} else {
		/* DMIC type input widget*/
		mad_input_widget = tavil_conn_mad_text[tavil_mad_input];
	}

	dev_dbg(codec->dev,
		"%s: tavil input widget = %s\n", __func__,
		mad_input_widget);
		"%s: tavil input widget = %s, adc_input = %s\n", __func__,
		mad_input_widget, is_adc2_input ? "true" : "false");

	for (i = 0; i < card->num_of_dapm_routes; i++) {
		if (!strcmp(card->of_dapm_routes[i].sink, mad_input_widget)) {
@@ -5204,7 +5210,13 @@ static int tavil_mad_input_put(struct snd_kcontrol *kcontrol,
			    0x0F, tavil_mad_input);
	snd_soc_update_bits(codec, WCD934X_ANA_MAD_SETUP,
			    0x07, mic_bias_found);

	/* for adc2 input, mad should be in micbias mode with BG enabled */
	if (is_adc2_input)
		snd_soc_update_bits(codec, WCD934X_ANA_MAD_SETUP,
				    0x88, 0x88);
	else
		snd_soc_update_bits(codec, WCD934X_ANA_MAD_SETUP,
				    0x88, 0x00);
	return 0;
}