pciio_get(D3)pciio_get(D3)NAME
pciio_get: pciio_intr_dev_get, pciio_intr_cpu_get, pciio_pio_dev_get,
pciio_pio_slot_get, pciio_pio_space_get, pciio_pio_pciaddr_get,
pciio_pio_mapsz_get, pciio_dma_dev_get, pciio_dma_slot_get,
pciio_info_get, pciio_info_dev_get, pciio_info_bus_get,
pciio_info_slot_get, pciio_info_function_get, pciio_info_vendor_id_get,
pciio_info_device_id_get - interrogate PCI infrastructure
SYNOPSIS
#include <sys/PCI/pciio.h>
vertex_hdl_t
pciio_intr_dev_get(pciio_intr_t intr)
vertex_hdl_t
pciio_intr_cpu_get(pciio_intr_t intr)
vertex_hdl_t
pciio_pio_dev_get(pciio_piomap_t piomap)
pciio_slot_t
pciio_pio_slot_get(pciio_piomap_t piomap)
pciio_space_t
pciio_pio_space_get(pciio_piomap_t piomap)
iopaddr_t
pciio_pio_pciaddr_get(pciio_piomap_t piomap)
ulong
pciio_pio_mapsz_get(pciio_piomap_t piomap)
vertex_hdl_t
pciio_dma_dev_get(pciio_dmamap_t dmamap)
pciio_slot_t
pciio_dma_slot_get(pciio_dmamap_t dmamap)
pciio_info_t
pciio_info_get(vertex_hdl_t vhdl)
vertex_hdl_t
pciio_info_dev_get(pciio_info_t info)
pciio_bus_t
pciio_info_bus_get(pciio_info_t info)
pciio_slot_t
pciio_info_slot_get(pciio_info_t info)
pciio_function_t
pciio_info_function_get(pciio_info_t info)
Page 1
pciio_get(D3)pciio_get(D3)
pciio_vendor_id_t
pciio_info_vendor_id_get(pciio_info_t info)
pciio_device_id_t
pciio_info_device_id_get(pciio_info_t info)
Arguments
intr A PCI interrupt object handle returned by pciio_intr_alloc().
piomap A PCI PIO map returned by pciio_piomap_alloc().
dmamap is a pciio_dmamap_t that was created by pciio_dmamap_alloc().
vhdl A pci connection point in the hardware graph, obtained as the
parameter to the attach call.
info A PCI info object returned by pciio_info_get().
DESCRIPTION
These routines are used to pull specific useful bits of information out
of the various opaque data structures used by the PCI infrastructure.
Few drivers will need to make use of these routines, but having them
available might save the driver from doing extra bookkeeping.
Interrupt Queries
Two functions fetch parameters from an interrupt object:
o pciio_intr_dev_get() returns the connection point of the interrupt
device.
o pciio_intr_cpu_get() returns the CPU that is the target of interrupts
for that PCI bus.
PIO Map Queries
Several functions return items based on a PIO map (see pciio_pio(D3)):
o pciio_pio_dev_get() returns the connection point of the mapped
device.
o pciio_pio_mapsz_get() returns the map maximum size.
o pciio_pio_pciaddr_get() returns the base address specified for the
map.
o pciio_pio_space_get() returns the target address space that was
specified.
o pciio_pio_slot_get() returns the slot number on the PCI bus for a
device.
Page 2
pciio_get(D3)pciio_get(D3)
DMA Map Queries
Two functions return items based on a DMA as map (see pciio_dma(D3)):
o pciio_dma_dev_get() returns the connection point of the mapped
device.
o pciio_dma_slot_get() returns the slot number on the PCI bus for a
device.
Info Structure Queries
The PCI infrastructure stores a version-dependent information structure
in the connection point for a PCI device. Several functions are provided
to retrieve and interrogate this structure. Those most likely to be
useful to a device driver are:
o pciio_info_get() returns a handle to the information structure. The
driver can save this handle at attach time to avoid the small
overhead of looking it up each time it is needed.
o pciio_info_dev_get() returns the vertex handle of the connection
point (from which the information structure was originally
retrieved).
o pciio_info_bus_get() returns the bus number, always 0 unless the
system has a PCI to PCI Bridge.
o pciio_info_slot_get() returns the PCI card slot number of the device.
o pciio_info_function_get() returns the PCI function number (0 unless
this device is on a multifunction card).
o pciio_info_vendor_id_get() returns the vendor ID configuration value
of the device.
o pciio_info_device_id_get() returns the device ID configuration value
of the device.
NOTES
Bus numbers are arbitrary, not necessarily sequential, and may not be
unique in large systems; they are only guaranteed to be unique across all
busses that are connected by PCI-to-PCI Bridges.
SEE ALSOpciio(D3), pciio_config(D3), pciio_dma(D3), pciio_error(D3),
pciio_intr(D3), pciio_pio(D3).
DIAGNOSTICSpciio_info_get() returns NULL if there is no pciio info structure
attached to that vertex.
Page 3
pciio_get(D3)pciio_get(D3)
Do not pass info as NULL to any of these functions, that would cause a
kernel panic.
Page 4