Patch "ASoC: es8316: Increment max value for ALC Capture Target Volume control" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ASoC: es8316: Increment max value for ALC Capture Target Volume control

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     asoc-es8316-increment-max-value-for-alc-capture-targ.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 0f7a6439e027e137f4132c3baa654e89800ffca3
Author: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>
Date:   Tue May 30 21:11:38 2023 +0300

    ASoC: es8316: Increment max value for ALC Capture Target Volume control
    
    [ Upstream commit 6f073429037cd79d7311cd8236311c53f5ea8f01 ]
    
    The following error occurs when trying to restore a previously saved
    ALSA mixer state (tested on a Rock 5B board):
    
      $ alsactl --no-ucm -f /tmp/asound.state store hw:Analog
      $ alsactl --no-ucm -I -f /tmp/asound.state restore hw:Analog
      alsactl: set_control:1475: Cannot write control '2:0:0:ALC Capture Target Volume:0' : Invalid argument
    
    According to ES8316 datasheet, the register at address 0x2B, which is
    related to the above mixer control, contains by default the value 0xB0.
    Considering the corresponding ALC target bits (ALCLVL) are 7:4, the
    control is initialized with 11, which is one step above the maximum
    value allowed by the driver:
    
     ALCLVL | dB gain
     -------+--------
      0000  |  -16.5
      0001  |  -15.0
      0010  |  -13.5
      ....  |  .....
      0111  |   -6.0
      1000  |   -4.5
      1001  |   -3.0
      1010  |   -1.5
      ....  |  .....
      1111  |   -1.5
    
    The tests performed using the VU meter feature (--vumeter=TYPE) of
    arecord/aplay confirm the specs are correct and there is no measured
    gain if the 1011-1111 range would have been mapped to 0 dB:
    
     dB gain | VU meter %
     --------+-----------
       -6.0  |  30-31
       -4.5  |  35-36
       -3.0  |  42-43
       -1.5  |  50-51
        0.0  |  50-51
    
    Increment the max value allowed for ALC Capture Target Volume control,
    so that it matches the hardware default.  Additionally, update the
    related TLV to prevent an artificial extension of the dB gain range.
    
    Fixes: b8b88b70875a ("ASoC: add es8316 codec driver")
    Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230530181140.483936-2-cristian.ciocaltea@xxxxxxxxxxxxx
    Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/sound/soc/codecs/es8316.c b/sound/soc/codecs/es8316.c
index afd6d401e3d09..673aac91d717e 100644
--- a/sound/soc/codecs/es8316.c
+++ b/sound/soc/codecs/es8316.c
@@ -52,7 +52,12 @@ static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(dac_vol_tlv, -9600, 50, 1);
 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(adc_vol_tlv, -9600, 50, 1);
 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_max_gain_tlv, -650, 150, 0);
 static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_min_gain_tlv, -1200, 150, 0);
-static const SNDRV_CTL_TLVD_DECLARE_DB_SCALE(alc_target_tlv, -1650, 150, 0);
+
+static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(alc_target_tlv,
+	0, 10, TLV_DB_SCALE_ITEM(-1650, 150, 0),
+	11, 11, TLV_DB_SCALE_ITEM(-150, 0, 0),
+);
+
 static const SNDRV_CTL_TLVD_DECLARE_DB_RANGE(hpmixer_gain_tlv,
 	0, 4, TLV_DB_SCALE_ITEM(-1200, 150, 0),
 	8, 11, TLV_DB_SCALE_ITEM(-450, 150, 0),
@@ -115,7 +120,7 @@ static const struct snd_kcontrol_new es8316_snd_controls[] = {
 		       alc_max_gain_tlv),
 	SOC_SINGLE_TLV("ALC Capture Min Volume", ES8316_ADC_ALC2, 0, 28, 0,
 		       alc_min_gain_tlv),
-	SOC_SINGLE_TLV("ALC Capture Target Volume", ES8316_ADC_ALC3, 4, 10, 0,
+	SOC_SINGLE_TLV("ALC Capture Target Volume", ES8316_ADC_ALC3, 4, 11, 0,
 		       alc_target_tlv),
 	SOC_SINGLE("ALC Capture Hold Time", ES8316_ADC_ALC3, 0, 10, 0),
 	SOC_SINGLE("ALC Capture Decay Time", ES8316_ADC_ALC4, 4, 10, 0),



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux