Unix/Linux Go Back    

OpenSolaris 2009.06 - man page for pci (opensolaris section 4)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)

pci(4)					   File Formats 				   pci(4)

       pci, pcie - configuration files for PCI and PCI Express device drivers

       The Peripheral Component Interconnect (PCI) bus is a little endian bus. PCI Express (PCIe)
       and PCI-X are successors to PCI. All three types of devices share the  same  configuration
       parameters.  What  is specified here for PCI devices applies to PCI-X 1.0 devices as well.
       All three types of devices are self-identifying, which means that  these  devices  provide
       configuration  parameters  to  the system that allow the system to identify the device and
       its driver. The configuration 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

       The bus properties of PCI devices or logical bus properties of PCIe  devices  are  derived
       from  PCI  configuration  space,  or  supplied by the Fcode PROM, if it exists. Therefore,
       driver configuration files are not necessary for these devices.

       On some occasions, drivers for PCI and PCIe devices can use driver configuration files  to
       provide	 driver   private   properties	 through   the	global	property  mechanism.  See
       driver.conf(4) for further details. Driver configuration files can also be used to augment
       or override properties for a specific instance of a driver.

       All bus drivers of PCI and PCIe devices recognize the following properties:

       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  contigu-
		     ous mappable resource on the PCI bus or PCIe device tree.

		     The  first  three values in the 5-tuple describe the PCI address of the map-
		     pable resource. The first tuple contains 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
		     Bits 31 - 28	  Register number extended bits  8:11
					  for extended config space. Zero for
					  conventional configuration space.

		     The address space type identifier can be interpreted as follows:

		     0x0		  configuration space
		     0x1		  I/O space
		     0x2		  32-bit memory space address
		     0x3		  64-bit memory space address

		     The bus number is a unique identifying number assigned to each  PCI  bus  or
		     PCIe logical bus within its domain.

		     The  device number is a unique identifying number assigned to each device on
		     a PCI bus or PCIe logical bus. Note that a  device  number  is  unique  only
		     within the set of device numbers for a particular bus or logical bus.

		     Each  PCI	or  PCIe device can have one to eight logically independent func-
		     tions, each with its own independent set of  configuration  registers.  Each
		     function  on  a device is assigned a function number. For a device with only
		     one function, the function number must be 0.

		     The register number fields select a particular register within  the  set  of
		     configuration  registers  corresponding  to  the selected function. When the
		     address space type identifier indicates configuration space, non-zero regis-
		     ter number extended bits select registers in extended configuration space.

		     The  second  and third values in the reg property 5-tuple specify the 64-bit
		     address of the mappable resource within the PCI or PCIe address domain.  The
		     second  32-bit  tuple corresponds to the high order four 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  con-
		     figuration 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
		     contents of the device's configuration-interrupt-pin register.

		     A	driver should use an index value of 0 when registering its interrupt han-
		     dler with the DDI interrupt interfaces.

       All PCI and PCIe 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 might be necessary to override or augment  the  configuration  information
       supplied by a PCI or PCIe device. This change can be achieved by writing a driver configu-
       ration 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, cer-
       tain conditions must be met.

	   o	  First, the name property must be identical. The  value  of  the  name  property
		  needs  to  match  the  binding name of the device. The binding name is the name
		  chosen by the system to bind a driver to a device and is either an alias  asso-
		  ciated with the driver or the hardware node name of the device.

	   o	  Second, the parent property must identify the PCI bus or PCIe logical bus.

	   o	  Third,  the  unit-address  property  must  identify the card. The format of the
		  unit-address property is:


       where DD is the device number and F is the function number. If the function number  is  0,
       only DD is specified.

       Example 1 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;

       In this example, a property scsi-initiator-id specifies the SCSI bus initiator id that the
       adapter	should use, for just one particular instance of adapter installed in the machine.
       The name property identifies 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 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  properties	apply  to
       all device nodes of the ACME,scsi-hba.

       Configuration  files for PCIe devices are similar. Shown below is an example configuration
       file called ACME,pcie-widget.conf for a PCIe driver called ACME,pcie-widget.

	 # Copyright (c) 2005, ACME PCIe Widget Adapter
	 # ident   "@(#)ACME,pcie-widget.conf  1.1  05/11/14"
	 name="ACME,pcie-widget" parent="/pci@780" unit-address="2,1"

       In this example, we provide a property debug-mode for a particular PCIe device. As before,
       the  logical bus is identified by the pathname of the parent of the device. The device has
       a device number of 2, and a function number of 1.

       See attributes(5) for descriptions of the following attributes:

       |      ATTRIBUTE TYPE	     |	    ATTRIBUTE VALUE	   |
       |Architecture		     |SPARC, x86		   |

       driver.conf(4),	   attributes(5),     ddi_intr_add_handler(9F),      ddi_prop_lookup(9F),

       Writing Device Drivers

       IEEE 1275 PCI Bus Binding


       PCIe  devices  support  an  extended configuration space unavailable to PCI devices. While
       PCIe devices can be operated using a PCI device driver, operating them using a PCIe device
       driver  can  make  use  of the extended properties and features made available only in the
       extended configuration space.

SunOS 5.11				   13 May 2005					   pci(4)
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums

All times are GMT -4. The time now is 04:11 AM.