Log Config Section

A Log Config section defines device configuration details, such as interrupt request lines, memory ranges, I/O ports, and DMA channels. The name of the section, log-config-section-name, must be used in the LogConfig item in an Install section of the INF file.

[log-config-section-name]
ConfigPriority=Priority_Value[,Config_Type]
[DMAConfig=[DMAattrs:]DMANum[,DMANum]]
[IOConfig=io-range[,io-range]...]
[IRQConfig=[IRQattrs:]IRQNum[,IRQNum]]
[MemConfig=mem-range[,mem-range]...
 
Priority_Value
Sets the priority value for the logical configuration. Only one ConfigPriority item can be used in a Log Config section. Can be one of the following string values:

Value

Meaning

HARDWIRED

Cannot be reset.

DESIRED

Soft configured, most optimal.

NORMAL

Soft configured, medium optimal.

SUBOPTIMAL

Soft configured, least optimal.

DISABLED

Hardware disabled.

RESTART

Requires Windows NT restart to take effect.

REBOOT

For Windows NT this is the same as RESTART.

POWEROFF

Requires power cycle to take effect.

HARDRECONFIG

Requires a jumper change.

Config_Type
Optional. Can be one of the following string values:

Value

Meaning

FORCED

The Configuration Manager must use the settings in this section. If set, Priority_Value must be NORMAL.

BASIC

The settings in this section indicate a range of possibilities.

DMAattrs
Optional. Can be either the letter D for 32-bit DMA channels or the letter W for 16-bit channels. These values are specific to the bus being used. If no value is specified, the default is 8-bit channels.
DMANum
The DMA channel number in decimal notation.
io-range
Sets the I/O range for the logical configuration. This value has two forms: Type 1 I/O Range and Type 2 I/O Range.
Type 1 I/O Range Value
start-end[([decode-mask]:[alias-offset]:[attr])]
 

start

Starting address of the I/O port region. This is a 64-bit value in hexadecimal notation.

end

Ending address of the I/O port region. This is a 64-bit value in hexadecimal notation. The start and end values must be separated by a hyphen.

decode-mask

Optional. Currently ignored.

alias-offset

Optional. A 32-bit value to indicate additional ports decoded by the adapter. The additional ports are calculated by adding multiples of this offset to the base I/O port region. Leaving this field blank indicates that driver software will only access the ports in the base I/O region and never access any of the aliases.

attr

Optional. The letter M specifies that the I/O port is a memory address. The default (no attr) indicates that the port is an I/O address.

Type 2 I/O Range Value
size@min-max[%align-mask][([decode-mask]:[alias-offset]:[attr])]
 

size

Size of the required I/O port region in bytes. This is a 32-bit value in hexadecimal notation.

min

The smallest possible starting I/O port. This is a 64-bit value in hexadecimal notation.

max

The largest possible ending I/O port. This a 64-bit value in hexadecimal notation. The min and max values must be separated by a hyphen.

align-mask

Optional. This 64-bit hexadecimal mask is applied to the range specified by min and max to determine legal starting addresses for the I/O region. To construct the mask, all bits that must be 0 in the starting address must be 0 in the mask. All other bits should be 1.

decode-mask

Optional. Currently ignored.

alias-offset

Optional. A 32-bit value to indicate additional ports decoded by the adapter. The additional ports are calculated by adding multiples of this offset to the base I/O port region. Leaving this field blank indicates that driver software will only access the ports in the base I/O region and never access any of the aliases.

attr

Optional. The letter M specifies that the I/O port is a memory address. The default (no attr) indicates that the port is an I/O address.

The following example illustrates the use of a list of three Type 1 I/O range values in an IOConfig item. The example specifies an I/O port region of 8 bytes which can start at 1F8, 2F8, or 3F8 and does not use any of its aliases.

IOConfig=1F8-1FF, 2F8-2FF, 3F8-3FF
 

The following example shows the use of a Type 2 I/O range value in an IOConfig item. The example specifies an I/O port region of 8 bytes which can start at 300, 308, 310, 318, 320, or 328. The device does not use any of its aliases.

IOConfig=8@300-32F%FF8
 
IRQattrs
Optional. Can be any combination of the following letters:

S

Indicates a shareable interrupt. If used, this flag should appear only once in an IRQConfig item. It affects all IRQs listed in that item. If this flag is not specified, the default is a non-shareable interrupt.

L

Indicates a level-triggered interrupt. If this flag is not specified, the default is an edge-triggered interrupt.

IRQNum
Sets the IRQ number for the logical configuration. This is the IRQ number in decimal notation.
mem-range
Sets the memory range(s) for the logical configuration.
This value has two forms:
start-end[(attr)]
 
size@min-max[%align-mask][(attr)]
 

start

Starting address of the physical memory region. This is a 64-bit value in hexadecimal notation.

end

Ending address of the physical memory region. This is 64-bit value in hexadecimal notation. The start and end values must be separated by a hyphen.

size

Size of the required region in bytes. This is a 32-bit value in hexadecimal notation.

min

Smallest possible starting address of the memory region. This is 64-bit value in hexadecimal notation.

max 

Largest possible ending address of the memory region. This is 64-bit value in hexadecimal notation. The min and max values must be separated by a hyphen.

align-mask

Optional. A 32-bit hexadecimal mask applied to the range specified by min and max to determine legal starting addresses for the memory region. To construct the mask, all bits that must be 0 in the starting address must be 0 in the mask. All other bits should be 1.

attr

Optional. Can be any combination of the following letters:

C indicates that combined-write is allowed, otherwise combined write is not allowed.

D Indicates a 32-bit address; otherwise a 24-bit address is assumed.

F indicates that the memory is prefetchable; otherwise it is not.

R indicates read-only memory.

W indicates write-only memory.

RW indicates read/write memory.

The following examples illustrate the use of the MemConfig item.

This example specifies a memory region of 32K bytes that can start at either C0000 or D0000.

MemConfig=C0000-C7FFF, D0000-D7FFF
 

This example specifies a memory region of 32k bytes starting on 64K boundaries.

MemConfig=8000@C0000-D7FFF%F0000
 

Each item in a Log Config section can specify more than one resource. However, during installation one and only one resource from an item is used. If a device needs multiple resources of the same type, multiple items of that type must be used in the Log Config section. For example, to ensure two IRQs for a device, two IRQConfig items must be used in the Log Config section. If a device does not require an IRQ, an IRQConfig item should not be used.

An INF file can contain any number of Log Config sections. However, each section must contain complete details for installing one device. More than one Log Config section can be specified for a device. If this is done, only one of the Log Config sections will be used during installation.

For each Log Config section item, the installer builds binary logical configuration records and stores them in the registry.