3.2 Expansion Header for Plug and Play

Offset

Length

Value

Description

0h

4 BYTES

$PnP
(ASCII)

Signature

Generic

04h

BYTE

Varies

Structure Revision

01h

05h

BYTE

Varies

Length (in 16 byte increments)

Generic

06h

WORD

Varies

Offset of next Header (0000h if none)

Generic

08h

BYTE

00h

Reserved

Generic

09h

BYTE

Varies

Checksum

Generic

0Ah

DWORD

Varies

Device Identifier

PnP Specific

0Eh

WORD

Varies

Pointer to Manufacturer String (Optional)

PnP Specific

10h

WORD

Varies

Pointer to Product Name String (Optional)

PnP Specific

12h

3 BYTE

Varies

Device Type Code

PnP Specific

15h

BYTE

Varies

Device Indicators

PnP Specific

16h

WORD

Varies

Boot Connection Vector - Real/Protected mode (0000h if none)

PnP Specific

18h

WORD

Varies

Disconnect Vector - Real/Protected mode (0000h if none)

PnP Specific

1Ah

WORD

Varies

Bootstrap Entry Point - Real/Protected mode (0000h if none)

PnP Specific

1Ch

WORD

0000h

Reserved

PnP Specific

1Eh

WORD

Varies

Static Resource Information Vector- Real/Protected mode (0000h if none)

PnP Specific


Signature - All Expansion Headers will contain a unique expansion header identifier. The Plug and Play expansion header's identifier is the ASCII string "$PnP" or hex 24 50 6E 50h (Byte 0 = 24h ... Byte 3 = 50h).

Structure Revision - This is an ordinal value that indicates the revision number of this structure only and does not imply a level of compliance with the Plug and Play BIOS version.

Length - Length of the entire Expansion Header expressed in sixteen byte blocks. The length count starts at the Signature field.

Offset of Next Header - This location contains a link to the next expansion ROM header in this Option ROM. If there are no other expansion ROM headers, then this field will have a value of 0h. The offset specified in this field is the offset from the start of the option ROM header.

Reserved - Reserved for Expansion

Checksum - Each Expansion Header is checksummed individually. This allows the software which wishes to make use of an expansion header (in this case, the system BIOS) the ability to determine if the expansion header is valid. The method for validating the checksum is to add up all byte values in the Expansion Header, including the Checksum field, into an 8-bit value. A resulting sum of zero indicates a valid checksum operation.

Device Identifier - This field contains the Plug and Play Device ID.

Pointer to Manufacturer String (Optional) - This location contains an offset relative to the base of the Option ROM which points to an ASCIIZ representation of the board manufacturer's name. This field is optional and if the pointer is 0 (Null) then the Manufacturer String is not supported.

Pointer to Product Name String (Optional) - This location contains an offset relative to the base of the Option ROM which points to an ASCIIZ representation of the product name. This field is optional and if the pointer is 0 (Null) then the Product Name String is not supported.

Device Type Code - This field contains general device type information that will assist the System BIOS in prioritizing the boot devices.

The Device Type code is broken down into three byte fields. The byte fields consist of a Base-Type code that indicates the general device type. The second byte is the device Sub-Type and its definition is dependent upon the Base-Type code. The third byte defines the specific device programming interface, IF.-Type, based on the Base-Type and Sub-Type.

Refer to Appendix B for a description of Device Type Codes.

Device Indicators - This field contains indicator bits that identify the device as being capable of being one of the three identified boot devices: Input, Output, or Initial Program Load (IPL).

Bit

Description

7

A 1 indicates that this ROM supports the Device Driver Initialization Model

6

A 1 indicates that this ROM may be Shadowed in RAM

5

A 1 indicates that this ROM is Read Cacheable

4

A 1 indicates that this option ROM is only required if this device is selected as a boot device.

3

Reserved (0)

2

A 1 in this position indicates that this device is an Initial Program Load (IPL) device.

1

A 1 in this position indicates that this device is an Input device.

