SunOS man pages : pci (4)
File Formats pci(4)
NAME
pci - configuration files for PCI device drivers
DESCRIPTION
The Peripheral Component Interconnect (PCI) bus is a little
endian bus. PCI devices are self-identifying - that is to
say the PCI device provides configuration parameters to the
system which allows the
system to identify the device and its driver. The confi-
guration parameters are represented in the form of name-
value pairs that can be retrieved using the DDI property
interfaces. See ddi_prop_lookup(9F) for details.
The PCI bus properties are derived from PCI Configuration
Space, or supplied by the Fcode PROM if it exists. There-
fore, driver configuration files are not necessary for
these devices.
However, on some occasions, drivers for PCI devices may use
driver configuration files to provide driver private proper-
ties. This can be done through global property mechanism.
See driver.conf(4) for further details. Driver configura-
tion files can also be used to augment or override proper-
ties for a specific instance of a driver.
All bus drivers of class pci recognize the following pro-
perties:
reg An arbitrary length array where each element of the
array consists of a 5-tuple of 32-bit values. Each
array element describes a logically contiguous mappa-
ble resource on the PCI bus.
The first 3 values in the 5-tuple describe the PCI
address of the mappable resource. The first tuple con-
tains the following information:
Bits 0 - 7 8-bit Register number
Bits 8 - 10 3-bit Function number
Bits 11 - 15 5-bit Device number
Bits 16 - 23 8-bit Bus number
Bits 24 - 25 2-bit Address Space type identifier
The Address Space type identifier may be interpreted
as follows:
0x0 Configuration Space
0x1 I/O Space
0x2 32-bit Memory Space address
0x3 64-bit Memory Space address
SunOS 5.8 Last change: 4 Mar 1997 1
File Formats pci(4)
The Bus number is a unique identifying number assigned
to each PCI bus within a PCI domain.
The Device number is a unique identifying number
assigned to each
PCI device on a PCI bus. Note that a Device number
is only unique within the
set of Device numbers for a particular bus.
Each PCI device can have 1 to 8 logically independent
functions, each with its own independent set of confi-
guration registers. Each function on a device is
assigned a Function number. For a PCI device with
only one function, the Function number must be 0.
The Register number field selects a particular regis-
ter within the set of configuration registers
corresponding to the selected function.
The second and third values in the reg property 5-
tuple specify the 64-bit address of the mappable
resource within the PCI address domain. The second
32-bit tuple corresponds to the high order 4 bytes of
the 64-bit address. The third 32-bit tuple corresponds
to the low order bytes.
The fourth and fifth 32-bit values in the 5-tuple reg
property specify the size of the mappable resource.
The size is a 64-bit value where the fourth tuple
corresponds to the high order bytes of the 64-bit size
and the fifth corresponds to the low order.
The driver can refer to the elements of this array by
index, and construct kernel mappings to these
addresses using ddi_regs_map_setup(9F). The index into
the array is passed as the rnumber argument of
ddi_regs_map_setup(9F).
At a high-level interrupt context, you can use the
ddi_get* and ddi_put* family of functions to access
I/O and memory space. However, access to configura-
tion space is not allowed when running at a high-
interrupt level.
interrupts
This property consists of a single integer element
array. Valid interrupt property values are 1, 2, 3,
and 4. This value is derived directly from the con-
tents of the device's Configuration Interrupt Pin
register.
A driver should use an index value of 0 when
SunOS 5.8 Last change: 4 Mar 1997 2
File Formats pci(4)
registering its interrupt handler with
ddi_add_intr(9F).
All PCI devices support the reg property. The Device number
and Function number as derived from the reg property are
used to construct the address part of the device
name under /devices.
Only devices that generate interrupts support an interrupts
property.
Occasionally it may be necessary to override or augment the
configuration information supplied by a PCI device. This can
be achieved by writing a driver configuration file that
describes a prototype device node specification containing
the additional properties required.
For the system to merge the prototype node specification
into an actual device node, certain conditions must be met.
First, the name property must be identical. Second, the
parent property must identify the PCI bus. Third, the
unit-address property must identify the card. The format of
the unit-address property is
DD[,F]
where DD is the device number and F is the function number.
If the function number is 0, only DD is specified.
EXAMPLES
Example 1: A sample configuration file.
An example configuration file called ACME,scsi-hba.conf for
a PCI driver called ACME,scsi-hba follows:
#
# Copyright (c) 1995, ACME SCSI Host Bus Adaptor
# ident "@(#)ACME,scsi-hba.conf 1.1 96/02/04"
name="ACME,scsi-hba" parent="/pci@1,0/pci@1f,4000"
unit-address="3" scsi-initiator-id=6;
hba-advanced-mode="on";
hba-dma-speed=10;
In this example, we provide a property scsi-initiator-id to
specify the SCSI bus initiator id that the adapter should
use, for just one particular instance of adapter installed
in the machine. We use the name property to identify the
driver and the parent property to identify the particular
bus the card is plugged into. This example uses the
parent's full path name to identify the bus. The unit-
address property identifies the card itself, with device
SunOS 5.8 Last change: 4 Mar 1997 3
File Formats pci(4)
number of 3 and function number of 0.
Two global driver properties are also created: hba-
advanced-mode (which has the string value on) and hba-
dma-speed (which has the value 10 M bit/s). These proper-
ties apply to all device nodes of the ACME,scsi-hba. The
following is an example configuration file called
ACME,foo.conf for a PCI driver called ACME,foo;
#
# Copyright (c) 1996, ACME Foo driver
# ident "@(#)ACME,foo.conf 1.1 95/11/14"
name="ACME,foo" class="pci" unit-address="3,1"
debug-mode=12;
In this example, we provide a property debug-mode for all
instances of the ACME,foo driver with parents of class pci
and device and function numbers of 3 and 1, respectively.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Architecture | SPARC, IA |
|_____________________________|_____________________________|
SEE ALSO
driver.conf(4), attributes(5), ddi_add_intr(9F),
ddi_prop_lookup(9F), ddi_regs_map_setup(9F)
Writing Device Drivers
IEEE 1275 PCI Bus Binding
SunOS 5.8 Last change: 4 Mar 1997 4
|
 |
|
|