FreeBSD/Linux Kernel Cross Reference
sys/dev/pci/esovar.h
1 /* $NetBSD: esovar.h,v 1.4.30.1 2004/05/29 14:23:55 tron Exp $ */
2
3 /*
4 * Copyright (c) 1999, 2000, 2004 Klaus J. Klein
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
23 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28 * SUCH DAMAGE.
29 */
30
31 #ifndef _DEV_PCI_ESOVAR_H_
32 #define _DEV_PCI_ESOVAR_H_
33
34 /*
35 * Definitions exported for the purpose of sharing with attached
36 * device drivers.
37 */
38
39 /*
40 * Mixer identifiers
41 */
42 /* Identifiers that have a gain value associated with them */
43 #define ESO_DAC_PLAY_VOL 0
44 #define ESO_MIC_PLAY_VOL 1
45 #define ESO_LINE_PLAY_VOL 2
46 #define ESO_SYNTH_PLAY_VOL 3
47 #define ESO_MONO_PLAY_VOL 4
48 #define ESO_CD_PLAY_VOL 5 /* AuxA */
49 #define ESO_AUXB_PLAY_VOL 6
50
51 #define ESO_MASTER_VOL 7
52 #define ESO_PCSPEAKER_VOL 8
53 #define ESO_SPATIALIZER 9
54
55 #define ESO_RECORD_VOL 10
56 #define ESO_DAC_REC_VOL 11
57 #define ESO_MIC_REC_VOL 12
58 #define ESO_LINE_REC_VOL 13
59 #define ESO_SYNTH_REC_VOL 14
60 #define ESO_MONO_REC_VOL 15
61 #define ESO_CD_REC_VOL 16
62 #define ESO_AUXB_REC_VOL 17
63 /* Used to keep software state */
64 #define ESO_NGAINDEVS (ESO_AUXB_REC_VOL + 1)
65
66 /* Other, non-gain related mixer identifiers */
67 #define ESO_RECORD_SOURCE 18
68 #define ESO_MONOOUT_SOURCE 19
69 #define ESO_MONOIN_BYPASS 20
70 #define ESO_RECORD_MONITOR 21
71 #define ESO_MIC_PREAMP 22
72 #define ESO_SPATIALIZER_ENABLE 23
73 #define ESO_MASTER_MUTE 24
74
75 /* Classes of the above */
76 #define ESO_INPUT_CLASS 25
77 #define ESO_OUTPUT_CLASS 26
78 #define ESO_MICROPHONE_CLASS 27
79 #define ESO_MONITOR_CLASS 28
80 #define ESO_RECORD_CLASS 29
81 #define ESO_MONOIN_CLASS 30
82
83
84 /*
85 * Software state
86 */
87 struct eso_softc {
88 struct device sc_dev;
89 pci_intr_handle_t * sc_ih;
90 unsigned int sc_revision; /* PCI Revision ID */
91
92 /* Optionally deferred configuration of Audio 1 DMAC I/O space */
93 struct pci_attach_args sc_pa;
94 bus_size_t sc_vcsize; /* original size of mapping */
95
96 /* DMA */
97 bus_dma_tag_t sc_dmat;
98 struct eso_dma * sc_dmas;
99
100 /* I/O Base device */
101 bus_space_tag_t sc_iot;
102 bus_space_handle_t sc_ioh;
103
104 /* Audio/FM device */
105 bus_space_tag_t sc_sb_iot;
106 bus_space_handle_t sc_sb_ioh;
107
108 /* Audio 1 DMAC device */
109 unsigned int sc_dmac_configured;
110 bus_space_tag_t sc_dmac_iot;
111 bus_space_handle_t sc_dmac_ioh;
112
113 /* MPU-401 device */
114 bus_space_tag_t sc_mpu_iot;
115 bus_space_handle_t sc_mpu_ioh;
116 struct device * sc_mpudev;
117
118 /* Game device */
119 bus_space_tag_t sc_game_iot;
120 bus_space_handle_t sc_game_ioh;
121
122 /* MI audio interface: play/record interrupt callbacks and arguments */
123 void (*sc_pintr) __P((void *));
124 void * sc_parg;
125 void (*sc_rintr) __P((void *));
126 void * sc_rarg;
127
128 /* Auto-initialize DMA transfer block drain timeouts, in ticks */
129 int sc_pdrain;
130 int sc_rdrain;
131
132 /* Audio 2 state */
133 uint8_t sc_a2c2; /* Audio 2 Control 2 */
134
135 /* Mixer state */
136 uint8_t sc_gain[ESO_NGAINDEVS][2];
137 #define ESO_LEFT 0
138 #define ESO_RIGHT 1
139 unsigned int sc_recsrc; /* record source selection */
140 unsigned int sc_monooutsrc; /* MONO_OUT source selection */
141 unsigned int sc_monoinbypass;/* MONO_IN bypass enable */
142 unsigned int sc_recmon; /* record monitor setting */
143 unsigned int sc_preamp; /* microphone preamp */
144 unsigned int sc_spatializer; /* spatializer enable */
145 unsigned int sc_mvmute; /* master volume mute */
146 };
147
148 #endif /* !_DEV_PCI_ESOVAR_H_ */
Cache object: 2a9664b225d326decce34294bbd63964
|