]>
Commit | Line | Data |
---|---|---|
727ce158 | 1 | .TH setpci 8 "@TODAY@" "@VERSION@" "Linux PCI Utilities" |
b2c9b373 MM |
2 | .IX setpci |
3 | .SH NAME | |
6ece6bc6 | 4 | setpci \- configure PCI devices |
b2c9b373 MM |
5 | .SH SYNOPSIS |
6 | .B setpci | |
7 | .RB [ options ] | |
8 | .B devices | |
9 | .BR operations ... | |
10 | ||
11 | .SH DESCRIPTION | |
12 | .PP | |
13 | .B setpci | |
727ce158 MM |
14 | is a utility for querying and configuring PCI devices. |
15 | ||
16 | To make use of all the features of this program, you need to have Linux kernel | |
17 | 2.1.82 or newer which supports the /proc/bus/pci interface. With older kernels, | |
18 | the PCI utilities have to use direct hardware access which is available | |
19 | only to root and it suffers from numerous race conditions and other problems. | |
20 | ||
b2c9b373 MM |
21 | All numbers are entered in hexadecimal notation. |
22 | ||
23 | .SH OPTIONS | |
24 | .TP | |
25 | .B -v | |
26 | Tells | |
27 | .I setpci | |
28 | to be verbose and display detailed information about configuration space accesses. | |
29 | .TP | |
30 | .B -f | |
31 | Tells | |
727ce158 | 32 | .I setpci |
b2c9b373 MM |
33 | not to complain when there's nothing to do (when no devices are selected). |
34 | This option is intended for use in widely-distributed configuration scripts | |
35 | where it's uncertain whether the device in question is present in the machine | |
36 | or not. | |
37 | .TP | |
38 | .B -D | |
39 | `Demo mode' -- simulate configuration space accesses instead of really doing them. | |
40 | It's useful to try | |
41 | .B setpci -vD | |
42 | to see what your complex sequence of | |
43 | .B setpci | |
44 | operations does before you actually execute it. | |
45 | ||
46 | .SH DEVICE SELECTION | |
47 | .PP | |
48 | Before each sequence of operations you need to select which devices you wish that | |
49 | operation to affect. | |
50 | .TP | |
51 | .B -s [[<bus>]:][<slot>][.[<func>]] | |
52 | Select devices in specified bus, slot and function. Each component of the device | |
53 | address can be omitted or set as "*" meaning "any value". All numbers are | |
54 | hexadecimal. E.g., "0:" means all devices on bus 0, "0" means all functions of device 0 | |
55 | on any bus, "0.3" selects third function of device 0 on all busses and ".4" selects only | |
56 | fourth function of each device. | |
57 | .TP | |
58 | .B -d [<vendor>]:[<device>] | |
59 | Select devices with specified vendor and device ID. Both ID's are given in | |
60 | hexadecimal and may be omitted or given as "*" meaning "any value". | |
61 | ||
62 | .SH OPERATIONS | |
63 | .PP | |
64 | To query value of a configuration register, just name it (either by typing its name or | |
65 | by typing register address with optional | |
66 | .BR .B , | |
67 | .B .W | |
68 | or | |
69 | .B .L | |
70 | suffix specifying register width as byte, word or longword). | |
71 | .PP | |
72 | To set a register, write | |
73 | .BR reg = values | |
74 | where | |
75 | .B reg | |
76 | is the same you would use to query the register and | |
77 | .B values | |
78 | is a comma-separated list of values you want to write starting with the given | |
79 | address. | |
80 | ||
81 | .SH REGISTER NAMES | |
82 | .PP | |
83 | .B setpci | |
84 | knows the following configuration register names. See PCI bus specs for their precise | |
85 | meaning or consult | |
86 | .B /usr/include/linux/pci.h | |
87 | for few comments. | |
88 | .PP | |
89 | .nf | |
90 | VENDOR_ID | |
91 | DEVICE_ID | |
92 | COMMAND | |
93 | STATUS | |
94 | REVISION | |
95 | CLASS_PROG | |
96 | CLASS_DEVICE | |
97 | CACHE_LINE_SIZE | |
98 | LATENCY_TIMER | |
99 | HEADER_TYPE | |
100 | BIST | |
101 | BASE_ADDRESS_0 | |
102 | BASE_ADDRESS_1 | |
103 | BASE_ADDRESS_2 | |
104 | BASE_ADDRESS_3 | |
105 | BASE_ADDRESS_4 | |
106 | BASE_ADDRESS_5 | |
107 | CARDBUS_CIS | |
108 | SUBSYSTEM_VENDOR_ID | |
109 | SUBSYSTEM_ID | |
110 | ROM_ADDRESS | |
111 | INTERRUPT_LINE | |
112 | INTERRUPT_PIN | |
113 | MIN_GNT | |
114 | MAX_LAT | |
115 | PRIMARY_BUS | |
116 | SECONDARY_BUS | |
117 | SUBORDINATE_BUS | |
118 | SEC_LATENCY_TIMER | |
119 | IO_BASE | |
120 | IO_LIMIT | |
121 | SEC_STATUS | |
122 | MEMORY_BASE | |
123 | MEMORY_LIMIT | |
124 | PREF_MEMORY_BASE | |
125 | PREF_MEMORY_LIMIT | |
126 | PREF_BASE_UPPER32 | |
127 | PREF_LIMIT_UPPER32 | |
128 | IO_BASE_UPPER16 | |
129 | IO_LIMIT_UPPER16 | |
130 | BRIDGE_ROM_ADDRESS | |
131 | BRIDGE_CONTROL | |
132 | CB_CARDBUS_BASE | |
133 | CB_CAPABILITIES | |
134 | CB_SEC_STATUS | |
135 | CB_BUS_NUMBER | |
136 | CB_CARDBUS_NUMBER | |
137 | CB_SUBORDINATE_BUS | |
138 | CB_CARDBUS_LATENCY | |
139 | CB_MEMORY_BASE_0 | |
140 | CB_MEMORY_LIMIT_0 | |
141 | CB_MEMORY_BASE_1 | |
142 | CB_MEMORY_LIMIT_1 | |
143 | CB_IO_BASE_0 | |
144 | CB_IO_BASE_0_HI | |
145 | CB_IO_LIMIT_0 | |
146 | CB_IO_LIMIT_0_HI | |
147 | CB_IO_BASE_1 | |
148 | CB_IO_BASE_1_HI | |
149 | CB_IO_LIMIT_1 | |
150 | CB_IO_LIMIT_1_HI | |
151 | CB_SUBSYSTEM_VENDOR_ID | |
152 | CB_SUBSYSTEM_ID | |
153 | CB_LEGACY_MODE_BASE | |
154 | ||
727ce158 MM |
155 | .SH PCILIB OPTIONS |
156 | The PCI utilities use PCILIB (a portable library providing platform-independent | |
157 | functions for PCI configuration space access) to talk to the PCI cards. The following | |
158 | options control parameters of the library, especially what access method it uses. | |
159 | By default, PCILIB uses the first available access method and displays no debugging | |
160 | messages. Each switch is accompanied by a list of hardware/software configurations | |
161 | it's supported in. | |
162 | ||
163 | .TP | |
164 | .B -P <dir> | |
165 | Use Linux 2.1 style configuration access to directory | |
166 | .B <dir> | |
167 | instead of /proc/bus/pci. (Linux 2.1 or newer only) | |
168 | .TP | |
169 | .B -H1 | |
170 | Use direct hardware access via Intel configuration mechanism 1. (i386 and compatible only) | |
171 | .TP | |
172 | .B -H2 | |
173 | Use direct hardware access via Intel configuration mechanism 2. Warning: This method | |
174 | is able to address only first 16 devices on any bus and it seems to be very | |
175 | unrealiable in many cases. (i386 and compatible only) | |
176 | .TP | |
177 | .B -S | |
178 | Use PCI access syscalls. (Linux on Alpha and UltraSparc only) | |
179 | .TP | |
180 | .B -F <file> | |
181 | Extract all information from given file containing output of lspci -x. This is very | |
182 | useful for analysis of user-supplied bug reports, because you can display the | |
183 | hardware configuration in any way you want without disturbing the user with | |
184 | requests for more dumps. (All systems) | |
185 | .TP | |
186 | .B -G | |
187 | Increase debug level of the library. (All systems) | |
188 | ||
b2c9b373 MM |
189 | .SH EXAMPLES |
190 | .PP | |
191 | `setpci -d *:* latency_timer=40' sets the latency timer to 64 (40 hexadecimal). | |
192 | .PP | |
193 | `setpci -s 0 device_id vendor_id' lists ID's of devices in slot 0 in all busses. | |
194 | .PP | |
d4798a32 MM |
195 | `setpci -s 12:3.4 3c.l=1,2,3' writes longword 1 to register 3c, 2 to register 3d |
196 | and 3 to register 3e of device at bus 12, slot 3, function 4. | |
b2c9b373 | 197 | |
727ce158 MM |
198 | .SH SEE ALSO |
199 | .BR lspci (8) | |
200 | ||
b2c9b373 | 201 | .SH AUTHOR |
5a258860 | 202 | The Linux PCI Utilities are maintained by Martin Mares <mj@suse.cz>. |