Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ Device Drivers: PCI Functions

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Device Drivers: PCI Functions


Device Drivers: PCI Functions

Described here are the functions that kernel-loaded drivers can use to get information about devices that are attached to the PCI bus. For more information on the PCI bus, refer to the PCI specification:

  • PCI Local Bus Specification, revision 2.1, June 1, 1995, PCI Special Interest Group, PO Box 14070, Portland OR 97214, (800) 433-5177 or (503) 797-4207


    get_nth_pci_info(), pci_info

    Declared in: be/drivers/PCI.h

          long get_nth_pci_info(long index, pci_info *info)
    
          typdef struct {...} pci_info

    get_nth_pci_info() returns a pci_info structure for the index'th PCI device currently attached to the computer. Indices begin at 0; there are no gaps in the list.

    The pci_info structure contains some common fields and a device-specific header:

    Field Meaning
    ushort vendor_id An identifier for the manufacturer of the device.
    ushort device_id An identifier for the device, assigned by the vendor.
    uchar bus The bus the device is on.
    uchar device The bus-relative device number.
    uchar function The function number in the device.
    uchar revision A device-specific version number, assigned by the vendor.
    uchar class_api The type of register-level interface to the device (the lower byte of the class code field).
    uchar class_sub The type of function the device performs (the middle byte of the class code field).
    uchar class_base The broadly-defined device type (the upper byte of the class code field).
    uchar line_size The size of the system cache line, in units of 32 bit words.
    uchar latency The latency timer for the PCI bus master.
    uchar bist The contents of the register for the built-in self test.
    uchar header_type The header type.
    union u A device-specific header structure.

    The definition of the structures that the u union points to is given in be/drivers/PCI.h. Currently, there are two structures, one for You'll also find a number of constants that you can use to test various fields of a pci_info structure.

    • B_NO_ERROR. The device was found.
    • B_ERROR.,index is out-of-range.


    read_pci_config(), write_pci_config()

    Declared in: <drivers/PCI.h>

          long read_pci_config(uchar bus, uchar device, uchar function, 
             long offset, long size)
    
          void write_pci_config(uchar bus, uchar device, uchar function, 
             long offset, long size, long value)

    These functions read from and write to the PCI configuration register space.

    • The bus, device, and function arguments identify the device's configuration space. Their values can be gotten from the bus, device, and function fields of the pci_info structure provided by get_nth_pci_info().

    • offset is an offset to the location in the 256-byte configuration space that is to be read or written, and size is the number of bytes to be read from that location or written to it. Permitted sizes are 1, 2, and 4 bytes.






    The Be Book, in lovely HTML, for BeOS Release 3.

    Copyright © 1998 Be, Inc. All rights reserved.

    Last modified March 27, 1998.

  • Typewritten Software • bear@typewritten.org • Edmonds, WA 98026