|
@@ -34,19 +34,26 @@
|
|
|
#define SNDRV_CTL_TLVT_CONTAINER 0 /* one level down - group of TLVs */
|
|
|
#define SNDRV_CTL_TLVT_DB_SCALE 1 /* dB scale */
|
|
|
#define SNDRV_CTL_TLVT_DB_LINEAR 2 /* linear volume */
|
|
|
+#define SNDRV_CTL_TLVT_DB_RANGE 3 /* dB range container */
|
|
|
|
|
|
+#define TLV_DB_SCALE_ITEM(min, step, mute) \
|
|
|
+ SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \
|
|
|
+ (min), ((step) & 0xffff) | ((mute) ? 0x10000 : 0)
|
|
|
#define DECLARE_TLV_DB_SCALE(name, min, step, mute) \
|
|
|
-unsigned int name[] = { \
|
|
|
- SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \
|
|
|
- (min), ((step) & 0xffff) | ((mute) ? 0x10000 : 0) \
|
|
|
-}
|
|
|
+ unsigned int name[] = { TLV_DB_SCALE_ITEM(min, step, mute) }
|
|
|
|
|
|
/* linear volume between min_dB and max_dB (.01dB unit) */
|
|
|
+#define TLV_DB_LINEAR_ITEM(min_dB, max_dB) \
|
|
|
+ SNDRV_CTL_TLVT_DB_LINEAR, 2 * sizeof(unsigned int), \
|
|
|
+ (min_dB), (max_dB)
|
|
|
#define DECLARE_TLV_DB_LINEAR(name, min_dB, max_dB) \
|
|
|
-unsigned int name[] = { \
|
|
|
- SNDRV_CTL_TLVT_DB_LINEAR, 2 * sizeof(unsigned int), \
|
|
|
- (min_dB), (max_dB) \
|
|
|
-}
|
|
|
+ unsigned int name[] = { TLV_DB_LINEAR_ITEM(min_dB, max_dB) }
|
|
|
+
|
|
|
+/* dB range container */
|
|
|
+/* Each item is: <min> <max> <TLV> */
|
|
|
+/* The below assumes that each item TLV is 4 words like DB_SCALE or LINEAR */
|
|
|
+#define TLV_DB_RANGE_HEAD(num) \
|
|
|
+ SNDRV_CTL_TLVT_DB_RANGE, 6 * (num) * sizeof(unsigned int)
|
|
|
|
|
|
#define TLV_DB_GAIN_MUTE -9999999
|
|
|
|