Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1989 Microsoft Corporation
Module Name:
eisa.h
Abstract:
This module contains the i386 EISA bus specific header file.
Author:
Shie-Lin Tzong (shielint) 6-June-1991
Revision History:
--*/
//
// SU module's version of the memory descriptor
//
typedef struct _MEMORY_LIST_ENTRY { ULONG BlockBase; ULONG BlockSize; } MEMORY_LIST_ENTRY, *PMEMORY_LIST_ENTRY;
//
// Memory configuration of eisa data block structure
//
typedef struct _EISA_MEMORY_TYPE { UCHAR ReadWrite: 1; UCHAR Cached : 1; UCHAR Reserved0 :1; UCHAR Type:2; UCHAR Shared:1; UCHAR Reserved1 :1; UCHAR MoreEntries : 1; } EISA_MEMORY_TYPE, *PEISA_MEMORY_TYPE;
typedef struct _BTEISA_MEMORY_CONFIGURATION { EISA_MEMORY_TYPE ConfigurationByte; UCHAR DataSize; USHORT PhysicalAddress_LSW; UCHAR PhysicalAddress_MSB; USHORT MemorySize; } BTEISA_MEMORY_CONFIGURATION, *PBTEISA_MEMORY_CONFIGURATION;
//
// Interrupt configurationn of eisa data block structure
//
typedef struct _EISA_IRQ_DESCRIPTOR { UCHAR Interrupt : 4; UCHAR Reserved :1; UCHAR LevelTriggered :1; UCHAR Shared : 1; UCHAR MoreEntries : 1; } EISA_IRQ_DESCRIPTOR, *PEISA_IRQ_DESCRIPTOR;
typedef struct _BTEISA_IRQ_CONFIGURATION { EISA_IRQ_DESCRIPTOR ConfigurationByte; UCHAR Reserved; } BTEISA_IRQ_CONFIGURATION, *PBTEISA_IRQ_CONFIGURATION;
//
// DMA description of eisa data block structure
//
typedef struct _DMA_CONFIG_BYTE0 { UCHAR Channel : 3; UCHAR Reserved : 3; UCHAR Shared :1; UCHAR MoreEntries :1; } DMA_CONFIG_BYTE0;
typedef struct _DMA_CONFIG_BYTE1 { UCHAR Reserved0 : 2; UCHAR TransferSize : 2; UCHAR Timing : 2; UCHAR Reserved1 : 2; } DMA_CONFIG_BYTE1;
typedef struct _BTEISA_DMA_CONFIGURATION { DMA_CONFIG_BYTE0 ConfigurationByte0; DMA_CONFIG_BYTE1 ConfigurationByte1; } BTEISA_DMA_CONFIGURATION, *PBTEISA_DMA_CONFIGURATION;
typedef struct _EISA_PORT_DESCRIPTOR { UCHAR NumberPorts : 5; UCHAR Reserved :1; UCHAR Shared :1; UCHAR MoreEntries : 1; } EISA_PORT_DESCRIPTOR, *TEISA_PORT_DESCRIPTOR;
typedef struct _BTEISA_PORT_CONFIGURATION { EISA_PORT_DESCRIPTOR Configuration; USHORT PortAddress; } BTEISA_PORT_CONFIGURATION, *PBTEISA_PORT_CONFIGURATION;
typedef struct _BTEISA_SLOT_INFORMATION { UCHAR ReturnCode; UCHAR ReturnFlags; UCHAR MajorRevision; UCHAR MinorRevision; USHORT Checksum; UCHAR NumberFunctions; UCHAR FunctionInformation; ULONG CompressedId; } BTEISA_SLOT_INFORMATION, *PBTEISA_SLOT_INFORMATION, far *FPBTEISA_SLOT_INFORMATION;
typedef struct _BTEISA_FUNCTION_INFORMATION { ULONG CompressedId; UCHAR IdSlotFlags1; UCHAR IdSlotFlags2; UCHAR MinorRevision; UCHAR MajorRevision; UCHAR Selections[26]; UCHAR FunctionFlags; UCHAR TypeString[80]; BTEISA_MEMORY_CONFIGURATION EisaMemory[9]; BTEISA_IRQ_CONFIGURATION EisaIrq[7]; BTEISA_DMA_CONFIGURATION EisaDma[4]; BTEISA_PORT_CONFIGURATION EisaPort[20]; UCHAR InitializationData[60]; } BTEISA_FUNCTION_INFORMATION, *PBTEISA_FUNCTION_INFORMATION, far *FPBTEISA_FUNCTION_INFORMATION;
//
// Masks for EISA function information
//
#define EISA_FUNCTION_ENABLED 0x80
#define EISA_FREE_FORM_DATA 0x40
#define EISA_HAS_PORT_INIT_ENTRY 0x20
#define EISA_HAS_PORT_RANGE 0x10
#define EISA_HAS_DMA_ENTRY 0x08
#define EISA_HAS_IRQ_ENTRY 0x04
#define EISA_HAS_MEMORY_ENTRY 0x02
#define EISA_HAS_TYPE_ENTRY 0x01
#define EISA_HAS_INFORMATION EISA_HAS_PORT_RANGE + \
EISA_HAS_DMA_ENTRY + \ EISA_HAS_IRQ_ENTRY + \ EISA_HAS_MEMORY_ENTRY + \ EISA_HAS_TYPE_ENTRY
//
// Masks for EISA memory configuration
//
#define EISA_MORE_ENTRIES 0x80
#define EISA_SYSTEM_MEMORY 0x00
#define EISA_MEMORY_TYPE_RAM 0x01
//
// Returned error code for EISA bios call
//
#define EISA_INVALID_SLOT 0x80
#define EISA_INVALID_FUNCTION 0x81
#define EISA_INVALID_CONFIGURATION 0x82
#define EISA_EMPTY_SLOT 0x83
#define EISA_INVALID_BIOS_CALL 0x86
//
// Misc. definitions
//
#define _16MEGB ((ULONG)16 * 1024 * 1024)
#define _64MEGB ((ULONG)64 * 1024 * 1024)
BOOLEAN FindFunctionInformation ( IN UCHAR SlotFlags, IN UCHAR FunctionFlags, OUT PBTEISA_FUNCTION_INFORMATION Buffer, IN BOOLEAN FromBeginning );
USHORT CountMemoryBlocks ( VOID );
ULONG EisaConstructMemoryDescriptors ( VOID );
UCHAR BtGetEisaSlotInformation ( PBTEISA_SLOT_INFORMATION SlotInformation, UCHAR Slot );
UCHAR BtGetEisaFunctionInformation ( PBTEISA_FUNCTION_INFORMATION FunctionInformation, UCHAR Slot, UCHAR Function );
BOOLEAN BtIsEisaSystem ( VOID );
//
// External References
//
extern MEMORY_LIST_ENTRY _far *MemoryDescriptorList;
|