mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 05:43:08 +00:00
Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys.
This commit is contained in:
parent
b94e2d8ca0
commit
c2c66aff7d
24198 changed files with 0 additions and 37285 deletions
372
drivers/wdm/audio/hdaudbus/businterface.cpp
Normal file
372
drivers/wdm/audio/hdaudbus/businterface.cpp
Normal file
|
@ -0,0 +1,372 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS Kernel Streaming
|
||||
* FILE: drivers/wdm/audio/hdaudbus/hdaudbus.cpp
|
||||
* PURPOSE: HDA Driver Entry
|
||||
* PROGRAMMER: Johannes Anderwald
|
||||
*/
|
||||
#include "hdaudbus.h"
|
||||
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
HDA_InterfaceReference(
|
||||
PVOID BusContext)
|
||||
{
|
||||
DPRINT1("HDA_InterfaceReference\n");
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
HDA_InterfaceDereference(
|
||||
PVOID BusContext)
|
||||
{
|
||||
DPRINT1("HDA_InterfaceDereference\n");
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_TransferCodecVerbs(
|
||||
IN PVOID _context,
|
||||
IN ULONG Count,
|
||||
IN OUT PHDAUDIO_CODEC_TRANSFER CodecTransfer,
|
||||
IN PHDAUDIO_TRANSFER_COMPLETE_CALLBACK Callback,
|
||||
IN PVOID Context)
|
||||
{
|
||||
ULONG Verbs[MAX_CODEC_RESPONSES], Responses[MAX_CODEC_RESPONSES];
|
||||
ULONG Index;
|
||||
PHDA_PDO_DEVICE_EXTENSION DeviceExtension;
|
||||
|
||||
DPRINT1("HDA_TransferCodecVerbs Count %lu CodecTransfer %p Callback %p Context %p\n", Count, CodecTransfer, Callback, Context);
|
||||
|
||||
/* get device extension */
|
||||
DeviceExtension = (PHDA_PDO_DEVICE_EXTENSION)_context;
|
||||
ASSERT(DeviceExtension->IsFDO == FALSE);
|
||||
|
||||
/* FIXME handle callback*/
|
||||
ASSERT(Callback == NULL);
|
||||
|
||||
for (Index = 0; Index < Count; Index++)
|
||||
{
|
||||
Verbs[Index] = CodecTransfer[Index].Output.Command;
|
||||
}
|
||||
|
||||
HDA_SendVerbs(DeviceExtension->FDO, DeviceExtension->Codec, Verbs, Responses, Count);
|
||||
|
||||
for (Index = 0; Index < DeviceExtension->Codec->ResponseCount; Index++)
|
||||
{
|
||||
CodecTransfer[Index].Input.Response = DeviceExtension->Codec->Responses[Index];
|
||||
}
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_AllocateCaptureDmaEngine(
|
||||
IN PVOID _context,
|
||||
IN UCHAR CodecAddress,
|
||||
IN PHDAUDIO_STREAM_FORMAT StreamFormat,
|
||||
OUT PHANDLE Handle,
|
||||
OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_AllocateRenderDmaEngine(
|
||||
IN PVOID _context,
|
||||
IN PHDAUDIO_STREAM_FORMAT StreamFormat,
|
||||
IN BOOLEAN Stripe,
|
||||
OUT PHANDLE Handle,
|
||||
OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_ChangeBandwidthAllocation(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PHDAUDIO_STREAM_FORMAT StreamFormat,
|
||||
OUT PHDAUDIO_CONVERTER_FORMAT ConverterFormat)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_AllocateDmaBuffer(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN SIZE_T RequestedBufferSize,
|
||||
OUT PMDL *BufferMdl,
|
||||
OUT PSIZE_T AllocatedBufferSize,
|
||||
OUT PUCHAR StreamId,
|
||||
OUT PULONG FifoSize)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_FreeDmaBuffer(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_FreeDmaEngine(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_SetDmaEngineState(
|
||||
IN PVOID _context,
|
||||
IN HDAUDIO_STREAM_STATE StreamState,
|
||||
IN ULONG NumberOfHandles,
|
||||
IN PHANDLE Handles)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
HDA_GetWallClockRegister(
|
||||
IN PVOID _context,
|
||||
OUT PULONG *Wallclock)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_GetLinkPositionRegister(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
OUT PULONG *Position)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_RegisterEventCallback(
|
||||
IN PVOID _context,
|
||||
IN PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK Routine,
|
||||
IN PVOID Context,
|
||||
OUT PUCHAR Tag)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
*Tag = 1;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_UnregisterEventCallback(
|
||||
IN PVOID _context,
|
||||
IN UCHAR Tag)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_GetDeviceInformation(
|
||||
IN PVOID _context,
|
||||
OUT PHDAUDIO_DEVICE_INFORMATION DeviceInformation)
|
||||
{
|
||||
PHDA_PDO_DEVICE_EXTENSION DeviceExtension;
|
||||
|
||||
DeviceExtension = (PHDA_PDO_DEVICE_EXTENSION)_context;
|
||||
|
||||
DPRINT1("HDA_GetDeviceInformation\n");
|
||||
|
||||
DeviceInformation->Size = sizeof(HDAUDIO_DEVICE_INFORMATION);
|
||||
DeviceInformation->CodecsDetected = 1; // FIXME
|
||||
DeviceInformation->DeviceVersion = DeviceExtension->Codec->Major << 8 | DeviceExtension->Codec->Minor;
|
||||
DeviceInformation->DriverVersion = DeviceExtension->Codec->Major << 8 | DeviceExtension->Codec->Minor;
|
||||
DeviceInformation->IsStripingSupported = FALSE;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
VOID
|
||||
NTAPI
|
||||
HDA_GetResourceInformation(
|
||||
IN PVOID _context,
|
||||
OUT PUCHAR CodecAddress,
|
||||
OUT PUCHAR FunctionGroupStartNode)
|
||||
{
|
||||
PHDA_PDO_DEVICE_EXTENSION DeviceExtension;
|
||||
|
||||
DeviceExtension = (PHDA_PDO_DEVICE_EXTENSION)_context;
|
||||
|
||||
DPRINT1("HDA_GetResourceInformation Addr %x NodeId %x\n", DeviceExtension->Codec->Addr, DeviceExtension->AudioGroup->NodeId);
|
||||
|
||||
*CodecAddress = DeviceExtension->Codec->Addr;
|
||||
*FunctionGroupStartNode = DeviceExtension->AudioGroup->NodeId;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_AllocateDmaBufferWithNotification(
|
||||
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)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
}
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_FreeDmaBufferWithNotification(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PMDL BufferMdl,
|
||||
IN SIZE_T BufferSize)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_RegisterNotificationEvent(
|
||||
PVOID _context,
|
||||
HANDLE Handle,
|
||||
IN PKEVENT NotificationEvent)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
HDA_UnregisterNotificationEvent(
|
||||
IN PVOID _context,
|
||||
IN HANDLE Handle,
|
||||
IN PKEVENT NotificationEvent)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
ASSERT(FALSE);
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
HDA_PDOHandleQueryInterface(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
PIO_STACK_LOCATION IoStack;
|
||||
PHDAUDIO_BUS_INTERFACE_V2 InterfaceHDA;
|
||||
PHDA_PDO_DEVICE_EXTENSION DeviceExtension;
|
||||
|
||||
/* get device extension */
|
||||
DeviceExtension = (PHDA_PDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension;
|
||||
ASSERT(DeviceExtension->IsFDO == FALSE);
|
||||
|
||||
IoStack = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
||||
if (IsEqualGUIDAligned(*IoStack->Parameters.QueryInterface.InterfaceType, GUID_HDAUDIO_BUS_INTERFACE))
|
||||
{
|
||||
InterfaceHDA = (PHDAUDIO_BUS_INTERFACE_V2)IoStack->Parameters.QueryInterface.Interface;
|
||||
InterfaceHDA->Version = IoStack->Parameters.QueryInterface.Version;
|
||||
InterfaceHDA->Size = sizeof(HDAUDIO_BUS_INTERFACE);
|
||||
InterfaceHDA->Context = DeviceExtension;
|
||||
InterfaceHDA->InterfaceReference = HDA_InterfaceReference;
|
||||
InterfaceHDA->InterfaceDereference = HDA_InterfaceDereference;
|
||||
|
||||
InterfaceHDA->TransferCodecVerbs = HDA_TransferCodecVerbs;
|
||||
InterfaceHDA->AllocateCaptureDmaEngine = HDA_AllocateCaptureDmaEngine;
|
||||
InterfaceHDA->AllocateRenderDmaEngine = HDA_AllocateRenderDmaEngine;
|
||||
InterfaceHDA->ChangeBandwidthAllocation = HDA_ChangeBandwidthAllocation;
|
||||
InterfaceHDA->AllocateDmaBuffer = HDA_AllocateDmaBuffer;
|
||||
InterfaceHDA->FreeDmaBuffer = HDA_FreeDmaBuffer;
|
||||
InterfaceHDA->FreeDmaEngine = HDA_FreeDmaEngine;
|
||||
InterfaceHDA->SetDmaEngineState = HDA_SetDmaEngineState;
|
||||
InterfaceHDA->GetWallClockRegister = HDA_GetWallClockRegister;
|
||||
InterfaceHDA->GetLinkPositionRegister = HDA_GetLinkPositionRegister;
|
||||
InterfaceHDA->RegisterEventCallback = HDA_RegisterEventCallback;
|
||||
InterfaceHDA->UnregisterEventCallback = HDA_UnregisterEventCallback;
|
||||
InterfaceHDA->GetDeviceInformation = HDA_GetDeviceInformation;
|
||||
InterfaceHDA->GetResourceInformation = HDA_GetResourceInformation;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
else if (IsEqualGUIDAligned(*IoStack->Parameters.QueryInterface.InterfaceType, GUID_HDAUDIO_BUS_INTERFACE_V2))
|
||||
{
|
||||
InterfaceHDA = (PHDAUDIO_BUS_INTERFACE_V2)IoStack->Parameters.QueryInterface.Interface;
|
||||
InterfaceHDA->Version = IoStack->Parameters.QueryInterface.Version;
|
||||
InterfaceHDA->Size = sizeof(HDAUDIO_BUS_INTERFACE_V2);
|
||||
InterfaceHDA->Context = DeviceExtension;
|
||||
InterfaceHDA->InterfaceReference = HDA_InterfaceReference;
|
||||
InterfaceHDA->InterfaceDereference = HDA_InterfaceDereference;
|
||||
|
||||
InterfaceHDA->TransferCodecVerbs = HDA_TransferCodecVerbs;
|
||||
InterfaceHDA->AllocateCaptureDmaEngine = HDA_AllocateCaptureDmaEngine;
|
||||
InterfaceHDA->AllocateRenderDmaEngine = HDA_AllocateRenderDmaEngine;
|
||||
InterfaceHDA->ChangeBandwidthAllocation = HDA_ChangeBandwidthAllocation;
|
||||
InterfaceHDA->AllocateDmaBuffer = HDA_AllocateDmaBuffer;
|
||||
InterfaceHDA->FreeDmaBuffer = HDA_FreeDmaBuffer;
|
||||
InterfaceHDA->FreeDmaEngine = HDA_FreeDmaEngine;
|
||||
InterfaceHDA->SetDmaEngineState = HDA_SetDmaEngineState;
|
||||
InterfaceHDA->GetWallClockRegister = HDA_GetWallClockRegister;
|
||||
InterfaceHDA->GetLinkPositionRegister = HDA_GetLinkPositionRegister;
|
||||
InterfaceHDA->RegisterEventCallback = HDA_RegisterEventCallback;
|
||||
InterfaceHDA->UnregisterEventCallback = HDA_UnregisterEventCallback;
|
||||
InterfaceHDA->GetDeviceInformation = HDA_GetDeviceInformation;
|
||||
InterfaceHDA->GetResourceInformation = HDA_GetResourceInformation;
|
||||
|
||||
InterfaceHDA->AllocateDmaBufferWithNotification = HDA_AllocateDmaBufferWithNotification;
|
||||
InterfaceHDA->FreeDmaBufferWithNotification = HDA_FreeDmaBufferWithNotification;
|
||||
InterfaceHDA->RegisterNotificationEvent = HDA_RegisterNotificationEvent;
|
||||
InterfaceHDA->UnregisterNotificationEvent = HDA_UnregisterNotificationEvent;
|
||||
}
|
||||
|
||||
// FIXME
|
||||
// implement support for GUID_HDAUDIO_BUS_INTERFACE_BDL
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_NOT_SUPPORTED;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue