148 lines
3.3 KiB
C
148 lines
3.3 KiB
C
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
|||
|
|
|||
|
Copyright (c) 1991 Microsoft Corporation
|
|||
|
|
|||
|
Module Name:
|
|||
|
|
|||
|
ixfwhal.h
|
|||
|
|
|||
|
Abstract:
|
|||
|
|
|||
|
This header file defines the private Hardware Architecture Layer (HAL)
|
|||
|
Intel x86 specific interfaces, defines and structures.
|
|||
|
|
|||
|
Author:
|
|||
|
|
|||
|
Jeff Havens (jhavens) 20-Jun-91
|
|||
|
|
|||
|
|
|||
|
Revision History:
|
|||
|
|
|||
|
--*/
|
|||
|
|
|||
|
#ifndef _IXHALP_
|
|||
|
#define _IXHALP_
|
|||
|
|
|||
|
|
|||
|
//
|
|||
|
// The MAXIMUM_MAP_BUFFER_SIZE defines the maximum map buffers which the system
|
|||
|
// will allocate for devices which require phyically contigous buffers.
|
|||
|
//
|
|||
|
|
|||
|
#define MAXIMUM_MAP_BUFFER_SIZE 0x1000000
|
|||
|
|
|||
|
//
|
|||
|
// Define the initial buffer allocation size for a map buffers.
|
|||
|
//
|
|||
|
|
|||
|
#define INITIAL_MAP_BUFFER_SIZE 0x20000
|
|||
|
|
|||
|
//
|
|||
|
// Define the incremental buffer allocation for a map buffers.
|
|||
|
//
|
|||
|
|
|||
|
#define INCREMENT_MAP_BUFFER_SIZE 0x10000
|
|||
|
|
|||
|
//
|
|||
|
// Define the maximum number of map registers that can be requested at one time
|
|||
|
// if actual map registers are required for the transfer.
|
|||
|
//
|
|||
|
|
|||
|
#define MAXIMUM_ISA_MAP_REGISTER 16
|
|||
|
|
|||
|
//
|
|||
|
// Define the maximum physical address which can be handled by an Isa card.
|
|||
|
//
|
|||
|
|
|||
|
#define MAXIMUM_PHYSICAL_ADDRESS 0x01000000
|
|||
|
|
|||
|
//
|
|||
|
// Define adapter object structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _ADAPTER_OBJECT {
|
|||
|
CSHORT Type;
|
|||
|
CSHORT Size;
|
|||
|
ULONG MapRegistersPerChannel;
|
|||
|
PVOID AdapterBaseVa;
|
|||
|
PVOID MapRegisterBase;
|
|||
|
ULONG NumberOfMapRegisters;
|
|||
|
UCHAR ChannelNumber;
|
|||
|
UCHAR AdapterNumber;
|
|||
|
UCHAR AdapterMode;
|
|||
|
UCHAR ExtendedModeFlags;
|
|||
|
USHORT DmaPortAddress;
|
|||
|
BOOLEAN NeedsMapRegisters;
|
|||
|
BOOLEAN IsaDevice;
|
|||
|
BOOLEAN MasterDevice;
|
|||
|
BOOLEAN Width16Bits;
|
|||
|
BOOLEAN AdapterInUse;
|
|||
|
PUCHAR PagePort;
|
|||
|
} ADAPTER_OBJECT;
|
|||
|
|
|||
|
//
|
|||
|
// Define map register translation entry structure.
|
|||
|
//
|
|||
|
|
|||
|
typedef struct _TRANSLATION_ENTRY {
|
|||
|
PVOID VirtualAddress;
|
|||
|
ULONG PhysicalAddress;
|
|||
|
ULONG Index;
|
|||
|
} TRANSLATION_ENTRY, *PTRANSLATION_ENTRY;
|
|||
|
|
|||
|
//
|
|||
|
// Define External data structures.
|
|||
|
//
|
|||
|
|
|||
|
//
|
|||
|
// Some devices require a phyicially contiguous data buffers for DMA transfers.
|
|||
|
// Map registers are used give the appearance that all data buffers are
|
|||
|
// contiguous. In order to pool all of the map registers a master
|
|||
|
// adapter object is used. This object is allocated and saved internal to this
|
|||
|
// file. It contains a bit map for allocation of the registers and a queue
|
|||
|
// for requests which are waiting for more map registers. This object is
|
|||
|
// allocated during the first request to allocate an adapter which requires
|
|||
|
// map registers.
|
|||
|
//
|
|||
|
// In this system, the map registers are translation entries which point to
|
|||
|
// map buffers. Map buffers are physically contiguous and have physical memory
|
|||
|
// addresses less than 0x01000000. All of the map registers are allocated
|
|||
|
// initialially; however, the map buffers are allocated base in the number of
|
|||
|
// adapters which are allocated.
|
|||
|
//
|
|||
|
// If the master adapter is NULL in the adapter object then device does not
|
|||
|
// require any map registers.
|
|||
|
//
|
|||
|
|
|||
|
extern PADAPTER_OBJECT MasterAdapterObject;
|
|||
|
|
|||
|
extern POBJECT_TYPE IoAdapterObjectType;
|
|||
|
|
|||
|
extern BOOLEAN LessThan16Mb;
|
|||
|
|
|||
|
//
|
|||
|
// Define function prototypes.
|
|||
|
//
|
|||
|
|
|||
|
BOOLEAN
|
|||
|
HalpGrowMapBuffers(
|
|||
|
PADAPTER_OBJECT AdapterObject,
|
|||
|
ULONG Amount
|
|||
|
);
|
|||
|
|
|||
|
PADAPTER_OBJECT
|
|||
|
IopAllocateAdapter(
|
|||
|
IN ULONG MapRegistersPerChannel,
|
|||
|
IN PVOID AdapterBaseVa,
|
|||
|
IN PVOID MapRegisterBase
|
|||
|
);
|
|||
|
|
|||
|
VOID
|
|||
|
HalpInitializeDisplay(
|
|||
|
IN PUSHORT VideoBufferAddress
|
|||
|
);
|
|||
|
|
|||
|
#endif // _IXHALP_
|
|||
|
|
|||
|
|