pcie man page on SunOS

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

pci(4)				 File Formats				pci(4)

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

DESCRIPTION
       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‐
       ties:

       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 logi‐
	   cally  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	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
	   functions,  each with its own independent set of configuration reg‐
	   isters. 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	 func‐
	   tion.  When	the address space type identifier indicates configura‐
	   tion space, non-zero register 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 cor‐
	   responds 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.  How‐
	   ever,  access to configuration 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 inter‐
	   rupt 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
       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. The value of the name
	    property needs to match the binding name of the device. The	 bind‐
	    ing	 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.

	 ·  Second, the parent property must identify the PCI bus or PCIe log‐
	    ical bus.

	 ·  Third, the unit-address property must identify the card. The  for‐
	    mat 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: 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,  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-
       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"
       debug-mode=12;

       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.

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

       ┌─────────────────────────────┬─────────────────────────────┐
       │      ATTRIBUTE TYPE	     │	    ATTRIBUTE VALUE	   │
       ├─────────────────────────────┼─────────────────────────────┤
       │Architecture		     │SPARC, x86		   │
       └─────────────────────────────┴─────────────────────────────┘

SEE ALSO
       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

       http://playground.sun.com/1275/bindings/pci/pci-express.txt

NOTES
       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.

SunOS 5.10			  13 May 2005				pci(4)
[top]

List of man pages available for SunOS

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]
Tweet
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