• Takashi Sakamoto's avatar
    ASoC: stac9766: fix wrong usage of DECLARE_TLV_DB_LINEAR() · f2b2f6dc
    Takashi Sakamoto authored
    As long as reading datasheet of STAC9766/9767, this driver includes wrong
    usage of DECLARE_TLV_DB_LINEAR().
    
    In "8.1.2. Master Volume Registers", attenuation of lineout volumes is
    represented in 5 bits by -1.5 dB/step from 0 to -46.5 dB. Thus,
    'master_tlv' should be dB step representation.
    
    In "8.1.14. Record Gain", gain of volumes is represented in 4 bits by
    1.5 dB/step from 0 to 22.5 dB. Thus, 'record_tlv' should be dB step
    representation.
    
    In "8.1.5. PC BEEP Volume", attenuation of volume is represented in 4 bits
    by -3 dB/step from 0 to 45 dB. Thus, 'beep_tlv' should be dB step
    representation.
    
    In "8.1.7. Stereo or Mic Volume" and so on, gain of volumes is represented
    in 5 bits by -1.5 dB from 12 to -34.5 dB. Thus, 'mix_tlv' should be dB
    step representation.
    
    Totally, current implementation includes misuse of TLV-related macro.
    
    This commit replaces usage of DECLARE_TLV_DB_LINEAR() with
    SNDRV_CTL_TLVD_DECLARE_DB_SCALE(), to give proper information to
    applications in user land.
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarMark Brown <broonie@kernel.org>
    f2b2f6dc
stac9766.c 11.1 KB