aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiuliano Pochini <pochini@shiny.it>2006-11-24 07:03:58 -0500
committerJaroslav Kysela <perex@suse.cz>2007-02-09 03:01:47 -0500
commit048b945077bdc7e8dff5d5810ff2a0ced3590ca9 (patch)
tree759b12cfa42c737ce7390b9cb4b1c60a70204c78
parentd1d985f019c3b290e09881b7b23abdc87aee2895 (diff)
[ALSA] echoaudio, add TLV support
This patch adds TLV support to the echoaudio driver. All gains are in the range -127dB to +6dB with steps of 1dB, and -128 is mute. VU-meters levels go from -128 to 0dB. The input gain of the Layla20 ranges from -25dB to +25dB in steps of 0.5dB. Signed-off-by: Giuliano Pochini <pochini@shiny.it> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r--sound/pci/echoaudio/darla20.c1
-rw-r--r--sound/pci/echoaudio/darla24.c1
-rw-r--r--sound/pci/echoaudio/echo3g.c1
-rw-r--r--sound/pci/echoaudio/echoaudio.c18
-rw-r--r--sound/pci/echoaudio/gina20.c1
-rw-r--r--sound/pci/echoaudio/gina24.c1
-rw-r--r--sound/pci/echoaudio/indigo.c1
-rw-r--r--sound/pci/echoaudio/indigodj.c1
-rw-r--r--sound/pci/echoaudio/indigoio.c1
-rw-r--r--sound/pci/echoaudio/layla20.c1
-rw-r--r--sound/pci/echoaudio/layla24.c1
-rw-r--r--sound/pci/echoaudio/mia.c1
-rw-r--r--sound/pci/echoaudio/mona.c1
13 files changed, 29 insertions, 1 deletions
diff --git a/sound/pci/echoaudio/darla20.c b/sound/pci/echoaudio/darla20.c
index b7108e29a668..8e7fe033270f 100644
--- a/sound/pci/echoaudio/darla20.c
+++ b/sound/pci/echoaudio/darla20.c
@@ -47,6 +47,7 @@
47#include <sound/core.h> 47#include <sound/core.h>
48#include <sound/info.h> 48#include <sound/info.h>
49#include <sound/control.h> 49#include <sound/control.h>
50#include <sound/tlv.h>
50#include <sound/pcm.h> 51#include <sound/pcm.h>
51#include <sound/pcm_params.h> 52#include <sound/pcm_params.h>
52#include <sound/asoundef.h> 53#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/darla24.c b/sound/pci/echoaudio/darla24.c
index e59a982ee361..a13c623eb999 100644
--- a/sound/pci/echoaudio/darla24.c
+++ b/sound/pci/echoaudio/darla24.c
@@ -51,6 +51,7 @@
51#include <sound/core.h> 51#include <sound/core.h>
52#include <sound/info.h> 52#include <sound/info.h>
53#include <sound/control.h> 53#include <sound/control.h>
54#include <sound/tlv.h>
54#include <sound/pcm.h> 55#include <sound/pcm.h>
55#include <sound/pcm_params.h> 56#include <sound/pcm_params.h>
56#include <sound/asoundef.h> 57#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/echo3g.c b/sound/pci/echoaudio/echo3g.c
index 12099fe1547d..8fb15823aca5 100644
--- a/sound/pci/echoaudio/echo3g.c
+++ b/sound/pci/echoaudio/echo3g.c
@@ -58,6 +58,7 @@
58#include <sound/core.h> 58#include <sound/core.h>
59#include <sound/info.h> 59#include <sound/info.h>
60#include <sound/control.h> 60#include <sound/control.h>
61#include <sound/tlv.h>
61#include <sound/pcm.h> 62#include <sound/pcm.h>
62#include <sound/pcm_params.h> 63#include <sound/pcm_params.h>
63#include <sound/asoundef.h> 64#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/echoaudio.c b/sound/pci/echoaudio/echoaudio.c
index 047e0b5bf15d..3410bd4450ad 100644
--- a/sound/pci/echoaudio/echoaudio.c
+++ b/sound/pci/echoaudio/echoaudio.c
@@ -34,6 +34,7 @@ module_param_array(enable, bool, NULL, 0444);
34MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard."); 34MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard.");
35 35
36static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999}; 36static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999};
37static DECLARE_TLV_DB_SCALE(db_scale_output_gain, -12800, 100, 1);
37 38
38static int get_firmware(const struct firmware **fw_entry, 39static int get_firmware(const struct firmware **fw_entry,
39 const struct firmware *frm, struct echoaudio *chip) 40 const struct firmware *frm, struct echoaudio *chip)
@@ -1011,17 +1012,21 @@ static int snd_echo_output_gain_put(struct snd_kcontrol *kcontrol,
1011static struct snd_kcontrol_new snd_echo_line_output_gain __devinitdata = { 1012static struct snd_kcontrol_new snd_echo_line_output_gain __devinitdata = {
1012 .name = "Line Playback Volume", 1013 .name = "Line Playback Volume",
1013 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1014 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1015 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1014 .info = snd_echo_output_gain_info, 1016 .info = snd_echo_output_gain_info,
1015 .get = snd_echo_output_gain_get, 1017 .get = snd_echo_output_gain_get,
1016 .put = snd_echo_output_gain_put, 1018 .put = snd_echo_output_gain_put,
1019 .tlv = {.p = db_scale_output_gain},
1017}; 1020};
1018#else 1021#else
1019static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = { 1022static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = {
1020 .name = "PCM Playback Volume", 1023 .name = "PCM Playback Volume",
1021 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1024 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1025 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1022 .info = snd_echo_output_gain_info, 1026 .info = snd_echo_output_gain_info,
1023 .get = snd_echo_output_gain_get, 1027 .get = snd_echo_output_gain_get,
1024 .put = snd_echo_output_gain_put, 1028 .put = snd_echo_output_gain_put,
1029 .tlv = {.p = db_scale_output_gain},
1025}; 1030};
1026#endif 1031#endif
1027 1032
@@ -1080,12 +1085,16 @@ static int snd_echo_input_gain_put(struct snd_kcontrol *kcontrol,
1080 return changed; 1085 return changed;
1081} 1086}
1082 1087
1088static DECLARE_TLV_DB_SCALE(db_scale_input_gain, -2500, 50, 0);
1089
1083static struct snd_kcontrol_new snd_echo_line_input_gain __devinitdata = { 1090static struct snd_kcontrol_new snd_echo_line_input_gain __devinitdata = {
1084 .name = "Line Capture Volume", 1091 .name = "Line Capture Volume",
1085 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1092 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1093 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1086 .info = snd_echo_input_gain_info, 1094 .info = snd_echo_input_gain_info,
1087 .get = snd_echo_input_gain_get, 1095 .get = snd_echo_input_gain_get,
1088 .put = snd_echo_input_gain_put, 1096 .put = snd_echo_input_gain_put,
1097 .tlv = {.p = db_scale_input_gain},
1089}; 1098};
1090 1099
1091#endif /* ECHOCARD_HAS_INPUT_GAIN */ 1100#endif /* ECHOCARD_HAS_INPUT_GAIN */
@@ -1277,9 +1286,11 @@ static int snd_echo_mixer_put(struct snd_kcontrol *kcontrol,
1277static struct snd_kcontrol_new snd_echo_monitor_mixer __devinitdata = { 1286static struct snd_kcontrol_new snd_echo_monitor_mixer __devinitdata = {
1278 .name = "Monitor Mixer Volume", 1287 .name = "Monitor Mixer Volume",
1279 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1288 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1289 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1280 .info = snd_echo_mixer_info, 1290 .info = snd_echo_mixer_info,
1281 .get = snd_echo_mixer_get, 1291 .get = snd_echo_mixer_get,
1282 .put = snd_echo_mixer_put, 1292 .put = snd_echo_mixer_put,
1293 .tlv = {.p = db_scale_output_gain},
1283}; 1294};
1284 1295
1285#endif /* ECHOCARD_HAS_MONITOR */ 1296#endif /* ECHOCARD_HAS_MONITOR */
@@ -1343,9 +1354,11 @@ static int snd_echo_vmixer_put(struct snd_kcontrol *kcontrol,
1343static struct snd_kcontrol_new snd_echo_vmixer __devinitdata = { 1354static struct snd_kcontrol_new snd_echo_vmixer __devinitdata = {
1344 .name = "VMixer Volume", 1355 .name = "VMixer Volume",
1345 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1356 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1357 .access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1346 .info = snd_echo_vmixer_info, 1358 .info = snd_echo_vmixer_info,
1347 .get = snd_echo_vmixer_get, 1359 .get = snd_echo_vmixer_get,
1348 .put = snd_echo_vmixer_put, 1360 .put = snd_echo_vmixer_put,
1361 .tlv = {.p = db_scale_output_gain},
1349}; 1362};
1350 1363
1351#endif /* ECHOCARD_HAS_VMIXER */ 1364#endif /* ECHOCARD_HAS_VMIXER */
@@ -1753,9 +1766,12 @@ static int snd_echo_vumeters_get(struct snd_kcontrol *kcontrol,
1753static struct snd_kcontrol_new snd_echo_vumeters __devinitdata = { 1766static struct snd_kcontrol_new snd_echo_vumeters __devinitdata = {
1754 .name = "VU-meters", 1767 .name = "VU-meters",
1755 .iface = SNDRV_CTL_ELEM_IFACE_MIXER, 1768 .iface = SNDRV_CTL_ELEM_IFACE_MIXER,
1756 .access = SNDRV_CTL_ELEM_ACCESS_READ | SNDRV_CTL_ELEM_ACCESS_VOLATILE, 1769 .access = SNDRV_CTL_ELEM_ACCESS_READ |
1770 SNDRV_CTL_ELEM_ACCESS_VOLATILE |
1771 SNDRV_CTL_ELEM_ACCESS_TLV_READ,
1757 .info = snd_echo_vumeters_info, 1772 .info = snd_echo_vumeters_info,
1758 .get = snd_echo_vumeters_get, 1773 .get = snd_echo_vumeters_get,
1774 .tlv = {.p = db_scale_output_gain},
1759}; 1775};
1760 1776
1761 1777
diff --git a/sound/pci/echoaudio/gina20.c b/sound/pci/echoaudio/gina20.c
index 29d6d12f80ca..af4d32026e4a 100644
--- a/sound/pci/echoaudio/gina20.c
+++ b/sound/pci/echoaudio/gina20.c
@@ -51,6 +51,7 @@
51#include <sound/core.h> 51#include <sound/core.h>
52#include <sound/info.h> 52#include <sound/info.h>
53#include <sound/control.h> 53#include <sound/control.h>
54#include <sound/tlv.h>
54#include <sound/pcm.h> 55#include <sound/pcm.h>
55#include <sound/pcm_params.h> 56#include <sound/pcm_params.h>
56#include <sound/asoundef.h> 57#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/gina24.c b/sound/pci/echoaudio/gina24.c
index e464d720d0bd..9ff454a947ed 100644
--- a/sound/pci/echoaudio/gina24.c
+++ b/sound/pci/echoaudio/gina24.c
@@ -57,6 +57,7 @@
57#include <sound/core.h> 57#include <sound/core.h>
58#include <sound/info.h> 58#include <sound/info.h>
59#include <sound/control.h> 59#include <sound/control.h>
60#include <sound/tlv.h>
60#include <sound/pcm.h> 61#include <sound/pcm.h>
61#include <sound/pcm_params.h> 62#include <sound/pcm_params.h>
62#include <sound/asoundef.h> 63#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/indigo.c b/sound/pci/echoaudio/indigo.c
index bfd2467099ac..37eb726fd03d 100644
--- a/sound/pci/echoaudio/indigo.c
+++ b/sound/pci/echoaudio/indigo.c
@@ -49,6 +49,7 @@
49#include <sound/core.h> 49#include <sound/core.h>
50#include <sound/info.h> 50#include <sound/info.h>
51#include <sound/control.h> 51#include <sound/control.h>
52#include <sound/tlv.h>
52#include <sound/pcm.h> 53#include <sound/pcm.h>
53#include <sound/pcm_params.h> 54#include <sound/pcm_params.h>
54#include <sound/asoundef.h> 55#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/indigodj.c b/sound/pci/echoaudio/indigodj.c
index 8ed7ff1fd875..dc8b91824181 100644
--- a/sound/pci/echoaudio/indigodj.c
+++ b/sound/pci/echoaudio/indigodj.c
@@ -49,6 +49,7 @@
49#include <sound/core.h> 49#include <sound/core.h>
50#include <sound/info.h> 50#include <sound/info.h>
51#include <sound/control.h> 51#include <sound/control.h>
52#include <sound/tlv.h>
52#include <sound/pcm.h> 53#include <sound/pcm.h>
53#include <sound/pcm_params.h> 54#include <sound/pcm_params.h>
54#include <sound/asoundef.h> 55#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/indigoio.c b/sound/pci/echoaudio/indigoio.c
index a8788e959171..eadf3263453a 100644
--- a/sound/pci/echoaudio/indigoio.c
+++ b/sound/pci/echoaudio/indigoio.c
@@ -50,6 +50,7 @@
50#include <sound/core.h> 50#include <sound/core.h>
51#include <sound/info.h> 51#include <sound/info.h>
52#include <sound/control.h> 52#include <sound/control.h>
53#include <sound/tlv.h>
53#include <sound/pcm.h> 54#include <sound/pcm.h>
54#include <sound/pcm_params.h> 55#include <sound/pcm_params.h>
55#include <sound/asoundef.h> 56#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/layla20.c b/sound/pci/echoaudio/layla20.c
index e503d74b3ba9..6cede497579e 100644
--- a/sound/pci/echoaudio/layla20.c
+++ b/sound/pci/echoaudio/layla20.c
@@ -56,6 +56,7 @@
56#include <sound/core.h> 56#include <sound/core.h>
57#include <sound/info.h> 57#include <sound/info.h>
58#include <sound/control.h> 58#include <sound/control.h>
59#include <sound/tlv.h>
59#include <sound/pcm.h> 60#include <sound/pcm.h>
60#include <sound/pcm_params.h> 61#include <sound/pcm_params.h>
61#include <sound/asoundef.h> 62#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/layla24.c b/sound/pci/echoaudio/layla24.c
index d4581fdc841c..44f735426aa0 100644
--- a/sound/pci/echoaudio/layla24.c
+++ b/sound/pci/echoaudio/layla24.c
@@ -58,6 +58,7 @@
58#include <sound/core.h> 58#include <sound/core.h>
59#include <sound/info.h> 59#include <sound/info.h>
60#include <sound/control.h> 60#include <sound/control.h>
61#include <sound/tlv.h>
61#include <sound/pcm.h> 62#include <sound/pcm.h>
62#include <sound/pcm_params.h> 63#include <sound/pcm_params.h>
63#include <sound/asoundef.h> 64#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/mia.c b/sound/pci/echoaudio/mia.c
index be40c64263d2..dc172d03ac3f 100644
--- a/sound/pci/echoaudio/mia.c
+++ b/sound/pci/echoaudio/mia.c
@@ -56,6 +56,7 @@
56#include <sound/core.h> 56#include <sound/core.h>
57#include <sound/info.h> 57#include <sound/info.h>
58#include <sound/control.h> 58#include <sound/control.h>
59#include <sound/tlv.h>
59#include <sound/pcm.h> 60#include <sound/pcm.h>
60#include <sound/pcm_params.h> 61#include <sound/pcm_params.h>
61#include <sound/asoundef.h> 62#include <sound/asoundef.h>
diff --git a/sound/pci/echoaudio/mona.c b/sound/pci/echoaudio/mona.c
index 5dc512add372..c856ed50dd9a 100644
--- a/sound/pci/echoaudio/mona.c
+++ b/sound/pci/echoaudio/mona.c
@@ -55,6 +55,7 @@
55#include <sound/core.h> 55#include <sound/core.h>
56#include <sound/info.h> 56#include <sound/info.h>
57#include <sound/control.h> 57#include <sound/control.h>
58#include <sound/tlv.h>
58#include <sound/pcm.h> 59#include <sound/pcm.h>
59#include <sound/pcm_params.h> 60#include <sound/pcm_params.h>
60#include <sound/asoundef.h> 61#include <sound/asoundef.h>