setpci(8)	       Linux PCI Utilities		setpci(8)


NAME
       setpci - configure PCI devices

SYNOPSIS
       setpci [options] devices operations...


DESCRIPTION
       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 util-
       ities  have  to use direct hardware access which is avail-
       able only to root and it suffers from numerous race condi-
       tions and other problems.

       All numbers are entered in hexadecimal notation.


OPTIONS
       -v     Tells  setpci  to	 be  verbose and display detailed
	      information about configuration space accesses.

       -f     Tells setpci not to complain when	 there's  nothing
	      to  do (when no devices are selected).  This option
	      is intended for use in widely-distributed	 configu-
	      ration  scripts  where  it's  uncertain whether the
	      device in question is present  in	 the  machine  or
	      not.

       -D     `Demo   mode'   --   simulate  configuration  space
	      accesses instead of really doing them.  It's useful
	      to try setpci -vD to see what your complex sequence
	      of setpci operations does before you actually  exe-
	      cute it.

       --version
	      Shows  setpci  version.  This option should be used
	      standalone.



DEVICE SELECTION
       Before each sequence of	operations  you	 need  to  select
       which devices you wish that operation to affect.

       -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
	      hexadecimal.  E.g., "0:" means all devices  on  bus
	      0,  "0" means all functions of device 0 on any bus,



pciutils-2.1.9		 04 November 2001			1





setpci(8)	       Linux PCI Utilities		setpci(8)


	      "0.3" selects third function of  device  0  on  all
	      busses  and  ".4"	 selects  only fourth function of
	      each device.

       -d [<vendor>]:[<device>]
	      Select devices with specified vendor and device ID.
	      Both ID's are given in hexadecimal and may be omit-
	      ted or given as "*" meaning "any value".


OPERATIONS
       To query value of a configuration register, just	 name  it
       (either	by  typing its name or by typing register address
       with optional .B, .W  or	 .L  suffix  specifying	 register
       width as byte, word or longword).

       To  set a register, write reg=values where reg is the same
       you would use to query the register and values is a comma-
       separated  list	of values you want to write starting with
       the given address.


REGISTER NAMES
       setpci knows the following configuration	 register  names.
       See  PCI	 bus  specs  for their precise meaning or consult
       /usr/include/linux/pci.h for few comments.

       VENDOR_ID
       DEVICE_ID
       COMMAND
       STATUS
       REVISION
       CLASS_PROG
       CLASS_DEVICE
       CACHE_LINE_SIZE
       LATENCY_TIMER
       HEADER_TYPE
       BIST
       BASE_ADDRESS_0
       BASE_ADDRESS_1
       BASE_ADDRESS_2
       BASE_ADDRESS_3
       BASE_ADDRESS_4
       BASE_ADDRESS_5
       CARDBUS_CIS
       SUBSYSTEM_VENDOR_ID
       SUBSYSTEM_ID
       ROM_ADDRESS
       INTERRUPT_LINE
       INTERRUPT_PIN
       MIN_GNT
       MAX_LAT
       PRIMARY_BUS
       SECONDARY_BUS



pciutils-2.1.9		 04 November 2001			2





setpci(8)	       Linux PCI Utilities		setpci(8)


       SUBORDINATE_BUS
       SEC_LATENCY_TIMER
       IO_BASE
       IO_LIMIT
       SEC_STATUS
       MEMORY_BASE
       MEMORY_LIMIT
       PREF_MEMORY_BASE
       PREF_MEMORY_LIMIT
       PREF_BASE_UPPER32
       PREF_LIMIT_UPPER32
       IO_BASE_UPPER16
       IO_LIMIT_UPPER16
       BRIDGE_ROM_ADDRESS
       BRIDGE_CONTROL
       CB_CARDBUS_BASE
       CB_CAPABILITIES
       CB_SEC_STATUS
       CB_BUS_NUMBER
       CB_CARDBUS_NUMBER
       CB_SUBORDINATE_BUS
       CB_CARDBUS_LATENCY
       CB_MEMORY_BASE_0
       CB_MEMORY_LIMIT_0
       CB_MEMORY_BASE_1
       CB_MEMORY_LIMIT_1
       CB_IO_BASE_0
       CB_IO_BASE_0_HI
       CB_IO_LIMIT_0
       CB_IO_LIMIT_0_HI
       CB_IO_BASE_1
       CB_IO_BASE_1_HI
       CB_IO_LIMIT_1
       CB_IO_LIMIT_1_HI
       CB_SUBSYSTEM_VENDOR_ID
       CB_SUBSYSTEM_ID
       CB_LEGACY_MODE_BASE


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  avail-
       able  access  method  and  displays no debugging messages.
       Each switch is accompanied by a list of	hardware/software
       configurations it's supported in.


       -P <dir>
	      Use  Linux 2.1 style configuration access to direc-
	      tory <dir> instead of /proc/bus/pci. (Linux 2.1  or
	      newer only)



pciutils-2.1.9		 04 November 2001			3





setpci(8)	       Linux PCI Utilities		setpci(8)


       -H1    Use  direct hardware access via Intel configuration
	      mechanism 1. (i386 and compatible only)

       -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)

       -S     Use PCI access syscalls. (Linux on Alpha and Ultra-
	      Sparc only)

       -F <file>
	      Extract  all information from given file containing
	      output of lspci -x. This is very useful for  analy-
	      sis  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)

       -G     Increase debug level of the library. (All systems)


EXAMPLES
       `setpci -d *:* latency_timer=40' sets the latency timer to
       64 (40 hexadecimal).

       `setpci -s 0 device_id vendor_id' lists ID's of devices in
       slot 0 in all busses.

       `setpci -s 12:3.4 3c.l=1,2,3' writes longword 1 to  regis-
       ter 3c, 2 to register 3d and 3 to register 3e of device at
       bus 12, slot 3, function 4.


SEE ALSO
       lspci(8)


AUTHOR
       The Linux PCI Utilities are  maintained	by  Martin  Mares
       <mj@ucw.cz>.















pciutils-2.1.9		 04 November 2001			4


