⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soundcard.h

📁 IXP425的BSP代码
💻 H
📖 第 1 页 / 共 4 页
字号:
		int offs;	/* If required by the device (0 if not used) */		unsigned char data[4000]; /* NOTE! 4000 is not 4k */	} copr_buffer;typedef struct copr_debug_buf {		int command;	/* Used internally. Set to 0 */		int parm1;		int parm2;		int flags;			int len;	/* Length of data in bytes */	} copr_debug_buf;typedef struct copr_msg {		int len;		unsigned char data[4000];	} copr_msg;#define SNDCTL_COPR_RESET             __SIO  ('C',  0)#define SNDCTL_COPR_LOAD	      __SIOWR('C',  1, copr_buffer)#define SNDCTL_COPR_RDATA	      __SIOWR('C',  2, copr_debug_buf)#define SNDCTL_COPR_RCODE	      __SIOWR('C',  3, copr_debug_buf)#define SNDCTL_COPR_WDATA	      __SIOW ('C',  4, copr_debug_buf)#define SNDCTL_COPR_WCODE	      __SIOW ('C',  5, copr_debug_buf)#define SNDCTL_COPR_RUN		      __SIOWR('C',  6, copr_debug_buf)#define SNDCTL_COPR_HALT	      __SIOWR('C',  7, copr_debug_buf)#define SNDCTL_COPR_SENDMSG	      __SIOWR('C',  8, copr_msg)#define SNDCTL_COPR_RCVMSG	      __SIOR ('C',  9, copr_msg)/********************************************* * IOCTL commands for /dev/mixer */	/*  * Mixer devices * * There can be up to 20 different analog mixer channels. The * SOUND_MIXER_NRDEVICES gives the currently supported maximum.  * The SOUND_MIXER_READ_DEVMASK returns a bitmask which tells * the devices supported by the particular mixer. */#define SOUND_MIXER_NRDEVICES	28#define SOUND_MIXER_VOLUME	0#define SOUND_MIXER_BASS	1#define SOUND_MIXER_TREBLE	2#define SOUND_MIXER_SYNTH	3#define SOUND_MIXER_PCM		4#define SOUND_MIXER_SPEAKER	5#define SOUND_MIXER_LINE	6#define SOUND_MIXER_MIC		7#define SOUND_MIXER_CD		8#define SOUND_MIXER_IMIX	9	/*  Recording monitor  */#define SOUND_MIXER_ALTPCM	10#define SOUND_MIXER_RECLEV	11	/* Recording level */#define SOUND_MIXER_IGAIN	12	/* Input gain */#define SOUND_MIXER_OGAIN	13	/* Output gain *//*  * The AD1848 codec and compatibles have three line level inputs * (line, aux1 and aux2). Since each card manufacturer have assigned * different meanings to these inputs, it's inpractical to assign * specific meanings (line, cd, synth etc.) to them. */#define SOUND_MIXER_LINE1	14	/* Input source 1  (aux1) */#define SOUND_MIXER_LINE2	15	/* Input source 2  (aux2) */#define SOUND_MIXER_LINE3	16	/* Input source 3  (line) */#define SOUND_MIXER_DIGITAL1	17	/* Digital (input) 1 */#define SOUND_MIXER_DIGITAL2	18	/* Digital (input) 2 */#define SOUND_MIXER_DIGITAL3	19	/* Digital (input) 3 */#define SOUND_MIXER_PHONEIN	20	/* Phone input */#define SOUND_MIXER_PHONEOUT	21	/* Phone output */#define SOUND_MIXER_VIDEO	22	/* Video/TV (audio) in */#define SOUND_MIXER_RADIO	23	/* Radio in */#define SOUND_MIXER_MONITOR	24	/* Monitor (usually mic) volume */#define SOUND_MIXER_DEPTH	25	/* 3D "depth"/"space" parameter */#define SOUND_MIXER_CENTER	26	/* 3D "center" parameter */#define SOUND_MIXER_MIDI	27	/* Alternative for "synth" *//* Some on/off settings (SOUND_SPECIAL_MIN - SOUND_SPECIAL_MAX) *//* Not counted to SOUND_MIXER_NRDEVICES, but use the same number space */#define SOUND_ONOFF_MIN		28#define SOUND_ONOFF_MAX		30/* Note!	Number 31 cannot be used since the sign bit is reserved */#define SOUND_MIXER_NONE	31/* * The following unsupported macros are no longer functional. * Use SOUND_MIXER_PRIVATE# macros in future. */#define SOUND_MIXER_ENHANCE	SOUND_MIXER_NONE#define SOUND_MIXER_MUTE	SOUND_MIXER_NONE#define SOUND_MIXER_LOUD	SOUND_MIXER_NONE#define SOUND_DEVICE_LABELS	{"Vol  ", "Bass ", "Trebl", "Synth", "Pcm  ", "Spkr ", "Line ", \				 "Mic  ", "CD   ", "Mix  ", "Pcm2 ", "Rec  ", "IGain", "OGain", \				 "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3", \				 "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor", \				 "Depth", "Center", "MIDI"}#define SOUND_DEVICE_NAMES	{"vol", "bass", "treble", "synth", "pcm", "speaker", "line", \				 "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain", \				 "line1", "line2", "line3", "dig1", "dig2", "dig3", \				 "phin", "phout", "video", "radio", "monitor", \				 "depth", "center", "midi"}/*	Device bitmask identifiers	*/#define SOUND_MIXER_RECSRC	0xff	/* Arg contains a bit for each recording source */#define SOUND_MIXER_DEVMASK	0xfe	/* Arg contains a bit for each supported device */#define SOUND_MIXER_RECMASK	0xfd	/* Arg contains a bit for each supported recording source */#define SOUND_MIXER_CAPS	0xfc#	define SOUND_CAP_EXCL_INPUT	0x00000001	/* Only one recording source at a time */#define SOUND_MIXER_STEREODEVS	0xfb	/* Mixer channels supporting stereo *//*	Device mask bits	*/#define SOUND_MASK_VOLUME	(1 << SOUND_MIXER_VOLUME)#define SOUND_MASK_BASS		(1 << SOUND_MIXER_BASS)#define SOUND_MASK_TREBLE	(1 << SOUND_MIXER_TREBLE)#define SOUND_MASK_SYNTH	(1 << SOUND_MIXER_SYNTH)#define SOUND_MASK_PCM		(1 << SOUND_MIXER_PCM)#define SOUND_MASK_SPEAKER	(1 << SOUND_MIXER_SPEAKER)#define SOUND_MASK_LINE		(1 << SOUND_MIXER_LINE)#define SOUND_MASK_MIC		(1 << SOUND_MIXER_MIC)#define SOUND_MASK_CD		(1 << SOUND_MIXER_CD)#define SOUND_MASK_IMIX		(1 << SOUND_MIXER_IMIX)#define SOUND_MASK_ALTPCM	(1 << SOUND_MIXER_ALTPCM)#define SOUND_MASK_RECLEV	(1 << SOUND_MIXER_RECLEV)#define SOUND_MASK_IGAIN	(1 << SOUND_MIXER_IGAIN)#define SOUND_MASK_OGAIN	(1 << SOUND_MIXER_OGAIN)#define SOUND_MASK_LINE1	(1 << SOUND_MIXER_LINE1)#define SOUND_MASK_LINE2	(1 << SOUND_MIXER_LINE2)#define SOUND_MASK_LINE3	(1 << SOUND_MIXER_LINE3)#define SOUND_MASK_DIGITAL1	(1 << SOUND_MIXER_DIGITAL1)#define SOUND_MASK_DIGITAL2	(1 << SOUND_MIXER_DIGITAL2)#define SOUND_MASK_DIGITAL3	(1 << SOUND_MIXER_DIGITAL3)#define SOUND_MASK_PHONEIN	(1 << SOUND_MIXER_PHONEIN)#define SOUND_MASK_PHONEOUT	(1 << SOUND_MIXER_PHONEOUT)#define SOUND_MASK_RADIO	(1 << SOUND_MIXER_RADIO)#define SOUND_MASK_VIDEO	(1 << SOUND_MIXER_VIDEO)#define SOUND_MASK_MONITOR	(1 << SOUND_MIXER_MONITOR)#define SOUND_MASK_DEPTH	(1 << SOUND_MIXER_DEPTH)#define SOUND_MASK_CENTER	(1 << SOUND_MIXER_CENTER)#define SOUND_MASK_MIDI		(1 << SOUND_MIXER_MIDI)/* Obsolete macros */#define SOUND_MASK_MUTE		(1 << SOUND_MIXER_MUTE)#define SOUND_MASK_ENHANCE	(1 << SOUND_MIXER_ENHANCE)#define SOUND_MASK_LOUD		(1 << SOUND_MIXER_LOUD)#define MIXER_READ(dev)		__SIOR('M', dev, int)#define SOUND_MIXER_READ_VOLUME		MIXER_READ(SOUND_MIXER_VOLUME)#define SOUND_MIXER_READ_BASS		MIXER_READ(SOUND_MIXER_BASS)#define SOUND_MIXER_READ_TREBLE		MIXER_READ(SOUND_MIXER_TREBLE)#define SOUND_MIXER_READ_SYNTH		MIXER_READ(SOUND_MIXER_SYNTH)#define SOUND_MIXER_READ_PCM		MIXER_READ(SOUND_MIXER_PCM)#define SOUND_MIXER_READ_SPEAKER	MIXER_READ(SOUND_MIXER_SPEAKER)#define SOUND_MIXER_READ_LINE		MIXER_READ(SOUND_MIXER_LINE)#define SOUND_MIXER_READ_MIC		MIXER_READ(SOUND_MIXER_MIC)#define SOUND_MIXER_READ_CD		MIXER_READ(SOUND_MIXER_CD)#define SOUND_MIXER_READ_IMIX		MIXER_READ(SOUND_MIXER_IMIX)#define SOUND_MIXER_READ_ALTPCM		MIXER_READ(SOUND_MIXER_ALTPCM)#define SOUND_MIXER_READ_RECLEV		MIXER_READ(SOUND_MIXER_RECLEV)#define SOUND_MIXER_READ_IGAIN		MIXER_READ(SOUND_MIXER_IGAIN)#define SOUND_MIXER_READ_OGAIN		MIXER_READ(SOUND_MIXER_OGAIN)#define SOUND_MIXER_READ_LINE1		MIXER_READ(SOUND_MIXER_LINE1)#define SOUND_MIXER_READ_LINE2		MIXER_READ(SOUND_MIXER_LINE2)#define SOUND_MIXER_READ_LINE3		MIXER_READ(SOUND_MIXER_LINE3)/* Obsolete macros */#define SOUND_MIXER_READ_MUTE		MIXER_READ(SOUND_MIXER_MUTE)#define SOUND_MIXER_READ_ENHANCE	MIXER_READ(SOUND_MIXER_ENHANCE)#define SOUND_MIXER_READ_LOUD		MIXER_READ(SOUND_MIXER_LOUD)#define SOUND_MIXER_READ_RECSRC		MIXER_READ(SOUND_MIXER_RECSRC)#define SOUND_MIXER_READ_DEVMASK	MIXER_READ(SOUND_MIXER_DEVMASK)#define SOUND_MIXER_READ_RECMASK	MIXER_READ(SOUND_MIXER_RECMASK)#define SOUND_MIXER_READ_STEREODEVS	MIXER_READ(SOUND_MIXER_STEREODEVS)#define SOUND_MIXER_READ_CAPS		MIXER_READ(SOUND_MIXER_CAPS)#define MIXER_WRITE(dev)		__SIOWR('M', dev, int)#define SOUND_MIXER_WRITE_VOLUME	MIXER_WRITE(SOUND_MIXER_VOLUME)#define SOUND_MIXER_WRITE_BASS		MIXER_WRITE(SOUND_MIXER_BASS)#define SOUND_MIXER_WRITE_TREBLE	MIXER_WRITE(SOUND_MIXER_TREBLE)#define SOUND_MIXER_WRITE_SYNTH		MIXER_WRITE(SOUND_MIXER_SYNTH)#define SOUND_MIXER_WRITE_PCM		MIXER_WRITE(SOUND_MIXER_PCM)#define SOUND_MIXER_WRITE_SPEAKER	MIXER_WRITE(SOUND_MIXER_SPEAKER)#define SOUND_MIXER_WRITE_LINE		MIXER_WRITE(SOUND_MIXER_LINE)#define SOUND_MIXER_WRITE_MIC		MIXER_WRITE(SOUND_MIXER_MIC)#define SOUND_MIXER_WRITE_CD		MIXER_WRITE(SOUND_MIXER_CD)#define SOUND_MIXER_WRITE_IMIX		MIXER_WRITE(SOUND_MIXER_IMIX)#define SOUND_MIXER_WRITE_ALTPCM	MIXER_WRITE(SOUND_MIXER_ALTPCM)#define SOUND_MIXER_WRITE_RECLEV	MIXER_WRITE(SOUND_MIXER_RECLEV)#define SOUND_MIXER_WRITE_IGAIN		MIXER_WRITE(SOUND_MIXER_IGAIN)#define SOUND_MIXER_WRITE_OGAIN		MIXER_WRITE(SOUND_MIXER_OGAIN)#define SOUND_MIXER_WRITE_LINE1		MIXER_WRITE(SOUND_MIXER_LINE1)#define SOUND_MIXER_WRITE_LINE2		MIXER_WRITE(SOUND_MIXER_LINE2)#define SOUND_MIXER_WRITE_LINE3		MIXER_WRITE(SOUND_MIXER_LINE3)/* Obsolete macros */#define SOUND_MIXER_WRITE_MUTE		MIXER_WRITE(SOUND_MIXER_MUTE)#define SOUND_MIXER_WRITE_ENHANCE	MIXER_WRITE(SOUND_MIXER_ENHANCE)#define SOUND_MIXER_WRITE_LOUD		MIXER_WRITE(SOUND_MIXER_LOUD)#define SOUND_MIXER_WRITE_RECSRC	MIXER_WRITE(SOUND_MIXER_RECSRC)typedef struct mixer_info{  char id[16];  char name[32];  int  modify_counter;  int fillers[10];} mixer_info;typedef struct _old_mixer_info /* Obsolete */{  char id[16];  char name[32];} _old_mixer_info;#define SOUND_MIXER_INFO		__SIOR ('M', 101, mixer_info)#define SOUND_OLD_MIXER_INFO		__SIOR ('M', 101, _old_mixer_info)/* * A mechanism for accessing "proprietary" mixer features. This method * permits passing 128 bytes of arbitrary data between a mixer application * and the mixer driver. Interpretation of the record is defined by * the particular mixer driver. */typedef unsigned char mixer_record[128];#define SOUND_MIXER_ACCESS		__SIOWR('M', 102, mixer_record)/* * The SOUND_MIXER_PRIVATE# commands can be redefined by low level drivers. * These features can be used when accessing device specific features. */#define SOUND_MIXER_PRIVATE1		__SIOWR('M', 111, int)#define SOUND_MIXER_PRIVATE2		__SIOWR('M', 112, int)#define SOUND_MIXER_PRIVATE3		__SIOWR('M', 113, int)#define SOUND_MIXER_PRIVATE4		__SIOWR('M', 114, int)#define SOUND_MIXER_PRIVATE5		__SIOWR('M', 115, int)/* * SOUND_MIXER_GETLEVELS and SOUND_MIXER_SETLEVELS calls can be used * for querying current mixer settings from the driver and for loading * default volume settings _prior_ activating the mixer (loading * doesn't affect current state of the mixer hardware). These calls * are for internal use only. */typedef struct mixer_vol_table {  int num;	/* Index to volume table */  char name[32];  int levels[32];} mixer_vol_table;#define SOUND_MIXER_GETLEVELS		__SIOWR('M', 116, mixer_vol_table)#define SOUND_MIXER_SETLEVELS		__SIOWR('M', 117, mixer_vol_table)/*  * An ioctl for identifying the driver version. It will return value * of the SOUND_VERSION macro used when compiling the driver. * This call was introduced in OSS version 3.6 and it will not work * with earlier versions (returns EINVAL). */#define OSS_GETVERSION			__SIOR ('M', 118, int)/************************************************* * Extended mixer interface  (OSS 4.0 and later) * *************************************************/#define SYSINFO_FILL_SIZE 256typedef struct oss_sysinfo {  char product[32];	/* For example OSS/Free, OSS/Linux or OSS/Solaris */  char version[32];	/* For example 4.0a */  int versionnum;	/* See OSS_GETVERSION */  char options[128];	/* Reserved */  int numaudios;	/* # of audio/dsp devices */  int openedaudio[8];	/* Bit mask telling which audio devices are busy */   int numsynths;	/* # of availavle synth devices */  int nummidis;		/* # of available MIDI ports */  int numtimers;	/* # of available timer devices */  int nummixers;	/* # of mixer devices */  int filler[SYSINFO_FILL_SIZE];/* For future expansion (set to -1) */} oss_sysinfo;typedef struct oss_mixext {  int dev;		/* Mixer device number */  int ctrl;		/* Controller number */  int type;		/* Entry type */#	define MIXT_DEVROOT	 0	/* Device root entry */#	define MIXT_GROUP	 1	/* Controller group */#	define MIXT_ONOFF	 2	/* OFF (0) or ON (1) */#	define MIXT_ENUM	 3	/* Enumerated (0 to maxvalue) */#	define MIXT_MONOSLIDER	 4	/* Mono slider (0 to 100) */#	define MIXT_STEREOSLIDER 5	/* Stereo slider (dual 0 to 100) */#	define MIXT_MESSAGE	 6	/* (Readable) textual message */#	define MIXT_MONOVU	 7	/* VU meter value (mono) */#	define MIXT_STEREOVU	 8	/* VU meter value (stereo) */#	define MIXT_MONOPEAK	 9	/* VU meter peak value (mono) */#	define MIXT_STEREOPEAK	10	/* VU meter peak value (stereo) */#	define MIXT_RADIOGROUP	11	/* Radio button group */#	define MIXT_MARKER	12	/* Separator between normal and extension entries */#	define MIXT_VALUE	13	/* Decimal value entry */#	define MIXT_HEXVALUE	14	/* Hexadecimal value entry */  int maxvalue;		/* Possible value range (0 to maxvalue) */  int flags;#	define MIXF_READABLE  0x00000001	/* Has readable value */#	define MIXF_WRITEABLE 0x00000002	/* Has writeable value */  char id[16];		/* Mnemonic ID (for linking with user space info) */  int parent;		/* Entry# of parent (group) node (-1 if root) */  void *handler;	/* Internal use */  char data[64];	/* Misc data (entry type dependent) */} oss_mixext;typedef struct oss_mixext_root {  char id[16];  char name[48];} oss_mixext_root;typedef struct oss_mixer_value{	int dev;	int ctrl;	int value;	int flags;	/* Reserved for future use. Initialize to 0 */	int filler[8];  /* Reserved for future use. Initialize to 0 */}oss_mixer_value;#define OSS_SYSINFO			__SIOR ('X', 1, oss_sysinfo)#define SNDCTL_MIX_NRMIX		__SIOR ('X', 2, int)#define SNDCTL_MIX_NREXT		__SIOWR('X', 3, int)#define SNDCTL_MIX_EXTINFO		__SIOWR('X', 4, oss_mixext)#define SNDCTL_MIX_READ			__SIOWR('X', 5, oss_mixer_value)#define SNDCTL_MIX_WRITE		__SIOWR('X', 6, oss_mixer_value)/* * Level 2 event types for /dev/sequencer *//* * The 4 most significant bits of byte 0 specify the class of

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -