0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #ifndef _UAPI__SOUND_ASOUND_H
0025 #define _UAPI__SOUND_ASOUND_H
0026
0027 #if defined(__KERNEL__) || defined(__linux__)
0028 #include <linux/types.h>
0029 #include <asm/byteorder.h>
0030 #else
0031 #include <endian.h>
0032 #include <sys/ioctl.h>
0033 #endif
0034
0035 #ifndef __KERNEL__
0036 #include <stdlib.h>
0037 #include <time.h>
0038 #endif
0039
0040
0041
0042
0043
0044 #define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor))
0045 #define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff)
0046 #define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff)
0047 #define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff)
0048 #define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion) \
0049 (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || \
0050 (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && \
0051 SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))
0052
0053
0054
0055
0056
0057
0058
0059 #define AES_IEC958_STATUS_SIZE 24
0060
0061 struct snd_aes_iec958 {
0062 unsigned char status[AES_IEC958_STATUS_SIZE];
0063 unsigned char subcode[147];
0064 unsigned char pad;
0065 unsigned char dig_subframe[4];
0066 };
0067
0068
0069
0070
0071
0072
0073
0074 struct snd_cea_861_aud_if {
0075 unsigned char db1_ct_cc;
0076 unsigned char db2_sf_ss;
0077 unsigned char db3;
0078 unsigned char db4_ca;
0079 unsigned char db5_dminh_lsv;
0080 };
0081
0082
0083
0084
0085
0086
0087
0088 #define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)
0089
0090 enum {
0091 SNDRV_HWDEP_IFACE_OPL2 = 0,
0092 SNDRV_HWDEP_IFACE_OPL3,
0093 SNDRV_HWDEP_IFACE_OPL4,
0094 SNDRV_HWDEP_IFACE_SB16CSP,
0095 SNDRV_HWDEP_IFACE_EMU10K1,
0096 SNDRV_HWDEP_IFACE_YSS225,
0097 SNDRV_HWDEP_IFACE_ICS2115,
0098 SNDRV_HWDEP_IFACE_SSCAPE,
0099 SNDRV_HWDEP_IFACE_VX,
0100 SNDRV_HWDEP_IFACE_MIXART,
0101 SNDRV_HWDEP_IFACE_USX2Y,
0102 SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,
0103 SNDRV_HWDEP_IFACE_BLUETOOTH,
0104 SNDRV_HWDEP_IFACE_USX2Y_PCM,
0105 SNDRV_HWDEP_IFACE_PCXHR,
0106 SNDRV_HWDEP_IFACE_SB_RC,
0107 SNDRV_HWDEP_IFACE_HDA,
0108 SNDRV_HWDEP_IFACE_USB_STREAM,
0109 SNDRV_HWDEP_IFACE_FW_DICE,
0110 SNDRV_HWDEP_IFACE_FW_FIREWORKS,
0111 SNDRV_HWDEP_IFACE_FW_BEBOB,
0112 SNDRV_HWDEP_IFACE_FW_OXFW,
0113 SNDRV_HWDEP_IFACE_FW_DIGI00X,
0114 SNDRV_HWDEP_IFACE_FW_TASCAM,
0115 SNDRV_HWDEP_IFACE_LINE6,
0116 SNDRV_HWDEP_IFACE_FW_MOTU,
0117 SNDRV_HWDEP_IFACE_FW_FIREFACE,
0118
0119
0120 SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_FIREFACE
0121 };
0122
0123 struct snd_hwdep_info {
0124 unsigned int device;
0125 int card;
0126 unsigned char id[64];
0127 unsigned char name[80];
0128 int iface;
0129 unsigned char reserved[64];
0130 };
0131
0132
0133 struct snd_hwdep_dsp_status {
0134 unsigned int version;
0135 unsigned char id[32];
0136 unsigned int num_dsps;
0137 unsigned int dsp_loaded;
0138 unsigned int chip_ready;
0139 unsigned char reserved[16];
0140 };
0141
0142 struct snd_hwdep_dsp_image {
0143 unsigned int index;
0144 unsigned char name[64];
0145 unsigned char __user *image;
0146 size_t length;
0147 unsigned long driver_data;
0148 };
0149
0150 #define SNDRV_HWDEP_IOCTL_PVERSION _IOR ('H', 0x00, int)
0151 #define SNDRV_HWDEP_IOCTL_INFO _IOR ('H', 0x01, struct snd_hwdep_info)
0152 #define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)
0153 #define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)
0154
0155
0156
0157
0158
0159
0160
0161 #define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 15)
0162
0163 typedef unsigned long snd_pcm_uframes_t;
0164 typedef signed long snd_pcm_sframes_t;
0165
0166 enum {
0167 SNDRV_PCM_CLASS_GENERIC = 0,
0168 SNDRV_PCM_CLASS_MULTI,
0169 SNDRV_PCM_CLASS_MODEM,
0170 SNDRV_PCM_CLASS_DIGITIZER,
0171
0172 SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,
0173 };
0174
0175 enum {
0176 SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,
0177 SNDRV_PCM_SUBCLASS_MULTI_MIX,
0178
0179 SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,
0180 };
0181
0182 enum {
0183 SNDRV_PCM_STREAM_PLAYBACK = 0,
0184 SNDRV_PCM_STREAM_CAPTURE,
0185 SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,
0186 };
0187
0188 typedef int __bitwise snd_pcm_access_t;
0189 #define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0)
0190 #define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1)
0191 #define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2)
0192 #define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3)
0193 #define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4)
0194 #define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED
0195
0196 typedef int __bitwise snd_pcm_format_t;
0197 #define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0)
0198 #define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1)
0199 #define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2)
0200 #define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3)
0201 #define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4)
0202 #define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5)
0203 #define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6)
0204 #define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7)
0205 #define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8)
0206 #define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9)
0207
0208
0209
0210
0211
0212 #define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10)
0213 #define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11)
0214 #define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12)
0215 #define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13)
0216 #define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14)
0217 #define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15)
0218 #define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16)
0219 #define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17)
0220 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18)
0221 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19)
0222 #define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20)
0223 #define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21)
0224 #define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22)
0225 #define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23)
0226 #define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24)
0227 #define SNDRV_PCM_FORMAT_S20_LE ((__force snd_pcm_format_t) 25)
0228 #define SNDRV_PCM_FORMAT_S20_BE ((__force snd_pcm_format_t) 26)
0229 #define SNDRV_PCM_FORMAT_U20_LE ((__force snd_pcm_format_t) 27)
0230 #define SNDRV_PCM_FORMAT_U20_BE ((__force snd_pcm_format_t) 28)
0231
0232 #define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31)
0233 #define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32)
0234 #define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33)
0235 #define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34)
0236 #define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35)
0237 #define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36)
0238 #define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37)
0239 #define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38)
0240 #define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39)
0241 #define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40)
0242 #define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41)
0243 #define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42)
0244 #define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43)
0245 #define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44)
0246 #define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45)
0247 #define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46)
0248 #define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47)
0249 #define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48)
0250 #define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49)
0251 #define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50)
0252 #define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51)
0253 #define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52)
0254 #define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE
0255 #define SNDRV_PCM_FORMAT_FIRST SNDRV_PCM_FORMAT_S8
0256
0257 #ifdef SNDRV_LITTLE_ENDIAN
0258 #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE
0259 #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE
0260 #define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE
0261 #define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE
0262 #define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE
0263 #define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE
0264 #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE
0265 #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE
0266 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE
0267 #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_LE
0268 #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_LE
0269 #endif
0270 #ifdef SNDRV_BIG_ENDIAN
0271 #define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE
0272 #define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE
0273 #define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE
0274 #define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE
0275 #define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE
0276 #define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE
0277 #define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE
0278 #define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE
0279 #define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE
0280 #define SNDRV_PCM_FORMAT_S20 SNDRV_PCM_FORMAT_S20_BE
0281 #define SNDRV_PCM_FORMAT_U20 SNDRV_PCM_FORMAT_U20_BE
0282 #endif
0283
0284 typedef int __bitwise snd_pcm_subformat_t;
0285 #define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)
0286 #define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD
0287
0288 #define SNDRV_PCM_INFO_MMAP 0x00000001
0289 #define SNDRV_PCM_INFO_MMAP_VALID 0x00000002
0290 #define SNDRV_PCM_INFO_DOUBLE 0x00000004
0291 #define SNDRV_PCM_INFO_BATCH 0x00000010
0292 #define SNDRV_PCM_INFO_SYNC_APPLPTR 0x00000020
0293 #define SNDRV_PCM_INFO_INTERLEAVED 0x00000100
0294 #define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200
0295 #define SNDRV_PCM_INFO_COMPLEX 0x00000400
0296 #define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000
0297 #define SNDRV_PCM_INFO_OVERRANGE 0x00020000
0298 #define SNDRV_PCM_INFO_RESUME 0x00040000
0299 #define SNDRV_PCM_INFO_PAUSE 0x00080000
0300 #define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000
0301 #define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000
0302 #define SNDRV_PCM_INFO_SYNC_START 0x00400000
0303 #define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000
0304 #define SNDRV_PCM_INFO_HAS_WALL_CLOCK 0x01000000
0305 #define SNDRV_PCM_INFO_HAS_LINK_ATIME 0x01000000
0306 #define SNDRV_PCM_INFO_HAS_LINK_ABSOLUTE_ATIME 0x02000000
0307 #define SNDRV_PCM_INFO_HAS_LINK_ESTIMATED_ATIME 0x04000000
0308 #define SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME 0x08000000
0309 #define SNDRV_PCM_INFO_EXPLICIT_SYNC 0x10000000
0310 #define SNDRV_PCM_INFO_NO_REWINDS 0x20000000
0311 #define SNDRV_PCM_INFO_DRAIN_TRIGGER 0x40000000
0312 #define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000
0313
0314 #if (__BITS_PER_LONG == 32 && defined(__USE_TIME_BITS64)) || defined __KERNEL__
0315 #define __SND_STRUCT_TIME64
0316 #endif
0317
0318 typedef int __bitwise snd_pcm_state_t;
0319 #define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)
0320 #define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1)
0321 #define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2)
0322 #define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3)
0323 #define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)
0324 #define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5)
0325 #define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6)
0326 #define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7)
0327 #define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)
0328 #define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED
0329
0330 enum {
0331 SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,
0332 SNDRV_PCM_MMAP_OFFSET_STATUS_OLD = 0x80000000,
0333 SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD = 0x81000000,
0334 SNDRV_PCM_MMAP_OFFSET_STATUS_NEW = 0x82000000,
0335 SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW = 0x83000000,
0336 #ifdef __SND_STRUCT_TIME64
0337 SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_NEW,
0338 SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_NEW,
0339 #else
0340 SNDRV_PCM_MMAP_OFFSET_STATUS = SNDRV_PCM_MMAP_OFFSET_STATUS_OLD,
0341 SNDRV_PCM_MMAP_OFFSET_CONTROL = SNDRV_PCM_MMAP_OFFSET_CONTROL_OLD,
0342 #endif
0343 };
0344
0345 union snd_pcm_sync_id {
0346 unsigned char id[16];
0347 unsigned short id16[8];
0348 unsigned int id32[4];
0349 };
0350
0351 struct snd_pcm_info {
0352 unsigned int device;
0353 unsigned int subdevice;
0354 int stream;
0355 int card;
0356 unsigned char id[64];
0357 unsigned char name[80];
0358 unsigned char subname[32];
0359 int dev_class;
0360 int dev_subclass;
0361 unsigned int subdevices_count;
0362 unsigned int subdevices_avail;
0363 union snd_pcm_sync_id sync;
0364 unsigned char reserved[64];
0365 };
0366
0367 typedef int snd_pcm_hw_param_t;
0368 #define SNDRV_PCM_HW_PARAM_ACCESS 0
0369 #define SNDRV_PCM_HW_PARAM_FORMAT 1
0370 #define SNDRV_PCM_HW_PARAM_SUBFORMAT 2
0371 #define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS
0372 #define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT
0373
0374 #define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8
0375 #define SNDRV_PCM_HW_PARAM_FRAME_BITS 9
0376 #define SNDRV_PCM_HW_PARAM_CHANNELS 10
0377 #define SNDRV_PCM_HW_PARAM_RATE 11
0378 #define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12
0379
0380
0381 #define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13
0382
0383
0384 #define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14
0385
0386
0387 #define SNDRV_PCM_HW_PARAM_PERIODS 15
0388
0389
0390 #define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16
0391
0392
0393 #define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17
0394 #define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18
0395 #define SNDRV_PCM_HW_PARAM_TICK_TIME 19
0396 #define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS
0397 #define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME
0398
0399 #define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0)
0400 #define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1)
0401 #define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2)
0402
0403 struct snd_interval {
0404 unsigned int min, max;
0405 unsigned int openmin:1,
0406 openmax:1,
0407 integer:1,
0408 empty:1;
0409 };
0410
0411 #define SNDRV_MASK_MAX 256
0412
0413 struct snd_mask {
0414 __u32 bits[(SNDRV_MASK_MAX+31)/32];
0415 };
0416
0417 struct snd_pcm_hw_params {
0418 unsigned int flags;
0419 struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -
0420 SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];
0421 struct snd_mask mres[5];
0422 struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -
0423 SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];
0424 struct snd_interval ires[9];
0425 unsigned int rmask;
0426 unsigned int cmask;
0427 unsigned int info;
0428 unsigned int msbits;
0429 unsigned int rate_num;
0430 unsigned int rate_den;
0431 snd_pcm_uframes_t fifo_size;
0432 unsigned char reserved[64];
0433 };
0434
0435 enum {
0436 SNDRV_PCM_TSTAMP_NONE = 0,
0437 SNDRV_PCM_TSTAMP_ENABLE,
0438 SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,
0439 };
0440
0441 struct snd_pcm_sw_params {
0442 int tstamp_mode;
0443 unsigned int period_step;
0444 unsigned int sleep_min;
0445 snd_pcm_uframes_t avail_min;
0446 snd_pcm_uframes_t xfer_align;
0447 snd_pcm_uframes_t start_threshold;
0448 snd_pcm_uframes_t stop_threshold;
0449 snd_pcm_uframes_t silence_threshold;
0450 snd_pcm_uframes_t silence_size;
0451 snd_pcm_uframes_t boundary;
0452 unsigned int proto;
0453 unsigned int tstamp_type;
0454 unsigned char reserved[56];
0455 };
0456
0457 struct snd_pcm_channel_info {
0458 unsigned int channel;
0459 __kernel_off_t offset;
0460 unsigned int first;
0461 unsigned int step;
0462 };
0463
0464 enum {
0465
0466
0467
0468
0469 SNDRV_PCM_AUDIO_TSTAMP_TYPE_COMPAT = 0,
0470
0471
0472 SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT = 1,
0473 SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK = 2,
0474 SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ABSOLUTE = 3,
0475 SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_ESTIMATED = 4,
0476 SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED = 5,
0477 SNDRV_PCM_AUDIO_TSTAMP_TYPE_LAST = SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED
0478 };
0479
0480 #ifndef __KERNEL__
0481
0482 typedef struct { unsigned char pad[sizeof(time_t) - sizeof(int)]; } __time_pad;
0483
0484 struct snd_pcm_status {
0485 snd_pcm_state_t state;
0486 __time_pad pad1;
0487 struct timespec trigger_tstamp;
0488 struct timespec tstamp;
0489 snd_pcm_uframes_t appl_ptr;
0490 snd_pcm_uframes_t hw_ptr;
0491 snd_pcm_sframes_t delay;
0492 snd_pcm_uframes_t avail;
0493 snd_pcm_uframes_t avail_max;
0494 snd_pcm_uframes_t overrange;
0495 snd_pcm_state_t suspended_state;
0496 __u32 audio_tstamp_data;
0497 struct timespec audio_tstamp;
0498 struct timespec driver_tstamp;
0499 __u32 audio_tstamp_accuracy;
0500 unsigned char reserved[52-2*sizeof(struct timespec)];
0501 };
0502 #endif
0503
0504
0505
0506
0507
0508
0509 #ifdef __SND_STRUCT_TIME64
0510 #define __snd_pcm_mmap_status64 snd_pcm_mmap_status
0511 #define __snd_pcm_mmap_control64 snd_pcm_mmap_control
0512 #define __snd_pcm_sync_ptr64 snd_pcm_sync_ptr
0513 #ifdef __KERNEL__
0514 #define __snd_timespec64 __kernel_timespec
0515 #else
0516 #define __snd_timespec64 timespec
0517 #endif
0518 struct __snd_timespec {
0519 __s32 tv_sec;
0520 __s32 tv_nsec;
0521 };
0522 #else
0523 #define __snd_pcm_mmap_status snd_pcm_mmap_status
0524 #define __snd_pcm_mmap_control snd_pcm_mmap_control
0525 #define __snd_pcm_sync_ptr snd_pcm_sync_ptr
0526 #define __snd_timespec timespec
0527 struct __snd_timespec64 {
0528 __s64 tv_sec;
0529 __s64 tv_nsec;
0530 };
0531
0532 #endif
0533
0534 struct __snd_pcm_mmap_status {
0535 snd_pcm_state_t state;
0536 int pad1;
0537 snd_pcm_uframes_t hw_ptr;
0538 struct __snd_timespec tstamp;
0539 snd_pcm_state_t suspended_state;
0540 struct __snd_timespec audio_tstamp;
0541 };
0542
0543 struct __snd_pcm_mmap_control {
0544 snd_pcm_uframes_t appl_ptr;
0545 snd_pcm_uframes_t avail_min;
0546 };
0547
0548 #define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0)
0549 #define SNDRV_PCM_SYNC_PTR_APPL (1<<1)
0550 #define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2)
0551
0552 struct __snd_pcm_sync_ptr {
0553 unsigned int flags;
0554 union {
0555 struct __snd_pcm_mmap_status status;
0556 unsigned char reserved[64];
0557 } s;
0558 union {
0559 struct __snd_pcm_mmap_control control;
0560 unsigned char reserved[64];
0561 } c;
0562 };
0563
0564 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __BIG_ENDIAN : defined(__BIG_ENDIAN)
0565 typedef char __pad_before_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
0566 typedef char __pad_after_uframe[0];
0567 #endif
0568
0569 #if defined(__BYTE_ORDER) ? __BYTE_ORDER == __LITTLE_ENDIAN : defined(__LITTLE_ENDIAN)
0570 typedef char __pad_before_uframe[0];
0571 typedef char __pad_after_uframe[sizeof(__u64) - sizeof(snd_pcm_uframes_t)];
0572 #endif
0573
0574 struct __snd_pcm_mmap_status64 {
0575 snd_pcm_state_t state;
0576 __u32 pad1;
0577 __pad_before_uframe __pad1;
0578 snd_pcm_uframes_t hw_ptr;
0579 __pad_after_uframe __pad2;
0580 struct __snd_timespec64 tstamp;
0581 snd_pcm_state_t suspended_state;
0582 __u32 pad3;
0583 struct __snd_timespec64 audio_tstamp;
0584 };
0585
0586 struct __snd_pcm_mmap_control64 {
0587 __pad_before_uframe __pad1;
0588 snd_pcm_uframes_t appl_ptr;
0589 __pad_before_uframe __pad2;
0590
0591 __pad_before_uframe __pad3;
0592 snd_pcm_uframes_t avail_min;
0593 __pad_after_uframe __pad4;
0594 };
0595
0596 struct __snd_pcm_sync_ptr64 {
0597 __u32 flags;
0598 __u32 pad1;
0599 union {
0600 struct __snd_pcm_mmap_status64 status;
0601 unsigned char reserved[64];
0602 } s;
0603 union {
0604 struct __snd_pcm_mmap_control64 control;
0605 unsigned char reserved[64];
0606 } c;
0607 };
0608
0609 struct snd_xferi {
0610 snd_pcm_sframes_t result;
0611 void __user *buf;
0612 snd_pcm_uframes_t frames;
0613 };
0614
0615 struct snd_xfern {
0616 snd_pcm_sframes_t result;
0617 void __user * __user *bufs;
0618 snd_pcm_uframes_t frames;
0619 };
0620
0621 enum {
0622 SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,
0623 SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
0624 SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
0625 SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
0626 };
0627
0628
0629 enum {
0630 SNDRV_CHMAP_UNKNOWN = 0,
0631 SNDRV_CHMAP_NA,
0632 SNDRV_CHMAP_MONO,
0633
0634 SNDRV_CHMAP_FL,
0635 SNDRV_CHMAP_FR,
0636 SNDRV_CHMAP_RL,
0637 SNDRV_CHMAP_RR,
0638 SNDRV_CHMAP_FC,
0639 SNDRV_CHMAP_LFE,
0640 SNDRV_CHMAP_SL,
0641 SNDRV_CHMAP_SR,
0642 SNDRV_CHMAP_RC,
0643
0644 SNDRV_CHMAP_FLC,
0645 SNDRV_CHMAP_FRC,
0646 SNDRV_CHMAP_RLC,
0647 SNDRV_CHMAP_RRC,
0648 SNDRV_CHMAP_FLW,
0649 SNDRV_CHMAP_FRW,
0650 SNDRV_CHMAP_FLH,
0651 SNDRV_CHMAP_FCH,
0652 SNDRV_CHMAP_FRH,
0653 SNDRV_CHMAP_TC,
0654 SNDRV_CHMAP_TFL,
0655 SNDRV_CHMAP_TFR,
0656 SNDRV_CHMAP_TFC,
0657 SNDRV_CHMAP_TRL,
0658 SNDRV_CHMAP_TRR,
0659 SNDRV_CHMAP_TRC,
0660
0661 SNDRV_CHMAP_TFLC,
0662 SNDRV_CHMAP_TFRC,
0663 SNDRV_CHMAP_TSL,
0664 SNDRV_CHMAP_TSR,
0665 SNDRV_CHMAP_LLFE,
0666 SNDRV_CHMAP_RLFE,
0667 SNDRV_CHMAP_BC,
0668 SNDRV_CHMAP_BLC,
0669 SNDRV_CHMAP_BRC,
0670 SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC,
0671 };
0672
0673 #define SNDRV_CHMAP_POSITION_MASK 0xffff
0674 #define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16)
0675 #define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16)
0676
0677 #define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)
0678 #define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)
0679 #define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)
0680 #define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)
0681 #define SNDRV_PCM_IOCTL_USER_PVERSION _IOW('A', 0x04, int)
0682 #define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)
0683 #define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)
0684 #define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)
0685 #define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)
0686 #define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)
0687 #define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)
0688 #define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)
0689 #define __SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct __snd_pcm_sync_ptr)
0690 #define __SNDRV_PCM_IOCTL_SYNC_PTR64 _IOWR('A', 0x23, struct __snd_pcm_sync_ptr64)
0691 #define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)
0692 #define SNDRV_PCM_IOCTL_STATUS_EXT _IOWR('A', 0x24, struct snd_pcm_status)
0693 #define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)
0694 #define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)
0695 #define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)
0696 #define SNDRV_PCM_IOCTL_START _IO('A', 0x42)
0697 #define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)
0698 #define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)
0699 #define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)
0700 #define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)
0701 #define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)
0702 #define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)
0703 #define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)
0704 #define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)
0705 #define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)
0706 #define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)
0707 #define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)
0708 #define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)
0709 #define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)
0710
0711
0712
0713
0714
0715
0716
0717
0718
0719
0720
0721 #define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 2)
0722
0723 enum {
0724 SNDRV_RAWMIDI_STREAM_OUTPUT = 0,
0725 SNDRV_RAWMIDI_STREAM_INPUT,
0726 SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,
0727 };
0728
0729 #define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001
0730 #define SNDRV_RAWMIDI_INFO_INPUT 0x00000002
0731 #define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004
0732
0733 struct snd_rawmidi_info {
0734 unsigned int device;
0735 unsigned int subdevice;
0736 int stream;
0737 int card;
0738 unsigned int flags;
0739 unsigned char id[64];
0740 unsigned char name[80];
0741 unsigned char subname[32];
0742 unsigned int subdevices_count;
0743 unsigned int subdevices_avail;
0744 unsigned char reserved[64];
0745 };
0746
0747 #define SNDRV_RAWMIDI_MODE_FRAMING_MASK (7<<0)
0748 #define SNDRV_RAWMIDI_MODE_FRAMING_SHIFT 0
0749 #define SNDRV_RAWMIDI_MODE_FRAMING_NONE (0<<0)
0750 #define SNDRV_RAWMIDI_MODE_FRAMING_TSTAMP (1<<0)
0751 #define SNDRV_RAWMIDI_MODE_CLOCK_MASK (7<<3)
0752 #define SNDRV_RAWMIDI_MODE_CLOCK_SHIFT 3
0753 #define SNDRV_RAWMIDI_MODE_CLOCK_NONE (0<<3)
0754 #define SNDRV_RAWMIDI_MODE_CLOCK_REALTIME (1<<3)
0755 #define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC (2<<3)
0756 #define SNDRV_RAWMIDI_MODE_CLOCK_MONOTONIC_RAW (3<<3)
0757
0758 #define SNDRV_RAWMIDI_FRAMING_DATA_LENGTH 16
0759
0760 struct snd_rawmidi_framing_tstamp {
0761
0762
0763
0764 __u8 frame_type;
0765 __u8 length;
0766 __u8 reserved[2];
0767 __u32 tv_nsec;
0768 __u64 tv_sec;
0769 __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
0770 } __packed;
0771
0772 struct snd_rawmidi_params {
0773 int stream;
0774 size_t buffer_size;
0775 size_t avail_min;
0776 unsigned int no_active_sensing: 1;
0777 unsigned int mode;
0778 unsigned char reserved[12];
0779 };
0780
0781 #ifndef __KERNEL__
0782 struct snd_rawmidi_status {
0783 int stream;
0784 __time_pad pad1;
0785 struct timespec tstamp;
0786 size_t avail;
0787 size_t xruns;
0788 unsigned char reserved[16];
0789 };
0790 #endif
0791
0792 #define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)
0793 #define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)
0794 #define SNDRV_RAWMIDI_IOCTL_USER_PVERSION _IOW('W', 0x02, int)
0795 #define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)
0796 #define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)
0797 #define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)
0798 #define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)
0799
0800
0801
0802
0803
0804 #define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7)
0805
0806 enum {
0807 SNDRV_TIMER_CLASS_NONE = -1,
0808 SNDRV_TIMER_CLASS_SLAVE = 0,
0809 SNDRV_TIMER_CLASS_GLOBAL,
0810 SNDRV_TIMER_CLASS_CARD,
0811 SNDRV_TIMER_CLASS_PCM,
0812 SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,
0813 };
0814
0815
0816 enum {
0817 SNDRV_TIMER_SCLASS_NONE = 0,
0818 SNDRV_TIMER_SCLASS_APPLICATION,
0819 SNDRV_TIMER_SCLASS_SEQUENCER,
0820 SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
0821 SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,
0822 };
0823
0824
0825 #define SNDRV_TIMER_GLOBAL_SYSTEM 0
0826 #define SNDRV_TIMER_GLOBAL_RTC 1
0827 #define SNDRV_TIMER_GLOBAL_HPET 2
0828 #define SNDRV_TIMER_GLOBAL_HRTIMER 3
0829
0830
0831 #define SNDRV_TIMER_FLG_SLAVE (1<<0)
0832
0833 struct snd_timer_id {
0834 int dev_class;
0835 int dev_sclass;
0836 int card;
0837 int device;
0838 int subdevice;
0839 };
0840
0841 struct snd_timer_ginfo {
0842 struct snd_timer_id tid;
0843 unsigned int flags;
0844 int card;
0845 unsigned char id[64];
0846 unsigned char name[80];
0847 unsigned long reserved0;
0848 unsigned long resolution;
0849 unsigned long resolution_min;
0850 unsigned long resolution_max;
0851 unsigned int clients;
0852 unsigned char reserved[32];
0853 };
0854
0855 struct snd_timer_gparams {
0856 struct snd_timer_id tid;
0857 unsigned long period_num;
0858 unsigned long period_den;
0859 unsigned char reserved[32];
0860 };
0861
0862 struct snd_timer_gstatus {
0863 struct snd_timer_id tid;
0864 unsigned long resolution;
0865 unsigned long resolution_num;
0866 unsigned long resolution_den;
0867 unsigned char reserved[32];
0868 };
0869
0870 struct snd_timer_select {
0871 struct snd_timer_id id;
0872 unsigned char reserved[32];
0873 };
0874
0875 struct snd_timer_info {
0876 unsigned int flags;
0877 int card;
0878 unsigned char id[64];
0879 unsigned char name[80];
0880 unsigned long reserved0;
0881 unsigned long resolution;
0882 unsigned char reserved[64];
0883 };
0884
0885 #define SNDRV_TIMER_PSFLG_AUTO (1<<0)
0886 #define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1)
0887 #define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2)
0888
0889 struct snd_timer_params {
0890 unsigned int flags;
0891 unsigned int ticks;
0892 unsigned int queue_size;
0893 unsigned int reserved0;
0894 unsigned int filter;
0895 unsigned char reserved[60];
0896 };
0897
0898 #ifndef __KERNEL__
0899 struct snd_timer_status {
0900 struct timespec tstamp;
0901 unsigned int resolution;
0902 unsigned int lost;
0903 unsigned int overrun;
0904 unsigned int queue;
0905 unsigned char reserved[64];
0906 };
0907 #endif
0908
0909 #define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)
0910 #define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)
0911 #define SNDRV_TIMER_IOCTL_TREAD_OLD _IOW('T', 0x02, int)
0912 #define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)
0913 #define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)
0914 #define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)
0915 #define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)
0916 #define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)
0917 #define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)
0918 #define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)
0919
0920 #define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)
0921 #define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)
0922 #define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)
0923 #define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)
0924 #define SNDRV_TIMER_IOCTL_TREAD64 _IOW('T', 0xa4, int)
0925
0926 #if __BITS_PER_LONG == 64
0927 #define SNDRV_TIMER_IOCTL_TREAD SNDRV_TIMER_IOCTL_TREAD_OLD
0928 #else
0929 #define SNDRV_TIMER_IOCTL_TREAD ((sizeof(__kernel_long_t) >= sizeof(time_t)) ? \
0930 SNDRV_TIMER_IOCTL_TREAD_OLD : \
0931 SNDRV_TIMER_IOCTL_TREAD64)
0932 #endif
0933
0934 struct snd_timer_read {
0935 unsigned int resolution;
0936 unsigned int ticks;
0937 };
0938
0939 enum {
0940 SNDRV_TIMER_EVENT_RESOLUTION = 0,
0941 SNDRV_TIMER_EVENT_TICK,
0942 SNDRV_TIMER_EVENT_START,
0943 SNDRV_TIMER_EVENT_STOP,
0944 SNDRV_TIMER_EVENT_CONTINUE,
0945 SNDRV_TIMER_EVENT_PAUSE,
0946 SNDRV_TIMER_EVENT_EARLY,
0947 SNDRV_TIMER_EVENT_SUSPEND,
0948 SNDRV_TIMER_EVENT_RESUME,
0949
0950 SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,
0951 SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,
0952 SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,
0953 SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,
0954 SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,
0955 SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,
0956 };
0957
0958 #ifndef __KERNEL__
0959 struct snd_timer_tread {
0960 int event;
0961 __time_pad pad1;
0962 struct timespec tstamp;
0963 unsigned int val;
0964 __time_pad pad2;
0965 };
0966 #endif
0967
0968
0969
0970
0971
0972
0973
0974 #define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 8)
0975
0976 struct snd_ctl_card_info {
0977 int card;
0978 int pad;
0979 unsigned char id[16];
0980 unsigned char driver[16];
0981 unsigned char name[32];
0982 unsigned char longname[80];
0983 unsigned char reserved_[16];
0984 unsigned char mixername[80];
0985 unsigned char components[128];
0986 };
0987
0988 typedef int __bitwise snd_ctl_elem_type_t;
0989 #define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)
0990 #define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)
0991 #define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)
0992 #define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)
0993 #define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)
0994 #define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)
0995 #define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)
0996 #define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64
0997
0998 typedef int __bitwise snd_ctl_elem_iface_t;
0999 #define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)
1000 #define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)
1001 #define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)
1002 #define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)
1003 #define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)
1004 #define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)
1005 #define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)
1006 #define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER
1007
1008 #define SNDRV_CTL_ELEM_ACCESS_READ (1<<0)
1009 #define SNDRV_CTL_ELEM_ACCESS_WRITE (1<<1)
1010 #define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE)
1011 #define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1<<2)
1012
1013 #define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1<<4)
1014 #define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1<<5)
1015 #define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ|SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
1016 #define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1<<6)
1017 #define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8)
1018 #define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9)
1019 #define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10)
1020 #define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28)
1021 #define SNDRV_CTL_ELEM_ACCESS_USER (1<<29)
1022
1023
1024
1025 #define SNDRV_CTL_POWER_D0 0x0000
1026 #define SNDRV_CTL_POWER_D1 0x0100
1027 #define SNDRV_CTL_POWER_D2 0x0200
1028 #define SNDRV_CTL_POWER_D3 0x0300
1029 #define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000)
1030 #define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001)
1031
1032 #define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44
1033
1034 struct snd_ctl_elem_id {
1035 unsigned int numid;
1036 snd_ctl_elem_iface_t iface;
1037 unsigned int device;
1038 unsigned int subdevice;
1039 unsigned char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
1040 unsigned int index;
1041 };
1042
1043 struct snd_ctl_elem_list {
1044 unsigned int offset;
1045 unsigned int space;
1046 unsigned int used;
1047 unsigned int count;
1048 struct snd_ctl_elem_id __user *pids;
1049 unsigned char reserved[50];
1050 };
1051
1052 struct snd_ctl_elem_info {
1053 struct snd_ctl_elem_id id;
1054 snd_ctl_elem_type_t type;
1055 unsigned int access;
1056 unsigned int count;
1057 __kernel_pid_t owner;
1058 union {
1059 struct {
1060 long min;
1061 long max;
1062 long step;
1063 } integer;
1064 struct {
1065 long long min;
1066 long long max;
1067 long long step;
1068 } integer64;
1069 struct {
1070 unsigned int items;
1071 unsigned int item;
1072 char name[64];
1073 __u64 names_ptr;
1074 unsigned int names_length;
1075 } enumerated;
1076 unsigned char reserved[128];
1077 } value;
1078 unsigned char reserved[64];
1079 };
1080
1081 struct snd_ctl_elem_value {
1082 struct snd_ctl_elem_id id;
1083 unsigned int indirect: 1;
1084 union {
1085 union {
1086 long value[128];
1087 long *value_ptr;
1088 } integer;
1089 union {
1090 long long value[64];
1091 long long *value_ptr;
1092 } integer64;
1093 union {
1094 unsigned int item[128];
1095 unsigned int *item_ptr;
1096 } enumerated;
1097 union {
1098 unsigned char data[512];
1099 unsigned char *data_ptr;
1100 } bytes;
1101 struct snd_aes_iec958 iec958;
1102 } value;
1103 unsigned char reserved[128];
1104 };
1105
1106 struct snd_ctl_tlv {
1107 unsigned int numid;
1108 unsigned int length;
1109 unsigned int tlv[];
1110 };
1111
1112 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
1113 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
1114 #define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)
1115 #define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)
1116 #define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)
1117 #define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)
1118 #define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)
1119 #define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)
1120 #define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)
1121 #define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)
1122 #define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)
1123 #define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)
1124 #define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)
1125 #define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)
1126 #define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)
1127 #define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)
1128 #define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)
1129 #define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)
1130 #define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)
1131 #define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)
1132 #define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)
1133 #define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)
1134 #define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)
1135 #define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)
1136 #define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)
1137
1138
1139
1140
1141
1142 enum sndrv_ctl_event_type {
1143 SNDRV_CTL_EVENT_ELEM = 0,
1144 SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,
1145 };
1146
1147 #define SNDRV_CTL_EVENT_MASK_VALUE (1<<0)
1148 #define SNDRV_CTL_EVENT_MASK_INFO (1<<1)
1149 #define SNDRV_CTL_EVENT_MASK_ADD (1<<2)
1150 #define SNDRV_CTL_EVENT_MASK_TLV (1<<3)
1151 #define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)
1152
1153 struct snd_ctl_event {
1154 int type;
1155 union {
1156 struct {
1157 unsigned int mask;
1158 struct snd_ctl_elem_id id;
1159 } elem;
1160 unsigned char data8[60];
1161 } data;
1162 };
1163
1164
1165
1166
1167
1168 #define SNDRV_CTL_NAME_NONE ""
1169 #define SNDRV_CTL_NAME_PLAYBACK "Playback "
1170 #define SNDRV_CTL_NAME_CAPTURE "Capture "
1171
1172 #define SNDRV_CTL_NAME_IEC958_NONE ""
1173 #define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"
1174 #define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"
1175 #define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"
1176 #define SNDRV_CTL_NAME_IEC958_MASK "Mask"
1177 #define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"
1178 #define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"
1179 #define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"
1180 #define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_##direction SNDRV_CTL_NAME_IEC958_##what
1181
1182 #endif