4.2 System Device Node Definition

The System Device Node is the structure that represents a single embedded systemboard device. The elements that make up this structure provide information that describe the device and the system resources that have been allocated to the device. This includes reporting the system resources that have typically been reserved for standard PC compatible systemboard devices, such as I/O port addresses from 00h to FFh. The information for alternative or possible resource configuration settings can be provided in the System Device Node; however, it is not required. The various possible resource settings can also be provided in a configuration file or an image of the configuration file, in ROM, supplied by the system vendor. This configuration file would contain the necessary configuration information not contained in the System Device Node, and can provide more information to the user about the specific devices. If the configuration information is contained in both the System Device Node and in a configuration file, then the system resources possibilities for the device that are specified in the configuration file should take precedence over the information contained in the system device node. The following data structure defines the required elements for the base System Device Node. Please refer to the Plug and Play ISA Specification version 1.0A (Section 4.6) for the maximum resources that a device node can use.

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

VARIABLE

Compatible device identifiers

VARIABLE


Size of Device Node:

This field contains the size, in bytes, of the device node.

Device node number:

The node number, or handle, is a unique identifier value assigned to the node by the system BIOS and is used to access the node information through the BIOS interface.

Device product identifier:

This field is an EISA ID, which is a seven character ASCII representation of the product identifier compressed into a 32-bit identifier. The seven character ID consists of a three character manufacturer code, a three character hexadecimal product identifier, and a one character hexadecimal revision number. For example, the third revision of the ABC device might have an uncompressed ID such as ABC1003.

The manufacturer code is a 3 uppercase character code that is compressed into 3 5-bit values as follows:

  1. Find hex ASCII value for each letter
  2. Subtract 40h from each ASCII value
  3. Retain 5 least-significant bits for each letter by discarding upper 3-bits because they are always 0.
  4. Compressed code = Concatenate 0 and the 3 5-bit values for the character.
The format of the compressed product identifier is as follows:

Byte

Description

0

Bit 7: Reserved (0)

Bits 6-2: 1st character of the compressed manufacturer code

Bits 1-0: Upper 2 bits of the 2nd character of the compressed manufacturer code

1

Bits 7-5: Lower 3 bits of the 2nd character of the compressed manufacturer code.

Bits 4-0: 3rd character of the compressed manufacturer code.

(bit 4 is most significant)

2

Bits 7-4: 1st hexadecimal digit of the product number. (bit 7 is most significant)

Bits 3-0: 2nd hexadecimal digit of the product number. (bit 3 is most significant)

3

Bits 7-4: 3rd hexadecimal digit of the product number (bit 7 is most significant)

Bits 3-0: Hexadecimal digit for the revision number. (bit 3 is most significant)


Refer to the Device Identifier Reference Table & Device Type Code Table for a list of product identifiers. This list includes generic Plug and Play device identifiers for the standard systemboard components. See the References section of this document.

Device type code:

This field is used to specify the type or characteristics of the node in the configuration list. There are many different kinds of controllers and devices and through the type field you can identify which kind of component this node represents.

The Device Type code is broken down into three byte fields. The first byte in the Device Type Code consists of a Base Type code which 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 Class and Sub-Class.

Refer to the Device Identifier Reference Table & Device Type Code Table for a description of Device Type Codes.

Device node attribute bit-field:

The device node attributes provide additional information about the state of the device and the capabilities of the device. This bit-field is defined as follows:

bit 15-9:

reserved (0)

bits 8:7

0:0=device can only be configured for next boot (static)

0:1=device can be configured at runtime (dynamically)

1:0=Reserved

1:1=device can only be configured at runtime (dynamically)

bit 6:

0=device is not a removable system device

1=device is a removable system device

bit 5:

0=device is not a docking station device

1=device is a docking station device

bit 4:

0=device is not capable of being primary Initial Program Load (IPL) device

1=device is capable of being primary IPL device

bit 3:

0=device is not capable of being primary input device

1=device is capable of being primary input device

bit 2:

0=device is not capable of being primary output device

1=device is capable of being primary output device

bit 1:

0=device is configurable

1=device is not configurable

bit 0:

0=device can be disabled

1=device cannot be disabled


Bit 0 specifies whether the device can be disabled or not. If the device is disabled, it is assumed that the system resources that the device was using are available for use by other devices.

Bit 1 indicates that the device is configurable. This implies that the system device node provides the resource requirements for the device in the Possible resource configuration descriptor block. If the device node does not specify the resource requirements or the device does not have any alternate system resource requirements, bit 1 must be set to indicate that the device is not configurable.

Bits 2-4 identify the capability of the device being designated as a boot device.

Bit 5 indicates that the device resides on a docking station or convenience base.

Bit 6 indicates that the device node represents a device that is removable on the base system unit, such as a removable floppy drive.

Bits 8:7 use three of the four possible states to indicate if the device node can be configured dynamically, configured statically only for next boot or configured dynamically only. The fourth state is reserved.

Allocated resource configuration descriptor block:

The allocated resource descriptor block describes the system resources allocated to this device. The format of the data contained in this block follows the format defined in the Plug and Play ISA Specification under the section labeled Plug and Play Resources. The resource data is provided as a series of data structures with each of the resource data structures having a unique tag or identifier. These are the resource descriptors which specifically describe the standard PC system resources, such as Memory, I/O addresses, IRQs, and DMA channels.

Possible resource configuration descriptor block:

The alternative resource selections that a particular device can support can be obtained from the data contained in this block. The format of the data in this block follows the same format as the allocated resource descriptor block. Refer to the Plug and Play ISA Specification under the section labeled Plug and Play Resources for a description of the data structures that make up the resource descriptor blocks. These are the resource descriptors which specifically describe the standard PC system resources, such as Memory, I/O addresses, IRQs, and DMA channels.

The information in this block can be used by the system BIOS and/or system software for selecting a conflict free resource allocation for this device without user intervention. The data in this block is optional. If this information is not provided in this structure, it can optionally be provided in a configuration file for the systemboard that defines the configuration information for the embedded devices. If the possible resource configurations are not specified in either place the device is assumed to be a static device, which means it is not configurable. If the information is provided in this descriptor block and in a configuration file, the possible resource selections must be specified in the same order that they are described in the configuration file. If the node does not contain the alternative resource selections then the first byte in this block will contain the End Tag descriptor, which is described in Plug and Play ISA Specification, to indicate that there are no resources in this block.

Compatible device identifiers:

The compatible device identifiers block specifies the IDs of other devices that this device is compatible with. System software can use this information to load compatible device drivers if necessary. The format of the data contained in this block follows the format defined in the Plug and Play ISA Specification under the section labeled Plug and Play Resources - Compatible Device ID.