249 lines
7 KiB
C
249 lines
7 KiB
C
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
|
||
|
|
||
|
Copyright (c) 1991 Microsoft Corporation
|
||
|
|
||
|
Module Name:
|
||
|
|
||
|
pbiosp.h
|
||
|
|
||
|
Abstract:
|
||
|
|
||
|
PnP BIOS/ISA configuration data definitions
|
||
|
|
||
|
Author:
|
||
|
|
||
|
Shie-Lin Tzong (shielint) April 12, 1995
|
||
|
|
||
|
Revision History:
|
||
|
|
||
|
--*/
|
||
|
|
||
|
//#include "nthal.h"
|
||
|
//#include "hal.h"
|
||
|
|
||
|
//
|
||
|
// Constants
|
||
|
//
|
||
|
|
||
|
#define SMALL_RESOURCE_TAG (UCHAR)(0x00)
|
||
|
#define LARGE_RESOURCE_TAG (UCHAR)(0x80)
|
||
|
#define SMALL_TAG_MASK 0xf8
|
||
|
#define SMALL_TAG_SIZE_MASK 7
|
||
|
|
||
|
//
|
||
|
// Small Resouce Tags with length bits stripped off
|
||
|
//
|
||
|
|
||
|
#define TAG_VERSION 0x08
|
||
|
#define TAG_LOGICAL_ID 0x10
|
||
|
#define TAG_COMPATIBLE_ID 0x18
|
||
|
#define TAG_IRQ 0x20
|
||
|
#define TAG_DMA 0x28
|
||
|
#define TAG_START_DEPEND 0x30
|
||
|
#define TAG_END_DEPEND 0x38
|
||
|
#define TAG_IO 0x40
|
||
|
#define TAG_IO_FIXED 0x48
|
||
|
#define TAG_VENDOR 0x70
|
||
|
#define TAG_END 0x78
|
||
|
|
||
|
//
|
||
|
// Large Resouce Tags
|
||
|
//
|
||
|
|
||
|
#define TAG_MEMORY 0x81
|
||
|
#define TAG_ANSI_ID 0x82
|
||
|
#define TAG_UNICODE_ID 0x83
|
||
|
#define TAG_LVENDOR 0x84
|
||
|
#define TAG_MEMORY32 0x85
|
||
|
#define TAG_MEMORY32_FIXED 0x86
|
||
|
|
||
|
//
|
||
|
// Complete TAG if applicable.
|
||
|
//
|
||
|
|
||
|
#define TAG_COMPLETE_COMPATIBLE_ID 0x1C
|
||
|
#define TAG_COMPLETE_END 0x79
|
||
|
|
||
|
#include "pshpack1.h"
|
||
|
|
||
|
//
|
||
|
// PNP ISA Port descriptor definition
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_PORT_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 01000111B, small item name = 08, length = 7
|
||
|
UCHAR Information; // bit [0] = 1 device decodes full 16 bit addr
|
||
|
// = 0 device decodes ISA addr bits[9-0]
|
||
|
USHORT MinimumAddress;
|
||
|
USHORT MaximumAddress;
|
||
|
UCHAR Alignment; // Increment in 1 byte blocks
|
||
|
UCHAR Length; // # contiguous Port requested
|
||
|
} PNP_PORT_DESCRIPTOR, *PPNP_PORT_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// PNP ISA fixed Port descriptor definition
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_FIXED_PORT_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 01001011B, small item name = 09, length = 3
|
||
|
USHORT MinimumAddress;
|
||
|
UCHAR Length; // # contiguous Port requested
|
||
|
} PNP_FIXED_PORT_DESCRIPTOR, *PPNP_FIXED_PORT_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// PNP ISA IRQ descriptor definition
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_IRQ_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 0010001XB small item name = 4 length = 2/3
|
||
|
USHORT IrqMask; // bit 0 is irq 0
|
||
|
UCHAR Information; // Optional
|
||
|
} PNP_IRQ_DESCRIPTOR, *PPNP_IRQ_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// Masks for PNP_IRQ_DESCRIPTOR Information byte
|
||
|
//
|
||
|
|
||
|
#define PNP_IRQ_LEVEL_MASK 0xC
|
||
|
#define PNP_IRQ_EDGE_MASK 0x3
|
||
|
|
||
|
//
|
||
|
// PNP ISA DMA descriptor definition
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_DMA_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 00101010B, small item name = 05, length = 2
|
||
|
UCHAR ChannelMask; // bit 0 is channel 0
|
||
|
UCHAR Flags; // see spec
|
||
|
} PNP_DMA_DESCRIPTOR, *PPNP_DMA_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// PNP ISA MEMORY descriptor
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_MEMORY_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 10000001B, Large item name = 1
|
||
|
USHORT Length; // Length of the descriptor = 9
|
||
|
UCHAR Information; // See def below
|
||
|
USHORT MinimumAddress; // address bit [8-23]
|
||
|
USHORT MaximumAddress; // address bit [8-23]
|
||
|
USHORT Alignment; // 0x0000 = 64KB
|
||
|
USHORT MemorySize; // In 256 byte blocks
|
||
|
} PNP_MEMORY_DESCRIPTOR, *PPNP_MEMORY_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// PNP ISA MEMORY32 descriptor
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_MEMORY32_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 10000101B, Large item name = 5
|
||
|
USHORT Length; // Length of the descriptor = 17
|
||
|
UCHAR Information; // See def below
|
||
|
ULONG MinimumAddress; // 32 bit addr
|
||
|
ULONG MaximumAddress; // 32 bit addr
|
||
|
ULONG Alignment; // 32 bit alignment
|
||
|
ULONG MemorySize; // 32 bit length
|
||
|
} PNP_MEMORY32_DESCRIPTOR, *PPNP_MEMORY32_DESCRIPTOR;
|
||
|
|
||
|
//
|
||
|
// PNP ISA FIXED MEMORY32 descriptor
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_FIXED_MEMORY32_DESCRIPTOR_ {
|
||
|
UCHAR Tag; // 10000110B, Large item name = 6
|
||
|
USHORT Length; // Length of the descriptor = 9
|
||
|
UCHAR Information; // See def below
|
||
|
ULONG BaseAddress; // 32 bit addr
|
||
|
ULONG MemorySize; // 32 bit length
|
||
|
} PNP_FIXED_MEMORY32_DESCRIPTOR, *PPNP_FIXED_MEMORY32_DESCRIPTOR;
|
||
|
|
||
|
#define PNP_MEMORY_ROM_MASK 0x40
|
||
|
#define PNP_MEMORY_SHADOWABLE_MASK 0x20
|
||
|
#define PNP_MEMORY_CONTROL_MASK 0x18
|
||
|
#define PNP_MEMORY_CONTROL_8BIT 00
|
||
|
#define PNP_MEMORY_CONTROL_16BIT 01
|
||
|
#define PNP_MEMORY_CONTROL_8AND16BIT 02
|
||
|
#define PNP_MEMORY_CONTROL_32BIT 03
|
||
|
#define PNP_MEMORY_SUPPORT_TYPE_MASK 04
|
||
|
#define PNP_MEMORY_CACHE_SUPPORT_MASK 02
|
||
|
#define PNP_MEMORY_WRITE_STATUS_MASK 01
|
||
|
|
||
|
#define UNKNOWN_DOCKING_IDENTIFIER 0xffffffff
|
||
|
#define UNABLE_TO_DETERMINE_DOCK_CAPABILITIES 0x89
|
||
|
#define FUNCTION_NOT_SUPPORTED 0x82
|
||
|
#define SYSTEM_NOT_DOCKED 0x87
|
||
|
|
||
|
//
|
||
|
// Pnp BIOS device node structure
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_BIOS_DEVICE_NODE {
|
||
|
USHORT Size;
|
||
|
UCHAR Node;
|
||
|
ULONG ProductId;
|
||
|
UCHAR DeviceType[3];
|
||
|
USHORT DeviceAttributes;
|
||
|
// followed by AllocatedResourceBlock, PossibleResourceBlock
|
||
|
// and CompatibleDeviceId
|
||
|
} PNP_BIOS_DEVICE_NODE, *PPNP_BIOS_DEVICE_NODE;
|
||
|
|
||
|
//
|
||
|
// DeviceType definition
|
||
|
//
|
||
|
|
||
|
#define BASE_TYPE_DOCKING_STATION 0xA
|
||
|
|
||
|
//
|
||
|
// Device attributes definitions
|
||
|
//
|
||
|
|
||
|
#define DEVICE_DISABLEABLE 0x0001
|
||
|
#define DEVICE_CONFIGURABLE 0x0002
|
||
|
#define DEVICE_DOCKING 0x0020
|
||
|
#define DEVICE_REMOVABLE 0x0040
|
||
|
|
||
|
#define DEVICE_CONFIGURABILITY(x) ((x)&0x180)
|
||
|
#define DEVICE_CONFIG_STATIC_ONLY 0x0000
|
||
|
#define DEVICE_CONFIG_STATIC_DYNAMIC 0x0080
|
||
|
#define DEVICE_CONFIG_DYNAMIC_ONLY 0x0100
|
||
|
|
||
|
//
|
||
|
// Pnp BIOS Installation check
|
||
|
//
|
||
|
|
||
|
typedef struct _PNP_BIOS_INSTALLATION_CHECK {
|
||
|
UCHAR Signature[4]; // $PnP (ascii)
|
||
|
UCHAR Revision;
|
||
|
UCHAR Length;
|
||
|
USHORT ControlField;
|
||
|
UCHAR Checksum;
|
||
|
ULONG EventFlagAddress; // Physical address
|
||
|
USHORT RealModeEntryOffset;
|
||
|
USHORT RealModeEntrySegment;
|
||
|
USHORT ProtectedModeEntryOffset;
|
||
|
ULONG ProtectedModeCodeBaseAddress;
|
||
|
ULONG OemDeviceId;
|
||
|
USHORT RealModeDataBaseAddress;
|
||
|
ULONG ProtectedModeDataBaseAddress;
|
||
|
} PNP_BIOS_INSTALLATION_CHECK, *PPNP_BIOS_INSTALLATION_CHECK;
|
||
|
|
||
|
#include "poppack.h"
|
||
|
|
||
|
//
|
||
|
// Pnp BIOS ControlField masks
|
||
|
//
|
||
|
|
||
|
#define PNP_BIOS_CONTROL_MASK 0x3
|
||
|
#define PNP_BIOS_EVENT_NOT_SUPPORTED 0
|
||
|
#define PNP_BIOS_EVENT_POLLING 1
|
||
|
#define PNP_BIOS_EVENT_ASYNC 2
|
||
|
|
||
|
//
|
||
|
// Pnp Bios event
|
||
|
//
|
||
|
|
||
|
#define ABOUT_TO_CHANGE_CONFIG 1
|
||
|
#define DOCK_CHANGED 2
|
||
|
#define SYSTEM_DEVICE_CHANGED 3
|
||
|
#define CONFIG_CHANGE_FAILED 4
|