15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Advanced Linux Sound Architecture - ALSA - Driver 35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.cz>, 45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Abramo Bagnara <abramo@alsa-project.org> 55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is free software; you can redistribute it and/or modify 85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * it under the terms of the GNU General Public License as published by 95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * the Free Software Foundation; either version 2 of the License, or 105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * (at your option) any later version. 115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * This program is distributed in the hope that it will be useful, 135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * but WITHOUT ANY WARRANTY; without even the implied warranty of 145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * GNU General Public License for more details. 165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * You should have received a copy of the GNU General Public License 185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * along with this program; if not, write to the Free Software 195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * 215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 23d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef _UAPI__SOUND_ASOUND_H 24d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define _UAPI__SOUND_ASOUND_H 255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h> 275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * protocol version 315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PROTOCOL_VERSION(major, minor, subminor) (((major)<<16)|((minor)<<8)|(subminor)) 345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PROTOCOL_MAJOR(version) (((version)>>16)&0xffff) 355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PROTOCOL_MINOR(version) (((version)>>8)&0xff) 365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PROTOCOL_MICRO(version) ((version)&0xff) 375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PROTOCOL_INCOMPATIBLE(kversion, uversion) \ 385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (SNDRV_PROTOCOL_MAJOR(kversion) != SNDRV_PROTOCOL_MAJOR(uversion) || \ 395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin (SNDRV_PROTOCOL_MAJOR(kversion) == SNDRV_PROTOCOL_MAJOR(uversion) && \ 405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PROTOCOL_MINOR(kversion) != SNDRV_PROTOCOL_MINOR(uversion))) 415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**************************************************************************** 435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Digital audio interface * 455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ****************************************************************************/ 475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_aes_iec958 { 495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char status[24]; /* AES/IEC958 channel status bits */ 505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char subcode[147]; /* AES/IEC958 subcode bits */ 515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char pad; /* nothing */ 525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char dig_subframe[4]; /* AES/IEC958 subframe bits */ 535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**************************************************************************** 565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * CEA-861 Audio InfoFrame. Used in HDMI and DisplayPort * 585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ****************************************************************************/ 605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_cea_861_aud_if { 625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char db1_ct_cc; /* coding type and channel count */ 635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char db2_sf_ss; /* sample frequency and size */ 645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char db3; /* not used, all zeros */ 655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char db4_ca; /* channel allocation code */ 665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char db5_dminh_lsv; /* downmix inhibit & level-shit values */ 675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**************************************************************************** 705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Section for driver hardware dependent interface - /dev/snd/hw? * 725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ****************************************************************************/ 745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_HWDEP_VERSION SNDRV_PROTOCOL_VERSION(1, 0, 1) 765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_OPL2 = 0, 795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_OPL3, 805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_OPL4, 815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_SB16CSP, /* Creative Signal Processor */ 825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_EMU10K1, /* FX8010 processor in EMU10K1 chip */ 835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_YSS225, /* Yamaha FX processor */ 845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_ICS2115, /* Wavetable synth */ 855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_SSCAPE, /* Ensoniq SoundScape ISA card (MC68EC000) */ 865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_VX, /* Digigram VX cards */ 875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_MIXART, /* Digigram miXart cards */ 885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_USX2Y, /* Tascam US122, US224 & US428 usb */ 895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_EMUX_WAVETABLE, /* EmuX wavetable */ 905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_BLUETOOTH, /* Bluetooth audio */ 915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_USX2Y_PCM, /* Tascam US122, US224 & US428 rawusb pcm */ 925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_PCXHR, /* Digigram PCXHR */ 935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_SB_RC, /* SB Extigy/Audigy2NX remote control */ 945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_HDA, /* HD-audio */ 955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_USB_STREAM, /* direct access to usb stream */ 965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_FW_DICE, /* TC DICE FireWire device */ 975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_FW_FIREWORKS, /* Echo Audio Fireworks based device */ 985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_FW_BEBOB, /* BridgeCo BeBoB based device */ 995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_AUDIO_BE, /* Backend Audio Control */ 1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_AUDIO_CODEC, /* codec Audio Control */ 1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Don't forget to change the following: */ 1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_AUDIO_CODEC 1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_hwdep_info { 1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int device; /* WR: device number */ 1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* R: card number */ 1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[64]; /* ID (user selectable) */ 1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[80]; /* hwdep name */ 1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int iface; /* hwdep interface */ 1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved for future */ 1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* generic DSP loader */ 1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_hwdep_dsp_status { 1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int version; /* R: driver-specific version */ 1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[32]; /* R: driver-specific ID string */ 1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int num_dsps; /* R: number of DSP images to transfer */ 1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int dsp_loaded; /* R: bit flags indicating the loaded DSPs */ 1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int chip_ready; /* R: 1 = initialization finished */ 1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[16]; /* reserved for future use */ 1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_hwdep_dsp_image { 1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int index; /* W: DSP index */ 1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[64]; /* W: ID (e.g. file name) */ 128d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin unsigned char __user *image; /* W: binary image */ 1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin size_t length; /* W: size of image in bytes */ 1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long driver_data; /* W: driver-specific data */ 1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_HWDEP_IOCTL_PVERSION _IOR ('H', 0x00, int) 1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_HWDEP_IOCTL_INFO _IOR ('H', 0x01, struct snd_hwdep_info) 1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status) 1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image) 1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/***************************************************************************** 1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Digital Audio (PCM) interface - /dev/snd/pcm?? * 1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *****************************************************************************/ 1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 12) 1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef unsigned long snd_pcm_uframes_t; 1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef signed long snd_pcm_sframes_t; 1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_CLASS_GENERIC = 0, /* standard mono or stereo device */ 1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_CLASS_MULTI, /* multichannel device */ 1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_CLASS_MODEM, /* software modem class */ 1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_CLASS_DIGITIZER, /* digitizer class */ 1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Don't forget to change the following: */ 1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_CLASS_LAST = SNDRV_PCM_CLASS_DIGITIZER, 1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_SUBCLASS_GENERIC_MIX = 0, /* mono or stereo subdevices are mixed together */ 1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_SUBCLASS_MULTI_MIX, /* multichannel subdevices are mixed together */ 1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* Don't forget to change the following: */ 1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_SUBCLASS_LAST = SNDRV_PCM_SUBCLASS_MULTI_MIX, 1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_STREAM_PLAYBACK = 0, 1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_STREAM_CAPTURE, 1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE, 1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_pcm_access_t; 172d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_ACCESS_MMAP_INTERLEAVED ((__force snd_pcm_access_t) 0) /* interleaved mmap */ 173d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_ACCESS_MMAP_NONINTERLEAVED ((__force snd_pcm_access_t) 1) /* noninterleaved mmap */ 174d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_ACCESS_MMAP_COMPLEX ((__force snd_pcm_access_t) 2) /* complex mmap */ 175d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_ACCESS_RW_INTERLEAVED ((__force snd_pcm_access_t) 3) /* readi/writei */ 176d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_ACCESS_RW_NONINTERLEAVED ((__force snd_pcm_access_t) 4) /* readn/writen */ 1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_ACCESS_LAST SNDRV_PCM_ACCESS_RW_NONINTERLEAVED 1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_pcm_format_t; 180d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S8 ((__force snd_pcm_format_t) 0) 181d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U8 ((__force snd_pcm_format_t) 1) 182d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S16_LE ((__force snd_pcm_format_t) 2) 183d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S16_BE ((__force snd_pcm_format_t) 3) 184d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U16_LE ((__force snd_pcm_format_t) 4) 185d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U16_BE ((__force snd_pcm_format_t) 5) 186d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S24_LE ((__force snd_pcm_format_t) 6) /* low three bytes */ 187d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S24_BE ((__force snd_pcm_format_t) 7) /* low three bytes */ 188d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U24_LE ((__force snd_pcm_format_t) 8) /* low three bytes */ 189d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U24_BE ((__force snd_pcm_format_t) 9) /* low three bytes */ 190d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S32_LE ((__force snd_pcm_format_t) 10) 191d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S32_BE ((__force snd_pcm_format_t) 11) 192d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U32_LE ((__force snd_pcm_format_t) 12) 193d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U32_BE ((__force snd_pcm_format_t) 13) 194d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT_LE ((__force snd_pcm_format_t) 14) /* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */ 195d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT_BE ((__force snd_pcm_format_t) 15) /* 4-byte float, IEEE-754 32-bit, range -1.0 to 1.0 */ 196d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT64_LE ((__force snd_pcm_format_t) 16) /* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */ 197d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT64_BE ((__force snd_pcm_format_t) 17) /* 8-byte float, IEEE-754 64-bit, range -1.0 to 1.0 */ 198d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE ((__force snd_pcm_format_t) 18) /* IEC-958 subframe, Little Endian */ 199d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE ((__force snd_pcm_format_t) 19) /* IEC-958 subframe, Big Endian */ 200d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_MU_LAW ((__force snd_pcm_format_t) 20) 201d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_A_LAW ((__force snd_pcm_format_t) 21) 202d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_IMA_ADPCM ((__force snd_pcm_format_t) 22) 203d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_MPEG ((__force snd_pcm_format_t) 23) 204d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_GSM ((__force snd_pcm_format_t) 24) 205d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_SPECIAL ((__force snd_pcm_format_t) 31) 206d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S24_3LE ((__force snd_pcm_format_t) 32) /* in three bytes */ 207d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S24_3BE ((__force snd_pcm_format_t) 33) /* in three bytes */ 208d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U24_3LE ((__force snd_pcm_format_t) 34) /* in three bytes */ 209d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U24_3BE ((__force snd_pcm_format_t) 35) /* in three bytes */ 210d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S20_3LE ((__force snd_pcm_format_t) 36) /* in three bytes */ 211d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S20_3BE ((__force snd_pcm_format_t) 37) /* in three bytes */ 212d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U20_3LE ((__force snd_pcm_format_t) 38) /* in three bytes */ 213d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U20_3BE ((__force snd_pcm_format_t) 39) /* in three bytes */ 214d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S18_3LE ((__force snd_pcm_format_t) 40) /* in three bytes */ 215d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_S18_3BE ((__force snd_pcm_format_t) 41) /* in three bytes */ 216d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U18_3LE ((__force snd_pcm_format_t) 42) /* in three bytes */ 217d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_U18_3BE ((__force snd_pcm_format_t) 43) /* in three bytes */ 218d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_G723_24 ((__force snd_pcm_format_t) 44) /* 8 samples in 3 bytes */ 219d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_G723_24_1B ((__force snd_pcm_format_t) 45) /* 1 sample in 1 byte */ 220d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_G723_40 ((__force snd_pcm_format_t) 46) /* 8 Samples in 5 bytes */ 221d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_G723_40_1B ((__force snd_pcm_format_t) 47) /* 1 sample in 1 byte */ 222d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_DSD_U8 ((__force snd_pcm_format_t) 48) /* DSD, 1-byte samples DSD (x8) */ 223d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_DSD_U16_LE ((__force snd_pcm_format_t) 49) /* DSD, 2-byte samples DSD (x16), little endian */ 224d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_DSD_U32_LE ((__force snd_pcm_format_t) 50) /* DSD, 4-byte samples DSD (x32), little endian */ 225d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_DSD_U16_BE ((__force snd_pcm_format_t) 51) /* DSD, 2-byte samples DSD (x16), big endian */ 226d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_FORMAT_DSD_U32_BE ((__force snd_pcm_format_t) 52) /* DSD, 4-byte samples DSD (x32), big endian */ 2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_LAST SNDRV_PCM_FORMAT_DSD_U32_BE 2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifdef SNDRV_LITTLE_ENDIAN 2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_LE 2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_LE 2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_LE 2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_LE 2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_LE 2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_LE 2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_LE 2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_LE 2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_LE 2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifdef SNDRV_BIG_ENDIAN 2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S16 SNDRV_PCM_FORMAT_S16_BE 2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U16 SNDRV_PCM_FORMAT_U16_BE 2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S24 SNDRV_PCM_FORMAT_S24_BE 2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U24 SNDRV_PCM_FORMAT_U24_BE 2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_S32 SNDRV_PCM_FORMAT_S32_BE 2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_U32 SNDRV_PCM_FORMAT_U32_BE 2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT SNDRV_PCM_FORMAT_FLOAT_BE 2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_FLOAT64 SNDRV_PCM_FORMAT_FLOAT64_BE 2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_FORMAT_IEC958_SUBFRAME SNDRV_PCM_FORMAT_IEC958_SUBFRAME_BE 2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif 2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_pcm_subformat_t; 253d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_SUBFORMAT_STD ((__force snd_pcm_subformat_t) 0) 2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD 2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_MMAP 0x00000001 /* hardware supports mmap */ 2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_MMAP_VALID 0x00000002 /* period data are valid during transfer */ 2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_DOUBLE 0x00000004 /* Double buffering needed for PCM start/stop */ 2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_BATCH 0x00000010 /* double buffering */ 2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_INTERLEAVED 0x00000100 /* channels are interleaved */ 2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_NONINTERLEAVED 0x00000200 /* channels are not interleaved */ 2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_COMPLEX 0x00000400 /* complex frame organization (mmap only) */ 2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_BLOCK_TRANSFER 0x00010000 /* hardware transfer block of samples */ 2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_OVERRANGE 0x00020000 /* hardware supports ADC (capture) overrange detection */ 2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_RESUME 0x00040000 /* hardware supports stream resume after suspend */ 2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_PAUSE 0x00080000 /* pause ioctl is supported */ 2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_HALF_DUPLEX 0x00100000 /* only half duplex */ 2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_JOINT_DUPLEX 0x00200000 /* playback and capture stream are somewhat correlated */ 2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_SYNC_START 0x00400000 /* pcm support some kind of sync go */ 2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_NO_PERIOD_WAKEUP 0x00800000 /* period wakeup can be disabled */ 2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_HAS_WALL_CLOCK 0x01000000 /* has audio wall clock for audio/system time sync */ 2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_INFO_FIFO_IN_FRAMES 0x80000000 /* internal kernel flag - FIFO size is in frames */ 2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_pcm_state_t; 275d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_OPEN ((__force snd_pcm_state_t) 0) /* stream is open */ 276d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_SETUP ((__force snd_pcm_state_t) 1) /* stream has a setup */ 277d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_PREPARED ((__force snd_pcm_state_t) 2) /* stream is ready to start */ 278d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_RUNNING ((__force snd_pcm_state_t) 3) /* stream is running */ 279d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_XRUN ((__force snd_pcm_state_t) 4) /* stream reached an xrun */ 280d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_DRAINING ((__force snd_pcm_state_t) 5) /* stream is draining */ 281d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_PAUSED ((__force snd_pcm_state_t) 6) /* stream is paused */ 282d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_SUSPENDED ((__force snd_pcm_state_t) 7) /* hardware is suspended */ 283d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_PCM_STATE_DISCONNECTED ((__force snd_pcm_state_t) 8) /* hardware is disconnected */ 2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_STATE_LAST SNDRV_PCM_STATE_DISCONNECTED 2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_MMAP_OFFSET_DATA = 0x00000000, 2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_MMAP_OFFSET_STATUS = 0x80000000, 2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_MMAP_OFFSET_CONTROL = 0x81000000, 2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinunion snd_pcm_sync_id { 2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[16]; 2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short id16[8]; 2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int id32[4]; 2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_info { 2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int device; /* RO/WR (control): device number */ 3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevice; /* RO/WR (control): subdevice number */ 3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stream; /* RO/WR (control): stream direction */ 3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* R: card number */ 3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[64]; /* ID (user selectable) */ 3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[80]; /* name of this device */ 3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char subname[32]; /* subdevice name */ 3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int dev_class; /* SNDRV_PCM_CLASS_* */ 3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int dev_subclass; /* SNDRV_PCM_SUBCLASS_* */ 3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevices_count; 3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevices_avail; 3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union snd_pcm_sync_id sync; /* hardware synchronization ID */ 3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved for future... */ 3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int snd_pcm_hw_param_t; 3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_ACCESS 0 /* Access type */ 3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_FORMAT 1 /* Format */ 3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_SUBFORMAT 2 /* Subformat */ 3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_FIRST_MASK SNDRV_PCM_HW_PARAM_ACCESS 3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_LAST_MASK SNDRV_PCM_HW_PARAM_SUBFORMAT 3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_SAMPLE_BITS 8 /* Bits per sample */ 3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_FRAME_BITS 9 /* Bits per frame */ 3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_CHANNELS 10 /* Channels */ 3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_RATE 11 /* Approx rate */ 3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_PERIOD_TIME 12 /* Approx distance between 3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * interrupts in us 3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_PERIOD_SIZE 13 /* Approx frames between 3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * interrupts 3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_PERIOD_BYTES 14 /* Approx bytes between 3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * interrupts 3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_PERIODS 15 /* Approx interrupts per 3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * buffer 3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_BUFFER_TIME 16 /* Approx duration of buffer 3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * in us 3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_BUFFER_SIZE 17 /* Size of buffer in frames */ 3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_BUFFER_BYTES 18 /* Size of buffer in bytes */ 3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_TICK_TIME 19 /* Approx tick duration in us */ 3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_FIRST_INTERVAL SNDRV_PCM_HW_PARAM_SAMPLE_BITS 3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAM_LAST_INTERVAL SNDRV_PCM_HW_PARAM_TICK_TIME 3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAMS_NORESAMPLE (1<<0) /* avoid rate resampling */ 3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAMS_EXPORT_BUFFER (1<<1) /* export buffer */ 3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP (1<<2) /* disable period wakeups */ 3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_interval { 3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int min, max; 3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int openmin:1, 3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin openmax:1, 3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin integer:1, 3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin empty:1; 3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_MASK_MAX 256 3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_mask { 3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 bits[(SNDRV_MASK_MAX+31)/32]; 3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_hw_params { 3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; 3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_mask masks[SNDRV_PCM_HW_PARAM_LAST_MASK - 3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_HW_PARAM_FIRST_MASK + 1]; 3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_mask mres[5]; /* reserved masks */ 3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_interval intervals[SNDRV_PCM_HW_PARAM_LAST_INTERVAL - 3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_HW_PARAM_FIRST_INTERVAL + 1]; 3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_interval ires[9]; /* reserved intervals */ 3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int rmask; /* W: requested masks */ 3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int cmask; /* R: changed masks */ 3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int info; /* R: Info flags for returned setup */ 3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int msbits; /* R: used most significant bits */ 3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int rate_num; /* R: rate numerator */ 3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int rate_den; /* R: rate denominator */ 3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t fifo_size; /* R: chip FIFO size in frames */ 3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved for future */ 3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_NONE = 0, 3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_ENABLE, 3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_LAST = SNDRV_PCM_TSTAMP_ENABLE, 3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_sw_params { 3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int tstamp_mode; /* timestamp mode */ 3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int period_step; 3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int sleep_min; /* min ticks to sleep */ 3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t avail_min; /* min avail frames for wakeup */ 3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t xfer_align; /* obsolete: xfer size need to be a multiple */ 3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t start_threshold; /* min hw_avail frames for automatic start */ 3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t stop_threshold; /* min avail frames for automatic stop */ 3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */ 3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t silence_size; /* silence block size */ 3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t boundary; /* pointers wrap point */ 3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int proto; /* protocol version */ 4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int tstamp_type; /* timestamp type (req. proto >= 2.0.12) */ 4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[56]; /* reserved for future */ 4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_channel_info { 4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int channel; 4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __kernel_off_t offset; /* mmap offset */ 4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int first; /* offset to first sample in bits */ 4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int step; /* samples distance in bits */ 4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_status { 4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_state_t state; /* stream state */ 4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec trigger_tstamp; /* time when stream was started/stopped/paused */ 4145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; /* reference timestamp */ 4155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t appl_ptr; /* appl ptr */ 4165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t hw_ptr; /* hw ptr */ 4175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_sframes_t delay; /* current delay in frames */ 4185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t avail; /* number of frames available */ 4195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t avail_max; /* max frames available on hw since last status */ 4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t overrange; /* count of ADC (capture) overrange detections from last status */ 4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_state_t suspended_state; /* suspended stream state */ 4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u32 reserved_alignment; /* must be filled with zero */ 4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec audio_tstamp; /* from sample counter or wall clock */ 4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[56-sizeof(struct timespec)]; /* must be filled with zero */ 4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_mmap_status { 4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_state_t state; /* RO: state - SNDRV_PCM_STATE_XXXX */ 4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int pad1; /* Needed for 64 bit alignment */ 4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t hw_ptr; /* RO: hw ptr (0...boundary-1) */ 4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; /* Timestamp */ 4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_state_t suspended_state; /* RO: suspended stream state */ 4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec audio_tstamp; /* from sample counter or wall clock */ 4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_mmap_control { 4375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t appl_ptr; /* RW: appl ptr (0...boundary-1) */ 4385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t avail_min; /* RW: min available frames for wakeup */ 4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_SYNC_PTR_HWSYNC (1<<0) /* execute hwsync */ 4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_SYNC_PTR_APPL (1<<1) /* get appl_ptr from driver (r/w op) */ 4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_SYNC_PTR_AVAIL_MIN (1<<2) /* get avail_min from driver */ 4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_pcm_sync_ptr { 4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; 4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_pcm_mmap_status status; 4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; 4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } s; 4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_pcm_mmap_control control; 4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; 4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } c; 4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_xferi { 4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_sframes_t result; 459d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin void __user *buf; 4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t frames; 4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_xfern { 4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_sframes_t result; 465d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin void __user * __user *bufs; 4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_pcm_uframes_t frames; 4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0, /* gettimeofday equivalent */ 4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_TYPE_MONOTONIC, /* posix_clock_monotonic equivalent */ 4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, /* monotonic_raw (no NTP) */ 4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW, 4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* channel positions */ 4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_UNKNOWN = 0, 4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_NA, /* N/A, silent */ 4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_MONO, /* mono stream */ 4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* this follows the alsa-lib mixer channel value + 3 */ 4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FL, /* front left */ 4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FR, /* front right */ 4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RL, /* rear left */ 4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RR, /* rear right */ 4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FC, /* front center */ 4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_LFE, /* LFE */ 4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_SL, /* side left */ 4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_SR, /* side right */ 4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RC, /* rear center */ 4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* new definitions */ 4925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FLC, /* front left center */ 4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FRC, /* front right center */ 4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RLC, /* rear left center */ 4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RRC, /* rear right center */ 4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FLW, /* front left wide */ 4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FRW, /* front right wide */ 4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FLH, /* front left high */ 4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FCH, /* front center high */ 5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_FRH, /* front right high */ 5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TC, /* top center */ 5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TFL, /* top front left */ 5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TFR, /* top front right */ 5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TFC, /* top front center */ 5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TRL, /* top rear left */ 5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TRR, /* top rear right */ 5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TRC, /* top rear center */ 5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* new definitions for UAC2 */ 5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TFLC, /* top front left center */ 5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TFRC, /* top front right center */ 5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TSL, /* top side left */ 5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_TSR, /* top side right */ 5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_LLFE, /* left LFE */ 5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_RLFE, /* right LFE */ 5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_BC, /* bottom center */ 5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_BLC, /* bottom left center */ 5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_BRC, /* bottom right center */ 5185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CHMAP_LAST = SNDRV_CHMAP_BRC, 5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CHMAP_POSITION_MASK 0xffff 5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CHMAP_PHASE_INVERSE (0x01 << 16) 5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CHMAP_DRIVER_SPEC (0x02 << 16) 5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_PVERSION _IOR('A', 0x00, int) 5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_INFO _IOR('A', 0x01, struct snd_pcm_info) 5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_TSTAMP _IOW('A', 0x02, int) 5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_TTSTAMP _IOW('A', 0x03, int) 5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_HW_REFINE _IOWR('A', 0x10, struct snd_pcm_hw_params) 5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_HW_PARAMS _IOWR('A', 0x11, struct snd_pcm_hw_params) 5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_HW_FREE _IO('A', 0x12) 5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_SW_PARAMS _IOWR('A', 0x13, struct snd_pcm_sw_params) 5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_STATUS _IOR('A', 0x20, struct snd_pcm_status) 5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_DELAY _IOR('A', 0x21, snd_pcm_sframes_t) 5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_HWSYNC _IO('A', 0x22) 5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_SYNC_PTR _IOWR('A', 0x23, struct snd_pcm_sync_ptr) 5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_CHANNEL_INFO _IOR('A', 0x32, struct snd_pcm_channel_info) 5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_PREPARE _IO('A', 0x40) 5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_RESET _IO('A', 0x41) 5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_START _IO('A', 0x42) 5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_DROP _IO('A', 0x43) 5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_DRAIN _IO('A', 0x44) 5435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_PAUSE _IOW('A', 0x45, int) 5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_REWIND _IOW('A', 0x46, snd_pcm_uframes_t) 5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_RESUME _IO('A', 0x47) 5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_XRUN _IO('A', 0x48) 5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_FORWARD _IOW('A', 0x49, snd_pcm_uframes_t) 5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_WRITEI_FRAMES _IOW('A', 0x50, struct snd_xferi) 5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_READI_FRAMES _IOR('A', 0x51, struct snd_xferi) 5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_WRITEN_FRAMES _IOW('A', 0x52, struct snd_xfern) 5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_READN_FRAMES _IOR('A', 0x53, struct snd_xfern) 5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_LINK _IOW('A', 0x60, int) 5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_PCM_IOCTL_UNLINK _IO('A', 0x61) 5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/***************************************************************************** 5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MIDI v1.0 interface * 5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *****************************************************************************/ 5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Raw MIDI section - /dev/snd/midi?? 5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 0) 5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 5685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_RAWMIDI_STREAM_OUTPUT = 0, 5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_RAWMIDI_STREAM_INPUT, 5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_RAWMIDI_STREAM_LAST = SNDRV_RAWMIDI_STREAM_INPUT, 5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_INFO_OUTPUT 0x00000001 5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_INFO_INPUT 0x00000002 5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_INFO_DUPLEX 0x00000004 5765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_rawmidi_info { 5785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int device; /* RO/WR (control): device number */ 5795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevice; /* RO/WR (control): subdevice number */ 5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stream; /* WR: stream */ 5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* R: card number */ 5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; /* SNDRV_RAWMIDI_INFO_XXXX */ 5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[64]; /* ID (user selectable) */ 5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[80]; /* name of device */ 5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char subname[32]; /* name of active or selected subdevice */ 5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevices_count; 5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevices_avail; 5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved for future use */ 5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_rawmidi_params { 5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stream; 5935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin size_t buffer_size; /* queue size in bytes */ 5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin size_t avail_min; /* minimum avail bytes for wakeup */ 5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int no_active_sensing: 1; /* do not send active sensing byte in close() */ 5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[16]; /* reserved for future use */ 5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_rawmidi_status { 6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int stream; 6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; /* Timestamp */ 6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin size_t avail; /* available bytes */ 6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin size_t xruns; /* count of overruns since last status (in bytes) */ 6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[16]; /* reserved for future use */ 6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_PVERSION _IOR('W', 0x00, int) 6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_INFO _IOR('W', 0x01, struct snd_rawmidi_info) 6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_PARAMS _IOWR('W', 0x10, struct snd_rawmidi_params) 6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_STATUS _IOWR('W', 0x20, struct snd_rawmidi_status) 6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_DROP _IOW('W', 0x30, int) 6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_RAWMIDI_IOCTL_DRAIN _IOW('W', 0x31, int) 6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 6155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Timer section - /dev/snd/timer 6165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 6175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 6) 6195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 6215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_NONE = -1, 6225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_SLAVE = 0, 6235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_GLOBAL, 6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_CARD, 6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_PCM, 6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_CLASS_LAST = SNDRV_TIMER_CLASS_PCM, 6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* slave timer classes */ 6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_SCLASS_NONE = 0, 6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_SCLASS_APPLICATION, 6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_SCLASS_SEQUENCER, /* alias */ 6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_SCLASS_OSS_SEQUENCER, /* alias */ 6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_SCLASS_LAST = SNDRV_TIMER_SCLASS_OSS_SEQUENCER, 6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* global timers (device member) */ 6395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_GLOBAL_SYSTEM 0 6405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_GLOBAL_RTC 1 6415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_GLOBAL_HPET 2 6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_GLOBAL_HRTIMER 3 6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* info flags */ 6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_FLG_SLAVE (1<<0) /* cannot be controlled */ 6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_id { 6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int dev_class; 6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int dev_sclass; 6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; 6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int device; 6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int subdevice; 6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_ginfo { 6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_timer_id tid; /* requested timer ID */ 6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ 6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* card number */ 6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[64]; /* timer identification */ 6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[80]; /* timer name */ 6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long reserved0; /* reserved for future use */ 6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution; /* average period resolution in ns */ 6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution_min; /* minimal period resolution in ns */ 6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution_max; /* maximal period resolution in ns */ 6655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int clients; /* active timer clients */ 6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[32]; 6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_gparams { 6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_timer_id tid; /* requested timer ID */ 6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long period_num; /* requested precise period duration (in seconds) - numerator */ 6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long period_den; /* requested precise period duration (in seconds) - denominator */ 6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[32]; 6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_gstatus { 6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_timer_id tid; /* requested timer ID */ 6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution; /* current period resolution in ns */ 6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution_num; /* precise current period resolution (in seconds) - numerator */ 6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution_den; /* precise current period resolution (in seconds) - denominator */ 6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[32]; 6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_select { 6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_timer_id id; /* bind to timer ID */ 6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[32]; /* reserved */ 6875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_info { 6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; /* timer flags - SNDRV_TIMER_FLG_* */ 6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* card number */ 6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[64]; /* timer identificator */ 6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[80]; /* timer name */ 6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long reserved0; /* reserved for future use */ 6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned long resolution; /* average period resolution in ns */ 6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved */ 6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_PSFLG_AUTO (1<<0) /* auto start, otherwise one-shot */ 7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_PSFLG_EXCLUSIVE (1<<1) /* exclusive use, precise start/stop/pause/continue */ 7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_PSFLG_EARLY_EVENT (1<<2) /* write early event to the poll queue */ 7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_params { 7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int flags; /* flags - SNDRV_MIXER_PSFLG_* */ 7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int ticks; /* requested resolution in ticks */ 7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int queue_size; /* total size of queue (32-1024) */ 7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int reserved0; /* reserved, was: failure locations */ 7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int filter; /* event filter (bitmask of SNDRV_TIMER_EVENT_*) */ 7095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[60]; /* reserved */ 7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_status { 7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; /* Timestamp - last update */ 7145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int resolution; /* current period resolution in ns */ 7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int lost; /* counter of master tick lost */ 7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int overrun; /* count of read queue overruns */ 7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int queue; /* used queue size */ 7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64]; /* reserved */ 7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_PVERSION _IOR('T', 0x00, int) 7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_NEXT_DEVICE _IOWR('T', 0x01, struct snd_timer_id) 7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_TREAD _IOW('T', 0x02, int) 7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_GINFO _IOWR('T', 0x03, struct snd_timer_ginfo) 7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_GPARAMS _IOW('T', 0x04, struct snd_timer_gparams) 7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_GSTATUS _IOWR('T', 0x05, struct snd_timer_gstatus) 7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_SELECT _IOW('T', 0x10, struct snd_timer_select) 7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_INFO _IOR('T', 0x11, struct snd_timer_info) 7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_PARAMS _IOW('T', 0x12, struct snd_timer_params) 7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_STATUS _IOR('T', 0x14, struct snd_timer_status) 7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The following four ioctls are changed since 1.0.9 due to confliction */ 7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_START _IO('T', 0xa0) 7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_STOP _IO('T', 0xa1) 7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_CONTINUE _IO('T', 0xa2) 7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_TIMER_IOCTL_PAUSE _IO('T', 0xa3) 7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_read { 7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int resolution; 7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int ticks; 7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum { 7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_RESOLUTION = 0, /* val = resolution in ns */ 7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_TICK, /* val = ticks */ 7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_START, /* val = resolution in ns */ 7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_STOP, /* val = 0 */ 7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_CONTINUE, /* val = resolution in ns */ 7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_PAUSE, /* val = 0 */ 7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_EARLY, /* val = 0, early event */ 7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_SUSPEND, /* val = 0 */ 7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_RESUME, /* val = resolution in ns */ 7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin /* master timer events for slave timer instances */ 7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MSTART = SNDRV_TIMER_EVENT_START + 10, 7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MSTOP = SNDRV_TIMER_EVENT_STOP + 10, 7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MCONTINUE = SNDRV_TIMER_EVENT_CONTINUE + 10, 7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MPAUSE = SNDRV_TIMER_EVENT_PAUSE + 10, 7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MSUSPEND = SNDRV_TIMER_EVENT_SUSPEND + 10, 7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_TIMER_EVENT_MRESUME = SNDRV_TIMER_EVENT_RESUME + 10, 7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_timer_tread { 7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int event; 7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; 7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int val; 7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**************************************************************************** 7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Section for driver control interface - /dev/snd/control? * 7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * * 7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin ****************************************************************************/ 7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 7) 7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_card_info { 7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int card; /* card number */ 7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int pad; /* reserved for future (was type) */ 7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char id[16]; /* ID of card (user selectable) */ 7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char driver[16]; /* Driver name */ 7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[32]; /* Short name of soundcard */ 7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char longname[80]; /* name + info text about soundcard */ 7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved_[16]; /* reserved for future (was ID of mixer) */ 7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char mixername[80]; /* visual mixer identification */ 7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char components[128]; /* card components / fine identification, delimited with one space (AC97 etc..) */ 7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_ctl_elem_type_t; 788d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_NONE ((__force snd_ctl_elem_type_t) 0) /* invalid */ 789d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_BOOLEAN ((__force snd_ctl_elem_type_t) 1) /* boolean type */ 790d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_INTEGER ((__force snd_ctl_elem_type_t) 2) /* integer type */ 791d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_ENUMERATED ((__force snd_ctl_elem_type_t) 3) /* enumerated type */ 792d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_BYTES ((__force snd_ctl_elem_type_t) 4) /* byte array */ 793d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_IEC958 ((__force snd_ctl_elem_type_t) 5) /* IEC958 (S/PDIF) setup */ 794d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_INTEGER64 ((__force snd_ctl_elem_type_t) 6) /* 64-bit integer type */ 7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_TYPE_LAST SNDRV_CTL_ELEM_TYPE_INTEGER64 7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef int __bitwise snd_ctl_elem_iface_t; 798d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_CARD ((__force snd_ctl_elem_iface_t) 0) /* global control */ 799d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_HWDEP ((__force snd_ctl_elem_iface_t) 1) /* hardware dependent device */ 800d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_MIXER ((__force snd_ctl_elem_iface_t) 2) /* virtual mixer device */ 801d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_PCM ((__force snd_ctl_elem_iface_t) 3) /* PCM device */ 802d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_RAWMIDI ((__force snd_ctl_elem_iface_t) 4) /* RawMidi device */ 803d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_TIMER ((__force snd_ctl_elem_iface_t) 5) /* timer device */ 804d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_SEQUENCER ((__force snd_ctl_elem_iface_t) 6) /* sequencer client */ 8055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_IFACE_LAST SNDRV_CTL_ELEM_IFACE_SEQUENCER 8065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_READ (1<<0) 8085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_WRITE (1<<1) 8095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_READWRITE (SNDRV_CTL_ELEM_ACCESS_READ|SNDRV_CTL_ELEM_ACCESS_WRITE) 8105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_VOLATILE (1<<2) /* control value may be changed without a notification */ 8115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TIMESTAMP (1<<3) /* when was control changed */ 8125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TLV_READ (1<<4) /* TLV read is possible */ 8135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TLV_WRITE (1<<5) /* TLV write is possible */ 8145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE (SNDRV_CTL_ELEM_ACCESS_TLV_READ|SNDRV_CTL_ELEM_ACCESS_TLV_WRITE) 8155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TLV_COMMAND (1<<6) /* TLV command is possible */ 8165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_INACTIVE (1<<8) /* control does actually nothing, but may be updated */ 8175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_LOCK (1<<9) /* write lock */ 8185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_OWNER (1<<10) /* write lock owner */ 8195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK (1<<28) /* kernel use a TLV callback */ 8205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ACCESS_USER (1<<29) /* user space element */ 8215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* bits 30 and 31 are obsoleted (for indirect access) */ 8225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* for further details see the ACPI and PCI power management specification */ 8245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D0 0x0000 /* full On */ 8255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D1 0x0100 /* partial On */ 8265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D2 0x0200 /* partial On */ 8275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D3 0x0300 /* Off */ 8285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D3hot (SNDRV_CTL_POWER_D3|0x0000) /* Off, with power */ 8295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_POWER_D3cold (SNDRV_CTL_POWER_D3|0x0001) /* Off, without power */ 8305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_ELEM_ID_NAME_MAXLEN 44 8325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_elem_id { 8345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int numid; /* numeric identifier, zero = invalid */ 8355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_ctl_elem_iface_t iface; /* interface identifier */ 8365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int device; /* device/client number */ 8375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int subdevice; /* subdevice (substream) number */ 8385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char name[44]; /* ASCII name of item */ 8395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int index; /* index of item */ 8405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 8415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_elem_list { 8435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int offset; /* W: first element ID to get */ 8445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int space; /* W: count of element IDs to get */ 8455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int used; /* R: count of element IDs set */ 8465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int count; /* R: count of all elements */ 847d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin struct snd_ctl_elem_id __user *pids; /* R: IDs */ 8485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[50]; 8495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 8505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_elem_info { 8525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_ctl_elem_id id; /* W: element ID */ 8535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin snd_ctl_elem_type_t type; /* R: value type - SNDRV_CTL_ELEM_TYPE_* */ 8545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int access; /* R: value access (bitmask) - SNDRV_CTL_ELEM_ACCESS_* */ 8555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int count; /* count of values */ 8565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __kernel_pid_t owner; /* owner's PID of this control */ 8575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct { 8595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long min; /* R: minimum value */ 8605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long max; /* R: maximum value */ 8615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long step; /* R: step (0 variable) */ 8625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } integer; 8635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct { 8645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long min; /* R: minimum value */ 8655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long max; /* R: maximum value */ 8665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long step; /* R: step (0 variable) */ 8675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } integer64; 8685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct { 8695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int items; /* R: number of items */ 8705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int item; /* W: item number */ 8715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin char name[64]; /* R: value name */ 8725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin __u64 names_ptr; /* W: names list (ELEM_ADD only) */ 8735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int names_length; 8745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } enumerated; 8755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[128]; 8765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } value; 8775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short d[4]; /* dimensions */ 8795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned short *d_ptr; /* indirect - obsoleted */ 8805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } dimen; 8815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[64-4*sizeof(unsigned short)]; 8825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 8835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 8845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_elem_value { 8855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_ctl_elem_id id; /* W: element ID */ 8865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int indirect: 1; /* W: indirect access - obsoleted */ 8875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long value[128]; 8905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long *value_ptr; /* obsoleted */ 8915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } integer; 8925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long value[64]; 8945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin long long *value_ptr; /* obsoleted */ 8955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } integer64; 8965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 8975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int item[128]; 8985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int *item_ptr; /* obsoleted */ 8995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } enumerated; 9005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 9015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char data[512]; 9025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char *data_ptr; /* obsoleted */ 9035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } bytes; 9045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_aes_iec958 iec958; 9055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } value; /* RO */ 9065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct timespec tstamp; 9075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char reserved[128-sizeof(struct timespec)]; 9085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_tlv { 9115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int numid; /* control element numeric identification */ 9125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int length; /* in bytes aligned to 4 */ 9135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int tlv[0]; /* first TLV */ 9145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int) 9175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info) 9185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_LIST _IOWR('U', 0x10, struct snd_ctl_elem_list) 9195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_INFO _IOWR('U', 0x11, struct snd_ctl_elem_info) 9205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_READ _IOWR('U', 0x12, struct snd_ctl_elem_value) 9215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_WRITE _IOWR('U', 0x13, struct snd_ctl_elem_value) 9225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_LOCK _IOW('U', 0x14, struct snd_ctl_elem_id) 9235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_UNLOCK _IOW('U', 0x15, struct snd_ctl_elem_id) 9245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_SUBSCRIBE_EVENTS _IOWR('U', 0x16, int) 9255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_ADD _IOWR('U', 0x17, struct snd_ctl_elem_info) 9265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_REPLACE _IOWR('U', 0x18, struct snd_ctl_elem_info) 9275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_ELEM_REMOVE _IOWR('U', 0x19, struct snd_ctl_elem_id) 9285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_TLV_READ _IOWR('U', 0x1a, struct snd_ctl_tlv) 9295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_TLV_WRITE _IOWR('U', 0x1b, struct snd_ctl_tlv) 9305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_TLV_COMMAND _IOWR('U', 0x1c, struct snd_ctl_tlv) 9315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_HWDEP_NEXT_DEVICE _IOWR('U', 0x20, int) 9325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_HWDEP_INFO _IOR('U', 0x21, struct snd_hwdep_info) 9335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_PCM_NEXT_DEVICE _IOR('U', 0x30, int) 9345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_PCM_INFO _IOWR('U', 0x31, struct snd_pcm_info) 9355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_PCM_PREFER_SUBDEVICE _IOW('U', 0x32, int) 9365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_RAWMIDI_NEXT_DEVICE _IOWR('U', 0x40, int) 9375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_RAWMIDI_INFO _IOWR('U', 0x41, struct snd_rawmidi_info) 9385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE _IOW('U', 0x42, int) 9395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_POWER _IOWR('U', 0xd0, int) 9405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_IOCTL_POWER_STATE _IOR('U', 0xd1, int) 9415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 9435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Read interface. 9445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 9455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum sndrv_ctl_event_type { 9475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CTL_EVENT_ELEM = 0, 9485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin SNDRV_CTL_EVENT_LAST = SNDRV_CTL_EVENT_ELEM, 9495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_EVENT_MASK_VALUE (1<<0) /* element value was changed */ 9525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_EVENT_MASK_INFO (1<<1) /* element info was changed */ 9535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_EVENT_MASK_ADD (1<<2) /* element was added */ 9545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_EVENT_MASK_TLV (1<<3) /* element TLV tree was changed */ 9555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_EVENT_MASK_REMOVE (~0U) /* element was removed */ 9565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct snd_ctl_event { 9585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin int type; /* event type - SNDRV_CTL_EVENT_* */ 9595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin union { 9605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct { 9615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned int mask; 9625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin struct snd_ctl_elem_id id; 9635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } elem; 9645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin unsigned char data8[60]; 9655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin } data; 9665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin}; 9675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* 9695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Control names 9705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */ 9715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_NONE "" 9735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_PLAYBACK "Playback " 9745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_CAPTURE "Capture " 9755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 9765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_NONE "" 9775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_SWITCH "Switch" 9785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_VOLUME "Volume" 9795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_DEFAULT "Default" 9805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_MASK "Mask" 9815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_CON_MASK "Con Mask" 9825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_PRO_MASK "Pro Mask" 9835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958_PCM_STREAM "PCM Stream" 9845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define SNDRV_CTL_NAME_IEC958(expl,direction,what) "IEC958 " expl SNDRV_CTL_NAME_##direction SNDRV_CTL_NAME_IEC958_##what 9855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin 986d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#endif /* _UAPI__SOUND_ASOUND_H */ 987