|
@@ -38,21 +38,26 @@
|
|
|
#define SNDRV_CTL_TLVT_DB_MINMAX 4 /* dB scale with min/max */
|
|
|
#define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5 /* dB scale with min/max with mute */
|
|
|
|
|
|
+#define TLV_ITEM(type, ...) \
|
|
|
+ (type), TLV_LENGTH(__VA_ARGS__), __VA_ARGS__
|
|
|
+#define TLV_LENGTH(...) \
|
|
|
+ ((unsigned int)sizeof((const unsigned int[]) { __VA_ARGS__ }))
|
|
|
+
|
|
|
#define TLV_DB_SCALE_MASK 0xffff
|
|
|
#define TLV_DB_SCALE_MUTE 0x10000
|
|
|
#define TLV_DB_SCALE_ITEM(min, step, mute) \
|
|
|
- SNDRV_CTL_TLVT_DB_SCALE, 2 * sizeof(unsigned int), \
|
|
|
- (min), ((step) & TLV_DB_SCALE_MASK) | ((mute) ? TLV_DB_SCALE_MUTE : 0)
|
|
|
+ TLV_ITEM(SNDRV_CTL_TLVT_DB_SCALE, \
|
|
|
+ (min), \
|
|
|
+ ((step) & TLV_DB_SCALE_MASK) | \
|
|
|
+ ((mute) ? TLV_DB_SCALE_MUTE : 0))
|
|
|
#define DECLARE_TLV_DB_SCALE(name, min, step, mute) \
|
|
|
unsigned int name[] = { TLV_DB_SCALE_ITEM(min, step, mute) }
|
|
|
|
|
|
/* dB scale specified with min/max values instead of step */
|
|
|
#define TLV_DB_MINMAX_ITEM(min_dB, max_dB) \
|
|
|
- SNDRV_CTL_TLVT_DB_MINMAX, 2 * sizeof(unsigned int), \
|
|
|
- (min_dB), (max_dB)
|
|
|
+ TLV_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
|
|
|
#define TLV_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
|
|
|
- SNDRV_CTL_TLVT_DB_MINMAX_MUTE, 2 * sizeof(unsigned int), \
|
|
|
- (min_dB), (max_dB)
|
|
|
+ TLV_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
|
|
|
#define DECLARE_TLV_DB_MINMAX(name, min_dB, max_dB) \
|
|
|
unsigned int name[] = { TLV_DB_MINMAX_ITEM(min_dB, max_dB) }
|
|
|
#define DECLARE_TLV_DB_MINMAX_MUTE(name, min_dB, max_dB) \
|
|
@@ -60,8 +65,7 @@
|
|
|
|
|
|
/* 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)
|
|
|
+ TLV_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
|
|
|
#define DECLARE_TLV_DB_LINEAR(name, min_dB, max_dB) \
|
|
|
unsigned int name[] = { TLV_DB_LINEAR_ITEM(min_dB, max_dB) }
|
|
|
|