2020-09-30 17:12:29 +02:00

164 lines
4.7 KiB
C

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
sb16mix.h
Abstract:
This include file defines constants and types for
the Sound blaster 16 specific mixer.
Revision History:
--*/
/*
** Maximum number of controls and lines. Note we may not use all of
** them because we may not have midi etc etc
**
** NOTE - the order of lines is IMPORTANT.
*/
enum {
DestLineout = 0, // 0
DestWaveIn, // 1
DestVoiceIn, // 2
DestLineoutSourceAux, // 3
DestLineoutSourceMidiout, // 4
DestLineoutSourceMic, // 5
DestLineoutSourceInternal, // 6
DestLineoutSourceWaveout, // 7
DestWaveInSourceAux, // 8
DestWaveInSourceMidiout, // 9
DestWaveInSourceMic, // 10
DestWaveInSourceInternal, // 11
DestVoiceInSourceAux, // 12
DestVoiceInSourceMic, // 13
NumberOfLines
} MixerLineIds;
//***************************************************************************
// Define some stuff for the muxes
// NOTE: These are NOT the physical settings for the chip, they will get
// translated to that later.
#define MUXINPUT_AUX1 0
#define MUXINPUT_MIC 1
/*
** Ids for our controls
*/
enum {
ControlLineoutVolume = 0, // 0
ControlLineoutMute, // 1
ControlLineoutMux, // 2
ControlLineoutBass, // 3
ControlLineoutTreble, // 4
ControlLineoutGain, // 5
ControlWaveInVolume, // 6
ControlWaveInMux, // 7
ControlWaveInPeak, // 8
ControlVoiceInVolume, // 9
ControlVoiceInMux, // 10
ControlVoiceInPeak, // 11
ControlLineoutAuxVolume, // 12
ControlLineoutAuxMute, // 13
ControlLineoutMidioutVolume, // 14
ControlLineoutMidioutMute, // 15
ControlLineoutMicVolume, // 16
ControlLineoutMicMute, // 17
ControlLineoutMicAGC, // 18
ControlLineoutInternalCDVolume, // 19
ControlLineoutInternalCDMute, // 20
ControlLineoutWaveoutVolume, // 21
ControlLineoutWaveoutMute, // 22
ControlLineoutWaveoutPeak, // 23
ControlWaveInAuxVolume, // 24
ControlWaveInMidioutVolume, // 25
ControlWaveInMicVolume, // 26
ControlWaveInMicAGC, // 27
ControlWaveInInternalCDVolume, // 28
ControlVoiceInAuxVolume, // 29
ControlVoiceInMicVolume, // 30
ControlVoiceInMicAGC, // 31
NumberOfControls
};
/*
** Data
*/
extern CONST MIXER_DD_LINE_CONFIGURATION_DATA SB16LineInit[];
extern CONST MIXER_DD_CONTROL_CONFIGURATION_DATA SB16ControlInit[];
extern CONST MIXER_DD_CONTROL_LISTTEXT SB16TextInit[];
BOOLEAN
SB16MixerOutputFree(
IN PGLOBAL_DEVICE_INFO pGDI,
IN ULONG LineId
);
MIXER_CONTROL_ROUTINE SB16SetVolume;
MIXER_CONTROL_ROUTINE SB16SetTone;
MIXER_CONTROL_ROUTINE SB16SetMute;
MIXER_CONTROL_ROUTINE SB16SetAGC;
MIXER_CONTROL_ROUTINE SB16SetGain;
MIXER_CONTROL_ROUTINE SB16SetSources;
VOID SB16SetADCHardware(PGLOBAL_DEVICE_INFO pGDI);
VOID SB16ResetADCHardware(PGLOBAL_DEVICE_INFO pGDI);
/*
** Mixer registers for SB16
*/
#define DSP_MIX_DATARESETIDX ((UCHAR)(0x00))
#define DSP_MIX_MASTERVOLIDX_L ((UCHAR)(0x30))
#define DSP_MIX_MASTERVOLIDX_R ((UCHAR)(0x31))
#define DSP_MIX_VOICEVOLIDX_L ((UCHAR)(0x32))
#define DSP_MIX_VOICEVOLIDX_R ((UCHAR)(0x33))
#define DSP_MIX_FMVOLIDX_L ((UCHAR)(0x34))
#define DSP_MIX_FMVOLIDX_R ((UCHAR)(0x35))
#define DSP_MIX_CDVOLIDX_L ((UCHAR)(0x36))
#define DSP_MIX_CDVOLIDX_R ((UCHAR)(0x37))
#define DSP_MIX_LINEVOLIDX_L ((UCHAR)(0x38))
#define DSP_MIX_LINEVOLIDX_R ((UCHAR)(0x39))
#define DSP_MIX_MICVOLIDX ((UCHAR)(0x3A))
#define DSP_MIX_SPKRVOLIDX ((UCHAR)(0x3B))
#define DSP_MIX_OUTMIXIDX ((UCHAR)(0x3C))
#define DSP_MIX_ADCMIXIDX_L ((UCHAR)(0x3D))
#define DSP_MIX_ADCMIXIDX_R ((UCHAR)(0x3E))
#define DSP_MIX_INGAINIDX_L ((UCHAR)(0x3F))
#define DSP_MIX_INGAINIDX_R ((UCHAR)(0x40))
#define DSP_MIX_OUTGAINIDX_L ((UCHAR)(0x41))
#define DSP_MIX_OUTGAINIDX_R ((UCHAR)(0x42))
#define DSP_MIX_AGCIDX ((UCHAR)(0x43))
#define DSP_MIX_TREBLEIDX_L ((UCHAR)(0x44))
#define DSP_MIX_TREBLEIDX_R ((UCHAR)(0x45))
#define DSP_MIX_BASSIDX_L ((UCHAR)(0x46))
#define DSP_MIX_BASSIDX_R ((UCHAR)(0x47))