Annotation of embedaddon/pciutils/setpci.man, revision 1.1.1.1
1.1 misho 1: .TH setpci 8 "@TODAY@" "@VERSION@" "The PCI Utilities"
2: .IX setpci
3: .SH NAME
4: setpci \- configure PCI devices
5: .SH SYNOPSIS
6: .B setpci
7: .RB [ options ]
8: .B devices
9: .BR operations ...
10:
11: .SH DESCRIPTION
12: .PP
13: .B setpci
14: is a utility for querying and configuring PCI devices.
15:
16: All numbers are entered in hexadecimal notation.
17:
18: Root privileges are necessary for almost all operations, excluding reads
19: of the standard header of the configuration space on some operating systems.
20: Please see
21: .BR lspci(8)
22: for details on access rights.
23:
24: .SH OPTIONS
25:
26: .SS General options
27: .TP
28: .B -v
29: Tells
30: .I setpci
31: to be verbose and display detailed information about configuration space accesses.
32: .TP
33: .B -f
34: Tells
35: .I setpci
36: not to complain when there's nothing to do (when no devices are selected).
37: This option is intended for use in widely-distributed configuration scripts
38: where it's uncertain whether the device in question is present in the machine
39: or not.
40: .TP
41: .B -D
42: `Demo mode' -- don't write anything to the configuration registers.
43: It's useful to try
44: .B setpci -vD
45: to verify that your complex sequence of
46: .B setpci
47: operations does what you think it should do.
48: .TP
49: .B --version
50: Show
51: .I setpci
52: version. This option should be used stand-alone.
53: .TP
54: .B --help
55: Show detailed help on available options. This option should be used stand-alone.
56: .TP
57: .B --dumpregs
58: Show a list of all known PCI registers and capabilities. This option should be
59: used stand-alone.
60:
61: .SS PCI access options
62: .PP
63: The PCI utilities use the PCI library to talk to PCI devices (see
64: \fBpcilib\fP(7) for details). You can use the following options to
65: influence its behavior:
66: .TP
67: .B -A <method>
68: The library supports a variety of methods to access the PCI hardware.
69: By default, it uses the first access method available, but you can use
70: this option to override this decision. See \fB-A help\fP for a list of
71: available methods and their descriptions.
72: .TP
73: .B -O <param>=<value>
74: The behavior of the library is controlled by several named parameters.
75: This option allows to set the value of any of the parameters. Use \fB-O help\fP
76: for a list of known parameters and their default values.
77: .TP
78: .B -H1
79: Use direct hardware access via Intel configuration mechanism 1.
80: (This is a shorthand for \fB-A intel-conf1\fP.)
81: .TP
82: .B -H2
83: Use direct hardware access via Intel configuration mechanism 2.
84: (This is a shorthand for \fB-A intel-conf2\fP.)
85: .TP
86: .B -G
87: Increase debug level of the library.
88:
89: .SH DEVICE SELECTION
90: .PP
91: Before each sequence of operations you need to select which devices you wish that
92: operation to affect.
93: .TP
94: .B -s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
95: Consider only devices in the specified domain (in case your machine has several host bridges,
96: they can either share a common bus number space or each of them can address a PCI domain
97: of its own; domains are numbered from 0 to ffff), bus (0 to ff), slot (0 to 1f) and function (0 to 7).
98: Each component of the device address can be omitted or set to "*", both meaning "any value". All numbers are
99: hexadecimal. E.g., "0:" means all devices on bus 0, "0" means all functions of device 0
100: on any bus, "0.3" selects third function of device 0 on all buses and ".4" matches only
101: the fourth function of each device.
102: .TP
103: .B -d [<vendor>]:[<device>]
104: Select devices with specified vendor and device ID. Both ID's are given in
105: hexadecimal and may be omitted or given as "*", both meaning "any value".
106: .PP
107: When
108: .B -s
109: and
110: .B -d
111: are combined, only devices that match both criteria are selected. When multiple
112: options of the same kind are specified, the rightmost one overrides the others.
113:
114: .SH OPERATIONS
115: .PP
116: There are two kinds of operations: reads and writes. To read a register, just specify
117: its name. Writes have the form
118: .IR name = value , value ...
119: where each
120: .I value
121: is either a hexadecimal number or an expression of type
122: .IR data : mask
123: where both
124: .I data
125: and
126: .I mask
127: are hexadecimal numbers. In the latter case, only the bits corresponding to binary
128: ones in the \fImask\fP are changed (technically, this is a read-modify-write operation).
129:
130: .PP
131: There are several ways how to identity a register:
132: .IP \(bu
133: Tell its address in hexadecimal.
134: .IP \(bu
135: Spell its name. Setpci knows the names of all registers in the standard configuration
136: headers. Use `\fBsetpci --dumpregs\fP' to get the complete list.
137: See PCI bus specifications for the precise meaning of these registers or consult
138: \fBheader.h\fP or \fB/usr/include/pci/pci.h\fP for a brief sketch.
139: .IP \(bu
140: If the register is a part of a PCI capability, you can specify the name of the
141: capability to get the address of its first register. See the names starting with
142: `CAP_' or `ECAP_' in the \fB--dumpregs\fP output.
143: .IP \(bu
144: If the name of the capability is not known to \fBsetpci\fP, you can refer to it
145: by its number in the form CAP\fBid\fP or ECAP\fBid\fP, where \fBid\fP is the numeric
146: identifier of the capability in hexadecimal.
147: .IP \(bu
148: Each of the previous formats can be followed by \fB+offset\fP to add an offset
149: (a hex number) to the address. This feature can be useful for addressing of registers
150: living within a capability, or to modify parts of standard registers.
151: .IP \(bu
152: Finally, you should append a width specifier \fB.B\fP, \fB.W\fP, or \fB.L\fP to choose
153: how many bytes (1, 2, or 4) should be transferred. The width can be omitted if you are
154: referring to a register by its name and the width of the register is well known.
155:
156: .PP
157: All names of registers and width specifiers are case-insensitive.
158:
159: .SH
160: EXAMPLES
161:
162: .IP COMMAND
163: asks for the word-sized command register.
164: .IP 4.w
165: is a numeric address of the same register.
166: .IP COMMAND.l
167: asks for a 32-bit word starting at the location of the command register,
168: i.e., the command and status registers together.
169: .IP VENDOR_ID+1.b
170: specifies the upper byte of the vendor ID register (remember, PCI is little-endian).
171: .IP CAP_PM+2.w
172: corresponds to the second word of the power management capability.
173: .IP ECAP108.l
174: asks for the first 32-bit word of the extended capability with ID 0x108.
175:
176: .SH SEE ALSO
177: .BR lspci (8),
178: .BR pcilib (7)
179:
180: .SH AUTHOR
181: The PCI Utilities are maintained by Martin Mares <mj@ucw.cz>.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>