-.TH setpci 8 "@TODAY@" "@VERSION@" "Linux PCI Utilities"
+.TH setpci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
.IX setpci
.SH NAME
setpci \- configure PCI devices
.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
.B setpci
operations does before you actually execute it.
+.TP
+.B --version
+Shows
+.I setpci
+version. This option should be used stand-alone.
+
.SH DEVICE SELECTION
.PP
Before each sequence of operations you need to select which devices you wish that
operation to affect.
.TP
-.B -s [[<bus>]:][<slot>][.[<func>]]
-Select devices in specified bus, slot and function. Each component of the device
-address can be omitted or set as "*" meaning "any value". All numbers are
+.B -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
+Show only devices in the specified domain (in case your machine has several host bridges,
+they can either share a common bus number space or each of them can address a PCI domain
+of its own; domains are numbered from 0 to ffff), bus (0 to ff), slot (0 to 1f) and function (0 to 7).
+Each component of the device address can be omitted or set to "*", both meaning "any value". All numbers are
hexadecimal. E.g., "0:" means all devices on bus 0, "0" means all functions of device 0
-on any bus, "0.3" selects third function of device 0 on all busses and ".4" selects only
-fourth function of each device.
+on any bus, "0.3" selects third function of device 0 on all buses and ".4" shows only
+the fourth function of each device.
.TP
.B -d [<vendor>]:[<device>]
Select devices with specified vendor and device ID. Both ID's are given in
-hexadecimal and may be omitted or given as "*" meaning "any value".
+hexadecimal and may be omitted or given as "*", both meaning "any value".
.SH OPERATIONS
.PP
.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
.B -H2
Use direct hardware access via Intel configuration mechanism 2. Warning: This method
is able to address only first 16 devices on any bus and it seems to be very
-unrealiable in many cases. (i386 and compatible only)
-.TP
-.B -S
-Use PCI access syscalls. (Linux on Alpha and UltraSparc only)
+unreliable in many cases. (i386 and compatible only)
.TP
.B -F <file>
Extract all information from given file containing output of lspci -x. This is very
.PP
`setpci -s 0 device_id vendor_id' lists ID's of devices in slot 0 in all busses.
.PP
-`setpci -s 12:3.4 34.l=1,2,3' writes longword 1 to register 34, 2 to register 35
-and 3 to register 35 of device at bus 12, slot 3, function 4.
+`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)
.SH AUTHOR
-The Linux PCI Utilities are maintained by Martin Mares <mj@atrey.karlin.mff.cuni.cz>.
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.