![]() |
Tag decodes
| PNP VERSION | 0 0001 010 n.n n.n |
The two data bytes are encoded in bcd representing the major
/ minor revision level of the vendor and the oem respectively.
This record is optional but normally appears as the first data
record after the serial number.
| ANSI STRING | 1 0000010 [length] ascii... |
| UNICODE string | 1 0000011 [length] unicode.... |
These variable length strings are optional and apply in
context. They are present solely for human readable
information. When present before a logical device record it
applies to the card as a whole. When present after any logical
device record it applies to that device.
| Short Vendor | 0 1110 xxx encoded_ascii... |
| long Vendor | 1 0000100 [length] [country identifier] encoded ascii..... |
Both of these are variable length records and are optional.
The first three bytes (if present) are encoded ascii as per the
encoded serial number described elsewhere for the short
form.
| Device Id | 0 0010 xxx (xxx==5 or 6) <4 byte id> reg-low reg-hi |
The encoded 4 byte id has same structure as the 4 byte encoded_serial id.
The reg byte(s) define supported features of the interface in pnp registers 30 to 3F. (reg-hi is optional and assumed to be zero by default)
bit 0 Device capable of taking part in boot
process
bit 1 Device supports I/O range check register
bit 2 Device supports reserved register 0x32
............
bit 15 Device supports reserved register 0x3F
Reserved registers 32 to 3F have no meaning.
Occurrence of this tag marks the beginning of specific
information about a logical device on that card. Subsequent
record tags contain resource information about that device.
| Compatible device | 0 0011 100 <4byte id> |
Encoded as per the serial number, this field is optional and
only present in a device context.
| StartDep | 0 0110 xxx (xxx= 0 or 1) type |
Eight possible configurations are allocated to each device (not all are declared).
This tag delineates the beginning of each configuration. Resource records follow each startdep.
The type byte if present defines the type of configuration data that follows.
0 preferred, or autoconfigType 0 is autoconfig, the resources described below for THIS startep will only have single specific resources set. Ie a single Irq rather than a choice of irq's.
1 acceptable (default)
2 functional
| IRQ | 0 0100 xxx (xxx= 2 or 3) [irqbits] type |
Up to two IRQ records can be recieved per device-configuration. (startdep)
The two-byte [irqbits] represent the irqs from 0 to 15 that can be used with this device (irq 2 is not useable).
The type field if present defines
bit 0 High true, edge sensitive interrupt
(default)
bit 1 Low true, edge sensitive interrupt
bit 2 High true, level sensitive interrupt
bit 3 Low true, level sensitive interrupt
Type is an information byte, there is nothing choosable
about it.
| DMA | 0 0101 010 | dmabits type |
Up to two dma records can be recieved per device-config (startdep)
The single byte dmabits defines the usable dma channels that can be used on this device. bit 4 is not useable.
type is the dma capability defined as follows
0SSWCMbbb
SS DMA channel speed
0 compatible modeM bus master
1 type A
2 type B
3 type F
bbb
0 8bit onlytype is an information byte. There is nothing choosable about it.
1 both
2 16bit only
| IOport | 0 1000 111 aa [min] [max] alignment iosize . |
8 separate io address records can be recieved per start record.
aa=nonzero 16bit address lines else 10bit address lines
[min] and [max] declare the range of base io addresses that can be used for this device.
iosize
declares the number of io addresses used after and including the base address. A value of zero means 256.
alignment
Means the next address that could be used as a base, if the min address is not suitable.
Typically, a soundblaster would have a minimum base address of 0x220, a maximum base address of 0x280, an alignment of 0x20 and a size of 16
This would result in one, of the four following possible selections.
0x220 -> 0x22F
0x240 -> 0x24F
0x260 -> 0x26F
0x280 -> 0x28F
| FixedIO | 0 1001 011 [address] size |
Fixed io is a 'no choice' declaration.
| Memory | 1 0000001 [length (==9)] page [begin] [end] [base] [size] |
This defines a block of memory in 256 byte chunks. The total memory range declared is within a 64k page as defined by the page byte.
Bit[7] Reserved and must be 0
Bit[6] Memory is an expansion ROM
Bit[5] Memory is shadowable.
Bits[4:3] Memory control Status
00 8-bit memory only
01 16-bit memory only
10 8- and 16-bit supported.
11 Reserved
Bit[2] Support type Status
1 decode supports high address
0 decode supports range length.
Bit[1] Cache support type Status
1 read cacheable, write-through
0 non-cacheable.
Bit[0] Write status
1 writeable
0 non-writeable (ROM)
size defines the amount of 256 byte chunks used, and step defines the beginning base address that can be stepped. Thus, for an ethernet card
00 D0 D0 00 0000 0001
would indicate a base memory address at 0: D000 to 0:
D0FF
| Memory32 range | 10000101 [len==17] see below |
| Fixed 32bitmem | 10000110 [len==9] |
page: as above
long minimum address
long maximum address
long base alignment
long range
fixed 32 mem
page as above
long base address
long range
These blocks of io, dma, memory and irq tags are repeated
for each start record encountered for the device (up to 8
times).
| EndDep | 0 0111 000 |
The end of device configuration data for this device is
deliniated by this tag. Subsequent records define some other
device. There is only one endep for each device. Start records
deliniate themselves.
| End | 0 1111 001 sum |
This is the end of all records for the card. This check sum
is generated such that adding it to the sum of all the data
bytes will produce a zero sum.
| Short Vendor defined | 0 1110 xxx [len] nn... |
| Long Vendor defined | 1 0000100 [len] nn... |
Vendor defined desctiptors which are unused.