1 #include <linux/config.h>
5 #define DSP_RESET (devc->base + 0x6)
6 #define DSP_READ (devc->base + 0xA)
7 #define DSP_WRITE (devc->base + 0xC)
8 #define DSP_COMMAND (devc->base + 0xC)
9 #define DSP_STATUS (devc->base + 0xC)
10 #define DSP_DATA_AVAIL (devc->base + 0xE)
11 #define DSP_DATA_AVL16 (devc->base + 0xF)
12 #define MIXER_ADDR (devc->base + 0x4)
13 #define MIXER_DATA (devc->base + 0x5)
14 #define OPL3_LEFT (devc->base + 0x0)
15 #define OPL3_RIGHT (devc->base + 0x2)
16 #define OPL3_BOTH (devc->base + 0x8)
19 #define DSP_CMD_SPKON 0xD1
20 #define DSP_CMD_SPKOFF 0xD3
21 #define DSP_CMD_DMAON 0xD0
22 #define DSP_CMD_DMAOFF 0xD4
25 #define IMODE_OUTPUT PCM_ENABLE_OUTPUT
26 #define IMODE_INPUT PCM_ENABLE_INPUT
38 #define MDL_SB1 1 /* SB1.0 or 1.5 */
39 #define MDL_SB2 2 /* SB2.0 */
40 #define MDL_SB201 3 /* SB2.01 */
41 #define MDL_SBPRO 4 /* SB Pro */
42 #define MDL_SB16 5 /* SB16/32/AWE */
43 #define MDL_SBPNP 6 /* SB16/32/AWE PnP */
44 #define MDL_JAZZ 10 /* Media Vision Jazz16 */
45 #define MDL_SMW 11 /* Logitech SoundMan Wave (Jazz16) */
46 #define MDL_ESS 12 /* ESS ES688 and ES1688 */
47 #define MDL_AZTECH 13 /* Aztech Sound Galaxy family */
48 #define MDL_ES1868MIDI 14 /* MIDI port of ESS1868 */
49 #define MDL_AEDSP 15 /* Audio Excel DSP 16 */
50 #define MDL_ESSPCI 16 /* ESS PCI card */
51 #define MDL_YMPCI 17 /* Yamaha PCI sb in emulation */
53 #define SUBMDL_ALS007 42 /* ALS-007 differs from SB16 only in mixer */
54 /* register assignment */
55 #define SUBMDL_ALS100 43 /* ALS-100 allows sampling rates of up */
61 #define SB_NO_MIDI 0x00000001
62 #define SB_NO_MIXER 0x00000002
63 #define SB_NO_AUDIO 0x00000004
64 #define SB_NO_RECORDING 0x00000008 /* No audio recording */
65 #define SB_MIDI_ONLY (SB_NO_AUDIO|SB_NO_MIXER)
66 #define SB_PCI_IRQ 0x00000010 /* PCI shared IRQ */
69 unsigned int regno
: 8;
70 unsigned int bitoffs
:4;
74 typedef struct mixer_def mixer_tab
[32][2];
75 typedef struct mixer_def mixer_ent
;
77 typedef struct sb_devc
{
80 /* Hardware parameters */
86 # define SBCAP_STEREO 0x00000001
87 # define SBCAP_16BITS 0x00000002
89 /* Hardware resources */
94 int pcibase
; /* For ESS Maestro etc */
98 /* new audio fields for full duplex support */
101 int speed
, bits
, channels
;
103 volatile int intr_active
, irq_mode
;
104 /* duplicate audio fields for full duplex support */
105 volatile int intr_active_16
, irq_mode_16
;
110 int mixer_caps
, recmask
, outmask
, supported_devices
;
111 int supported_rec_devices
, supported_out_devices
;
116 unsigned long trg_buf
;
121 /* duplicate audio fields for full duplex support */
122 unsigned long trg_buf_16
;
128 unsigned char tconst
;
134 void (*midi_input_intr
) (int dev
, unsigned char data
);
135 void *midi_irq_cookie
; /* IRQ cookie for the midi */
142 #define SB_PCI_ESSMAESTRO 1 /* ESS Maestro Legacy */
143 #define SB_PCI_YAMAHA 2 /* Yamaha Legacy */
149 int sb_dsp_command (sb_devc
*devc
, unsigned char val
);
150 int sb_dsp_get_byte(sb_devc
* devc
);
151 int sb_dsp_reset (sb_devc
*devc
);
152 void sb_setmixer (sb_devc
*devc
, unsigned int port
, unsigned int value
);
153 unsigned int sb_getmixer (sb_devc
*devc
, unsigned int port
);
154 int sb_dsp_detect (struct address_info
*hw_config
, int pci
, int pciio
);
155 int sb_dsp_init (struct address_info
*hw_config
);
156 void sb_dsp_unload(struct address_info
*hw_config
, int sbmpu
);
157 int sb_mixer_init(sb_devc
*devc
);
158 void sb_mixer_set_stereo (sb_devc
*devc
, int mode
);
159 void smw_mixer_init(sb_devc
*devc
);
160 void sb_dsp_midi_init (sb_devc
*devc
);
161 void sb_audio_init (sb_devc
*devc
, char *name
);
162 void sb_midi_interrupt (sb_devc
*devc
);
163 void sb_chgmixer (sb_devc
* devc
, unsigned int reg
, unsigned int mask
, unsigned int val
);
164 int sb_common_mixer_set(sb_devc
* devc
, int dev
, int left
, int right
);
166 int sb_audio_open(int dev
, int mode
);
167 void sb_audio_close(int dev
);
170 extern sb_devc
*last_sb
;