.TH setpci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
-.IX setpci
.SH NAME
setpci \- configure PCI devices
.SH SYNOPSIS
.B setpci
operations does what you think it should do.
.TP
+.B -r
+Avoids bus scan if each operation selects a specific device (uses the
+.B -s
+selector with specific domain, bus, slot, and function). This is faster,
+but if the device does not exist, it fails instead of matching an empty
+set of devices.
+.TP
.B --version
Show
.I setpci
.PP
There are two kinds of operations: reads and writes. To read a register, just specify
its name. Writes have the form
-.IR name = value , value ...
+.IR name = value , value ...\&
where each
.I value
is either a hexadecimal number or an expression of type
Each of the previous formats can be followed by \fB+offset\fP to add an offset
(a hex number) to the address. This feature can be useful for addressing of registers
living within a capability, or to modify parts of standard registers.
-\IP \(bu
-Finally, you should append a width specifier \fB.B\fP, \fB.W\fP, or \fB.L\fP to choose
-how many bytes (1, 2, or 4) should be transferred. The width can be omitted if you are
+.IP \(bu
+To choose how many bytes (1, 2, or 4) should be transferred, you should append a width
+specifier \fB.B\fP, \fB.W\fP, or \fB.L\fP. The width can be omitted if you are
referring to a register by its name and the width of the register is well known.
+.IP \(bu
+Finally, if a capability exists multiple times you can choose which one to target using
+\fB@number\fP. Indexing starts at 0.
.PP
All names of registers and width specifiers are case-insensitive.