155118Storek /*
2*63320Sbostic  * Copyright (c) 1991, 1992, 1993
3*63320Sbostic  *	The Regents of the University of California.  All rights reserved.
455118Storek  *
555118Storek  * This software was developed by the Computer Systems Engineering group
655118Storek  * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
755118Storek  * contributed to Berkeley.
855118Storek  *
955501Sbostic  * All advertising materials mentioning features or use of this software
1055501Sbostic  * must display the following acknowledgement:
1155501Sbostic  *	This product includes software developed by the University of
1259197Storek  *	California, Lawrence Berkeley Laboratory.
1355501Sbostic  *
1455118Storek  * %sccs.include.redist.c%
1555118Storek  *
16*63320Sbostic  *	@(#)bsd_audioio.h	8.1 (Berkeley) 06/11/93
1755118Storek  *
1859197Storek  * from: $Header: bsd_audioio.h,v 1.5 92/11/21 20:46:46 van Exp $ (LBL)
1955118Storek  */
2055118Storek 
2155118Storek #ifndef _BSD_AUDIOIO_H_
2255118Storek #define _BSD_AUDIOIO_H_
2355118Storek 
2455118Storek /*
2555118Storek  * /dev/audio ioctls.  needs comments!
2655118Storek  */
2759197Storek #define AUDIO_MIN_GAIN (0)
2859197Storek #define AUDIO_MAX_GAIN (255)
2955118Storek 
3059197Storek #define AUDIO_ENCODING_ULAW (1)
3159197Storek #define AUDIO_ENCODING_ALAW (2)
3255118Storek 
3355118Storek struct audio_prinfo {
3455118Storek 	u_int	sample_rate;
3555118Storek 	u_int	channels;
3655118Storek 	u_int	precision;
3755118Storek 	u_int	encoding;
3855118Storek 	u_int	gain;
3955118Storek 	u_int	port;
4059197Storek 	u_long	seek;		/* BSD extension */
4159197Storek 	u_int	ispare[3];
4255118Storek 	u_int	samples;
4359197Storek 	u_int	eof;
4455118Storek 
4555118Storek 	u_char	pause;
4655118Storek 	u_char	error;
4755118Storek 	u_char	waiting;
4859197Storek 	u_char	cspare[3];
4955118Storek 	u_char	open;
5059197Storek 	u_char	active;
5155118Storek 
5255118Storek };
5355118Storek 
5455118Storek struct audio_info {
5555118Storek 	struct	audio_prinfo play;
5655118Storek 	struct	audio_prinfo record;
5755118Storek 	u_int	monitor_gain;
5855118Storek 	/* BSD extensions */
5955118Storek 	u_int	blocksize;	/* input blocking threshold */
6055118Storek 	u_int	hiwat;		/* output high water mark */
6155118Storek 	u_int	lowat;		/* output low water mark */
6259197Storek 	u_int	backlog;	/* samples of output backlog to gen. */
6355118Storek };
6455118Storek typedef struct audio_info audio_info_t;
6555118Storek 
6655118Storek #define AUDIO_INITINFO(p)\
6755118Storek 	(void)memset((void *)(p), 0xff, sizeof(struct audio_info))
6855118Storek 
6955118Storek #if (defined(sun) || defined(ibm032)) && !defined(__GNUC__)
7059197Storek #define AUDIO_GETINFO	_IOR(A, 21, struct audio_info)
7159197Storek #define AUDIO_SETINFO	_IOWR(A, 22, struct audio_info)
7259197Storek #define AUDIO_DRAIN	_IO(A, 23)
7359197Storek #define AUDIO_FLUSH	_IO(A, 24)
7459197Storek #define AUDIO_WSEEK	_IOR(A, 25, u_long)
7559197Storek #define AUDIO_RERROR	_IOR(A, 26, int)
7659197Storek #define AUDIO_GETMAP	_IOR(A, 27, struct mapreg)
7759197Storek #define	AUDIO_SETMAP	_IOW(A, 28, struct mapreg)
7855118Storek #else
7959197Storek #define AUDIO_GETINFO	_IOR('A', 21, struct audio_info)
8059197Storek #define AUDIO_SETINFO	_IOWR('A', 22, struct audio_info)
8159197Storek #define AUDIO_DRAIN	_IO('A', 23)
8259197Storek #define AUDIO_FLUSH	_IO('A', 24)
8359197Storek #define AUDIO_WSEEK	_IOR('A', 25, u_long)
8459197Storek #define AUDIO_RERROR	_IOR('A', 26, int)
8559197Storek #define AUDIO_GETMAP	_IOR('A', 27, struct mapreg)
8659197Storek #define	AUDIO_SETMAP	_IOW('A', 28, struct mapreg)
8755118Storek #endif
8855118Storek 
8955118Storek #define AUDIO_SPEAKER   	1
9055118Storek #define AUDIO_HEADPHONE		2
9155118Storek 
9255118Storek /*
9355118Storek  * Low level interface.
9455118Storek  */
9555118Storek struct mapreg {
9655118Storek 	u_short	mr_x[8];
9755118Storek 	u_short	mr_r[8];
9855118Storek 	u_short	mr_gx;
9955118Storek 	u_short	mr_gr;
10055118Storek 	u_short	mr_ger;
10155118Storek 	u_short	mr_stgr;
10255118Storek 	u_short	mr_ftgr;
10355118Storek 	u_short	mr_atgr;
10455118Storek 	u_char	mr_mmr1;
10555118Storek 	u_char	mr_mmr2;
10655118Storek };
10755118Storek 
10855118Storek #endif /* _BSD_AUDIOIO_H_ */
109