pci man page on SmartOS

Man page or keyword search:  
man Server   16655 pages
apropos Keyword Search (all sections)
Output format
SmartOS logo
[printable version]

PCI(4)									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	 iden‐
       tify the device and its driver. The configuration parameters are repre‐
       sented in the form of name-value pairs that can be retrieved using  the
       DDI property interfaces. See ddi_prop_lookup(9F) for details.

       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 con‐
       figuration  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 proper‐

		     An arbitrary length array where each element of the array
		     consists of a 5-tuple of 32-bit values. Each  array  ele‐
		     ment  describes  a logically contiguous mappable resource
		     on the PCI bus or PCIe device tree.

		     The first three 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
		     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

		     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 functions, 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 corre‐
		     sponds 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 configuration	 space
		     is not allowed when running at a high-interrupt level.

		     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 handler 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  con‐
       struct 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 configu‐
       ration information supplied by a PCI or PCIe device. This change can be
       achieved by writing a driver configuration file that describes a proto‐
       type device node specification  containing  the	additional  properties

       For the system to merge the prototype node specification into an actual
       device node, certain 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 associated 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 identi‐
       fies  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-

       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 func‐
       tion number of 1.

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

       │Architecture   │ SPARC, x86	 │

       driver.conf(4),	      attributes(5),	     ddi_intr_add_handler(9F),
       ddi_prop_lookup(9F), ddi_regs_map_setup(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  configura‐
       tion space.

				 May 13, 2005				PCI(4)

List of man pages available for SmartOS

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net