From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Sasha Levin <sashal@kernel.org>,
Hans de Goede <hdegoede@redhat.com>,
alsa-devel@alsa-project.org, Mark Brown <broonie@kernel.org>
Subject: [PATCH AUTOSEL 4.14 03/16] ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10
Date: Thu, 25 Mar 2021 07:27:38 -0400 [thread overview]
Message-ID: <20210325112751.1928421-3-sashal@kernel.org> (raw)
In-Reply-To: <20210325112751.1928421-1-sashal@kernel.org>
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit cfa26ed1f9f885c2fd8f53ca492989d1e16d0199 ]
The adc_vol_tlv volume-control has a range from -17.625 dB to +30 dB,
not -176.25 dB to + 300 dB. This wrong scale is esp. a problem in userspace
apps which translate the dB scale to a linear scale. With the logarithmic
dB scale being of by a factor of 10 we loose all precision in the lower
area of the range when apps translate things to a linear scale.
E.g. the 0 dB default, which corresponds with a value of 47 of the
0 - 127 range for the control, would be shown as 0/100 in alsa-mixer.
Since the centi-dB values used in the TLV struct cannot represent the
0.375 dB step size used by these controls, change the TLV definition
for them to specify a min and max value instead of min + stepsize.
Note this mirrors commit 3f31f7d9b540 ("ASoC: rt5670: Fix dac- and adc-
vol-tlv values being off by a factor of 10") which made the exact same
change to the rt5670 codec driver.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210226143817.84287-2-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/rt5640.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 438fe52a12df..5af5dfc0fd46 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -341,9 +341,9 @@ static bool rt5640_readable_register(struct device *dev, unsigned int reg)
}
static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
-static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0);
+static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0);
static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
-static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
+static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000);
static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
/* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
--
2.30.1
WARNING: multiple messages have this Message-ID (diff)
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Hans de Goede <hdegoede@redhat.com>,
Mark Brown <broonie@kernel.org>, Sasha Levin <sashal@kernel.org>,
alsa-devel@alsa-project.org
Subject: [PATCH AUTOSEL 4.14 03/16] ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10
Date: Thu, 25 Mar 2021 07:27:38 -0400 [thread overview]
Message-ID: <20210325112751.1928421-3-sashal@kernel.org> (raw)
In-Reply-To: <20210325112751.1928421-1-sashal@kernel.org>
From: Hans de Goede <hdegoede@redhat.com>
[ Upstream commit cfa26ed1f9f885c2fd8f53ca492989d1e16d0199 ]
The adc_vol_tlv volume-control has a range from -17.625 dB to +30 dB,
not -176.25 dB to + 300 dB. This wrong scale is esp. a problem in userspace
apps which translate the dB scale to a linear scale. With the logarithmic
dB scale being of by a factor of 10 we loose all precision in the lower
area of the range when apps translate things to a linear scale.
E.g. the 0 dB default, which corresponds with a value of 47 of the
0 - 127 range for the control, would be shown as 0/100 in alsa-mixer.
Since the centi-dB values used in the TLV struct cannot represent the
0.375 dB step size used by these controls, change the TLV definition
for them to specify a min and max value instead of min + stepsize.
Note this mirrors commit 3f31f7d9b540 ("ASoC: rt5670: Fix dac- and adc-
vol-tlv values being off by a factor of 10") which made the exact same
change to the rt5670 codec driver.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20210226143817.84287-2-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
sound/soc/codecs/rt5640.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 438fe52a12df..5af5dfc0fd46 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -341,9 +341,9 @@ static bool rt5640_readable_register(struct device *dev, unsigned int reg)
}
static const DECLARE_TLV_DB_SCALE(out_vol_tlv, -4650, 150, 0);
-static const DECLARE_TLV_DB_SCALE(dac_vol_tlv, -65625, 375, 0);
+static const DECLARE_TLV_DB_MINMAX(dac_vol_tlv, -6562, 0);
static const DECLARE_TLV_DB_SCALE(in_vol_tlv, -3450, 150, 0);
-static const DECLARE_TLV_DB_SCALE(adc_vol_tlv, -17625, 375, 0);
+static const DECLARE_TLV_DB_MINMAX(adc_vol_tlv, -1762, 3000);
static const DECLARE_TLV_DB_SCALE(adc_bst_tlv, 0, 1200, 0);
/* {0, +20, +24, +30, +35, +40, +44, +50, +52} dB */
--
2.30.1
next prev parent reply other threads:[~2021-03-25 11:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-25 11:27 [PATCH AUTOSEL 4.14 01/16] ext4: fix bh ref count on error paths Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 02/16] rpc: fix NULL dereference on kmalloc failure Sasha Levin
2021-03-25 11:27 ` Sasha Levin [this message]
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 03/16] ASoC: rt5640: Fix dac- and adc- vol-tlv values being off by a factor of 10 Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 04/16] ASoC: rt5651: " Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 05/16] ASoC: sgtl5000: set DAP_AVC_CTRL register to correct default value on probe Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 06/16] ASoC: es8316: Simplify adc_pga_gain_tlv table Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 07/16] ASoC: cs42l42: Fix mixer volume control Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 08/16] ASoC: cs42l42: Always wait at least 3ms after reset Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 09/16] powerpc: Force inlining of cpu_has_feature() to avoid build failure Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 10/16] vhost: Fix vhost_vq_reset() Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 11/16] scsi: st: Fix a use after free in st_open() Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 12/16] scsi: qla2xxx: Fix broken #endif placement Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 13/16] staging: comedi: cb_pcidas: fix request_irq() warn Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 14/16] staging: comedi: cb_pcidas64: " Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 15/16] ASoC: rt5659: Update MCLK rate in set_sysclk() Sasha Levin
2021-03-25 11:27 ` Sasha Levin
2021-03-25 11:27 ` [PATCH AUTOSEL 4.14 16/16] ext4: do not iput inode under running transaction in ext4_rename() Sasha Levin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210325112751.1928421-3-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=hdegoede@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.