xref: /openbsd/sys/dev/isa/essvar.h (revision fabcfecb)
1*fabcfecbSjsg /*	$OpenBSD: essvar.h,v 1.6 2024/10/22 21:50:02 jsg Exp $	*/
244e00086Sniklas /*	$NetBSD: essvar.h,v 1.14 1999/03/18 06:03:31 mycroft Exp $	*/
344e00086Sniklas /*
444e00086Sniklas  * Copyright 1997
544e00086Sniklas  * Digital Equipment Corporation. All rights reserved.
644e00086Sniklas  *
744e00086Sniklas  * This software is furnished under license and may be used and
844e00086Sniklas  * copied only in accordance with the following terms and conditions.
944e00086Sniklas  * Subject to these conditions, you may download, copy, install,
1044e00086Sniklas  * use, modify and distribute this software in source and/or binary
1144e00086Sniklas  * form. No title or ownership is transferred hereby.
1244e00086Sniklas  *
1344e00086Sniklas  * 1) Any source code used, modified or distributed must reproduce
1444e00086Sniklas  *    and retain this copyright notice and list of conditions as
1544e00086Sniklas  *    they appear in the source file.
1644e00086Sniklas  *
1744e00086Sniklas  * 2) No right is granted to use any trade name, trademark, or logo of
1844e00086Sniklas  *    Digital Equipment Corporation. Neither the "Digital Equipment
1944e00086Sniklas  *    Corporation" name nor any trademark or logo of Digital Equipment
2044e00086Sniklas  *    Corporation may be used to endorse or promote products derived
2144e00086Sniklas  *    from this software without the prior written permission of
2244e00086Sniklas  *    Digital Equipment Corporation.
2344e00086Sniklas  *
2444e00086Sniklas  * 3) This software is provided "AS-IS" and any express or implied
2544e00086Sniklas  *    warranties, including but not limited to, any implied warranties
2644e00086Sniklas  *    of merchantability, fitness for a particular purpose, or
2744e00086Sniklas  *    non-infringement are disclaimed. In no event shall DIGITAL be
2844e00086Sniklas  *    liable for any damages whatsoever, and in particular, DIGITAL
2944e00086Sniklas  *    shall not be liable for special, indirect, consequential, or
3044e00086Sniklas  *    incidental damages or damages for lost profits, loss of
3144e00086Sniklas  *    revenue or loss of use, whether such damages arise in contract,
3244e00086Sniklas  *    negligence, tort, under statute, in equity, at law or otherwise,
3344e00086Sniklas  *    even if advised of the possibility of such damage.
3444e00086Sniklas  */
3544e00086Sniklas 
3644e00086Sniklas /*
37*fabcfecbSjsg ** @(#) $RCSfile: essvar.h,v $ $Revision: 1.6 $ (SHARK) $Date: 2024/10/22 21:50:02 $
3844e00086Sniklas **
3944e00086Sniklas **++
4044e00086Sniklas **
4144e00086Sniklas **  essvar.h
4244e00086Sniklas **
4344e00086Sniklas **  FACILITY:
4444e00086Sniklas **
4544e00086Sniklas **	DIGITAL Network Appliance Reference Design (DNARD)
4644e00086Sniklas **
4744e00086Sniklas **  MODULE DESCRIPTION:
4844e00086Sniklas **
4944e00086Sniklas **	This module contains the structure definitions and function
5044e00086Sniklas **	prototypes for the ESS Technologies 1887/888 sound chip
5144e00086Sniklas **	driver.
5244e00086Sniklas **
5344e00086Sniklas **  AUTHORS:
5444e00086Sniklas **
5544e00086Sniklas **	Blair Fidler	Software Engineering Australia
5644e00086Sniklas **			Gold Coast, Australia.
5744e00086Sniklas **
5844e00086Sniklas **  CREATION DATE:
5944e00086Sniklas **
6044e00086Sniklas **	May 12, 1997.
6144e00086Sniklas **
6244e00086Sniklas **  MODIFICATION HISTORY:
6344e00086Sniklas **
6444e00086Sniklas **--
6544e00086Sniklas */
6644e00086Sniklas #define ESS_DAC_PLAY_VOL	0
6744e00086Sniklas #define ESS_MIC_PLAY_VOL	1
6844e00086Sniklas #define ESS_LINE_PLAY_VOL	2
6944e00086Sniklas #define ESS_SYNTH_PLAY_VOL	3
7044e00086Sniklas #define ESS_CD_PLAY_VOL		4
7144e00086Sniklas #define ESS_AUXB_PLAY_VOL	5
7244e00086Sniklas #define ESS_INPUT_CLASS		6
7344e00086Sniklas 
7444e00086Sniklas #define ESS_MASTER_VOL		7
7544e00086Sniklas #define ESS_PCSPEAKER_VOL	8
7644e00086Sniklas #define ESS_OUTPUT_CLASS	9
7744e00086Sniklas 
7844e00086Sniklas #define ESS_RECORD_MONITOR	10
7944e00086Sniklas #define ESS_MONITOR_CLASS	11
8044e00086Sniklas 
8144e00086Sniklas #define ESS_RECORD_VOL		12
8244e00086Sniklas #define	ESS_RECORD_SOURCE	13
8344e00086Sniklas #define ESS_RECORD_CLASS	14
8444e00086Sniklas 
8544e00086Sniklas #define ESS_1788_NDEVS		15
8644e00086Sniklas 
8744e00086Sniklas #define ESS_DAC_REC_VOL		15
8844e00086Sniklas #define ESS_MIC_REC_VOL		16
8944e00086Sniklas #define ESS_LINE_REC_VOL	17
9044e00086Sniklas #define ESS_SYNTH_REC_VOL	18
9144e00086Sniklas #define ESS_CD_REC_VOL		19
9244e00086Sniklas #define ESS_AUXB_REC_VOL	20
9344e00086Sniklas #define ESS_MIC_PREAMP		21
9444e00086Sniklas 
9544e00086Sniklas #define ESS_1888_NDEVS		22
9644e00086Sniklas #define ESS_MAX_NDEVS		22
9744e00086Sniklas 
98*fabcfecbSjsg struct ess_audio_channel {
9944e00086Sniklas 	int	drq;			/* DMA channel */
10044e00086Sniklas #define IS16BITDRQ(drq) ((drq) >= 4)
10144e00086Sniklas 	int	irq;			/* IRQ line for this DMA channel */
10244e00086Sniklas 	int	ist;
10344e00086Sniklas 	void	*ih;			/* interrupt vectoring */
10444e00086Sniklas 	u_long	nintr;			/* number of interrupts taken */
105c4071fd1Smillert 	void	(*intr)(void *);	/* ISR for DMA complete */
10644e00086Sniklas 	void	*arg;			/* arg for intr() */
10744e00086Sniklas 
10844e00086Sniklas 	/* Status information */
10944e00086Sniklas 	int	active;			/* boolean: channel in use? */
11044e00086Sniklas 
11144e00086Sniklas 	/* Polling state */
11244e00086Sniklas 	int	polled;			/* 1 if channel is polled */
11344e00086Sniklas 	int	dmapos;			/* last DMA pointer */
11444e00086Sniklas 	int	buffersize;		/* size of DMA buffer */
11544e00086Sniklas 	/* (The following is only needed due to the stupid block interface.) */
11644e00086Sniklas 	int	dmacount;		/* leftover partial block */
11744e00086Sniklas 	int	blksize;		/* current block size */
11844e00086Sniklas };
11944e00086Sniklas 
120*fabcfecbSjsg struct ess_softc {
12144e00086Sniklas 	struct	device sc_dev;		/* base device */
12244e00086Sniklas 	struct	device *sc_isa;
12344e00086Sniklas 	isa_chipset_tag_t sc_ic;
12444e00086Sniklas 	bus_space_tag_t sc_iot;		/* tag */
12544e00086Sniklas 	bus_space_handle_t sc_ioh;	/* handle */
1261de445edSmickey 	struct timeout sc_tmo1, sc_tmo2;
12744e00086Sniklas 
12844e00086Sniklas 	int	sc_iobase;		/* I/O port base address */
12944e00086Sniklas 
13044e00086Sniklas 	u_short	sc_open;		/* reference count of open calls */
13144e00086Sniklas 
13244e00086Sniklas 	int ndevs;
13344e00086Sniklas 	u_char	gain[ESS_MAX_NDEVS][2];	/* kept in input levels */
13444e00086Sniklas #define ESS_LEFT 0
13544e00086Sniklas #define ESS_RIGHT 1
13644e00086Sniklas 
13744e00086Sniklas 	u_int	out_port;		/* output port */
13844e00086Sniklas 	u_int	in_mask;		/* input ports */
13944e00086Sniklas 	u_int	in_port;		/* XXX needed for MI interface */
14044e00086Sniklas 
14144e00086Sniklas 	u_int	spkr_state;		/* non-null is on */
14244e00086Sniklas 
14344e00086Sniklas 	struct ess_audio_channel sc_audio1; /* audio channel for record */
14444e00086Sniklas 	struct ess_audio_channel sc_audio2; /* audio channel for playback */
14544e00086Sniklas 
14644e00086Sniklas 	u_int	sc_model;
14744e00086Sniklas #define ESS_UNSUPPORTED 0
14844e00086Sniklas #define ESS_1888	1
14944e00086Sniklas #define ESS_1887	2
15044e00086Sniklas #define ESS_888		3
15144e00086Sniklas #define ESS_1788	4
152777cb93cSkstailey #define ESS_1869	5
153777cb93cSkstailey #define ESS_1879	6
154777cb93cSkstailey #define ESS_1868	7
155777cb93cSkstailey #define ESS_1878	8
15644e00086Sniklas 
15744e00086Sniklas 	u_int	sc_version;		/* Legacy ES688/ES1688 ID */
15844e00086Sniklas };
15944e00086Sniklas 
160c4071fd1Smillert int	essmatch(struct ess_softc *);
161c4071fd1Smillert void	essattach(struct ess_softc *);
16244e00086Sniklas 
163