NT4/private/ntos/dd/qic117/0x15a0c.c

111 lines
2.7 KiB
C
Raw Normal View History

2001-01-01 00:00:00 +01:00
/*****************************************************************************
*
* COPYRIGHT 1993 - COLORADO MEMORY SYSTEMS, INC.
* ALL RIGHTS RESERVED.
*
******************************************************************************
*
* FILE: \SE\DRIVER\Q117KDI\NT\SRC\0X15A0C.C
*
* FUNCTION: kdi_GetControllerBase
*
* PURPOSE:
*
* HISTORY:
* $Log: J:\se.vcs\driver\q117kdi\nt\src\0x15a0c.c $
*
* Rev 1.0 02 Dec 1993 15:07:06 KEVINKES
* Initial Revision.
*
*****************************************************************************/
#define FCT_ID 0x15A0C
#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*/
dUDWord kdi_GetControllerBase
(
/* INPUT PARAMETERS: */
INTERFACE_TYPE bus_type,
dUDWord bus_number,
PHYSICAL_ADDRESS io_address,
dUDWord number_of_bytes,
dBoolean in_io_space,
dBooleanPtr mapped_address
/* UPDATE PARAMETERS: */
/* OUTPUT PARAMETERS: */
)
/* COMMENTS: *****************************************************************
*
* Routine Description:
*
* This routine maps an IO address to system address space.
*
* Arguments:
*
* bus_type - what type of bus - eisa, mca, isa
* Iobus_number - which IO bus (for machines with multiple buses).
* io_address - base device address to be mapped.
* number_of_bytes - number of bytes for which address is valid.
* in_io_space - indicates an IO address.
* mapped_address - indicates whether the address was mapped.
* This only has meaning if the address returned
* is non-null.
*
* Return Value:
*
* Mapped address
*
* DEFINITIONS: *************************************************************/
{
/* DATA: ********************************************************************/
PHYSICAL_ADDRESS card_address;
dUDWord address_space = in_io_space;
dUDWord address;
/* CODE: ********************************************************************/
HalTranslateBusAddress(
bus_type,
bus_number,
io_address,
&address_space,
&card_address
);
/*
* Map the device base address into the virtual address space
* if the address is in memory space.
*/
if (!address_space) {
address = (dUDWord)MmMapIoSpace(
card_address,
number_of_bytes,
dFALSE
);
*mapped_address = (dBoolean)((address)?(dTRUE):(dFALSE));
} else {
address = (dUDWord)card_address.LowPart;
}
return address;
}