Unverified Commit 4c6b74d5 authored by Hsieh Hung-En's avatar Hsieh Hung-En Committed by Mark Brown
Browse files

ASoC: es8328: Fix DAC deemphasis control handling



The DAC deemphasis control updated the hardware before updating the cached
state, causing the previous setting to be applied.

Update the cached deemphasis state first and then apply the setting.

Also check and propagate errors from es8328_set_deemph() in hw_params().

Signed-off-by: default avatarHsieh Hung-En <hungen3108@gmail.com>
Link: https://patch.msgid.link/20260130160017.2630-2-hungen3108@gmail.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a1d14d83
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -163,12 +163,11 @@ static int es8328_put_deemph(struct snd_kcontrol *kcontrol,
	if (es8328->deemph == deemph)
		return 0;

	es8328->deemph = deemph;
	ret = es8328_set_deemph(component);
	if (ret < 0)
		return ret;

	es8328->deemph = deemph;

	return 1;
}

@@ -530,7 +529,9 @@ static int es8328_hw_params(struct snd_pcm_substream *substream,
			return ret;

		es8328->playback_fs = params_rate(params);
		es8328_set_deemph(component);
		ret = es8328_set_deemph(component);
		if (ret < 0)
			return ret;
	} else {
		ret = snd_soc_component_update_bits(component, ES8328_ADCCONTROL4,
						    ES8328_ADCCONTROL4_ADCWL_MASK,