windows-nt/Source/XPSP1/NT/base/boot/detect/i386/pcibios.h
2020-09-26 16:20:57 +08:00

91 lines
1.5 KiB
C

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
pcibios.h
Abstract:
This module contains support routines for the Pci Irq Routing.
Author:
Santosh Jodh (santoshj) 15-Sept-1998
Environment:
Kernel mode
--*/
#ifndef _PCIBIOS_
#define _PCIBIOS_
//
// Maximum number of interrupt pins possible on a single
// Pci device (CS offset 3D).
//
#define NUM_IRQ_PINS 4
//
// Structure definitions for Pci Irq Routing.
//
#pragma pack(1)
//
// Structure of information for one link.
//
typedef struct _PIN_INFO {
UCHAR Link;
USHORT InterruptMap;
} PIN_INFO, *PPIN_INFO;
//
// Structure of information for one slot entry.
//
typedef struct _SLOT_INFO {
UCHAR BusNumber;
UCHAR DeviceNumber;
PIN_INFO PinInfo[NUM_IRQ_PINS];
UCHAR SlotNumber;
UCHAR Reserved[1];
} SLOT_INFO, *PSLOT_INFO, far *FPSLOT_INFO;
//
// Structure of the $PIR table according to MS specification.
//
typedef struct _PCI_IRQ_ROUTING_TABLE {
ULONG Signature;
USHORT Version;
USHORT TableSize;
UCHAR RouterBus;
UCHAR RouterDevFunc;
USHORT ExclusiveIRQs;
ULONG CompatibleRouter;
ULONG MiniportData;
UCHAR Reserved0[11];
UCHAR Checksum;
} PCI_IRQ_ROUTING_TABLE, *PPCI_IRQ_ROUTING_TABLE, far *FPPCI_IRQ_ROUTING_TABLE;
//#pragma pack(pop)
//
// Calls PCI BIOS to get the IRQ Routing table.
//
FPPCI_IRQ_ROUTING_TABLE
HwGetRealModeIrqRoutingTable(
VOID
);
#endif // _PCIBIOS_