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: Hsieh Hung-En <hungen3108@gmail.com>
Link: https://patch.msgid.link/20260130160017.2630-2-hungen3108@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
Hsieh Hung-En 2026-01-31 00:00:13 +08:00 committed by Mark Brown
parent a1d14d8364
commit 4c6b74d587
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -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,