SVR5 and SCO OpenServer


pci -- data format of the PCI configuration space


   #include <sys/pci.h>


PCI configuration space is persistent memory that is used to store parameters for configured PCI devices.

The PCI configuration space accessed by SVR5 and SCO OpenServer drivers is the same, although the conventions used to access that space are different; see ``PCI'' in HDK Technical Reference for more information.

The figure below depicts the layout of the 64-byte predefined header portion of the 256-byte configuration space that every PCI device supports.

   31                    16 15                     0
   |       Device ID       |       Vendor ID       | 0x00
   |       Status          |       Command         | 0x04
   |            Class Code           |   Rev ID.   | 0x08
   |    BIST   | Hdr_Type  | Lat_Timer |Cache_Ln_Sz| 0x0c
   |                                               | 0x10
   |                                               | 0x14
   |                                               | 0x18
   |                                               | 0x1c
   |                                               | 0x20
   |                                               | 0x24
   |              Cardbus CIS Pointer**            | 0x28
   |     Subsystem ID**    | Subsystem Vendor ID** | 0x2c
   |       Expansion ROM base address              | 0x30
   |               Reserved                        | 0x34
   |               Reserved                        | 0x38
   |  Max_Lat  | Min_Gnt   | Intr Pin. | Intr line | 0x3c

** Field is reserved in PCI 2.0 specification

See the appropriate version of the PCI Local Bus Specification for details on the configuration header fields.


SVR5 and SCO OpenServer drivers use different conventions to access PCI configuration space. See ``PCI'' in HDK Technical Reference for information about accessing PCI configuration space from the command line; the following information discusses how device driver code accesses PCI configuration information.

DDI access to PCI configuration information

DDI drivers can access PCI configuration space in the following ways:

ODDI access to PCI configuration information

SCO OpenServer ODDI drivers access PCI configuration space using the functions documented on the pci_read(D3oddi) and pci_write(D3oddi) manual pages.

HPCI access to PCI configuration information

HPCD drivers that use the HPCI interface can access all fields in PCI configuration space using the functions documented on the pci_read(D3hpci) and pci_write(D3hpci) manual pages.

Hardware applicability

x86/Pentium compatible architectures with a PCI bus configured.

Version pplicability

ddi: 1, 2, 3, 4, 5, 5mp, 6, 6mp, 7, 7mp, 7.1, 7.1mp, 8, 8mp

oddi: 3, 3mp, 4, 4mp, 5, 5mp, 6, 6mp

SCO OpenServer and SVR5 compatibility

The configuration space layout is determined by industry standards boards; drivers written for SVR5 and SCO OpenServer access the same configuration space, although they use different methods for that access. See ``PCI'' in HDK Technical Reference for details about how drivers on both platforms access device configuration space.


cm_read_devconfig(D3), cm_write_devconfig(D3), cm_params(D5)

pci(HW), cm_params(D5), eisa_parse_devconfig(D3), pci_read(D3oddi), pci_write(D3oddi), pci(D4oddi)

``PCI'' in HDK Technical Reference
PCI Local Bus Specification, Revision 2.0

19 June 2005
© 2005 The SCO Group, Inc. All rights reserved.
OpenServer 6 and UnixWare (SVR5) HDK - June 2005