Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygensndblst.h
Go to the documentation of this file.
00001 /* 00002 * 00003 * COPYRIGHT: See COPYING in the top level directory 00004 * PROJECT: ReactOS kernel 00005 * FILE: drivers/dd/sndblst/sndblst.h 00006 * PURPOSE: Sound Blaster driver header 00007 * PROGRAMMER: Andrew Greenwood 00008 * UPDATE HISTORY: 00009 * Sept 28, 2003: Created 00010 */ 00011 00012 #pragma once 00013 00014 #include <ntddk.h> 00015 00016 #define NDEBUG 00017 #include <debug.h> 00018 00019 #define DEFAULT_PORT 0x220 00020 #define DEFAULT_IRQ 5 00021 #define DEFAULT_DMA 1 00022 #define DEFAULT_BUFSIZE 0x4000 00023 #define DEFAULT_SAMPLERATE 11025 00024 #define DEFAULT_BITDEPTH 8 00025 #define DEFAULT_CHANNELS 1 00026 00027 #define VALID_IRQS {5} 00028 00029 #define MIN_BUFSIZE 0x1000 00030 #define MAX_BUFSIZE 0x4000 00031 00032 #define DEVICE_SUBKEY L"Devices" 00033 #define PARMS_SUBKEY L"Parameters" 00034 00035 #define REGISTRY_PORT L"Port" 00036 00037 // At the moment, we just support a single device with fixed parameters: 00038 #define SB_PORT DEFAULT_PORT 00039 #define SB_IRQ DEFAULT_IRQ 00040 #define SB_DMA DEFAULT_DMA 00041 #define SB_BUFSIZE DEFAULT_BUFSIZE 00042 00043 #define SB_TIMEOUT 1000000 00044 00045 #define IOCTL_SOUND_BASE FILE_DEVICE_SOUND 00046 #define IOCTL_WAVE_BASE 0x0000 // CORRECT? 00047 00048 /* #define IOCTL_MIDI_PLAY CTL_CODE(IOCTL_SOUND_BASE, IOCTL_MIDI_BASE + 0x0006, \ 00049 * METHOD_BUFFERED, FILE_WRITE_ACCESS) 00050 */ 00051 00052 // Some constants 00053 00054 #define SB_DSP_READY 0xaa 00055 00056 // Commands (only the ones we use) 00057 00058 #define SB_SET_OUTPUT_RATE 0x41 // DSP v4.xx only 00059 #define SB_SET_INPUT_RATE 0x42 // DSP v4.xx only 00060 #define SB_SET_BLOCK_SIZE 0x48 // DSP v2.00 + 00061 #define SB_ENABLE_SPEAKER 0xd1 00062 #define SB_DISABLE_SPEAKER 0xd3 00063 #define SB_GET_SPEAKER_STATUS 0xd8 // DSP v2.00 + 00064 #define SB_GET_DSP_VERSION 0xe1 00065 00066 00067 // Hmm... These are a weenie bit trickier than MPU401... 00068 00069 #define SB_WRITE_RESET(bp, x) WRITE_PORT_UCHAR((PUCHAR) bp+0x6, x) 00070 #define SB_READ_DATA(bp) READ_PORT_UCHAR((PUCHAR) bp+0xa) 00071 #define SB_WRITE_DATA(bp, x) WRITE_PORT_UCHAR((PUCHAR) bp+0xc, x) 00072 #define SB_READ_WRITESTATUS(bp) READ_PORT_UCHAR((PUCHAR) bp+0xc) 00073 #define SB_READ_READSTATUS(bp) READ_PORT_UCHAR((PUCHAR) bp+0xe) 00074 00075 // Flow control 00076 00077 #define SB_READY_TO_SEND(bp) \ 00078 SB_READ_WRITESTATUS(bp) & 0x80 00079 00080 #define SB_READY_TO_RECEIVE(bp) \ 00081 SB_READ_READSTATUS(bp) & 0x80 00082 00083 00084 #define SB_WRITE_BYTE(bp, x) \ 00085 if (WaitToSend(bp)) SB_WRITE_DATA(bp, x) 00086 00087 //#define MPU401_READ(bp) 00088 // if (WaitToRead(bp)) ... ??? 00089 00090 /* 00091 DEVICE_EXTENSION contains the settings for each individual device 00092 */ 00093 00094 typedef struct _DEVICE_EXTENSION 00095 { 00096 PWSTR RegistryPath; 00097 PDRIVER_OBJECT DriverObject; 00098 ULONG Port; 00099 ULONG IRQ; 00100 ULONG DMA; 00101 ULONG BufferSize; 00102 PADAPTER_OBJECT Adapter; 00103 PMDL Mdl; 00104 PCHAR VirtualBuffer; 00105 PHYSICAL_ADDRESS Buffer; 00106 } DEVICE_EXTENSION, *PDEVICE_EXTENSION; 00107 00108 /* 00109 DEVICE_INSTANCE contains ??? 00110 */ 00111 00112 typedef struct _DEVICE_INSTANCE 00113 { 00114 // pPrevGDI 00115 PDRIVER_OBJECT DriverObject; 00116 } DEVICE_INSTANCE, *PDEVICE_INSTANCE; 00117 00118 /* 00119 CONFIG contains device parameters (port/IRQ) 00120 THIS STRUCTURE IS REDUNDANT 00121 */ 00122 00123 //typedef struct _CONFIG 00124 //{ 00125 // ULONG Port; 00126 // ULONG IRQ; 00127 //} CONFIG, *PCONFIG; 00128 00129 /* 00130 Some callback typedefs 00131 */ 00132 00133 typedef NTSTATUS REGISTRY_CALLBACK_ROUTINE(PWSTR RegistryPath, PVOID Context); 00134 typedef REGISTRY_CALLBACK_ROUTINE *PREGISTRY_CALLBACK_ROUTINE; 00135 00136 00137 /* 00138 Prototypes for functions in portio.c : 00139 */ 00140 00141 BOOLEAN WaitToSend(ULONG BasePort); 00142 BOOLEAN WaitToReceive(ULONG BasePort); 00143 USHORT InitSoundCard(ULONG BasePort); 00144 00145 /* 00146 Prototypes for functions in settings.c : 00147 */ 00148 00149 NTSTATUS NTAPI EnumDeviceKeys( 00150 IN PUNICODE_STRING RegistryPath, 00151 IN PWSTR SubKey, 00152 IN PREGISTRY_CALLBACK_ROUTINE Callback, 00153 IN PVOID Context); 00154 00155 NTSTATUS NTAPI LoadSettings( 00156 IN PWSTR ValueName, 00157 IN ULONG ValueType, 00158 IN PVOID ValueData, 00159 IN ULONG ValueLength, 00160 IN PVOID Context, 00161 IN PVOID EntryContext); 00162 00163 00164 00165 00166 BOOLEAN CreateDMA(PDEVICE_OBJECT DeviceObject); 00167 00168 00169 00170 VOID SetOutputSampleRate(ULONG BasePort, ULONG SampleRate); 00171 VOID EnableSpeaker(ULONG BasePort, BOOLEAN SpeakerOn); 00172 BOOLEAN IsSpeakerEnabled(ULONG BasePort); 00173 VOID BeginPlayback(ULONG BasePort, ULONG BitDepth, ULONG Channels, ULONG BlockSize); Generated on Mon May 28 2012 04:27:39 for ReactOS by
1.7.6.1
|