1#ifndef __SOUND_TLV_H
2#define __SOUND_TLV_H
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#define SNDRV_CTL_TLVT_CONTAINER 0
35#define SNDRV_CTL_TLVT_DB_SCALE 1
36#define SNDRV_CTL_TLVT_DB_LINEAR 2
37#define SNDRV_CTL_TLVT_DB_RANGE 3
38#define SNDRV_CTL_TLVT_DB_MINMAX 4
39#define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5
40
41#define TLV_DB_SCALE_ITEM(min, step, mute) \
42 SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \
43 (min), ((step) & 0xffff) | ((mute) ? 0x10000 : 0)
44#define DECLARE_TLV_DB_SCALE(name, min, step, mute) \
45 unsigned int name[] = { TLV_DB_SCALE_ITEM(min, step, mute) }
46
47
48#define TLV_DB_MINMAX_ITEM(min_dB, max_dB) \
49 SNDRV_CTL_TLVT_DB_MINMAX, 2 * sizeof(unsigned int), \
50 (min_dB), (max_dB)
51#define TLV_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
52 SNDRV_CTL_TLVT_DB_MINMAX_MUTE, 2 * sizeof(unsigned int), \
53 (min_dB), (max_dB)
54#define DECLARE_TLV_DB_MINMAX(name, min_dB, max_dB) \
55 unsigned int name[] = { TLV_DB_MINMAX_ITEM(min_dB, max_dB) }
56#define DECLARE_TLV_DB_MINMAX_MUTE(name, min_dB, max_dB) \
57 unsigned int name[] = { TLV_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) }
58
59
60#define TLV_DB_LINEAR_ITEM(min_dB, max_dB) \
61 SNDRV_CTL_TLVT_DB_LINEAR, 2 * sizeof(unsigned int), \
62 (min_dB), (max_dB)
63#define DECLARE_TLV_DB_LINEAR(name, min_dB, max_dB) \
64 unsigned int name[] = { TLV_DB_LINEAR_ITEM(min_dB, max_dB) }
65
66
67
68
69#define TLV_DB_RANGE_HEAD(num) \
70 SNDRV_CTL_TLVT_DB_RANGE, 6 * (num) * sizeof(unsigned int)
71
72#define TLV_DB_GAIN_MUTE -9999999
73
74#endif
75