]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
ASoC: cs42l51: add additional ADC volume controls
authorGuillermo Rodríguez <guille.rodriguez@gmail.com>
Fri, 18 Sep 2020 13:43:16 +0000 (15:43 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 21 Sep 2020 16:28:09 +0000 (17:28 +0100)
Add volume controls for:
- Analog programmable gain amplifier (PGA) (-3 .. +12 dB)
- ADC attenuator (0 .. -96 dB)

Signed-off-by: Guillermo Rodríguez <guille.rodriguez@gmail.com>
Acked-by: David Rhodes <David.rhodes@cirrus.com>
Link: https://lore.kernel.org/r/20200918134317.22574-1-guille.rodriguez@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs42l51.c

index 764f2ef8f59df6f26fd8f2f9c3b085d800069179..097c4e8d9950535de336647a42fc37acc0016124 100644 (file)
@@ -122,6 +122,9 @@ static const char *chan_mix[] = {
        "R L",
 };
 
+static const DECLARE_TLV_DB_SCALE(pga_tlv, -300, 50, 0);
+static const DECLARE_TLV_DB_SCALE(adc_att_tlv, -9600, 100, 0);
+
 static SOC_ENUM_SINGLE_EXT_DECL(cs42l51_chan_mix, chan_mix);
 
 static const struct snd_kcontrol_new cs42l51_snd_controls[] = {
@@ -138,6 +141,12 @@ static const struct snd_kcontrol_new cs42l51_snd_controls[] = {
                        0, 0x19, 0x7F, adc_pcm_tlv),
        SOC_DOUBLE_R("ADC Mixer Switch",
                        CS42L51_ADCA_VOL, CS42L51_ADCB_VOL, 7, 1, 1),
+       SOC_DOUBLE_R_SX_TLV("ADC Attenuator Volume",
+                       CS42L51_ADCA_ATT, CS42L51_ADCB_ATT,
+                       0, 0xA0, 96, adc_att_tlv),
+       SOC_DOUBLE_R_SX_TLV("PGA Volume",
+                       CS42L51_ALC_PGA_CTL, CS42L51_ALC_PGB_CTL,
+                       0, 0x1A, 30, pga_tlv),
        SOC_SINGLE("Playback Deemphasis Switch", CS42L51_DAC_CTL, 3, 1, 0),
        SOC_SINGLE("Auto-Mute Switch", CS42L51_DAC_CTL, 2, 1, 0),
        SOC_SINGLE("Soft Ramp Switch", CS42L51_DAC_CTL, 1, 1, 0),