0

A 1 in this position indicates that this device is a Display device.


Boot Connection Vector (Real/Protected mode) - This location contains an offset from the start of the option ROM header to a routine that will cause the Option ROM to hook one or more of the primary input, primary display, or Initial Program Load (IPL) device vectors (INT 9h, INT 10h, or INT 13h), depending upon the parameters passed during the call.

When the system BIOS has determined that the device controlled by this Option ROM will be one of the boot devices (the Primary Input, Primary Display, or IPL device), the System ROM will execute a FAR CALL to the location pointed to by the Boot Connection Vector. The system ROM will pass the following parameters to the options ROM's Boot Connection Vector:

Reg On Entry

Description

AX

Provides an indication as to which vectors should be hooked by specifying the type of boot device this device has been selected as.

Bit 7..3 Reserved(0)

Bit 2 1=Connect as IPL (INT 13h)

Bit 1 1=Connect as primary Video (INT 10h)

Bit 0 1=Connect as primary Input (INT 09h)

ES:DI

Pointer to System BIOS PnP Installation Check Structure (See section 4.4)

BX

CSN for this card, ISA PnP devices only. If not an ISA PnP device then this parameter will be set to FFFFh.

DX

Read Data Port, (ISA PnP devices only. If no ISA PnP devices then this parameter will be set to FFFFh.


Disconnect Vector (Real/Protected mode) - This vector is used to perform a cleanup from an unsuccessful boot attempt on an IPL device. The system ROM will execute a FAR CALL to this location on IPL failure.

Bootstrap Entry Vector (Real/Protected mode) - This vector is used primarily for RPL (Remote Program Load) support. To RPL (bootstrap), the System ROM will execute a FAR CALL to this location. The System ROM will call the Real/Protected Mode Bootstrap Entry Vector instead of INT 19h if:

a)

The device indicates that it may function as an IPL device,

b)

The device indicates that it does not support the INT 13h Block Mode interface,

c)

The device has a non-null Bootstrap Entry Vector,

d)

The Real/Protected Mode Boot Connection Vector is null.


The method for supporting RPL is beyond the scope of this specification. A separate specification should define the explicit requirements for supporting RPL devices.

Reserved - Reserved for Expansion

Static Resource Information Vector - This vector may be used by non-Plug and Play devices to report static resource configuration information. Plug and Play devices should not support the Static Resource Information Vector for reporting their configuration information. This vector should be callable both before and/or after the option ROM has been initialized. The call interface for the Static Resource Information Vector is as follows:

Entry:
ES:DI

Pointer to memory buffer to hold the device's static resource configuration information. The buffer should be a minimum of 1024 bytes. This information should follow the System Device Node data structure, except that the Device node number field should always be set to 0, and the information returned should only specify the currently allocated resources (Allocated resource configuration descriptor block) and not the block of possible resources (Possible resource configuration descriptor block). The Possible resource configuration descriptor block should only contain the END_TAG resource descriptor to indicate that there are no alternative resource configuration settings for this device because the resource configuration for this device is static. Refer to the Plug and Play ISA Specification under the section labeled Plug and Play Resources for more information about the resource descriptors. This data structure has the following format:


Field

Size

Size of the device node

WORD

Device node number/handle

BYTE

Device product identifier

DWORD

Device type code

3 BYTES

Device node attribute bit-field

WORD

Allocated resource configuration descriptor block

VARIABLE

Possible resource configuration descriptor block - should only specify the END_TAG resource descriptor

2 BYTES

Compatible device identifiers

VARIABLE


Refer to section 4.2 for a complete description of the elements that make up the System Device Node data structure.

For example, an existing, non-Plug and Play SCSI card vendor could choose to rev the SCSI board's Option ROM to support the Plug and Play Expansion Header. While this card wouldn't gain any of the configuration benefits provided to full hardware Plug and Play cards, it would allow Plug and Play software to determine the devices configuration and thus ensure that Plug and Play cards will map around the static SCSI board's allocated resources.