Home | History | Annotate | Line # | Download | only in isa
      1 /*	$NetBSD: essvar.h,v 1.27 2014/08/16 13:01:33 nakayama Exp $	*/
      2 /*
      3  * Copyright 1997
      4  * Digital Equipment Corporation. All rights reserved.
      5  *
      6  * This software is furnished under license and may be used and
      7  * copied only in accordance with the following terms and conditions.
      8  * Subject to these conditions, you may download, copy, install,
      9  * use, modify and distribute this software in source and/or binary
     10  * form. No title or ownership is transferred hereby.
     11  *
     12  * 1) Any source code used, modified or distributed must reproduce
     13  *    and retain this copyright notice and list of conditions as
     14  *    they appear in the source file.
     15  *
     16  * 2) No right is granted to use any trade name, trademark, or logo of
     17  *    Digital Equipment Corporation. Neither the "Digital Equipment
     18  *    Corporation" name nor any trademark or logo of Digital Equipment
     19  *    Corporation may be used to endorse or promote products derived
     20  *    from this software without the prior written permission of
     21  *    Digital Equipment Corporation.
     22  *
     23  * 3) This software is provided "AS-IS" and any express or implied
     24  *    warranties, including but not limited to, any implied warranties
     25  *    of merchantability, fitness for a particular purpose, or
     26  *    non-infringement are disclaimed. In no event shall DIGITAL be
     27  *    liable for any damages whatsoever, and in particular, DIGITAL
     28  *    shall not be liable for special, indirect, consequential, or
     29  *    incidental damages or damages for lost profits, loss of
     30  *    revenue or loss of use, whether such damages arise in contract,
     31  *    negligence, tort, under statute, in equity, at law or otherwise,
     32  *    even if advised of the possibility of such damage.
     33  */
     34 
     35 /*
     36 ** @(#) $RCSfile: essvar.h,v $ $Revision: 1.27 $ (SHARK) $Date: 2014/08/16 13:01:33 $
     37 **
     38 **++
     39 **
     40 **  essvar.h
     41 **
     42 **  FACILITY:
     43 **
     44 **	DIGITAL Network Appliance Reference Design (DNARD)
     45 **
     46 **  MODULE DESCRIPTION:
     47 **
     48 **      This module contains the structure definitions and function
     49 **      prototypes for the ESS Technologies 1887/888 sound chip
     50 **      driver.
     51 **
     52 **  AUTHORS:
     53 **
     54 **	Blair Fidler	Software Engineering Australia
     55 **			Gold Coast, Australia.
     56 **
     57 **  CREATION DATE:
     58 **
     59 **	May 12, 1997.
     60 **
     61 **  MODIFICATION HISTORY:
     62 **
     63 **--
     64 */
     65 
     66 #include <sys/callout.h>
     67 
     68 #define ESS_DAC_PLAY_VOL	0
     69 #define ESS_MIC_PLAY_VOL	1
     70 #define ESS_LINE_PLAY_VOL	2
     71 #define ESS_SYNTH_PLAY_VOL	3
     72 #define ESS_CD_PLAY_VOL		4
     73 #define ESS_AUXB_PLAY_VOL	5
     74 #define ESS_INPUT_CLASS		6
     75 
     76 #define ESS_MASTER_VOL		7
     77 #define ESS_PCSPEAKER_VOL	8
     78 #define ESS_OUTPUT_CLASS	9
     79 
     80 #define ESS_RECORD_MONITOR	10
     81 #define ESS_MONITOR_CLASS	11
     82 
     83 #define ESS_RECORD_VOL		12
     84 #define	ESS_RECORD_SOURCE	13
     85 #define ESS_RECORD_CLASS	14
     86 
     87 #define ESS_1788_NDEVS		15
     88 
     89 #define ESS_SPATIALIZER		15
     90 #define ESS_SPATIALIZER_ENABLE	16
     91 
     92 #define ESS_18X9_NDEVS		17
     93 
     94 #define ESS_DAC_REC_VOL		15
     95 #define ESS_MIC_REC_VOL		16
     96 #define ESS_LINE_REC_VOL	17
     97 #define ESS_SYNTH_REC_VOL	18
     98 #define ESS_CD_REC_VOL		19
     99 #define ESS_AUXB_REC_VOL	20
    100 #define ESS_MIC_PREAMP		21
    101 
    102 #define ESS_1888_NDEVS		22
    103 #define ESS_MAX_NDEVS		22
    104 
    105 struct ess_audio_channel
    106 {
    107 	int	drq;			/* DMA channel */
    108 	bus_size_t maxsize;		/* max size for DMA channel */
    109 #define IS16BITDRQ(drq) ((drq) >= 4)
    110 	int	irq;			/* IRQ line for this DMA channel */
    111 	int	ist;
    112 	void	*ih;			/* interrupt vectoring */
    113 	u_long	nintr;			/* number of interrupts taken */
    114 	void	(*intr)(void*);		/* ISR for DMA complete */
    115 	void	*arg;			/* arg for intr() */
    116 
    117 	/* Status information */
    118 	int	active;			/* boolean: channel in use? */
    119 
    120 	/* Polling state */
    121 	int	polled;			/* 1 if channel is polled */
    122 	int	dmapos;			/* last DMA pointer */
    123 	int	buffersize;		/* size of DMA buffer */
    124 	/* (The following is only needed due to the stupid block interface.) */
    125 	int	dmacount;		/* leftover partial block */
    126 	int	blksize;		/* current block size */
    127 };
    128 
    129 struct ess_softc
    130 {
    131 	device_t sc_dev;		/* base device */
    132 	isa_chipset_tag_t sc_ic;
    133 	bus_space_tag_t sc_iot;		/* tag */
    134 	bus_space_handle_t sc_ioh;	/* handle */
    135 	kmutex_t sc_lock;
    136 	kmutex_t sc_intr_lock;
    137 
    138 	callout_t sc_poll1_ch;		/* audio1 poll */
    139 	callout_t sc_poll2_ch;		/* audio2 poll */
    140 
    141 	int	sc_iobase;		/* I/O port base address */
    142 
    143 	u_short	sc_open;		/* reference count of open calls */
    144 
    145 	int ndevs;
    146 	u_char	gain[ESS_MAX_NDEVS][2];	/* kept in input levels */
    147 #define ESS_LEFT 0
    148 #define ESS_RIGHT 1
    149 
    150 	u_int	out_port;		/* output port */
    151 	u_int	in_mask;		/* input ports */
    152 	u_int	in_port;		/* XXX needed for MI interface */
    153 
    154 	u_int	spkr_state;		/* non-null is on */
    155 
    156 	struct ess_audio_channel sc_audio1; /* audio channel for record */
    157 	struct ess_audio_channel sc_audio2; /* audio channel for playback */
    158 
    159 	u_int	sc_model;
    160 #define ESS_UNSUPPORTED 0
    161 #define	ESS_688		1
    162 #define	ESS_1688	2
    163 #define ESS_1788	3
    164 #define ESS_1868	4
    165 #define ESS_1869	5
    166 #define ESS_1878	6
    167 #define ESS_1879	7
    168 #define ESS_888		8
    169 #define ESS_1887	9
    170 #define ESS_1888	10
    171 
    172 	u_int	sc_version;		/* Legacy ES688/ES1688 ID */
    173 
    174 	u_int	sc_spatializer;		/* spatializer enable */
    175 
    176 	/* game port on es1888 */
    177 	bus_space_tag_t sc_joy_iot;
    178 	bus_space_handle_t sc_joy_ioh;
    179 };
    180 
    181 int	essmatch(struct ess_softc *);
    182 void	essattach(struct ess_softc *, int);
    183 int	ess_config_addr(struct ess_softc *);
    184 
    185