Re: [PATCH] ASoC: codecs: wcd938x: fix dB range for HPHL and HPHR

From: Srinivas Kandagatla
Date: Fri Jul 07 2023 - 08:54:38 EST




On 07/07/2023 08:35, Johan Hovold wrote:
On Wed, Jul 05, 2023 at 01:57:23PM +0100, Srinivas Kandagatla wrote:
dB range for HPHL and HPHR gains are from +6dB to -30dB in steps of
1.5dB with register values range from 0 to 24.

Current code maps these dB ranges incorrectly, fix them to allow proper
volume setting.

Fixes: e8ba1e05bdc0("ASoC: codecs: wcd938x: add basic controls")
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxx>
---
sound/soc/codecs/wcd938x.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/sound/soc/codecs/wcd938x.c b/sound/soc/codecs/wcd938x.c
index faa15a5ed2c8..3a3360711f8f 100644
--- a/sound/soc/codecs/wcd938x.c
+++ b/sound/soc/codecs/wcd938x.c
@@ -210,7 +210,7 @@ struct wcd938x_priv {
};
static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(ear_pa_gain, 600, -1800);
-static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(line_gain, 600, -3000);
+static const DECLARE_TLV_DB_SCALE(line_gain, -3000, 150, -3000);

This looks wrong, and indeed that forth argument appears to be a mute
flag. I guess that one should have been 0 (false) here?

yes, this should be true instead of a mute dB value.


Headphone output also appears to be way too loud by default with this
patch (alone) applied. Perhaps it's just the default mixer settings need
to be updated to match?

It looks like you're inverting the scale above. Perhaps that's intended,

yes, the highest value corresponds to lowest dB which is why its inverted.

but some more details in the commit message as to what was wrong and
what you intended to do would have been good.

HPHR/HPHL Volume control is broken on this codec.
current UCM uses digital volume control for x13s which needs to be moved to Analog volume control.
I have this change https://termbin.com/mpp9 in UCM which I plan to send out once I test and fix other paths as well.

--srini

Johan