.Cd "# alpha"
.Cd "pci* at apecs?"
.Cd "pci* at cia?"
.Cd "pci* at irongate?"
.Cd "pci* at lca?"
.Cd "pci* at tsp?"
.Cd "pci* at mcpcia?"
.Cd "# amd64, i386"
.Cd "pci* at mainbus0"
.Cd "# armish"
.Cd "pci* at iopxs0"
.Cd "# hppa"
.Cd "pci* at dino?"
.Cd "pci* at elroy?"
.Cd "# landisk"
.Cd "pci* at shpcic?"
.Cd "# macppc"
.Cd "pci* at mpcpcibr?"
.Cd "pci* at ht?"
.Cd "# sgi"
.Cd "pci* at macepcibr?"
.Cd "# sparc64"
.Cd "pci* at psycho?"
.Cd "pci* at schizo?"
.Cd "pci* at pyro?"
.Cd "pci* at vpci?"
.Cd "# all architectures"
.Cd "pci* at pchb?"
.Cd "pci* at ppb?"
DESCRIPTION
The system includes a machine-independent
PCI
bus subsystem and
several machine-independent
PCI
device drivers.
Note that interrupt mappings on the i386 may require that you configure
your BIOS to reserve sufficient interrupts as "PCI/ISAPnP" so that there
are sufficient interrupts remaining to configure the discovered PCI
devices.
For more information, see
pcibios(4).
OpenBSD
provides support for the following devices.
Note that not all architectures support all devices.
If the kernel is compiled with the
USER_PCICONF
kernel option, the following
ioctl(2)
calls are supported by the
pci
driver.
They are defined in the header file
sys/pciio.h.
PCIOCREAD
This
ioctl(2)
reads the
PCI
configuration registers specified by the passed-in
pci_io
structure.
The
pci_io
structure consists of the following fields:
pi_sel
A
pcisel
structure which specifies the bus, slot and function the user would like to
query.
pi_reg
The
PCI
configuration register the user would like to access.
pi_width
The width, in bytes, of the data the user would like to read.
This value can be only 4.
pi_data
The data returned by the kernel.
PCIOCWRITE
This
ioctl(2)
allows users to write to the
PCI
specified in the passed-in
pci_io
structure.
The
pci_io
structure is described above.
The limitations on data width described for
reading registers, above, also apply to writing
PCI
configuration registers.
The machine-independent
PCI
subsystem appeared in
OpenBSD 1.2.
Support for device listing and matching was re-implemented by
Kenneth Merry, and first appeared in
FreeBSD 3.0.