aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2011-05-08 12:24:46 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-05-08 19:45:26 -0400
commitf3eee00da39cba3c8a4db7048458969c620ac6d8 (patch)
tree4e4f99fdc764dcb6a4cb84660ab12fa2ceefc067
parent2a43801a76893286ead35e742e486591e75803a2 (diff)
ASoC: SSM2602: Provide dB ranges for the volume controls
Also fix the maximum value for the capture volume control. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Acked-by: Liam Girdwood <lrg@ti.com> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
-rw-r--r--sound/soc/codecs/ssm2602.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c
index 763d392f12a1..70099c9d63c7 100644
--- a/sound/soc/codecs/ssm2602.c
+++ b/sound/soc/codecs/ssm2602.c
@@ -40,6 +40,7 @@
40#include <sound/pcm_params.h> 40#include <sound/pcm_params.h>
41#include <sound/soc.h> 41#include <sound/soc.h>
42#include <sound/initval.h> 42#include <sound/initval.h>
43#include <sound/tlv.h>
43 44
44#include "ssm2602.h" 45#include "ssm2602.h"
45 46
@@ -87,8 +88,18 @@ static const struct soc_enum ssm2602_enum[] = {
87 SOC_ENUM_SINGLE(SSM2602_APDIGI, 1, 4, ssm2602_deemph), 88 SOC_ENUM_SINGLE(SSM2602_APDIGI, 1, 4, ssm2602_deemph),
88}; 89};
89 90
91static const unsigned int ssm260x_outmix_tlv[] = {
92 TLV_DB_RANGE_HEAD(2),
93 0, 47, TLV_DB_SCALE_ITEM(TLV_DB_GAIN_MUTE, 0, 0),
94 48, 127, TLV_DB_SCALE_ITEM(-7400, 100, 0),
95};
96
97static const DECLARE_TLV_DB_SCALE(ssm260x_inpga_tlv, -3450, 150, 0);
98static const DECLARE_TLV_DB_SCALE(ssm260x_sidetone_tlv, -1500, 300, 0);
99
90static const struct snd_kcontrol_new ssm260x_snd_controls[] = { 100static const struct snd_kcontrol_new ssm260x_snd_controls[] = {
91SOC_DOUBLE_R("Capture Volume", SSM2602_LINVOL, SSM2602_RINVOL, 0, 31, 0), 101SOC_DOUBLE_R_TLV("Capture Volume", SSM2602_LINVOL, SSM2602_RINVOL, 0, 45, 0,
102 ssm260x_inpga_tlv),
92SOC_DOUBLE_R("Capture Switch", SSM2602_LINVOL, SSM2602_RINVOL, 7, 1, 1), 103SOC_DOUBLE_R("Capture Switch", SSM2602_LINVOL, SSM2602_RINVOL, 7, 1, 1),
93 104
94SOC_SINGLE("ADC High Pass Filter Switch", SSM2602_APDIGI, 0, 1, 1), 105SOC_SINGLE("ADC High Pass Filter Switch", SSM2602_APDIGI, 0, 1, 1),
@@ -98,12 +109,12 @@ SOC_ENUM("Playback De-emphasis", ssm2602_enum[1]),
98}; 109};
99 110
100static const struct snd_kcontrol_new ssm2602_snd_controls[] = { 111static const struct snd_kcontrol_new ssm2602_snd_controls[] = {
101SOC_DOUBLE_R("Master Playback Volume", SSM2602_LOUT1V, SSM2602_ROUT1V, 112SOC_DOUBLE_R_TLV("Master Playback Volume", SSM2602_LOUT1V, SSM2602_ROUT1V,
102 0, 127, 0), 113 0, 127, 0, ssm260x_outmix_tlv),
103SOC_DOUBLE_R("Master Playback ZC Switch", SSM2602_LOUT1V, SSM2602_ROUT1V, 114SOC_DOUBLE_R("Master Playback ZC Switch", SSM2602_LOUT1V, SSM2602_ROUT1V,
104 7, 1, 0), 115 7, 1, 0),
105 116SOC_SINGLE_TLV("Sidetone Playback Volume", SSM2602_APANA, 6, 3, 1,
106SOC_SINGLE("Sidetone Playback Volume", SSM2602_APANA, 6, 3, 1), 117 ssm260x_sidetone_tlv),
107 118
108SOC_SINGLE("Mic Boost (+20dB)", SSM2602_APANA, 0, 1, 0), 119SOC_SINGLE("Mic Boost (+20dB)", SSM2602_APANA, 0, 1, 0),
109SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 8, 1, 0), 120SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 8, 1, 0),