Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.
Path: blob/next/external/cache/sources/tinyalsa/include/sound/asound.h
Views: 3960
/****************************************************************************1****************************************************************************2***3*** This header was automatically generated from a Linux kernel header4*** of the same name, to make information necessary for userspace to5*** call into the kernel available to libc. It contains only constants,6*** structures, and macros generated from the original header, and thus,7*** contains no copyrightable information.8***9****************************************************************************10****************************************************************************/11#ifndef __SOUND_ASOUND_H12#define __SOUND_ASOUND_H1314#include <linux/types.h>1516#define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor))17#define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff)18#define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff)19#define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff)20#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion) (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion)))2122struct snd_aes_iec958 {23unsigned char status[24];24unsigned char subcode[147];25unsigned char pad;26unsigned char dig_subframe[4];27};2829#define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1)3031enum {32SNDRV_HWDEP_IFACE_OPL2 = 0,33SNDRV_HWDEP_IFACE_OPL3,34SNDRV_HWDEP_IFACE_OPL4,35SNDRV_HWDEP_IFACE_SB16CSP,36SNDRV_HWDEP_IFACE_EMU10K1,37SNDRV_HWDEP_IFACE_YSS225,38SNDRV_HWDEP_IFACE_ICS2115,39SNDRV_HWDEP_IFACE_SSCAPE,40SNDRV_HWDEP_IFACE_VX,41SNDRV_HWDEP_IFACE_MIXART,42SNDRV_HWDEP_IFACE_USX2Y,43SNDRV_HWDEP_IFACE_EMUX_WAVETABLE,44SNDRV_HWDEP_IFACE_BLUETOOTH,45SNDRV_HWDEP_IFACE_USX2Y_PCM,46SNDRV_HWDEP_IFACE_PCXHR,47SNDRV_HWDEP_IFACE_SB_RC,48SNDRV_HWDEP_IFACE_HDA,49SNDRV_HWDEP_IFACE_USB_STREAM,5051SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_USB_STREAM52};5354struct snd_hwdep_info {55unsigned int device;56int card;57unsigned char id[64];58unsigned char name[80];59int iface;60unsigned char reserved[64];61};6263struct snd_hwdep_dsp_status {64unsigned int version;65unsigned char id[32];66unsigned int num_dsps;67unsigned int dsp_loaded;68unsigned int chip_ready;69unsigned char reserved[16];70};7172struct snd_hwdep_dsp_image {73unsigned int index;74unsigned char name[64];75unsigned char __user *image;76size_t length;77unsigned long driver_data;78};7980#define SNDRV_HWDEP_IOCTL_PVERSION _IOR ('H', 0x00, int)81#define SNDRV_HWDEP_IOCTL_INFO _IOR ('H', 0x01, struct snd_hwdep_info)82#define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status)83#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image)8485#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 10)8687typedef unsigned long snd_pcm_uframes_t;88typedef signed long snd_pcm_sframes_t;8990enum {91SNDRV_PCM_CLASS_GENERIC = 0,92SNDRV_PCM_CLASS_MULTI,93SNDRV_PCM_CLASS_MODEM,94SNDRV_PCM_CLASS_DIGITIZER,9596SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER,97};9899enum {100SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0,101SNDRV_PCM_SUBCLASS_MULTI_MIX,102103SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX,104};105106enum {107SNDRV_PCM_STREAM_PLAYBACK = 0,108SNDRV_PCM_STREAM_CAPTURE,109SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE,110};111112typedef int __bitwise snd_pcm_access_t;113#define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0)114#define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1)115#define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2)116#define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3)117#define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4)118#define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED119120typedef int __bitwise snd_pcm_format_t;121#define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0)122#define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1)123#define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2)124#define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3)125#define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4)126#define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5)127#define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6)128#define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7)129#define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8)130#define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9)131#define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10)132#define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11)133#define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12)134#define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13)135#define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14)136#define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15)137#define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16)138#define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17)139#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18)140#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19)141#define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20)142#define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21)143#define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22)144#define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23)145#define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24)146#define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31)147#define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32)148#define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33)149#define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34)150#define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35)151#define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36)152#define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37)153#define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38)154#define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39)155#define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40)156#define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41)157#define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42)158#define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43)159#define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44)160#define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45)161#define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46)162#define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47)163#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_G723_40_1B164165#ifdef SNDRV_LITTLE_ENDIAN166#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE167#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE168#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE169#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE170#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE171#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE172#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE173#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE174#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE175#endif176#ifdef SNDRV_BIG_ENDIAN177#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE178#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE179#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE180#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE181#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE182#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE183#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE184#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE185#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE186#endif187188typedef int __bitwise snd_pcm_subformat_t;189#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0)190#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD191192#define SNDRV_PCM_INFO_MMAP 0x00000001193#define SNDRV_PCM_INFO_MMAP_VALID 0x00000002194#define SNDRV_PCM_INFO_DOUBLE 0x00000004195#define SNDRV_PCM_INFO_BATCH 0x00000010196#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100197#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200198#define SNDRV_PCM_INFO_COMPLEX 0x00000400199#define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000200#define SNDRV_PCM_INFO_OVERRANGE 0x00020000201#define SNDRV_PCM_INFO_RESUME 0x00040000202#define SNDRV_PCM_INFO_PAUSE 0x00080000203#define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000204#define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000205#define SNDRV_PCM_INFO_SYNC_START 0x00400000206#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000207#define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000208209typedef int __bitwise snd_pcm_state_t;210#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0)211#define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1)212#define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2)213#define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3)214#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4)215#define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5)216#define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6)217#define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7)218#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8)219#define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED220221enum {222SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000,223SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000,224SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000,225};226227union snd_pcm_sync_id {228unsigned char id[16];229unsigned short id16[8];230unsigned int id32[4];231};232233struct snd_pcm_info {234unsigned int device;235unsigned int subdevice;236int stream;237int card;238unsigned char id[64];239unsigned char name[80];240unsigned char subname[32];241int dev_class;242int dev_subclass;243unsigned int subdevices_count;244unsigned int subdevices_avail;245union snd_pcm_sync_id sync;246unsigned char reserved[64];247};248249typedef int snd_pcm_hw_param_t;250#define SNDRV_PCM_HW_PARAM_ACCESS 0251#define SNDRV_PCM_HW_PARAM_FORMAT 1252#define SNDRV_PCM_HW_PARAM_SUBFORMAT 2253#define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS254#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT255256#define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8257#define SNDRV_PCM_HW_PARAM_FRAME_BITS 9258#define SNDRV_PCM_HW_PARAM_CHANNELS 10259#define SNDRV_PCM_HW_PARAM_RATE 11260#define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12261#define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13262#define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14263#define SNDRV_PCM_HW_PARAM_PERIODS 15264#define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16265#define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17266#define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18267#define SNDRV_PCM_HW_PARAM_TICK_TIME 19268#define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS269#define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME270271#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0)272#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1)273#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2)274275struct snd_interval {276unsigned int min, max;277unsigned int openmin:1,278openmax:1,279integer:1,280empty:1;281};282283#define SNDRV_MASK_MAX 256284285struct snd_mask {286__u32 bits[(SNDRV_MASK_MAX+31)/32];287};288289struct snd_pcm_hw_params {290unsigned int flags;291struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK -292SNDRV_PCM_HW_PARAM_FIRST_MASK + 1];293struct snd_mask mres[5];294struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL -295SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1];296struct snd_interval ires[9];297unsigned int rmask;298unsigned int cmask;299unsigned int info;300unsigned int msbits;301unsigned int rate_num;302unsigned int rate_den;303snd_pcm_uframes_t fifo_size;304unsigned char reserved[64];305};306307enum {308SNDRV_PCM_TSTAMP_NONE = 0,309SNDRV_PCM_TSTAMP_ENABLE,310SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE,311};312313struct snd_pcm_sw_params {314int tstamp_mode;315unsigned int period_step;316unsigned int sleep_min;317snd_pcm_uframes_t avail_min;318snd_pcm_uframes_t xfer_align;319snd_pcm_uframes_t start_threshold;320snd_pcm_uframes_t stop_threshold;321snd_pcm_uframes_t silence_threshold;322snd_pcm_uframes_t silence_size;323snd_pcm_uframes_t boundary;324unsigned char reserved[64];325};326327struct snd_pcm_channel_info {328unsigned int channel;329__kernel_off_t offset;330unsigned int first;331unsigned int step;332};333334struct snd_pcm_status {335snd_pcm_state_t state;336struct timespec trigger_tstamp;337struct timespec tstamp;338snd_pcm_uframes_t appl_ptr;339snd_pcm_uframes_t hw_ptr;340snd_pcm_sframes_t delay;341snd_pcm_uframes_t avail;342snd_pcm_uframes_t avail_max;343snd_pcm_uframes_t overrange;344snd_pcm_state_t suspended_state;345unsigned char reserved[60];346};347348struct snd_pcm_mmap_status {349snd_pcm_state_t state;350int pad1;351snd_pcm_uframes_t hw_ptr;352struct timespec tstamp;353snd_pcm_state_t suspended_state;354};355356struct snd_pcm_mmap_control {357snd_pcm_uframes_t appl_ptr;358snd_pcm_uframes_t avail_min;359};360361#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0)362#define SNDRV_PCM_SYNC_PTR_APPL (1<<1)363#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2)364365struct snd_pcm_sync_ptr {366unsigned int flags;367union {368struct snd_pcm_mmap_status status;369unsigned char reserved[64];370} s;371union {372struct snd_pcm_mmap_control control;373unsigned char reserved[64];374} c;375};376377struct snd_xferi {378snd_pcm_sframes_t result;379void __user *buf;380snd_pcm_uframes_t frames;381};382383struct snd_xfern {384snd_pcm_sframes_t result;385void __user * __user *bufs;386snd_pcm_uframes_t frames;387};388389enum {390SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,391SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,392SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,393};394395#define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int)396#define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info)397#define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int)398#define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int)399#define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params)400#define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params)401#define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12)402#define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params)403#define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status)404#define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t)405#define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22)406#define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr)407#define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info)408#define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40)409#define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41)410#define SNDRV_PCM_IOCTL_START _IO('A', 0x42)411#define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43)412#define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44)413#define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int)414#define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t)415#define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47)416#define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48)417#define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t)418#define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi)419#define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi)420#define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern)421#define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern)422#define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int)423#define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61)424425#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 0)426427enum {428SNDRV_RAWMIDI_STREAM_OUTPUT = 0,429SNDRV_RAWMIDI_STREAM_INPUT,430SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT,431};432433#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001434#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002435#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004436437struct snd_rawmidi_info {438unsigned int device;439unsigned int subdevice;440int stream;441int card;442unsigned int flags;443unsigned char id[64];444unsigned char name[80];445unsigned char subname[32];446unsigned int subdevices_count;447unsigned int subdevices_avail;448unsigned char reserved[64];449};450451struct snd_rawmidi_params {452int stream;453size_t buffer_size;454size_t avail_min;455unsigned int no_active_sensing: 1;456unsigned char reserved[16];457};458459struct snd_rawmidi_status {460int stream;461struct timespec tstamp;462size_t avail;463size_t xruns;464unsigned char reserved[16];465};466467#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int)468#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info)469#define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params)470#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status)471#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int)472#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int)473474#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6)475476enum {477SNDRV_TIMER_CLASS_NONE = -1,478SNDRV_TIMER_CLASS_SLAVE = 0,479SNDRV_TIMER_CLASS_GLOBAL,480SNDRV_TIMER_CLASS_CARD,481SNDRV_TIMER_CLASS_PCM,482SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM,483};484485enum {486SNDRV_TIMER_SCLASS_NONE = 0,487SNDRV_TIMER_SCLASS_APPLICATION,488SNDRV_TIMER_SCLASS_SEQUENCER,489SNDRV_TIMER_SCLASS_OSS_SEQUENCER,490SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER,491};492493#define SNDRV_TIMER_GLOBAL_SYSTEM 0494#define SNDRV_TIMER_GLOBAL_RTC 1495#define SNDRV_TIMER_GLOBAL_HPET 2496#define SNDRV_TIMER_GLOBAL_HRTIMER 3497498#define SNDRV_TIMER_FLG_SLAVE (1<<0)499500struct snd_timer_id {501int dev_class;502int dev_sclass;503int card;504int device;505int subdevice;506};507508struct snd_timer_ginfo {509struct snd_timer_id tid;510unsigned int flags;511int card;512unsigned char id[64];513unsigned char name[80];514unsigned long reserved0;515unsigned long resolution;516unsigned long resolution_min;517unsigned long resolution_max;518unsigned int clients;519unsigned char reserved[32];520};521522struct snd_timer_gparams {523struct snd_timer_id tid;524unsigned long period_num;525unsigned long period_den;526unsigned char reserved[32];527};528529struct snd_timer_gstatus {530struct snd_timer_id tid;531unsigned long resolution;532unsigned long resolution_num;533unsigned long resolution_den;534unsigned char reserved[32];535};536537struct snd_timer_select {538struct snd_timer_id id;539unsigned char reserved[32];540};541542struct snd_timer_info {543unsigned int flags;544int card;545unsigned char id[64];546unsigned char name[80];547unsigned long reserved0;548unsigned long resolution;549unsigned char reserved[64];550};551552#define SNDRV_TIMER_PSFLG_AUTO (1<<0)553#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1)554#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2)555556struct snd_timer_params {557unsigned int flags;558unsigned int ticks;559unsigned int queue_size;560unsigned int reserved0;561unsigned int filter;562unsigned char reserved[60];563};564565struct snd_timer_status {566struct timespec tstamp;567unsigned int resolution;568unsigned int lost;569unsigned int overrun;570unsigned int queue;571unsigned char reserved[64];572};573574#define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int)575#define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id)576#define SNDRV_TIMER_IOCTL_TREAD _IOW('T', 0x02, int)577#define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo)578#define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams)579#define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus)580#define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select)581#define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info)582#define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params)583#define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status)584585#define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0)586#define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1)587#define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2)588#define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3)589590struct snd_timer_read {591unsigned int resolution;592unsigned int ticks;593};594595enum {596SNDRV_TIMER_EVENT_RESOLUTION = 0,597SNDRV_TIMER_EVENT_TICK,598SNDRV_TIMER_EVENT_START,599SNDRV_TIMER_EVENT_STOP,600SNDRV_TIMER_EVENT_CONTINUE,601SNDRV_TIMER_EVENT_PAUSE,602SNDRV_TIMER_EVENT_EARLY,603SNDRV_TIMER_EVENT_SUSPEND,604SNDRV_TIMER_EVENT_RESUME,605606SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10,607SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10,608SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10,609SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10,610SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10,611SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10,612};613614struct snd_timer_tread {615int event;616struct timespec tstamp;617unsigned int val;618};619620#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6)621622struct snd_ctl_card_info {623int card;624int pad;625unsigned char id[16];626unsigned char driver[16];627unsigned char name[32];628unsigned char longname[80];629unsigned char reserved_[16];630unsigned char mixername[80];631unsigned char components[128];632};633634typedef int __bitwise snd_ctl_elem_type_t;635#define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0)636#define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1)637#define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2)638#define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3)639#define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4)640#define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5)641#define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6)642#define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64643644typedef int __bitwise snd_ctl_elem_iface_t;645#define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0)646#define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1)647#define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2)648#define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3)649#define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4)650#define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5)651#define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6)652#define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER653654#define SNDRV_CTL_ELEM_ACCESS_READ (1<<0)655#define SNDRV_CTL_ELEM_ACCESS_WRITE (1<<1)656#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE)657#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1<<2)658#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1<<3)659#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1<<4)660#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1<<5)661#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ|SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)662#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1<<6)663#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8)664#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9)665#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10)666#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28)667#define SNDRV_CTL_ELEM_ACCESS_USER (1<<29)668669#define SNDRV_CTL_POWER_D0 0x0000670#define SNDRV_CTL_POWER_D1 0x0100671#define SNDRV_CTL_POWER_D2 0x0200672#define SNDRV_CTL_POWER_D3 0x0300673#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000)674#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001)675676struct snd_ctl_elem_id {677unsigned int numid;678snd_ctl_elem_iface_t iface;679unsigned int device;680unsigned int subdevice;681unsigned char name[44];682unsigned int index;683};684685struct snd_ctl_elem_list {686unsigned int offset;687unsigned int space;688unsigned int used;689unsigned int count;690struct snd_ctl_elem_id __user *pids;691unsigned char reserved[50];692};693694struct snd_ctl_elem_info {695struct snd_ctl_elem_id id;696snd_ctl_elem_type_t type;697unsigned int access;698unsigned int count;699__kernel_pid_t owner;700union {701struct {702long min;703long max;704long step;705} integer;706struct {707long long min;708long long max;709long long step;710} integer64;711struct {712unsigned int items;713unsigned int item;714char name[64];715} enumerated;716unsigned char reserved[128];717} value;718union {719unsigned short d[4];720unsigned short *d_ptr;721} dimen;722unsigned char reserved[64-4*sizeof(unsigned short)];723};724725struct snd_ctl_elem_value {726struct snd_ctl_elem_id id;727unsigned int indirect: 1;728union {729union {730long value[128];731long *value_ptr;732} integer;733union {734long long value[64];735long long *value_ptr;736} integer64;737union {738unsigned int item[128];739unsigned int *item_ptr;740} enumerated;741union {742unsigned char data[512];743unsigned char *data_ptr;744} bytes;745struct snd_aes_iec958 iec958;746} value;747struct timespec tstamp;748unsigned char reserved[128-sizeof(struct timespec)];749};750751struct snd_ctl_tlv {752unsigned int numid;753unsigned int length;754unsigned int tlv[0];755};756757#define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)758#define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)759#define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list)760#define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info)761#define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value)762#define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value)763#define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id)764#define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id)765#define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int)766#define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info)767#define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info)768#define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id)769#define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv)770#define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv)771#define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv)772#define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int)773#define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info)774#define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int)775#define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info)776#define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int)777#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int)778#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info)779#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int)780#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int)781#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int)782783enum sndrv_ctl_event_type {784SNDRV_CTL_EVENT_ELEM = 0,785SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM,786};787788#define SNDRV_CTL_EVENT_MASK_VALUE (1<<0)789#define SNDRV_CTL_EVENT_MASK_INFO (1<<1)790#define SNDRV_CTL_EVENT_MASK_ADD (1<<2)791#define SNDRV_CTL_EVENT_MASK_TLV (1<<3)792#define SNDRV_CTL_EVENT_MASK_REMOVE (~0U)793794struct snd_ctl_event {795int type;796union {797struct {798unsigned int mask;799struct snd_ctl_elem_id id;800} elem;801unsigned char data8[60];802} data;803};804805#define SNDRV_CTL_NAME_NONE ""806#define SNDRV_CTL_NAME_PLAYBACK "Playback "807#define SNDRV_CTL_NAME_CAPTURE "Capture "808809#define SNDRV_CTL_NAME_IEC958_NONE ""810#define SNDRV_CTL_NAME_IEC958_SWITCH "Switch"811#define SNDRV_CTL_NAME_IEC958_VOLUME "Volume"812#define SNDRV_CTL_NAME_IEC958_DEFAULT "Default"813#define SNDRV_CTL_NAME_IEC958_MASK "Mask"814#define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask"815#define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask"816#define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream"817#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_##direction SNDRV_CTL_NAME_IEC958_##what818819#endif820821822823