-.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.
+Root privileges are necessary for almost all operations, excluding reads
+of the standard header of the configuration space on some operating systems.
+Please see
+.BR lspci(8)
+for details on access rights.
+
.SH OPTIONS
.TP
.B -v
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 --version
Shows
.I setpci
-version. This option should be used standalone.
-
+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
.B setpci
-knows the following configuration register names. See PCI bus specs for their precise
+knows the following configuration register names. See PCI bus specifications for their precise
meaning or consult
+.B header.h
+or
.B /usr/include/linux/pci.h
-for few comments.
+for a couple of comments.
.PP
.nf
VENDOR_ID
.SH PCILIB OPTIONS
The PCI utilities use PCILIB (a portable library providing platform-independent
-functions for PCI configuration space access) to talk to the PCI cards. The following
-options control parameters of the library, especially what access method it uses.
-By default, PCILIB uses the first available access method and displays no debugging
-messages. Each switch is accompanied by a list of hardware/software configurations
-it's supported in.
-
-.TP
-.B -P <dir>
-Use Linux 2.1 style configuration access to directory
-.B <dir>
-instead of /proc/bus/pci. (Linux 2.1 or newer only)
-.TP
-.B -H1
-Use direct hardware access via Intel configuration mechanism 1. (i386 and compatible 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)
-.TP
-.B -F <file>
-Extract all information from given file containing output of lspci -x. This is very
-useful for analysis of user-supplied bug reports, because you can display the
-hardware configuration in any way you want without disturbing the user with
-requests for more dumps. (All systems)
-.TP
-.B -G
-Increase debug level of the library. (All systems)
+functions for PCI configuration space access) to talk to the PCI cards. Please
+see
+.BR lspci(8)
+for a list of switches controlling behavior of the library.
.SH EXAMPLES
.PP
`setpci -d *:* latency_timer=40' sets the latency timer to 64 (40 hexadecimal).
.PP
-`setpci -s 0 device_id vendor_id' lists ID's of devices in slot 0 in all busses.
+`setpci -s 0 device_id vendor_id' lists ID's of devices in slot 0 in all buses.
.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)
.SH AUTHOR
-The Linux PCI Utilities are maintained by Martin Mares <mj@suse.cz>.
+The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.