pci(5) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

pci(5)

pci(5)                           File Formats                           pci(5)



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(5)  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:



           tab(); lw(1.38i) lw(4.13i) Bits 0 - 78-bit register number Bits 8 -
           103-bit  function  number Bits 11 - 155-bit device number Bits 16 -
           238-bit bus number Bits 24 - 252-bit address space type  identifier
           Bits 31 - 28T{ Register number extended bits 8:11 for extended con‐
           fig space. Zero for conventional configuration space.  T}

           The address space type identifier can be interpreted as follows:



           tab(); lw(1.38i)  lw(4.13i)  0x0configuration  space  0x1I/O  space
           0x232-bit memory space address 0x364-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.

           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:



       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 Adapter
         # 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
       Mbit/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(7) for descriptions of the following attributes:


       tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE  TYPEAT‐
       TRIBUTE VALUE _ ArchitectureSPARC, x86


SEE ALSO
       driver.conf(5),         attributes(7),        ddi_intr_add_handler(9F),
       ddi_prop_lookup(9F), ddi_regs_map_setup(9F)


       IEEE 1275 PCI Bus Binding

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.



Oracle Solaris 11.4               11 May 2021                           pci(5)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3