105 lines
2.7 KiB
C
105 lines
2.7 KiB
C
//#pragma comment(exestr, "$Header: /usr4/winnt/SOURCES/halpcims/src/hal/halsnipm/mips/RCS/snipbus.h,v 1.2 1995/11/02 11:04:33 flo Exp $")
|
|
/*+++
|
|
|
|
Copyright (c) 1993-1994 Siemens Nixdorf Informationssysteme AG
|
|
|
|
Module Name:
|
|
|
|
PCIdef.h
|
|
|
|
Abstract:
|
|
|
|
Hal specific PCI bus structures */
|
|
|
|
|
|
#define PCI_MAX_LOCAL_DEVICE 32
|
|
#define PCI_MAX_BUS_NUMBER 250
|
|
#define PCI_MAX_IO_ADDRESS 0x1FFFFFFF
|
|
#define PCI_MAX_MEMORY_ADDRESS 0x1FFFFFFF
|
|
#define PCI_MAX_SPARSE_MEMORY_ADDRESS PCI_MAX_MEMORY_ADDRESS
|
|
#define PCI_MIN_DENSE_MEMORY_ADDRESS PCI_MEMORY_PHYSICAL_BASE
|
|
#define PCI_MAX_DENSE_MEMORY_ADDRESS PCI_MAX_MEMORY_ADDRESS
|
|
#define PCI_MAX_INTERRUPT_VECTOR 0x100
|
|
|
|
#define PCI_CONFIG_TYPE(PciData) ((PciData)->HeaderType & ~PCI_MULTIFUNCTION)
|
|
|
|
//
|
|
// Define PciConfigAddr register structure
|
|
//
|
|
typedef struct _PCI_CONFIG_ADDR {
|
|
ULONG Type : 2;
|
|
ULONG RegisterNumber : 6;
|
|
ULONG FunctionNumber : 3;
|
|
ULONG DeviceNumber : 5;
|
|
ULONG BusNumber : 8;
|
|
ULONG Reserved : 7;
|
|
ULONG Enable : 1;
|
|
} PCI_CONFIG_ADDR, *PPCI_CONFIG_ADDR;
|
|
|
|
//
|
|
// Define PCI configuration cycle types.
|
|
//
|
|
typedef enum _PCI_CONFIGURATION_TYPES {
|
|
PciConfigTypeInvalid = -1,
|
|
PciConfigType0 = 0,
|
|
PciConfigType1 = 1
|
|
} PCI_CONFIGURATION_TYPES, *PPCI_CONFIGURATION_TYPES;
|
|
|
|
//
|
|
// Define PCI cycle/command types.
|
|
//
|
|
|
|
typedef enum _PCI_COMMAND_TYPES{
|
|
PciCommandInterruptAcknowledge = 0x0,
|
|
PciCommandSpecialCycle = 0x1,
|
|
PciCommandIoRead = 0x2,
|
|
PciCommandIoWrite = 0x3,
|
|
PciCommandMemoryRead = 0x6,
|
|
PciCommandMemoryWrite = 0x7,
|
|
PciCommandConfigurationRead = 0xa,
|
|
PciCommandConfigurationWrite = 0xb,
|
|
PciCommandMemoryReadMultiple = 0xc,
|
|
PciCommandDualAddressCycle = 0xd,
|
|
PciCommandMemoryReadLine = 0xe,
|
|
PciCommandMemoryWriteAndInvalidate = 0xf,
|
|
MaximumPciCommand
|
|
} PCI_COMMAND_TYPES, *PPCI_COMMAND_TYPES;
|
|
|
|
|
|
//
|
|
// PCI platform-specific functions
|
|
//
|
|
|
|
VOID
|
|
HalpInitializePCIBus (
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
HalpAdjustResourceListUpperLimits (
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList,
|
|
IN LARGE_INTEGER MaximumPortAddress,
|
|
IN LARGE_INTEGER MaximumMemoryAddress,
|
|
IN ULONG MaximumInterruptVector,
|
|
IN ULONG MaximumDmaChannel
|
|
);
|
|
|
|
NTSTATUS
|
|
HalpAdjustPCIResourceList (
|
|
IN ULONG BusNumber,
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList
|
|
);
|
|
|
|
NTSTATUS
|
|
HalpAdjustEisaResourceList (
|
|
IN ULONG BusNumber,
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList
|
|
);
|
|
|
|
NTSTATUS
|
|
HalpAdjustIsaResourceList (
|
|
IN ULONG BusNumber,
|
|
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *pResourceList
|
|
);
|
|
|