annotate CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/alsa/sound/uapi/tlv.h @ 69:33d812a61356

planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author jpayne
date Tue, 18 Mar 2025 17:55:14 -0400
parents
children
rev   line source
jpayne@69 1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
jpayne@69 2 /*
jpayne@69 3 * This program is free software; you can redistribute it and/or modify
jpayne@69 4 * it under the terms of the GNU General Public License as published by
jpayne@69 5 * the Free Software Foundation; either version 2 of the License, or
jpayne@69 6 * (at your option) any later version.
jpayne@69 7 *
jpayne@69 8 * This program is distributed in the hope that it will be useful,
jpayne@69 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
jpayne@69 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
jpayne@69 11 * GNU General Public License for more details.
jpayne@69 12 */
jpayne@69 13
jpayne@69 14 #ifndef __UAPI_SOUND_TLV_H
jpayne@69 15 #define __UAPI_SOUND_TLV_H
jpayne@69 16
jpayne@69 17 #define SNDRV_CTL_TLVT_CONTAINER 0 /* one level down - group of TLVs */
jpayne@69 18 #define SNDRV_CTL_TLVT_DB_SCALE 1 /* dB scale */
jpayne@69 19 #define SNDRV_CTL_TLVT_DB_LINEAR 2 /* linear volume */
jpayne@69 20 #define SNDRV_CTL_TLVT_DB_RANGE 3 /* dB range container */
jpayne@69 21 #define SNDRV_CTL_TLVT_DB_MINMAX 4 /* dB scale with min/max */
jpayne@69 22 #define SNDRV_CTL_TLVT_DB_MINMAX_MUTE 5 /* dB scale with min/max with mute */
jpayne@69 23
jpayne@69 24 /*
jpayne@69 25 * channel-mapping TLV items
jpayne@69 26 * TLV length must match with num_channels
jpayne@69 27 */
jpayne@69 28 #define SNDRV_CTL_TLVT_CHMAP_FIXED 0x101 /* fixed channel position */
jpayne@69 29 #define SNDRV_CTL_TLVT_CHMAP_VAR 0x102 /* channels freely swappable */
jpayne@69 30 #define SNDRV_CTL_TLVT_CHMAP_PAIRED 0x103 /* pair-wise swappable */
jpayne@69 31
jpayne@69 32 /*
jpayne@69 33 * TLV structure is right behind the struct snd_ctl_tlv:
jpayne@69 34 * unsigned int type - see SNDRV_CTL_TLVT_*
jpayne@69 35 * unsigned int length
jpayne@69 36 * .... data aligned to sizeof(unsigned int), use
jpayne@69 37 * block_length = (length + (sizeof(unsigned int) - 1)) &
jpayne@69 38 * ~(sizeof(unsigned int) - 1)) ....
jpayne@69 39 */
jpayne@69 40 #define SNDRV_CTL_TLVD_ITEM(type, ...) \
jpayne@69 41 (type), SNDRV_CTL_TLVD_LENGTH(__VA_ARGS__), __VA_ARGS__
jpayne@69 42 #define SNDRV_CTL_TLVD_LENGTH(...) \
jpayne@69 43 ((unsigned int)sizeof((const unsigned int[]) { __VA_ARGS__ }))
jpayne@69 44
jpayne@69 45 /* Accessor offsets for TLV data items */
jpayne@69 46 #define SNDRV_CTL_TLVO_TYPE 0
jpayne@69 47 #define SNDRV_CTL_TLVO_LEN 1
jpayne@69 48
jpayne@69 49 #define SNDRV_CTL_TLVD_CONTAINER_ITEM(...) \
jpayne@69 50 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_CONTAINER, __VA_ARGS__)
jpayne@69 51 #define SNDRV_CTL_TLVD_DECLARE_CONTAINER(name, ...) \
jpayne@69 52 unsigned int name[] = { \
jpayne@69 53 SNDRV_CTL_TLVD_CONTAINER_ITEM(__VA_ARGS__) \
jpayne@69 54 }
jpayne@69 55
jpayne@69 56 #define SNDRV_CTL_TLVD_DB_SCALE_MASK 0xffff
jpayne@69 57 #define SNDRV_CTL_TLVD_DB_SCALE_MUTE 0x10000
jpayne@69 58 #define SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
jpayne@69 59 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_SCALE, \
jpayne@69 60 (min), \
jpayne@69 61 ((step) & SNDRV_CTL_TLVD_DB_SCALE_MASK) | \
jpayne@69 62 ((mute) ? SNDRV_CTL_TLVD_DB_SCALE_MUTE : 0))
jpayne@69 63 #define SNDRV_CTL_TLVD_DECLARE_DB_SCALE(name, min, step, mute) \
jpayne@69 64 unsigned int name[] = { \
jpayne@69 65 SNDRV_CTL_TLVD_DB_SCALE_ITEM(min, step, mute) \
jpayne@69 66 }
jpayne@69 67
jpayne@69 68 /* Accessor offsets for min, mute and step items in dB scale type TLV */
jpayne@69 69 #define SNDRV_CTL_TLVO_DB_SCALE_MIN 2
jpayne@69 70 #define SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP 3
jpayne@69 71
jpayne@69 72 /* dB scale specified with min/max values instead of step */
jpayne@69 73 #define SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
jpayne@69 74 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX, (min_dB), (max_dB))
jpayne@69 75 #define SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
jpayne@69 76 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_MINMAX_MUTE, (min_dB), (max_dB))
jpayne@69 77 #define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX(name, min_dB, max_dB) \
jpayne@69 78 unsigned int name[] = { \
jpayne@69 79 SNDRV_CTL_TLVD_DB_MINMAX_ITEM(min_dB, max_dB) \
jpayne@69 80 }
jpayne@69 81 #define SNDRV_CTL_TLVD_DECLARE_DB_MINMAX_MUTE(name, min_dB, max_dB) \
jpayne@69 82 unsigned int name[] = { \
jpayne@69 83 SNDRV_CTL_TLVD_DB_MINMAX_MUTE_ITEM(min_dB, max_dB) \
jpayne@69 84 }
jpayne@69 85
jpayne@69 86 /* Accessor offsets for min, max items in db-minmax types of TLV. */
jpayne@69 87 #define SNDRV_CTL_TLVO_DB_MINMAX_MIN 2
jpayne@69 88 #define SNDRV_CTL_TLVO_DB_MINMAX_MAX 3
jpayne@69 89
jpayne@69 90 /* linear volume between min_dB and max_dB (.01dB unit) */
jpayne@69 91 #define SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
jpayne@69 92 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_LINEAR, (min_dB), (max_dB))
jpayne@69 93 #define SNDRV_CTL_TLVD_DECLARE_DB_LINEAR(name, min_dB, max_dB) \
jpayne@69 94 unsigned int name[] = { \
jpayne@69 95 SNDRV_CTL_TLVD_DB_LINEAR_ITEM(min_dB, max_dB) \
jpayne@69 96 }
jpayne@69 97
jpayne@69 98 /* Accessor offsets for min, max items in db-linear type of TLV. */
jpayne@69 99 #define SNDRV_CTL_TLVO_DB_LINEAR_MIN 2
jpayne@69 100 #define SNDRV_CTL_TLVO_DB_LINEAR_MAX 3
jpayne@69 101
jpayne@69 102 /* dB range container:
jpayne@69 103 * Items in dB range container must be ordered by their values and by their
jpayne@69 104 * dB values. This implies that larger values must correspond with larger
jpayne@69 105 * dB values (which is also required for all other mixer controls).
jpayne@69 106 */
jpayne@69 107 /* Each item is: <min> <max> <TLV> */
jpayne@69 108 #define SNDRV_CTL_TLVD_DB_RANGE_ITEM(...) \
jpayne@69 109 SNDRV_CTL_TLVD_ITEM(SNDRV_CTL_TLVT_DB_RANGE, __VA_ARGS__)
jpayne@69 110 #define SNDRV_CTL_TLVD_DECLARE_DB_RANGE(name, ...) \
jpayne@69 111 unsigned int name[] = { \
jpayne@69 112 SNDRV_CTL_TLVD_DB_RANGE_ITEM(__VA_ARGS__) \
jpayne@69 113 }
jpayne@69 114
jpayne@69 115 #define SNDRV_CTL_TLVD_DB_GAIN_MUTE -9999999
jpayne@69 116
jpayne@69 117 #endif