Expand PMF_FN_* macros.
[netbsd-mini2440.git] / sys / dev / pci / esovar.h
blob6d0f09728cf9889fb305aa9da1ce59c56a2b1b7f
1 /* $NetBSD: esovar.h,v 1.8 2007/01/12 00:47:51 kleink Exp $ */
3 /*
4 * Copyright (c) 1999, 2000, 2004 Klaus J. Klein
5 * All rights reserved.
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.
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.
31 #ifndef _DEV_PCI_ESOVAR_H_
32 #define _DEV_PCI_ESOVAR_H_
35 * Definitions exported for the purpose of sharing with attached
36 * device drivers.
40 * Mixer identifiers
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
51 #define ESO_MASTER_VOL 7
52 #define ESO_PCSPEAKER_VOL 8
53 #define ESO_SPATIALIZER 9
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)
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
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
85 * Software state
87 struct eso_softc {
88 struct device sc_dev;
89 pci_intr_handle_t * sc_ih;
90 unsigned int sc_revision; /* PCI Revision ID */
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 */
96 /* DMA */
97 bus_dma_tag_t sc_dmat;
98 SLIST_HEAD(, eso_dma) sc_dmas;
100 /* I/O Base device */
101 bus_space_tag_t sc_iot;
102 bus_space_handle_t sc_ioh;
104 /* Audio/FM device */
105 bus_space_tag_t sc_sb_iot;
106 bus_space_handle_t sc_sb_ioh;
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;
113 /* MPU-401 device */
114 bus_space_tag_t sc_mpu_iot;
115 bus_space_handle_t sc_mpu_ioh;
116 device_t sc_mpudev;
118 /* Game device */
119 bus_space_tag_t sc_game_iot;
120 bus_space_handle_t sc_game_ioh;
122 /* MI audio interface: play/record interrupt callbacks and arguments */
123 void (*sc_pintr)(void *);
124 void * sc_parg;
125 void (*sc_rintr)(void *);
126 void * sc_rarg;
128 /* Auto-initialize DMA transfer block drain timeouts, in ticks */
129 int sc_pdrain;
130 int sc_rdrain;
132 /* Audio 2 state */
133 uint8_t sc_a2c2; /* Audio 2 Control 2 */
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 */
148 #endif /* !_DEV_PCI_ESOVAR_H_ */