[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3494d23f-2a56-4f13-a619-e240d208d300@linaro.org>
Date: Fri, 19 Jan 2024 07:14:03 +0000
From: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
To: Johan Hovold <johan+linaro@...nel.org>, Mark Brown <broonie@...nel.org>
Cc: Banajit Goswami <bgoswami@...cinc.com>,
Liam Girdwood <lgirdwood@...il.com>, Jaroslav Kysela <perex@...ex.cz>,
Takashi Iwai <tiwai@...e.com>, alsa-devel@...a-project.org,
linux-sound@...r.kernel.org, linux-kernel@...r.kernel.org,
stable@...r.kernel.org
Subject: Re: [PATCH v3 1/5] ASoC: codecs: wsa883x: fix PA volume control
On 18/01/2024 16:58, Johan Hovold wrote:
> The PA gain can be set in steps of 1.5 dB from -3 dB to 18 dB, that is,
> in fifteen levels.
>
> Fix the range of the PA volume control to avoid having the first
> sixteen levels all map to -3 dB.
TBH, we really don't know what unsupported values map to w.r.t dB.
>
> Note that level 0 (-3 dB) does not mute the PA so the mute flag should
> also not be set.
>
> Fixes: cdb09e623143 ("ASoC: codecs: wsa883x: add control, dapm widgets and map")
> Cc: stable@...r.kernel.org # 6.0
> Cc: Srinivas Kandagatla <srinivas.kandagatla@...aro.org>
> Signed-off-by: Johan Hovold <johan+linaro@...nel.org>
> ---
> sound/soc/codecs/wsa883x.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/codecs/wsa883x.c b/sound/soc/codecs/wsa883x.c
> index cb83c569e18d..32983ca9afba 100644
> --- a/sound/soc/codecs/wsa883x.c
> +++ b/sound/soc/codecs/wsa883x.c
> @@ -1098,7 +1098,7 @@ static int wsa_dev_mode_put(struct snd_kcontrol *kcontrol,
> return 1;
> }
>
> -static const DECLARE_TLV_DB_SCALE(pa_gain, -300, 150, -300);
> +static const DECLARE_TLV_DB_SCALE(pa_gain, -300, 150, 0);
>
> static int wsa883x_get_swr_port(struct snd_kcontrol *kcontrol,
> struct snd_ctl_elem_value *ucontrol)
> @@ -1239,7 +1239,7 @@ static const struct snd_soc_dapm_widget wsa883x_dapm_widgets[] = {
>
> static const struct snd_kcontrol_new wsa883x_snd_controls[] = {
> SOC_SINGLE_RANGE_TLV("PA Volume", WSA883X_DRE_CTL_1, 1,
> - 0x0, 0x1f, 1, pa_gain),
> + 0x1, 0xf, 1, pa_gain),
gain field in register is Bit[5:1], so the max value of 0x1f is correct
here. However the range of gains that it can actually support is only 0-15.
If we are artificially setting the max value of 0xf here, then somewhere
we should ensure that Bit[5] is set to zero while programming the gain.
Whatever the mixer control is exposing is clearly reflecting what
hardware is supporting.
--srini
> SOC_ENUM_EXT("WSA MODE", wsa_dev_mode_enum,
> wsa_dev_mode_get, wsa_dev_mode_put),
> SOC_SINGLE_EXT("COMP Offset", SND_SOC_NOPM, 0, 4, 0,
Powered by blists - more mailing lists