mirror of
https://github.com/gnuton/asuswrt-merlin.ng.git
synced 2025-05-18 23:41:30 +02:00
180 lines
5.9 KiB
Groff
180 lines
5.9 KiB
Groff
.TH setpci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
|
|
.SH NAME
|
|
setpci \- configure PCI devices
|
|
.SH SYNOPSIS
|
|
.B setpci
|
|
.RB [ options ]
|
|
.B devices
|
|
.BR operations ...
|
|
|
|
.SH DESCRIPTION
|
|
.PP
|
|
.B setpci
|
|
is a utility for querying and configuring PCI devices.
|
|
|
|
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
|
|
|
|
.SS General options
|
|
.TP
|
|
.B -v
|
|
Tells
|
|
.I setpci
|
|
to be verbose and display detailed information about configuration space accesses.
|
|
.TP
|
|
.B -f
|
|
Tells
|
|
.I setpci
|
|
not to complain when there's nothing to do (when no devices are selected).
|
|
This option is intended for use in widely-distributed configuration scripts
|
|
where it's uncertain whether the device in question is present in the machine
|
|
or not.
|
|
.TP
|
|
.B -D
|
|
`Demo mode' -- don't write anything to the configuration registers.
|
|
It's useful to try
|
|
.B setpci -vD
|
|
to verify that your complex sequence of
|
|
.B setpci
|
|
operations does what you think it should do.
|
|
.TP
|
|
.B --version
|
|
Show
|
|
.I setpci
|
|
version. This option should be used stand-alone.
|
|
.TP
|
|
.B --help
|
|
Show detailed help on available options. This option should be used stand-alone.
|
|
.TP
|
|
.B --dumpregs
|
|
Show a list of all known PCI registers and capabilities. This option should be
|
|
used stand-alone.
|
|
|
|
.SS PCI access options
|
|
.PP
|
|
The PCI utilities use the PCI library to talk to PCI devices (see
|
|
\fBpcilib\fP(7) for details). You can use the following options to
|
|
influence its behavior:
|
|
.TP
|
|
.B -A <method>
|
|
The library supports a variety of methods to access the PCI hardware.
|
|
By default, it uses the first access method available, but you can use
|
|
this option to override this decision. See \fB-A help\fP for a list of
|
|
available methods and their descriptions.
|
|
.TP
|
|
.B -O <param>=<value>
|
|
The behavior of the library is controlled by several named parameters.
|
|
This option allows to set the value of any of the parameters. Use \fB-O help\fP
|
|
for a list of known parameters and their default values.
|
|
.TP
|
|
.B -H1
|
|
Use direct hardware access via Intel configuration mechanism 1.
|
|
(This is a shorthand for \fB-A intel-conf1\fP.)
|
|
.TP
|
|
.B -H2
|
|
Use direct hardware access via Intel configuration mechanism 2.
|
|
(This is a shorthand for \fB-A intel-conf2\fP.)
|
|
.TP
|
|
.B -G
|
|
Increase debug level of the library.
|
|
|
|
.SH DEVICE SELECTION
|
|
.PP
|
|
Before each sequence of operations you need to select which devices you wish that
|
|
operation to affect.
|
|
.TP
|
|
.B -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
|
|
Consider 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 buses and ".4" matches 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 "*", both meaning "any value".
|
|
.PP
|
|
When
|
|
.B -s
|
|
and
|
|
.B -d
|
|
are combined, only devices that match both criteria are selected. When multiple
|
|
options of the same kind are specified, the rightmost one overrides the others.
|
|
|
|
.SH OPERATIONS
|
|
.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 ...\&
|
|
where each
|
|
.I value
|
|
is either a hexadecimal number or an expression of type
|
|
.IR data : mask
|
|
where both
|
|
.I data
|
|
and
|
|
.I mask
|
|
are hexadecimal numbers. In the latter case, only the bits corresponding to binary
|
|
ones in the \fImask\fP are changed (technically, this is a read-modify-write operation).
|
|
|
|
.PP
|
|
There are several ways how to identity a register:
|
|
.IP \(bu
|
|
Tell its address in hexadecimal.
|
|
.IP \(bu
|
|
Spell its name. Setpci knows the names of all registers in the standard configuration
|
|
headers. Use `\fBsetpci --dumpregs\fP' to get the complete list.
|
|
See PCI bus specifications for the precise meaning of these registers or consult
|
|
\fBheader.h\fP or \fB/usr/include/pci/pci.h\fP for a brief sketch.
|
|
.IP \(bu
|
|
If the register is a part of a PCI capability, you can specify the name of the
|
|
capability to get the address of its first register. See the names starting with
|
|
`CAP_' or `ECAP_' in the \fB--dumpregs\fP output.
|
|
.IP \(bu
|
|
If the name of the capability is not known to \fBsetpci\fP, you can refer to it
|
|
by its number in the form CAP\fBid\fP or ECAP\fBid\fP, where \fBid\fP is the numeric
|
|
identifier of the capability in hexadecimal.
|
|
.IP \(bu
|
|
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
|
|
referring to a register by its name and the width of the register is well known.
|
|
|
|
.PP
|
|
All names of registers and width specifiers are case-insensitive.
|
|
|
|
.SH
|
|
EXAMPLES
|
|
|
|
.IP COMMAND
|
|
asks for the word-sized command register.
|
|
.IP 4.w
|
|
is a numeric address of the same register.
|
|
.IP COMMAND.l
|
|
asks for a 32-bit word starting at the location of the command register,
|
|
i.e., the command and status registers together.
|
|
.IP VENDOR_ID+1.b
|
|
specifies the upper byte of the vendor ID register (remember, PCI is little-endian).
|
|
.IP CAP_PM+2.w
|
|
corresponds to the second word of the power management capability.
|
|
.IP ECAP108.l
|
|
asks for the first 32-bit word of the extended capability with ID 0x108.
|
|
|
|
.SH SEE ALSO
|
|
.BR lspci (8),
|
|
.BR pcilib (7)
|
|
|
|
.SH AUTHOR
|
|
The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
|