diff options
author | Takashi Iwai <tiwai@suse.de> | 2006-09-06 06:15:34 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2006-09-23 04:46:11 -0400 |
commit | 55a29af5ed5d914f017e6a7c613a4d7cc34f82d9 (patch) | |
tree | 74f44500e741a0ad0cbfd5bb182b3d98da107401 | |
parent | 311e70a4741c736795da082da7290164d9cf3726 (diff) |
[ALSA] Add definition of TLV dB range compound
Added the definition of TLV dB range compound. It contains one or
more dB-range or linear-volume TLV entries with min/max ranges.
Used for volume controls with non-linear curves.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
-rw-r--r-- | include/sound/tlv.h | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/include/sound/tlv.h b/include/sound/tlv.h index 7905841643df..d93a96b91875 100644 --- a/include/sound/tlv.h +++ b/include/sound/tlv.h | |||
@@ -34,19 +34,26 @@ | |||
34 | #define SNDRV_CTL_TLVT_CONTAINER 0 /* one level down - group of TLVs */ | 34 | #define SNDRV_CTL_TLVT_CONTAINER 0 /* one level down - group of TLVs */ |
35 | #define SNDRV_CTL_TLVT_DB_SCALE 1 /* dB scale */ | 35 | #define SNDRV_CTL_TLVT_DB_SCALE 1 /* dB scale */ |
36 | #define SNDRV_CTL_TLVT_DB_LINEAR 2 /* linear volume */ | 36 | #define SNDRV_CTL_TLVT_DB_LINEAR 2 /* linear volume */ |
37 | #define SNDRV_CTL_TLVT_DB_RANGE 3 /* dB range container */ | ||
37 | 38 | ||
39 | #define TLV_DB_SCALE_ITEM(min, step, mute) \ | ||
40 | SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \ | ||
41 | (min), ((step) & 0xffff) | ((mute) ? 0x10000 : 0) | ||
38 | #define DECLARE_TLV_DB_SCALE(name, min, step, mute) \ | 42 | #define DECLARE_TLV_DB_SCALE(name, min, step, mute) \ |
39 | unsigned int name[] = { \ | 43 | unsigned int name[] = { TLV_DB_SCALE_ITEM(min, step, mute) } |
40 | SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \ | ||
41 | (min), ((step) & 0xffff) | ((mute) ? 0x10000 : 0) \ | ||
42 | } | ||
43 | 44 | ||
44 | /* linear volume between min_dB and max_dB (.01dB unit) */ | 45 | /* linear volume between min_dB and max_dB (.01dB unit) */ |
46 | #define TLV_DB_LINEAR_ITEM(min_dB, max_dB) \ | ||
47 | SNDRV_CTL_TLVT_DB_LINEAR, 2 * sizeof(unsigned int), \ | ||
48 | (min_dB), (max_dB) | ||
45 | #define DECLARE_TLV_DB_LINEAR(name, min_dB, max_dB) \ | 49 | #define DECLARE_TLV_DB_LINEAR(name, min_dB, max_dB) \ |
46 | unsigned int name[] = { \ | 50 | unsigned int name[] = { TLV_DB_LINEAR_ITEM(min_dB, max_dB) } |
47 | SNDRV_CTL_TLVT_DB_LINEAR, 2 * sizeof(unsigned int), \ | 51 | |
48 | (min_dB), (max_dB) \ | 52 | /* dB range container */ |
49 | } | 53 | /* Each item is: <min> <max> <TLV> */ |
54 | /* The below assumes that each item TLV is 4 words like DB_SCALE or LINEAR */ | ||
55 | #define TLV_DB_RANGE_HEAD(num) \ | ||
56 | SNDRV_CTL_TLVT_DB_RANGE, 6 * (num) * sizeof(unsigned int) | ||
50 | 57 | ||
51 | #define TLV_DB_GAIN_MUTE -9999999 | 58 | #define TLV_DB_GAIN_MUTE -9999999 |
52 | 59 | ||