diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2011-05-08 12:24:46 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2011-05-08 19:45:26 -0400 |
commit | f3eee00da39cba3c8a4db7048458969c620ac6d8 (patch) | |
tree | 4e4f99fdc764dcb6a4cb84660ab12fa2ceefc067 | |
parent | 2a43801a76893286ead35e742e486591e75803a2 (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.c | 21 |
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 | ||
91 | static 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 | |||
97 | static const DECLARE_TLV_DB_SCALE(ssm260x_inpga_tlv, -3450, 150, 0); | ||
98 | static const DECLARE_TLV_DB_SCALE(ssm260x_sidetone_tlv, -1500, 300, 0); | ||
99 | |||
90 | static const struct snd_kcontrol_new ssm260x_snd_controls[] = { | 100 | static const struct snd_kcontrol_new ssm260x_snd_controls[] = { |
91 | SOC_DOUBLE_R("Capture Volume", SSM2602_LINVOL, SSM2602_RINVOL, 0, 31, 0), | 101 | SOC_DOUBLE_R_TLV("Capture Volume", SSM2602_LINVOL, SSM2602_RINVOL, 0, 45, 0, |
102 | ssm260x_inpga_tlv), | ||
92 | SOC_DOUBLE_R("Capture Switch", SSM2602_LINVOL, SSM2602_RINVOL, 7, 1, 1), | 103 | SOC_DOUBLE_R("Capture Switch", SSM2602_LINVOL, SSM2602_RINVOL, 7, 1, 1), |
93 | 104 | ||
94 | SOC_SINGLE("ADC High Pass Filter Switch", SSM2602_APDIGI, 0, 1, 1), | 105 | SOC_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 | ||
100 | static const struct snd_kcontrol_new ssm2602_snd_controls[] = { | 111 | static const struct snd_kcontrol_new ssm2602_snd_controls[] = { |
101 | SOC_DOUBLE_R("Master Playback Volume", SSM2602_LOUT1V, SSM2602_ROUT1V, | 112 | SOC_DOUBLE_R_TLV("Master Playback Volume", SSM2602_LOUT1V, SSM2602_ROUT1V, |
102 | 0, 127, 0), | 113 | 0, 127, 0, ssm260x_outmix_tlv), |
103 | SOC_DOUBLE_R("Master Playback ZC Switch", SSM2602_LOUT1V, SSM2602_ROUT1V, | 114 | SOC_DOUBLE_R("Master Playback ZC Switch", SSM2602_LOUT1V, SSM2602_ROUT1V, |
104 | 7, 1, 0), | 115 | 7, 1, 0), |
105 | 116 | SOC_SINGLE_TLV("Sidetone Playback Volume", SSM2602_APANA, 6, 3, 1, | |
106 | SOC_SINGLE("Sidetone Playback Volume", SSM2602_APANA, 6, 3, 1), | 117 | ssm260x_sidetone_tlv), |
107 | 118 | ||
108 | SOC_SINGLE("Mic Boost (+20dB)", SSM2602_APANA, 0, 1, 0), | 119 | SOC_SINGLE("Mic Boost (+20dB)", SSM2602_APANA, 0, 1, 0), |
109 | SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 8, 1, 0), | 120 | SOC_SINGLE("Mic Boost2 (+20dB)", SSM2602_APANA, 8, 1, 0), |