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

Commit 0b2ac8af authored by Satya Krishna Pindiproli's avatar Satya Krishna Pindiproli
Browse files

ASoC: wcd9320: Set Audio MAD IIR coefficients from ACDB



WCD9320 codec has HW MAD which requires the Audio IIR
filter coefficients to be configured. ACDB data contains
IIR filter coefficients, these values are written to
codec registers when MAD session is initiated. This
change reads ACDB data for Audio MAD and sets the audio
IIR registers for MAD.

Change-Id: I5613d0751c257a63fa235d8f908a4153e1a0a369
Signed-off-by: default avatarSatya Krishna Pindiproli <satyak@codeaurora.org>
parent 425c7cfe
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -2818,6 +2818,7 @@ static int taiko_codec_config_mad(struct snd_soc_codec *codec)
	struct mad_audio_cal *mad_cal;
	const char *filename = TAIKO_MAD_AUDIO_FIRMWARE_PATH;
	struct taiko_priv *taiko = snd_soc_codec_get_drvdata(codec);
	int i = 0;

	pr_debug("%s: enter\n", __func__);
	/* wakeup for codec calibration access */
@@ -2862,7 +2863,15 @@ static int taiko_codec_config_mad(struct snd_soc_codec *codec)
		      mad_cal->audio_info.rms_threshold_lsb);
	snd_soc_write(codec, TAIKO_A_CDC_MAD_AUDIO_CTL_6,
		      mad_cal->audio_info.rms_threshold_msb);

	for (i = 0; i < ARRAY_SIZE(mad_cal->audio_info.iir_coefficients);
	     i++) {
		snd_soc_update_bits(codec, TAIKO_A_CDC_MAD_AUDIO_IIR_CTL_PTR,
				    0x3F, i);
		snd_soc_write(codec, TAIKO_A_CDC_MAD_AUDIO_IIR_CTL_VAL,
			      mad_cal->audio_info.iir_coefficients[i]);
		dev_dbg(codec->dev, "%s:MAD Audio IIR Coef[%d] = 0X%x",
			__func__, i, mad_cal->audio_info.iir_coefficients[i]);
	}

	/* Beacon */
	snd_soc_write(codec, TAIKO_A_CDC_MAD_BEACON_CTL_8,