/***************************************************************************** * * COPYRIGHT 1993 - COLORADO MEMORY SYSTEMS, INC. * ALL RIGHTS RESERVED. * ****************************************************************************** * * FILE: \SE\DRIVER\Q117KDI\NT\SRC\0X15A19.C * * FUNCTION: kdi_ProgramDMA * * PURPOSE: * * HISTORY: * $Log: J:\se.vcs\driver\q117kdi\nt\src\0x15a19.c $ * * Rev 1.1 18 Jan 1994 16:30:38 KEVINKES * Fixed compile errors and added debug changes. * * Rev 1.0 02 Dec 1993 16:05:26 KEVINKES * Initial Revision. * *****************************************************************************/ #define FCT_ID 0x15A19 #include "include\public\adi_api.h" #include "include\public\frb_api.h" #include "q117kdi\include\kdiwhio.h" #include "q117kdi\include\kdiwpriv.h" #include "include\private\kdi_pub.h" /*endinclude*/ dVoid kdi_ProgramDMA ( /* INPUT PARAMETERS: */ dVoidPtr context, dBoolean write_operation, dVoidPtr phy_data_ptr, dUDWord bytes_transferred_so_far, /* UPDATE PARAMETERS: */ dUDWordPtr total_bytes_of_transfer_ptr /* OUTPUT PARAMETERS: */ ) /* COMMENTS: ***************************************************************** * * DEFINITIONS: *************************************************************/ { /* DATA: ********************************************************************/ PHYSICAL_ADDRESS val; KdiContextPtr kdi_context = (KdiContextPtr)context; /* CODE: ********************************************************************/ kdi_LockUnlockDMA(kdi_context, dTRUE); // // Map the transfer through the DMA hardware. // KeFlushIoBuffers( phy_data_ptr, !write_operation, dTRUE ); /* DbgAddEntry(0x1234567a); DbgAddEntry((dUDWord)kdi_context->adapter_object); DbgAddEntry((dUDWord)phy_data_ptr); DbgAddEntry((dUDWord)kdi_context->map_register_base); DbgAddEntry((dUDWord) MmGetMdlVirtualAddress(phy_data_ptr) + bytes_transferred_so_far ); DbgAddEntry(*total_bytes_of_transfer_ptr); DbgAddEntry(write_operation); */ val = IoMapTransfer( kdi_context->adapter_object, phy_data_ptr, kdi_context->map_register_base, (dVoidPtr)( (dUDWord) MmGetMdlVirtualAddress((PMDL)phy_data_ptr) + bytes_transferred_so_far ), total_bytes_of_transfer_ptr, write_operation ); /* DbgAddEntry(val.HighPart); DbgAddEntry(val.LowPart); DbgAddEntry(*total_bytes_of_transfer_ptr); */ }