.B setpci
is a utility for querying and configuring PCI devices.
-To make use of all the features of this program, you need to have Linux kernel
-2.1.82 or newer which supports the /proc/bus/pci interface. With older kernels,
-the PCI utilities have to use direct hardware access which is available
-only to root and it suffers from numerous race conditions and other problems.
-
All numbers are entered in hexadecimal notation.
.SH OPTIONS
or not.
.TP
.B -D
-`Demo mode' -- simulate configuration space accesses instead of really doing them.
+`Demo mode' -- don't write anything to the configuration registers.
It's useful to try
.B setpci -vD
to see what your complex sequence of
.BR reg = values
where
.B reg
-is the same you would use to query the register and
+is the same as you would use to query the register and
.B values
is a comma-separated list of values you want to write starting with the given
-address.
+address. Each value to be written can be specified either as a hexadecimal number
+or as a
+.BR bits : mask
+pair which causes the bits corresponding to binary ones in the
+.B mask
+to be changed to values of the corresponding bits in the
+.B bits
+.
.SH REGISTER NAMES
.PP
.TP
.B -P <dir>
-Use Linux 2.1 style configuration access to directory
+Force use of Linux /proc/bus/pci style configuration access, using
.B <dir>
instead of /proc/bus/pci. (Linux 2.1 or newer only)
.TP
.PP
`setpci -s 12:3.4 3c.l=1,2,3' writes longword 1 to register 3c, 2 to register 3d
and 3 to register 3e of device at bus 12, slot 3, function 4.
+.PP
+`setpci -s 13:8.4 40.b=50:d0,04:0c,ff' works on bus 13, device 8, function
+4: turns bit 7 off and bits 6 and 4 on in the byte register 40; turns
+bit 3 off and bit 2 on in the byte register 41; sets byte register
+42 to ff.
.SH SEE ALSO
.BR lspci (8)