ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

sbdsp.h
Go to the documentation of this file.
00001 /*
00002     ReactOS Sound System
00003     Sound Blaster DSP support
00004 
00005     Author:
00006         Andrew Greenwood (silverblade@reactos.org)
00007 
00008     History:
00009         26 May 2008 - Created
00010 
00011     Notes:
00012         Where timeouts are concerned, a value of 0 is interpreted as "forever".
00013 */
00014 
00015 #ifndef ROS_SOUND_SBDSP_H
00016 #define ROS_SOUND_SBDSP_H
00017 
00018 /*
00019     Product versions
00020     DSP 1.0, 1.5, 2.0, 2.01 correspond with respective Sound Blaster versions.
00021     DSP 3.xx is Sound Blaster Pro
00022     DSP 4.xx is Sound Blaster 16
00023 */
00024 
00025 #define SOUND_BLASTER_1_0       L"Sound Blaster 1.0"
00026 #define SOUND_BLASTER_1_5       L"Sound Blaster 1.5"
00027 #define SOUND_BLASTER_2_0       L"Sound Blaster 2.0"
00028 #define SOUND_BLASTER_PRO       L"Sound Blaster Pro"
00029 #define SOUND_BLASTER_16        L"Sound Blaster 16"
00030 
00031 
00032 /*
00033     Sound Blaster ports I/O
00034 */
00035 #define READ_SB_FM1_STATUS(bp)          READ_PORT_UCHAR((PUCHAR) bp)
00036 #define WRITE_SB_FM1_REGISTER(bp, x)    WRITE_PORT_UCHAR((PUCHAR) bp, x)
00037 #define WRITE_SB_FM1_DATA(bp, x)        WRITE_PORT_UCHAR((PUCHAR) bp+0x01, x)
00038 
00039 #define READ_SB_AFM_STATUS(bp)          READ_PORT_UCHAR((PUCHAR) bp+0x02)
00040 #define WRITE_SB_AFM_REGISTER(bp, x)    WRITE_PORT_UCHAR((PUCHAR) bp+0x02, x)
00041 #define WRITE_SB_AFM_DATA(bp, x)        WRITE_PORT_UCHAR((PUCHAR) bp+0x03, x)
00042 
00043 #define WRITE_SB_MIXER_REGISTER(bp, x)  WRITE_PORT_UCHAR((PUCHAR) bp+0x04, x)
00044 #define READ_SB_MIXER_DATA(bp)          READ_PORT_UCHAR((PUCHAR) bp+0x05)
00045 #define WRITE_SB_MIXER_DATA(bp, x)      WRITE_PORT_UCHAR((PUCHAR) bp+0x05, x)
00046 
00047 #define WRITE_SB_DSP_RESET(bp, x)       WRITE_PORT_UCHAR((PUCHAR) bp+0x06, x)
00048 
00049 #define READ_SB_FM2_STATUS(bp)          READ_PORT_UCHAR((PUCHAR) bp+0x08)
00050 #define WRITE_SB_FM2_REGISTER(bp, x)    WRITE_PORT_UCHAR((PUCHAR) bp+0x08, x)
00051 #define WRITE_SB_FM2_DATA(bp, x)        WRITE_PORT_UCHAR((PUCHAR) bp+0x09, x)
00052 
00053 #define READ_SB_DSP_DATA(bp)            READ_PORT_UCHAR((PUCHAR) bp+0x0A)
00054 #define WRITE_SB_DSP_DATA(bp, x)        WRITE_PORT_UCHAR((PUCHAR) bp+0x0C, x)
00055 #define WRITE_SB_DSP_COMMAND(bp, x)     WRITE_PORT_UCHAR((PUCHAR) bp+0x0C, x)
00056 
00057 /* Clear to send */
00058 #define SB_DSP_CLEAR_TO_SEND(bp) \
00059     ( ! (READ_PORT_UCHAR((PUCHAR) bp+0x0C) & 0x80 ) )
00060 
00061 /* Data available for reading */
00062 #define SB_DSP_DATA_AVAILABLE(bp) \
00063     ( READ_PORT_UCHAR((PUCHAR) bp+0x0E) & 0x80 )
00064 
00065 
00066 #define SB_DSP_READY            0xAA
00067 
00068 /*
00069     Sound Blaster DSP commands
00070     (partial list)
00071 */
00072 #define SB_DSP_OUTPUT_RATE      0x41
00073 #define SB_DSP_INPUT_RATE       0x42
00074 #define SB_DSP_BLOCK_SIZE       0x48
00075 #define SB_DSP_SPEAKER_ON       0xD1
00076 #define SB_DSP_SPEAKER_OFF      0xD3
00077 #define SB_DSP_SPEAKER_STATUS   0xD8
00078 #define SB_DSP_VERSION          0xE1
00079 
00080 /*
00081     Mixer lines (legacy)
00082 */
00083 #define SB_MIX_VOC_LEVEL        0x04
00084 #define SB_MIX_LEGACY_MIC_LEVEL 0x0A
00085 #define SB_MIX_MASTER_LEVEL     0x22
00086 #define SB_MIX_FM_LEVEL         0x26
00087 #define SB_MIX_CD_LEVEL         0x28
00088 #define SB_MIX_LINE_LEVEL       0x2E
00089 
00090 /*
00091     Mixer lines
00092 */
00093 #define SB_MIX_RESET                0x00
00094 #define SB_MIX_MASTER_LEFT_LEVEL    0x30
00095 #define SB_MIX_MASTER_RIGHT_LEVEL   0x31
00096 #define SB_MIX_VOC_LEFT_LEVEL       0x32
00097 #define SB_MIX_VOC_RIGHT_LEVEL      0x33
00098 #define SB_MIX_MIDI_LEFT_LEVEL      0x34
00099 #define SB_MIX_MIDI_RIGHT_LEVEL     0x35
00100 #define SB_MIX_CD_LEFT_LEVEL        0x36
00101 #define SB_MIX_CD_RIGHT_LEVEL       0x37
00102 #define SB_MIX_LINE_LEFT_LEVEL      0x38
00103 #define SB_MIX_LINE_RIGHT_LEVEL     0x39
00104 #define SB_MIX_MIC_LEVEL            0x3A
00105 #define SB_MIX_PC_SPEAKER_LEVEL     0x3B
00106 #define SB_MIX_OUTPUT_SWITCHES      0x3C
00107 #define SB_MIX_INPUT_LEFT_SWITCHES  0x3D
00108 #define SB_MIX_INPUT_RIGHT_SWITCHES 0x3E
00109 #define SB_MIX_INPUT_LEFT_GAIN      0x3F
00110 #define SB_MIX_INPUT_RIGHT_GAIN     0x40
00111 #define SB_MIX_OUTPUT_LEFT_GAIN     0x41
00112 #define SB_MIX_OUTPUT_RIGHT_GAIN    0x42
00113 #define SB_MIX_AGC                  0x43
00114 #define SB_MIX_TREBLE_LEFT_LEVEL    0x44
00115 #define SB_MIX_TREBLE_RIGHT_LEVEL   0x45
00116 #define SB_MIX_BASS_LEFT_LEVEL      0x46
00117 #define SB_MIX_BASS_RIGHT_LEVEL     0x47
00118 
00119 /*
00120     Mixer switches
00121     (are these correct?)
00122 */
00123 #define SB_MIX_MIDI_LEFT_SWITCH     0x01
00124 #define SB_MIX_MIDI_RIGHT_SWITCH    0x02
00125 #define SB_MIX_LINE_LEFT_SWITCH     0x04
00126 #define SB_MIX_LINE_RIGHT_SWITCH    0x08
00127 #define SB_MIX_CD_LEFT_SWITCH       0x10
00128 #define SB_MIX_CD_RIGHT_SWITCH      0x20
00129 #define SB_MIX_MIC_SWITCH           0x40
00130 
00131 
00132 /*
00133     Reset the Sound Blaster DSP.
00134 */
00135 NTSTATUS
00136 SbDspReset(
00137     IN  PUCHAR BasePort,
00138     IN  ULONG Timeout);
00139 
00140 /*
00141     Wait for the Sound Blaster DSP to be ready for data to be written to it.
00142 */
00143 NTSTATUS
00144 SbDspWaitToWrite(
00145     IN  PUCHAR BasePort,
00146     IN  ULONG Timeout);
00147 
00148 /*
00149     Wait for data to be ready for reading from the Sound Blaster DSP.
00150 */
00151 NTSTATUS
00152 SbDspWaitToRead(
00153     IN  PUCHAR BasePort,
00154     IN  ULONG Timeout);
00155 
00156 /*
00157     Wait for the Sound Blaster DSP to be ready for data to be written to it,
00158     then (providing it becomes ready within the timeout period), write the
00159     data to it.
00160 */
00161 NTSTATUS
00162 SbDspWrite(
00163     IN  PUCHAR BasePort,
00164     IN  UCHAR DataByte,
00165     IN  ULONG Timeout);
00166 
00167 /*
00168     Wait for the Sound Blaster DSP to be ready for data to be read from it,
00169     then read the data from it into the pointer supplied as DataByte. If
00170     the timeout is exceeded, DataByte will not be modified.
00171 */
00172 NTSTATUS
00173 SbDspRead(
00174     IN  PUCHAR BasePort,
00175     OUT PUCHAR DataByte,
00176     IN  ULONG Timeout);
00177 
00178 /*
00179     This can only be called immediately after a reset has been issued. The
00180     major version and minor version are returned in MajorVersion and
00181     MinorVersion, respectively.
00182 
00183     The timeout applies to each DSP read/write performed. Note that the
00184     data pointed to by MajorVersion may still fail if the retrieval of
00185     MinorVersion times out.
00186 */
00187 NTSTATUS
00188 SbDspGetVersion(
00189     IN  PUCHAR BasePort,
00190     OUT PUCHAR MajorVersion,
00191     OUT PUCHAR MinorVersion,
00192     IN  ULONG Timeout);
00193 
00194 /*
00195     Turn the speaker on.
00196 */
00197 NTSTATUS
00198 SbDspEnableSpeaker(
00199     IN  PUCHAR BasePort,
00200     IN  ULONG Timeout);
00201 
00202 /*
00203     Turn the speaker off.
00204 */
00205 NTSTATUS
00206 SbDspDisableSpeaker(
00207     IN  PUCHAR BasePort,
00208     IN  ULONG Timeout);
00209 
00210 /*
00211     Obtains the speaker status, storing the result in IsEnabled. This will be
00212     TRUE if the speaker is enabled, otherwise FALSE.
00213 */
00214 NTSTATUS
00215 SbDspIsSpeakerEnabled(
00216     IN  PUCHAR BasePort,
00217     OUT PBOOLEAN IsEnabled,
00218     IN  ULONG Timeout);
00219 
00220 /*
00221     Validate the input sample rate. The major and minor versions are required
00222     to determine the capabilities of the card.
00223 */
00224 BOOLEAN
00225 SbDspIsValidInputRate(
00226     IN  UCHAR MajorVersion,
00227     IN  UCHAR MinorVersion,
00228     IN  USHORT Rate,
00229     IN  BOOLEAN Stereo);
00230 
00231 /*
00232     Validate the output sample rate. The major and minor versions are required
00233     to determine the capabilities of the card.
00234 */
00235 BOOLEAN
00236 SbDspIsValidOutputRate(
00237     IN  UCHAR MajorVersion,
00238     IN  UCHAR MinorVersion,
00239     IN  USHORT Rate,
00240     IN  BOOLEAN Stereo);
00241 
00242 /*
00243     Set the output/playback rate
00244     * DSP 4.xx only
00245 */
00246 NTSTATUS
00247 SbDsp4SetOutputRate(
00248     IN  PUCHAR BasePort,
00249     IN  USHORT Rate,
00250     IN  ULONG Timeout);
00251 
00252 /*
00253     Set the input/record rate
00254     * DSP 4.xx only
00255 */
00256 NTSTATUS
00257 SbDsp4SetInputRate(
00258     IN  PUCHAR BasePort,
00259     IN  USHORT Rate,
00260     IN  ULONG Timeout);
00261 
00262 
00263 /*
00264     Reset the mixer
00265 */
00266 VOID
00267 SbMixerReset(IN PUCHAR BasePort);
00268 
00269 /*
00270     Pack mixer level data
00271 */
00272 NTSTATUS
00273 SbMixerPackLevelData(
00274     IN  UCHAR Line,
00275     IN  UCHAR Level,
00276     OUT PUCHAR PackedLevel);
00277 
00278 /*
00279     Unpack mixer level data
00280 */
00281 NTSTATUS
00282 SbMixerUnpackLevelData(
00283     IN  UCHAR Line,
00284     IN  UCHAR PackedLevel,
00285     OUT PUCHAR Level);
00286 
00287 /*
00288     Set a mixer line level
00289 */
00290 NTSTATUS
00291 SbMixerSetLevel(
00292     IN  PUCHAR BasePort,
00293     IN  UCHAR Line,
00294     IN  UCHAR Level);
00295 
00296 /*
00297     Get a mixer line level
00298 */
00299 NTSTATUS
00300 SbMixerGetLevel(
00301     IN  PUCHAR BasePort,
00302     IN  UCHAR Line,
00303     OUT PUCHAR Level);
00304 
00305 /*
00306     Enable automatic gain control
00307 */
00308 VOID
00309 SbMixerEnableAGC(IN PUCHAR BasePort);
00310 
00311 /*
00312     Disable automatic gain control
00313 */
00314 VOID
00315 SbMixerDisableAGC(IN PUCHAR BasePort);
00316 
00317 /*
00318     Retrieve the current state of the automatic gain control
00319 */
00320 BOOLEAN
00321 SbMixerIsAGCEnabled(IN PUCHAR BasePort);
00322 
00323 
00324 #endif

Generated on Sat May 26 2012 04:32:05 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.