Cleanup IoGetDmaAdapter and use HalGetDmaAdapter instead of HalGetAdapter.
authorFilip Navara <filip.navara@gmail.com>
Mon, 22 Aug 2005 10:51:05 +0000 (10:51 +0000)
committerFilip Navara <filip.navara@gmail.com>
Mon, 22 Aug 2005 10:51:05 +0000 (10:51 +0000)
svn path=/trunk/; revision=17473

reactos/ntoskrnl/io/pnpdma.c

index 712bf12..9dd01f5 100644 (file)
 #include <internal/debug.h>
 #include <ddk/wdmguid.h>
 
-typedef struct _DMA_ADAPTER_INTERNAL {
-  USHORT Version;
-  USHORT Size;
-  PDMA_OPERATIONS DmaOperations;
-  PADAPTER_OBJECT HalAdapter;
-} DMA_ADAPTER_INTERNAL, *PDMA_ADAPTER_INTERNAL;
-
 /* FUNCTIONS *****************************************************************/
 
-VOID
-STDCALL
-IopPutDmaAdapter(
-  PDMA_ADAPTER DmaAdapter)
-{
-  DPRINT("IopPutDmaAdapter\n");
-  ExFreePool(DmaAdapter);
-}
-
-
-PVOID
-STDCALL
-IopAllocateCommonBuffer(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN ULONG Length,
-  OUT PPHYSICAL_ADDRESS LogicalAddress,
-  IN BOOLEAN CacheEnabled)
-{
-  DPRINT("IopAllocateCommonBuffer\n");
-  return HalAllocateCommonBuffer(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    Length, LogicalAddress, CacheEnabled);
-}
-
-
-VOID
-STDCALL
-IopFreeCommonBuffer(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN ULONG Length,
-  IN PHYSICAL_ADDRESS LogicalAddress,
-  IN PVOID VirtualAddress,
-  IN BOOLEAN CacheEnabled)
-{
-  DPRINT("IopFreeCommonBuffer\n");
-  HalFreeCommonBuffer(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    Length, LogicalAddress, VirtualAddress, CacheEnabled);
-}
-
-
-NTSTATUS
-STDCALL
-IopAllocateAdapterChannel(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN PDEVICE_OBJECT DeviceObject,
-  IN ULONG NumberOfMapRegisters,
-  IN PDRIVER_CONTROL ExecutionRoutine,
-  IN PVOID Context)
-{
-  DPRINT("IopAllocateAdapterChannel\n");
-  return IoAllocateAdapterChannel(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    DeviceObject, NumberOfMapRegisters, ExecutionRoutine, Context);
-}
-
-
-BOOLEAN
-STDCALL
-IopFlushAdapterBuffers(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN PMDL Mdl,
-  IN PVOID MapRegisterBase,
-  IN PVOID CurrentVa,
-  IN ULONG Length,
-  IN BOOLEAN WriteToDevice)
-{
-  DPRINT("IopFlushAdapterBuffers\n");
-  return IoFlushAdapterBuffers(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    Mdl, MapRegisterBase, CurrentVa, Length, WriteToDevice);
-}
-
-
-VOID
-STDCALL
-IopFreeAdapterChannel(
-  IN PDMA_ADAPTER DmaAdapter)
-{
-  DPRINT("IopFreeAdapterChannel\n");
-  IoFreeAdapterChannel(((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter);
-}
-
-
-VOID
-STDCALL
-IopFreeMapRegisters(
-  IN PDMA_ADAPTER DmaAdapter,
-  PVOID MapRegisterBase,
-  ULONG NumberOfMapRegisters)
-{
-  DPRINT("IopFreeMapRegisters\n");
-  IoFreeMapRegisters(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    MapRegisterBase, NumberOfMapRegisters);
-}
-
-
-PHYSICAL_ADDRESS
-STDCALL
-IopMapTransfer(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN PMDL Mdl,
-  IN PVOID MapRegisterBase,
-  IN PVOID CurrentVa,
-  IN OUT PULONG Length,
-  IN BOOLEAN WriteToDevice)
-{
-  DPRINT("IopMapTransfer\n");
-  return IoMapTransfer(
-    ((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter,
-    Mdl, MapRegisterBase, CurrentVa, Length, WriteToDevice);
-}
-
-
-ULONG
-STDCALL
-IopGetDmaAlignment(
-  IN PDMA_ADAPTER DmaAdapter)
-{
-  DPRINT("IopGetDmaAlignment\n");
-  /* FIXME: This is actually true only on i386 and Amd64 */
-  return 1L;
-}
-
-
-ULONG
-STDCALL
-IopReadDmaCounter(
-  IN PDMA_ADAPTER DmaAdapter)
-{
-  DPRINT("IopReadDmaCounter\n");
-  return HalReadDmaCounter(((PDMA_ADAPTER_INTERNAL)DmaAdapter)->HalAdapter);
-}
-
-
-NTSTATUS
-STDCALL
-IopGetScatterGatherList(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN PDEVICE_OBJECT DeviceObject,
-  IN PMDL Mdl,
-  IN PVOID CurrentVa,
-  IN ULONG Length,
-  IN PDRIVER_LIST_CONTROL ExecutionRoutine,
-  IN PVOID Context,
-  IN BOOLEAN WriteToDevice)
-{
-  DPRINT("IopGetScatterGatherList\n");
-  /* FIXME */
-  return STATUS_UNSUCCESSFUL;
-}
-
-
-VOID
-STDCALL
-IopPutScatterGatherList(
-  IN PDMA_ADAPTER DmaAdapter,
-  IN PSCATTER_GATHER_LIST ScatterGather,
-  IN BOOLEAN WriteToDevice)
-{
-  DPRINT("IopPutScatterGatherList\n");
-  /* FIXME */
-}
-
 /*
  * @implemented
  */
-PDMA_ADAPTER
-STDCALL
+PDMA_ADAPTER STDCALL
 IoGetDmaAdapter(
   IN PDEVICE_OBJECT PhysicalDeviceObject,
   IN PDEVICE_DESCRIPTION DeviceDescription,
   IN OUT PULONG NumberOfMapRegisters)
 {
-  static DMA_OPERATIONS HalDmaOperations = {
-    sizeof(DMA_OPERATIONS),
-    IopPutDmaAdapter,
-    IopAllocateCommonBuffer,
-    IopFreeCommonBuffer,
-    IopAllocateAdapterChannel,
-    IopFlushAdapterBuffers,
-    IopFreeAdapterChannel,
-    IopFreeMapRegisters,
-    IopMapTransfer,
-    IopGetDmaAlignment,
-    IopReadDmaCounter,
-    IopGetScatterGatherList,
-    IopPutScatterGatherList
-  };
   NTSTATUS Status;
   ULONG ResultLength;
   BUS_INTERFACE_STANDARD BusInterface;
   IO_STATUS_BLOCK IoStatusBlock;
   IO_STACK_LOCATION Stack;
   DEVICE_DESCRIPTION PrivateDeviceDescription;
-  PDMA_ADAPTER Result = NULL;
-  PDMA_ADAPTER_INTERNAL ResultInternal = NULL;
-  PADAPTER_OBJECT HalAdapter;
+  PDMA_ADAPTER Adapter = NULL;
 
   DPRINT("IoGetDmaAdapter called\n");
 
   /*
-   * Try to create DMA adapter through bus driver
+   * Try to create DMA adapter through bus driver.
    */
+
   if (PhysicalDeviceObject != NULL)
   {
-    if (DeviceDescription->InterfaceType == 0x0F /*PNPBus*/ ||
-        DeviceDescription->InterfaceType == (INTERFACE_TYPE)0xFFFFFFFF)
+    if (DeviceDescription->InterfaceType == PNPBus ||
+        DeviceDescription->InterfaceType == InterfaceTypeUndefined)
     {
       RtlCopyMemory(&PrivateDeviceDescription, DeviceDescription,
         sizeof(DEVICE_DESCRIPTION));
@@ -240,9 +51,7 @@ IoGetDmaAdapter(
          DevicePropertyLegacyBusType, sizeof(INTERFACE_TYPE),
          &PrivateDeviceDescription.InterfaceType, &ResultLength);
       if (!NT_SUCCESS(Status))
-      {
         PrivateDeviceDescription.InterfaceType = Internal;
-      }
       DeviceDescription = &PrivateDeviceDescription;
     }
 
@@ -255,32 +64,20 @@ IoGetDmaAdapter(
       IRP_MN_QUERY_INTERFACE, &Stack);
     if (NT_SUCCESS(Status))
     {
-      Result = BusInterface.GetDmaAdapter(BusInterface.Context,
+      Adapter = BusInterface.GetDmaAdapter(BusInterface.Context,
         DeviceDescription, NumberOfMapRegisters);
       BusInterface.InterfaceDereference(BusInterface.Context);
-      if (Result != NULL)
-        return Result;
+      if (Adapter != NULL)
+        return Adapter;
     }
   }
 
   /*
-   * Fallback to HAL
+   * Fallback to HAL.
    */
 
-  HalAdapter = HalGetAdapter(DeviceDescription, NumberOfMapRegisters);
-  if (HalAdapter == NULL)
-    return NULL;
-
-  ResultInternal = ExAllocatePool(PagedPool, sizeof(DMA_ADAPTER_INTERNAL));
-  if (ResultInternal == NULL)
-    return NULL;
-
-  ResultInternal->Version = DEVICE_DESCRIPTION_VERSION;
-  ResultInternal->Size = sizeof(DMA_ADAPTER);
-  ResultInternal->DmaOperations = &HalDmaOperations;
-  ResultInternal->HalAdapter = HalAdapter;
-
-  return (PDMA_ADAPTER)ResultInternal;
+  return HalGetDmaAdapter(PhysicalDeviceObject, DeviceDescription,
+                          NumberOfMapRegisters);
 }
 
 /* EOF */