0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef __UAPI_SOUND_TLV_H
0015 #define __UAPI_SOUND_TLV_H
0016
0017 #define SNDRV_CTL_TLVT_CONTAINER 0
0018 #define SNDRV_CTL_TLVT_DB_SCALE 1
0019 #define SNDRV_CTL_TLVT_DB_LINEAR 2
0020 #define SNDRV_CTL_TLVT_DB_RANGE 3
0021 #define SNDRV_CTL_TLVT_DB_MINMAX 4
0022 #define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5
0023
0024
0025
0026
0027
0028 #define SNDRV_CTL_TLVT_CHMAP_FIXED 0x101
0029 #define SNDRV_CTL_TLVT_CHMAP_VAR 0x102
0030 #define SNDRV_CTL_TLVT_CHMAP_PAIRED 0x103
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040 #define SNDRV_CTL_TLVD_ITEM(type, ...) \
0041 (type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
0042 #define SNDRV_CTL_TLVD_LENGTH(...) \
0043 ((unsigned int)sizeof((const unsigned int[]) { __VA_ARGS__ }))
0044
0045
0046 #define SNDRV_CTL_TLVO_TYPE 0
0047 #define SNDRV_CTL_TLVO_LEN 1
0048
0049 #define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) \
0050 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
0051 #define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name, ...) \
0052 unsigned int name[] = { \
0053 SNDRV_CTL_TLVD_CONTAINER_ITEM(__VA_ARGS__) \
0054 }
0055
0056 #define SNDRV_CTL_TLVD_DB_SCALE_MASK 0xffff
0057 #define SNDRV_CTL_TLVD_DB_SCALE_MUTE 0x10000
0058 #define SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
0059 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_SCALE, \
0060 (min), \
0061 ((step) & SNDRV_CTL_TLVD_DB_SCALE_MASK) | \
0062 ((mute) ? SNDRV_CTL_TLVD_DB_SCALE_MUTE : 0))
0063 #define SNDRV_CTL_TLVD_DECLARE_DB_SCALE(name, min, step, mute) \
0064 unsigned int name[] = { \
0065 SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
0066 }
0067
0068
0069 #define SNDRV_CTL_TLVO_DB_SCALE_MIN 2
0070 #define SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP 3
0071
0072
0073 #define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
0074 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
0075 #define SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
0076 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
0077 #define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(name, min_dB, max_dB) \
0078 unsigned int name[] = { \
0079 SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
0080 }
0081 #define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX_MUTE(name, min_dB, max_dB) \
0082 unsigned int name[] = { \
0083 SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
0084 }
0085
0086
0087 #define SNDRV_CTL_TLVO_DB_MINMAX_MIN 2
0088 #define SNDRV_CTL_TLVO_DB_MINMAX_MAX 3
0089
0090
0091 #define SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
0092 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
0093 #define SNDRV_CTL_TLVD_DECLARE_DB_LINEAR(name, min_dB, max_dB) \
0094 unsigned int name[] = { \
0095 SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
0096 }
0097
0098
0099 #define SNDRV_CTL_TLVO_DB_LINEAR_MIN 2
0100 #define SNDRV_CTL_TLVO_DB_LINEAR_MAX 3
0101
0102
0103
0104
0105
0106
0107
0108 #define SNDRV_CTL_TLVD_DB_RANGE_ITEM(...) \
0109 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_RANGE, __VA_ARGS__)
0110 #define SNDRV_CTL_TLVD_DECLARE_DB_RANGE(name, ...) \
0111 unsigned int name[] = { \
0112 SNDRV_CTL_TLVD_DB_RANGE_ITEM(__VA_ARGS__) \
0113 }
0114
0115 #define SNDRV_CTL_TLVD_DB_GAIN_MUTE -9999999
0116
0117 #endif