mirror of
https://github.com/reactos/reactos.git
synced 2025-05-21 10:05:35 +00:00
[DDK]
- add hdaudio.h svn path=/trunk/; revision=68276
This commit is contained in:
parent
261e8039e2
commit
e95016183a
1 changed files with 253 additions and 0 deletions
253
reactos/include/ddk/hdaudio.h
Normal file
253
reactos/include/ddk/hdaudio.h
Normal file
|
@ -0,0 +1,253 @@
|
|||
#ifndef _HDAUDIO_H_
|
||||
#define _HDAUDIO_H_
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(disable:4201)
|
||||
#pragma warning(disable:4214)
|
||||
#endif
|
||||
|
||||
DEFINE_GUID (GUID_HDAUDIO_BUS_INTERFACE, 0xd2eaf88b, 0xab18, 0x41a8, 0xb6, 0x64, 0x8d, 0x59, 0x21, 0x67, 0x67, 0x1b);
|
||||
DEFINE_GUID(GUID_HDAUDIO_BUS_INTERFACE_BDL, 0xb4d65397, 0x5634, 0x40b0, 0xb0, 0x68, 0xf5, 0xb9, 0xf8, 0xb9, 0x67, 0xa5);
|
||||
DEFINE_GUID (GUID_HDAUDIO_BUS_INTERFACE_V2, 0xb52af5fb, 0x424b, 0x4bb9, 0xa1, 0x60, 0x5b, 0x38, 0xbe, 0x94, 0xe5, 0x68);
|
||||
DEFINE_GUID (GUID_HDAUDIO_BUS_CLASS, 0xbbd1a745, 0xadd6, 0x4575, 0x9c, 0x2e, 0x9b, 0x42, 0x8d, 0x1c, 0x32, 0x66);
|
||||
|
||||
#ifndef _HDAUDIO_CODEC_TRANSFER_
|
||||
#define _HDAUDIO_CODEC_TRANSFER_
|
||||
|
||||
typedef struct _HDAUDIO_CODEC_COMMAND
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG Data : 8;
|
||||
ULONG VerbId : 12;
|
||||
ULONG Node : 8;
|
||||
ULONG CodecAddress : 4;
|
||||
} Verb8;
|
||||
struct
|
||||
{
|
||||
ULONG Data : 16;
|
||||
ULONG VerbId : 4;
|
||||
ULONG Node : 8;
|
||||
ULONG CodecAddress : 4;
|
||||
} Verb16;
|
||||
ULONG Command;
|
||||
};
|
||||
} HDAUDIO_CODEC_COMMAND, *PHDAUDIO_CODEC_COMMAND;
|
||||
|
||||
typedef struct _HDAUDIO_CODEC_RESPONSE
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
ULONG Response : 26;
|
||||
ULONG Tag : 6;
|
||||
} Unsolicited;
|
||||
ULONG Response;
|
||||
};
|
||||
ULONG SDataIn : 4;
|
||||
ULONG IsUnsolicitedResponse : 1;
|
||||
ULONG :25;
|
||||
ULONG HasFifoOverrun : 1;
|
||||
ULONG IsValid : 1;
|
||||
};
|
||||
ULONGLONG CompleteResponse;
|
||||
};
|
||||
} HDAUDIO_CODEC_RESPONSE, *PHDAUDIO_CODEC_RESPONSE;
|
||||
|
||||
typedef struct _HDAUDIO_CODEC_TRANSFER
|
||||
{
|
||||
HDAUDIO_CODEC_COMMAND Output;
|
||||
HDAUDIO_CODEC_RESPONSE Input;
|
||||
} HDAUDIO_CODEC_TRANSFER, *PHDAUDIO_CODEC_TRANSFER;
|
||||
#endif
|
||||
|
||||
typedef struct _HDAUDIO_STREAM_FORMAT
|
||||
{
|
||||
ULONG SampleRate;
|
||||
USHORT ValidBitsPerSample;
|
||||
USHORT ContainerSize;
|
||||
USHORT NumberOfChannels;
|
||||
} HDAUDIO_STREAM_FORMAT, *PHDAUDIO_STREAM_FORMAT;
|
||||
|
||||
typedef struct _HDAUDIO_CONVERTER_FORMAT
|
||||
{
|
||||
union
|
||||
{
|
||||
struct
|
||||
{
|
||||
USHORT NumberOfChannels : 4;
|
||||
USHORT BitsPerSample : 3;
|
||||
USHORT : 1;
|
||||
USHORT SampleRate : 7;
|
||||
USHORT StreamType : 1;
|
||||
};
|
||||
USHORT ConverterFormat;
|
||||
};
|
||||
} HDAUDIO_CONVERTER_FORMAT, *PHDAUDIO_CONVERTER_FORMAT;
|
||||
|
||||
typedef enum _HDAUDIO_STREAM_STATE
|
||||
{
|
||||
ResetState = 0,
|
||||
StopState = 1,
|
||||
PauseState = 1,
|
||||
RunState = 2
|
||||
} HDAUDIO_STREAM_STATE, *PHDAUDIO_STREAM_STATE;
|
||||
|
||||
typedef VOID (*PHDAUDIO_TRANSFER_COMPLETE_CALLBACK)(HDAUDIO_CODEC_TRANSFER *, PVOID);
|
||||
|
||||
typedef VOID (*PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK)(HDAUDIO_CODEC_RESPONSE, PVOID);
|
||||
|
||||
typedef struct _HDAUDIO_DEVICE_INFORMATION
|
||||
{
|
||||
USHORT Size; // size of this structure
|
||||
USHORT DeviceVersion; // maj.min (maj is high byte, min is low byte)
|
||||
USHORT DriverVersion; // maj.min (maj is high byte, min is low byte)
|
||||
USHORT CodecsDetected; // mask of codecs present. Bit number == SDI line number
|
||||
BOOLEAN IsStripingSupported; // TRUE if striping (2 SDO lines) is supported
|
||||
} HDAUDIO_DEVICE_INFORMATION, *PHDAUDIO_DEVICE_INFORMATION;
|
||||
|
||||
typedef struct _HDAUDIO_BUFFER_DESCRIPTOR
|
||||
{
|
||||
PHYSICAL_ADDRESS Address;
|
||||
ULONG Length;
|
||||
ULONG InterruptOnCompletion;
|
||||
} HDAUDIO_BUFFER_DESCRIPTOR, *PHDAUDIO_BUFFER_DESCRIPTOR;
|
||||
|
||||
|
||||
typedef NTSTATUS (*PTRANSFER_CODEC_VERBS) (IN PVOID _context, IN ULONG Count, IN OUT PHDAUDIO_CODEC_TRANSFER CodecTransfer, IN PHDAUDIO_TRANSFER_COMPLETE_CALLBACK Callback, IN PVOID Context);
|
||||
typedef NTSTATUS (*PALLOCATE_CAPTURE_DMA_ENGINE) (IN PVOID _context, IN UCHAR CodecAddress, IN PHDAUDIO_STREAM_FORMAT StreamFormat, OUT PHANDLE Handle, OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat);
|
||||
typedef NTSTATUS (*PALLOCATE_RENDER_DMA_ENGINE) (IN PVOID _context, IN PHDAUDIO_STREAM_FORMAT StreamFormat, IN BOOLEAN Stripe, OUT PHANDLE Handle, OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat);
|
||||
typedef NTSTATUS (*PCHANGE_BANDWIDTH_ALLOCATION) (IN PVOID _context, IN HANDLE Handle, IN PHDAUDIO_STREAM_FORMAT StreamFormat, OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat);
|
||||
typedef NTSTATUS (*PALLOCATE_DMA_BUFFER) (IN PVOID _context, IN HANDLE Handle, IN SIZE_T RequestedBufferSize, OUT PMDL *BufferMdl, OUT PSIZE_T AllocatedBufferSize, OUT PUCHAR StreamId, OUT PULONG FifoSize);
|
||||
typedef NTSTATUS (*PFREE_DMA_BUFFER) (IN PVOID _context, IN HANDLE Handle);
|
||||
typedef NTSTATUS (*PFREE_DMA_ENGINE) (IN PVOID _context, IN HANDLE Handle);
|
||||
typedef NTSTATUS (*PSET_DMA_ENGINE_STATE) (IN PVOID _context, IN HDAUDIO_STREAM_STATE StreamState, IN ULONG NumberOfHandles, IN PHANDLE Handles);
|
||||
typedef VOID (*PGET_WALL_CLOCK_REGISTER) (IN PVOID _context, OUT PULONG *Wallclock);
|
||||
typedef NTSTATUS (*PGET_LINK_POSITION_REGISTER) (IN PVOID _context, IN HANDLE Handle, OUT PULONG *Position);
|
||||
typedef NTSTATUS (*PREGISTER_EVENT_CALLBACK) (IN PVOID _context, IN PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK Routine, IN PVOID Context, OUT PUCHAR Tag);
|
||||
typedef NTSTATUS (*PUNREGISTER_EVENT_CALLBACK) (IN PVOID _context, IN UCHAR Tag);
|
||||
typedef NTSTATUS (*PGET_DEVICE_INFORMATION) (IN PVOID _context, IN OUT PHDAUDIO_DEVICE_INFORMATION DeviceInformation);
|
||||
typedef VOID (*PGET_RESOURCE_INFORMATION) (IN PVOID _context, OUT PUCHAR CodecAddress, OUT PUCHAR FunctionGroupStartNode);
|
||||
|
||||
typedef struct _HDAUDIO_BUS_INTERFACE
|
||||
{
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
|
||||
PTRANSFER_CODEC_VERBS TransferCodecVerbs;
|
||||
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine;
|
||||
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine;
|
||||
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation;
|
||||
PALLOCATE_DMA_BUFFER AllocateDmaBuffer;
|
||||
PFREE_DMA_BUFFER FreeDmaBuffer;
|
||||
PFREE_DMA_ENGINE FreeDmaEngine;
|
||||
PSET_DMA_ENGINE_STATE SetDmaEngineState;
|
||||
PGET_WALL_CLOCK_REGISTER GetWallClockRegister;
|
||||
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister;
|
||||
PREGISTER_EVENT_CALLBACK RegisterEventCallback;
|
||||
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback;
|
||||
PGET_DEVICE_INFORMATION GetDeviceInformation;
|
||||
PGET_RESOURCE_INFORMATION GetResourceInformation;
|
||||
} HDAUDIO_BUS_INTERFACE, *PHDAUDIO_BUS_INTERFACE;
|
||||
|
||||
typedef void (*PHDAUDIO_BDL_ISR) (IN VOID *Context, IN ULONG InterruptBitMask);
|
||||
|
||||
typedef NTSTATUS (*PALLOCATE_CONTIGUOUS_DMA_BUFFER) (IN PVOID _context, IN HANDLE Handle,
|
||||
ULONG RequestedBufferSize, OUT PVOID *DataBuffer, OUT PHDAUDIO_BUFFER_DESCRIPTOR *BdlBuffer);
|
||||
typedef NTSTATUS (*PFREE_CONTIGUOUS_DMA_BUFFER) (IN PVOID _context, IN HANDLE Handle);
|
||||
typedef NTSTATUS (*PSETUP_DMA_ENGINE_WITH_BDL) (IN PVOID _context, IN HANDLE Handle, IN ULONG BufferLength,
|
||||
IN ULONG Lvi, IN PHDAUDIO_BDL_ISR Isr, IN PVOID Context, OUT PUCHAR StreamId, OUT PULONG FifoSize);
|
||||
|
||||
typedef struct _HDAUDIO_BUS_INTERFACE_BDL
|
||||
{
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
|
||||
PTRANSFER_CODEC_VERBS TransferCodecVerbs;
|
||||
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine;
|
||||
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine;
|
||||
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation;
|
||||
PALLOCATE_CONTIGUOUS_DMA_BUFFER AllocateContiguousDmaBuffer;
|
||||
PSETUP_DMA_ENGINE_WITH_BDL SetupDmaEngineWithBdl;
|
||||
PFREE_CONTIGUOUS_DMA_BUFFER FreeContiguousDmaBuffer;
|
||||
PFREE_DMA_ENGINE FreeDmaEngine;
|
||||
PSET_DMA_ENGINE_STATE SetDmaEngineState;
|
||||
PGET_WALL_CLOCK_REGISTER GetWallClockRegister;
|
||||
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister;
|
||||
PREGISTER_EVENT_CALLBACK RegisterEventCallback;
|
||||
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback;
|
||||
PGET_DEVICE_INFORMATION GetDeviceInformation;
|
||||
PGET_RESOURCE_INFORMATION GetResourceInformation;
|
||||
} HDAUDIO_BUS_INTERFACE_BDL, *PHDAUDIO_BUS_INTERFACE_BDL;
|
||||
|
||||
typedef NTSTATUS (*PALLOCATE_DMA_BUFFER_WITH_NOTIFICATION) (IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN ULONG NotificationCount,
|
||||
IN SIZE_T RequestedBufferSize,
|
||||
OUT PMDL *BufferMdl,
|
||||
OUT PSIZE_T AllocatedBufferSize,
|
||||
OUT PSIZE_T OffsetFromFirstPage,
|
||||
OUT PUCHAR StreamId,
|
||||
OUT PULONG FifoSize);
|
||||
|
||||
typedef NTSTATUS (*PFREE_DMA_BUFFER_WITH_NOTIFICATION) (IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PMDL BufferMdl,
|
||||
IN SIZE_T BufferSize);
|
||||
|
||||
typedef NTSTATUS (*PREGISTER_NOTIFICATION_EVENT) (IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PKEVENT NotificationEvent);
|
||||
|
||||
typedef NTSTATUS (*PUNREGISTER_NOTIFICATION_EVENT) (IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PKEVENT NotificationEvent);
|
||||
|
||||
typedef struct _HDAUDIO_BUS_INTERFACE_V2
|
||||
{
|
||||
USHORT Size;
|
||||
USHORT Version;
|
||||
PVOID Context;
|
||||
PINTERFACE_REFERENCE InterfaceReference;
|
||||
PINTERFACE_DEREFERENCE InterfaceDereference;
|
||||
|
||||
PTRANSFER_CODEC_VERBS TransferCodecVerbs;
|
||||
PALLOCATE_CAPTURE_DMA_ENGINE AllocateCaptureDmaEngine;
|
||||
PALLOCATE_RENDER_DMA_ENGINE AllocateRenderDmaEngine;
|
||||
PCHANGE_BANDWIDTH_ALLOCATION ChangeBandwidthAllocation;
|
||||
PALLOCATE_DMA_BUFFER AllocateDmaBuffer;
|
||||
PFREE_DMA_BUFFER FreeDmaBuffer;
|
||||
PFREE_DMA_ENGINE FreeDmaEngine;
|
||||
PSET_DMA_ENGINE_STATE SetDmaEngineState;
|
||||
PGET_WALL_CLOCK_REGISTER GetWallClockRegister;
|
||||
PGET_LINK_POSITION_REGISTER GetLinkPositionRegister;
|
||||
PREGISTER_EVENT_CALLBACK RegisterEventCallback;
|
||||
PUNREGISTER_EVENT_CALLBACK UnregisterEventCallback;
|
||||
PGET_DEVICE_INFORMATION GetDeviceInformation;
|
||||
PGET_RESOURCE_INFORMATION GetResourceInformation;
|
||||
PALLOCATE_DMA_BUFFER_WITH_NOTIFICATION AllocateDmaBufferWithNotification;
|
||||
PFREE_DMA_BUFFER_WITH_NOTIFICATION FreeDmaBufferWithNotification;
|
||||
PREGISTER_NOTIFICATION_EVENT RegisterNotificationEvent;
|
||||
PUNREGISTER_NOTIFICATION_EVENT UnregisterNotificationEvent;
|
||||
} HDAUDIO_BUS_INTERFACE_V2, *PHDAUDIO_BUS_INTERFACE_V2;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma warning(default:4201)
|
||||
#pragma warning(default:4214)
|
||||
#endif
|
||||
|
||||
#endif // _HDAUDIO_H_
|
||||
|
Loading…
Reference in a new issue