You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
4.5 KiB

%! Detailed register description file for PCICFG.EXE by Ralf Brown
%!
%! Filename VVVVDDDD.PCI = Vendor VVVVh, Device DDDDh
%! Last Edit 27jun98 by Ralf Brown
%!
Everything preceding a line beginning with the six characters "!begin" is
a comment and will be ignored (with the proviso that the total file size
not exceed 64K). Everything from the !begin line to a line starting with
the four characters "!end" forms part of the device description, in a
format similar to that used for printf().
To create your own device description file for PCICFG, copy this file to
a file in the same directory containing PCICFG.EXE called VVVVDDDD.PCI,
where VVVV are the four hexadecimal digits of the PCI vendor ID reported
by PCICFG, and DDDD are the four hexadecimal digits of the PCI device
ID. Then, place the appropriate formatting directives between the
"!begin" and "!end" lines below.
format spec:
everything is literal except backslashes and conversion ops
introduced by a percent sign; the percent-sign is followed by
PCI field specifier, an optional print width, and the conversion
character
conversion characters:
<newln> ignore the newline and paste together the two lines
% literal percent sign
! rest of line is a comment and is skipped
b print number in binary
o print number in octal
d print number in decimal
x print number in hexadecimal
e print boolean value as "disable" (false) or "enable" (true)
E print boolean value as "enable" (false) or "disable" (true)
f print boolean value as dash (false) or check mark (true)
n print boolean value as Y (false) or N (true), i.e. inverted
N print boolean as Yes (false) or No (true), i.e. inverted
y print boolean value as N (false) or Y (true)
Y print boolean value as No (false) or Yes (true)
(name) print enumerated value given by enum spec "name"
{xyz} print Nth character in "xyz" (prints last if N > # chars)
/lit/ print literal string if boolean is true, dashes otherwise
|a1;a2;a3;a4| select among 2-4 alternate values (index 0-3), prints
last alternative given if N > # alternatives
backslash conversions supported:
\t tab character
\\ literal backslash
\X (any X not listed above:) literal X
PCI field specifier:
'[' hex-address ']' entire byte at offset 'hex-address'
'[' addr ':' bitnum ']' bit 'bitnum' of byte at offset 'addr'
'[' addr ':' bit1 '-' bit2 ']'
bits 'bit1' to 'bit2' of byte at 'addr'
'[' bitfield-spec '|' bitfield-spec ... ']'
concatenate multiple bitfields (MS first)
any of the above may also add the following modifiers just prior to
the closing bracket or a separating vertical bar:
'<' shift shift the field left 'shift' bits
'*' mult multiply the field's value by 'mult'
'+' offset add 'offset' to the field value
'<' shift '+' offset
shift left and then add
'*' mult '+' offset multiply and then add
bit numbers up to 31 are fully supported, and address the appropriate
byte beginning at the specified address; all fields are treated as
32-bit values internally. Bit numbers above 31 are supported
provided that the indicated field does not occupy more than four
bytes (i.e. if the low bit is not a multiple of 8, the maximum field
size is less than 32 bits).
Note: addresses are in hex, all other values are decimal (unsigned except
for 'offset', which may include a leading minus sign after the plus
sign introducing it)
When printing, an explicit width greater than the item's actual width
causes the addition of padding on the left to ensure the desired
width; the padding uses blanks for all formats except binary (b),
octal (o), and hexadecimal (x) numbers, which use zeros.
!begin
%! insert device description here
!end
; everything between the above !end line and a following !enum line is also
; a comment
!enum enum-name
Value0
Value1
Value2
...
ValueN (also used for any values > N)
!end
; enums are matched by name; first, an exact match is attempted, then the
; first named enum starting with the string in the (enum) is selected
; name matches are case-sensitive!
;
; leading and trailing whitespace is ignored, allowing you to indent the
; value strings without forcing the space to appear in the output; if you
; really do need to retain leading or trailing whitespace, add a backslash
; to the beginning or end of the line
%! end of file