diff options
author | Giuliano Pochini <pochini@shiny.it> | 2006-11-24 07:03:58 -0500 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-02-09 03:01:47 -0500 |
commit | 048b945077bdc7e8dff5d5810ff2a0ced3590ca9 (patch) | |
tree | 759b12cfa42c737ce7390b9cb4b1c60a70204c78 | |
parent | d1d985f019c3b290e09881b7b23abdc87aee2895 (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.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/darla24.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/echo3g.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/echoaudio.c | 18 | ||||
-rw-r--r-- | sound/pci/echoaudio/gina20.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/gina24.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigo.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigodj.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/indigoio.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/layla20.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/layla24.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/mia.c | 1 | ||||
-rw-r--r-- | sound/pci/echoaudio/mona.c | 1 |
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); | |||
34 | MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard."); | 34 | MODULE_PARM_DESC(enable, "Enable " ECHOCARD_NAME " soundcard."); |
35 | 35 | ||
36 | static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999}; | 36 | static unsigned int channels_list[10] = {1, 2, 4, 6, 8, 10, 12, 14, 16, 999999}; |
37 | static DECLARE_TLV_DB_SCALE(db_scale_output_gain, -12800, 100, 1); | ||
37 | 38 | ||
38 | static int get_firmware(const struct firmware **fw_entry, | 39 | static 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, | |||
1011 | static struct snd_kcontrol_new snd_echo_line_output_gain __devinitdata = { | 1012 | static 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 |
1019 | static struct snd_kcontrol_new snd_echo_pcm_output_gain __devinitdata = { | 1022 | static 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 | ||
1088 | static DECLARE_TLV_DB_SCALE(db_scale_input_gain, -2500, 50, 0); | ||
1089 | |||
1083 | static struct snd_kcontrol_new snd_echo_line_input_gain __devinitdata = { | 1090 | static 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, | |||
1277 | static struct snd_kcontrol_new snd_echo_monitor_mixer __devinitdata = { | 1286 | static 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, | |||
1343 | static struct snd_kcontrol_new snd_echo_vmixer __devinitdata = { | 1354 | static 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, | |||
1753 | static struct snd_kcontrol_new snd_echo_vumeters __devinitdata = { | 1766 | static 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> |