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.