91 lines
1.5 KiB
C
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_
|