155118Storek /*
255118Storek  * Copyright (c) 1991, 1992 The Regents of the University of California.
355118Storek  * 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  *
9*55501Sbostic  * All advertising materials mentioning features or use of this software
10*55501Sbostic  * must display the following acknowledgement:
11*55501Sbostic  *	This product includes software developed by the University of
12*55501Sbostic  *	California, Lawrence Berkeley Laboratories.
13*55501Sbostic  *
1455118Storek  * %sccs.include.redist.c%
1555118Storek  *
16*55501Sbostic  *	@(#)bsd_audioio.h	7.2 (Berkeley) 07/21/92
1755118Storek  *
1855118Storek  * from: $Header: bsd_audioio.h,v 1.4 92/07/13 00:31:22 torek Exp $ (LBL)
1955118Storek  */
2055118Storek 
2155118Storek #ifndef _BSD_AUDIOIO_H_
2255118Storek #define _BSD_AUDIOIO_H_
2355118Storek 
2455118Storek /*
2555118Storek  * /dev/audio ioctls.  needs comments!
2655118Storek  */
2755118Storek #define AUDIO_MIN_GAIN 0
2855118Storek #define AUDIO_MAX_GAIN 255
2955118Storek 
3055118Storek #define AUDIO_ENCODING_ULAW 1
3155118Storek #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;
4055118Storek 	u_int	samples;
4155118Storek 
4255118Storek 	u_char	pause;
4355118Storek 	u_char	error;
4455118Storek 	u_char	waiting;
4555118Storek 	u_char	open;
4655118Storek 
4755118Storek 	/* BSD extensions */
4855118Storek 	u_long	seek;
4955118Storek };
5055118Storek 
5155118Storek struct audio_info {
5255118Storek 	struct	audio_prinfo play;
5355118Storek 	struct	audio_prinfo record;
5455118Storek 	u_int	monitor_gain;
5555118Storek 	/* BSD extensions */
5655118Storek 	u_int	blocksize;	/* input blocking threshold */
5755118Storek 	u_int	hiwat;		/* output high water mark */
5855118Storek 	u_int	lowat;		/* output low water mark */
5955118Storek };
6055118Storek typedef struct audio_info audio_info_t;
6155118Storek 
6255118Storek #define AUDIO_INITINFO(p)\
6355118Storek 	(void)memset((void *)(p), 0xff, sizeof(struct audio_info))
6455118Storek 
6555118Storek #if (defined(sun) || defined(ibm032)) && !defined(__GNUC__)
6655118Storek #define AUDIO_GETINFO	_IOR(A, 1, struct audio_info)
6755118Storek #define AUDIO_SETINFO	_IOWR(A, 2, struct audio_info)
6855118Storek #define AUDIO_DRAIN	_IO(A, 3)
6955118Storek #define AUDIO_FLUSH	_IO(A, 4)
7055118Storek #define AUDIO_WSEEK	_IOR(A, 5, u_long)
7155118Storek #define AUDIO_RERROR	_IOR(A, 6, int)
7255118Storek #define AUDIO_GETMAP	_IOR(A, 20, struct mapreg)
7355118Storek #define	AUDIO_SETMAP	_IOW(A, 21, struct mapreg)
7455118Storek #else
7555118Storek #define AUDIO_GETINFO	_IOR('A', 1, struct audio_info)
7655118Storek #define AUDIO_SETINFO	_IOWR('A', 2, struct audio_info)
7755118Storek #define AUDIO_DRAIN	_IO('A', 3)
7855118Storek #define AUDIO_FLUSH	_IO('A', 4)
7955118Storek #define AUDIO_WSEEK	_IOR('A', 5, u_long)
8055118Storek #define AUDIO_RERROR	_IOR('A', 6, int)
8155118Storek #define AUDIO_GETMAP	_IOR('A', 20, struct mapreg)
8255118Storek #define	AUDIO_SETMAP	_IOW('A', 21, struct mapreg)
8355118Storek #endif
8455118Storek 
8555118Storek #define AUDIO_SPEAKER   	1
8655118Storek #define AUDIO_HEADPHONE		2
8755118Storek 
8855118Storek /*
8955118Storek  * Low level interface.
9055118Storek  */
9155118Storek struct mapreg {
9255118Storek 	u_short	mr_x[8];
9355118Storek 	u_short	mr_r[8];
9455118Storek 	u_short	mr_gx;
9555118Storek 	u_short	mr_gr;
9655118Storek 	u_short	mr_ger;
9755118Storek 	u_short	mr_stgr;
9855118Storek 	u_short	mr_ftgr;
9955118Storek 	u_short	mr_atgr;
10055118Storek 	u_char	mr_mmr1;
10155118Storek 	u_char	mr_mmr2;
10255118Storek };
10355118Storek 
10455118Storek #endif /* _BSD_AUDIOIO_H_ */
105