sound/soc/codecs/peb2466.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)
In addition to the digital volume adjustment, infineon peb2466 codec
has an analog adjustment which can be set to either 0dB or +/-6dB.
At the time being it is defined as a switch and appears in 'alsamixer'
like a 'mute'.
This adjustment isn't a mute, change it to a 'volume' with an
associated dB range.
With this change, this adjustment now appears in 'alsamixer' as a
standard volume slider which can have two positions.
Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org>
---
sound/soc/codecs/peb2466.c | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/sound/soc/codecs/peb2466.c b/sound/soc/codecs/peb2466.c
index f1ee42af264b..2d5163c15d0d 100644
--- a/sound/soc/codecs/peb2466.c
+++ b/sound/soc/codecs/peb2466.c
@@ -517,18 +517,21 @@ static const struct snd_kcontrol_new peb2466_ch3_out_mix_controls[] = {
SOC_DAPM_SINGLE("Voice Switch", PEB2466_CR2(3), 0, 1, 0)
};
+static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(peb2466_gain_p_tlv, -600, 0);
+static const SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(peb2466_gain_c_tlv, 0, 600);
+
static const struct snd_kcontrol_new peb2466_controls[] = {
/* Attenuators */
- SOC_SINGLE("DAC0 -6dB Playback Switch", PEB2466_CR3(0), 2, 1, 0),
- SOC_SINGLE("DAC1 -6dB Playback Switch", PEB2466_CR3(1), 2, 1, 0),
- SOC_SINGLE("DAC2 -6dB Playback Switch", PEB2466_CR3(2), 2, 1, 0),
- SOC_SINGLE("DAC3 -6dB Playback Switch", PEB2466_CR3(3), 2, 1, 0),
+ SOC_SINGLE_TLV("DAC0 -6dB Playback Volume", PEB2466_CR3(0), 2, 1, 1, peb2466_gain_p_tlv),
+ SOC_SINGLE_TLV("DAC1 -6dB Playback Volume", PEB2466_CR3(1), 2, 1, 1, peb2466_gain_p_tlv),
+ SOC_SINGLE_TLV("DAC2 -6dB Playback Volume", PEB2466_CR3(2), 2, 1, 1, peb2466_gain_p_tlv),
+ SOC_SINGLE_TLV("DAC3 -6dB Playback Volume", PEB2466_CR3(3), 2, 1, 1, peb2466_gain_p_tlv),
/* Amplifiers */
- SOC_SINGLE("ADC0 +6dB Capture Switch", PEB2466_CR3(0), 3, 1, 0),
- SOC_SINGLE("ADC1 +6dB Capture Switch", PEB2466_CR3(1), 3, 1, 0),
- SOC_SINGLE("ADC2 +6dB Capture Switch", PEB2466_CR3(2), 3, 1, 0),
- SOC_SINGLE("ADC3 +6dB Capture Switch", PEB2466_CR3(3), 3, 1, 0),
+ SOC_SINGLE_TLV("ADC0 +6dB Capture Volume", PEB2466_CR3(0), 3, 1, 0, peb2466_gain_c_tlv),
+ SOC_SINGLE_TLV("ADC1 +6dB Capture Volume", PEB2466_CR3(1), 3, 1, 0, peb2466_gain_c_tlv),
+ SOC_SINGLE_TLV("ADC2 +6dB Capture Volume", PEB2466_CR3(2), 3, 1, 0, peb2466_gain_c_tlv),
+ SOC_SINGLE_TLV("ADC3 +6dB Capture Volume", PEB2466_CR3(3), 3, 1, 0, peb2466_gain_c_tlv),
/* Tone generators */
SOC_ENUM_EXT("DAC0 TG1 Freq", peb2466_tg_freq[0][0],
--
2.49.0
On Mon, 09 Mar 2026 12:46:49 +0100, Christophe Leroy (CS GROUP) wrote:
> In addition to the digital volume adjustment, infineon peb2466 codec
> has an analog adjustment which can be set to either 0dB or +/-6dB.
> At the time being it is defined as a switch and appears in 'alsamixer'
> like a 'mute'.
>
> This adjustment isn't a mute, change it to a 'volume' with an
> associated dB range.
>
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/1] ASoC: codecs: peb2466: Change the +/- 6dB switch to a volume
commit: eae0946b2485109a9f24f46853497f5b1983ab79
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
Thanks,
Mark
Hi Christophe, On Mon, 9 Mar 2026 12:46:49 +0100 "Christophe Leroy (CS GROUP)" <chleroy@kernel.org> wrote: > In addition to the digital volume adjustment, infineon peb2466 codec > has an analog adjustment which can be set to either 0dB or +/-6dB. > At the time being it is defined as a switch and appears in 'alsamixer' > like a 'mute'. > > This adjustment isn't a mute, change it to a 'volume' with an > associated dB range. > > With this change, this adjustment now appears in 'alsamixer' as a > standard volume slider which can have two positions. > > Signed-off-by: Christophe Leroy (CS GROUP) <chleroy@kernel.org> > --- > sound/soc/codecs/peb2466.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) Acked-by: Herve Codina <herve.codina@bootlin.com> Best regards, Hervé
© 2016 - 2026 Red Hat, Inc.