Go to the source code of this file.
◆ HDA_ASYNC_CONTEXT
◆ PHDA_ASYNC_CONTEXT
◆ GetHDACapabilities()
Definition at line 72 of file hdac_controller.cpp.
72 {
75 "chipset global capabilities = 0x%x\n", gcap);
76
80
82
85
88
92
94 if (!(corbSize & 0x40)) {
96 }
97
99 if (!(rirbSize & 0x40)) {
101 }
102
104}
#define SklHdAudBusPrint(dbglevel, fmt,...)
#define STATUS_DEVICE_FEATURE_NOT_SUPPORTED
#define hda_read8(ctx, reg)
#define hda_read16(ctx, reg)
Referenced by Fdo_EvtDevicePrepareHardware().
◆ hda_dpc()
Definition at line 415 of file hdac_controller.cpp.
418 {
420
423
426 if (
stream->irqReceived) {
428
430 if (
stream->registeredCallbacks[
j].InUse) {
433 stream->registeredCallbacks[
j].NotificationCallback(
stream->registeredCallbacks[
j].CallbackContext, unknownVal);
434 }
435 }
436
438 if (
stream->registeredEvents[
j]) {
440 }
441 }
442 }
443 }
444
448 }
449}
#define KeSetEvent(pEvt, foo, foo2)
#define KeQuerySystemTime(t)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
static void HDAFlushRIRB(PFDO_CONTEXT fdoCtx)
#define UNREFERENCED_PARAMETER(P)
_Must_inspect_result_ _In_ WDFDEVICE Device
FORCEINLINE WDFDEVICE WdfInterruptGetDevice(_In_ WDFINTERRUPT Interrupt)
_In_ WDFOBJECT AssociatedObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
Referenced by Fdo_Initialize().
◆ hda_interrupt()
Definition at line 374 of file hdac_controller.cpp.
376 {
378
381
383
386 }
387
389 return handled;
390
393 return handled;
394
396
399 }
400
407 }
408 }
409
410 return handled;
411}
#define RIRB_INT_RESPONSE
int hda_stream_interrupt(PFDO_CONTEXT fdoCtx, unsigned int status)
#define hda_read32(ctx, reg)
#define hda_write8(ctx, reg, data)
PVOID dspInterruptContext
BOOLEAN ControllerEnabled
PADSP_INTERRUPT_CALLBACK dspInterruptCallback
FORCEINLINE BOOLEAN WdfInterruptQueueDpcForIsr(_In_ WDFINTERRUPT Interrupt)
Referenced by Fdo_Initialize().
◆ RunSingleHDACmd()
Definition at line 249 of file hdac_controller.cpp.
249 {
252
254 "%s: Called. Command: 0x%x\n", __func__,
val);
255
259 }
260
265 }
267}
#define NT_SUCCESS(StatCode)
NTSTATUS HDA_WaitForTransfer(PFDO_CONTEXT fdoCtx, UINT16 codecAddr, _In_ ULONG Count, _Inout_updates_(Count) PHDAUDIO_CODEC_TRANSFER CodecTransfer)
GLenum const GLvoid * addr
NTSTATUS SendHDACmds(PFDO_CONTEXT fdoCtx, ULONG count, PHDAUDIO_CODEC_TRANSFER CodecTransfer)
static UINT16 HDACommandAddr(UINT32 cmd)
HDAUDIO_CODEC_RESPONSE Input
HDAUDIO_CODEC_COMMAND Output
Referenced by Fdo_EnumerateCodec(), and Fdo_EvtDeviceD0EntryPostInterrupts().
◆ SendHDACmds()
Definition at line 207 of file hdac_controller.cpp.
207 {
208 WdfInterruptAcquireLock(fdoCtx->
Interrupt);
212
214
215
217 if (wp == 0xffff) {
218
220 "%s: device not found\n", __func__);
221 WdfInterruptReleaseLock(fdoCtx->
Interrupt);
223 }
224
225 wp++;
227
229 if (wp == rp) {
230
232 "%s: device busy\n", __func__);
233 WdfInterruptReleaseLock(fdoCtx->
Interrupt);
235 }
236
239
241
243 }
244
245 WdfInterruptReleaseLock(fdoCtx->
Interrupt);
247}
#define InterlockedIncrement
GLuint GLuint GLsizei count
#define HDA_MAX_CORB_ENTRIES
#define STATUS_DEVICE_DOES_NOT_EXIST
#define hda_write16(ctx, reg, data)
PHDAUDIO_CODEC_TRANSFER xfer[HDA_MAX_CORB_ENTRIES]
HDAC_CODEC_XFER xfer[HDA_MAX_CODECS]
LONG cmds[HDA_MAX_CODECS]
#define RtlZeroMemory(Destination, Length)
Referenced by HDA_TransferCodecVerbs(), and RunSingleHDACmd().
◆ StartHDAController()
Definition at line 162 of file hdac_controller.cpp.
162 {
167 }
168
169
171
174
177
178
181
182 {
183
187 }
188
190
192
195}
static void udelay(LONG usec)
#define HDA_INT_GLOBAL_EN
#define STATESTS_INT_MASK
void HDAInitRirb(PFDO_CONTEXT fdoCtx)
void HDAStartRirb(PFDO_CONTEXT fdoCtx)
void HDAStartCorb(PFDO_CONTEXT fdoCtx)
NTSTATUS ResetHDAController(PFDO_CONTEXT fdoCtx, BOOLEAN wakeup)
void HDAInitCorb(PFDO_CONTEXT fdoCtx)
PHYSICAL_ADDRESS NTAPI MmGetPhysicalAddress(IN PVOID Address)
#define hda_write32(ctx, reg, data)
Referenced by Fdo_EvtDeviceD0Entry().
◆ StopHDAController()
◆ WDF_DECLARE_CONTEXT_TYPE_WITH_NAME()
| WDF_DECLARE_CONTEXT_TYPE_WITH_NAME |
( |
HDA_ASYNC_CONTEXT |
, |
|
|
HDAAsyncWorkItem_GetContext |
|
|
) |
| |