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