mirror of https://gitee.com/openkylin/linux.git
Documentation: PCI: Guide to use PCI endpoint configfs
Add Documentation to help users use PCI endpoint to configure PCI endpoint function and to bind the endpoint function with endpoint controller. Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com> Acked-By: Joao Pinto <jpinto@synopsys.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
d746799116
commit
bea37d3d31
|
@ -14,3 +14,5 @@ pcieaer-howto.txt
|
||||||
- the PCI Express Advanced Error Reporting Driver Guide HOWTO
|
- the PCI Express Advanced Error Reporting Driver Guide HOWTO
|
||||||
endpoint/pci-endpoint.txt
|
endpoint/pci-endpoint.txt
|
||||||
- guide to add endpoint controller driver and endpoint function driver.
|
- guide to add endpoint controller driver and endpoint function driver.
|
||||||
|
endpoint/pci-endpoint-cfs.txt
|
||||||
|
- guide to use configfs to configure the PCI endpoint function.
|
||||||
|
|
|
@ -0,0 +1,105 @@
|
||||||
|
CONFIGURING PCI ENDPOINT USING CONFIGFS
|
||||||
|
Kishon Vijay Abraham I <kishon@ti.com>
|
||||||
|
|
||||||
|
The PCI Endpoint Core exposes configfs entry (pci_ep) to configure the
|
||||||
|
PCI endpoint function and to bind the endpoint function
|
||||||
|
with the endpoint controller. (For introducing other mechanisms to
|
||||||
|
configure the PCI Endpoint Function refer to [1]).
|
||||||
|
|
||||||
|
*) Mounting configfs
|
||||||
|
|
||||||
|
The PCI Endpoint Core layer creates pci_ep directory in the mounted configfs
|
||||||
|
directory. configfs can be mounted using the following command.
|
||||||
|
|
||||||
|
mount -t configfs none /sys/kernel/config
|
||||||
|
|
||||||
|
*) Directory Structure
|
||||||
|
|
||||||
|
The pci_ep configfs has two directories at its root: controllers and
|
||||||
|
functions. Every EPC device present in the system will have an entry in
|
||||||
|
the *controllers* directory and and every EPF driver present in the system
|
||||||
|
will have an entry in the *functions* directory.
|
||||||
|
|
||||||
|
/sys/kernel/config/pci_ep/
|
||||||
|
.. controllers/
|
||||||
|
.. functions/
|
||||||
|
|
||||||
|
*) Creating EPF Device
|
||||||
|
|
||||||
|
Every registered EPF driver will be listed in controllers directory. The
|
||||||
|
entries corresponding to EPF driver will be created by the EPF core.
|
||||||
|
|
||||||
|
/sys/kernel/config/pci_ep/functions/
|
||||||
|
.. <EPF Driver1>/
|
||||||
|
... <EPF Device 11>/
|
||||||
|
... <EPF Device 21>/
|
||||||
|
.. <EPF Driver2>/
|
||||||
|
... <EPF Device 12>/
|
||||||
|
... <EPF Device 22>/
|
||||||
|
|
||||||
|
In order to create a <EPF device> of the type probed by <EPF Driver>, the
|
||||||
|
user has to create a directory inside <EPF DriverN>.
|
||||||
|
|
||||||
|
Every <EPF device> directory consists of the following entries that can be
|
||||||
|
used to configure the standard configuration header of the endpoint function.
|
||||||
|
(These entries are created by the framework when any new <EPF Device> is
|
||||||
|
created)
|
||||||
|
|
||||||
|
.. <EPF Driver1>/
|
||||||
|
... <EPF Device 11>/
|
||||||
|
... vendorid
|
||||||
|
... deviceid
|
||||||
|
... revid
|
||||||
|
... progif_code
|
||||||
|
... subclass_code
|
||||||
|
... baseclass_code
|
||||||
|
... cache_line_size
|
||||||
|
... subsys_vendor_id
|
||||||
|
... subsys_id
|
||||||
|
... interrupt_pin
|
||||||
|
|
||||||
|
*) EPC Device
|
||||||
|
|
||||||
|
Every registered EPC device will be listed in controllers directory. The
|
||||||
|
entries corresponding to EPC device will be created by the EPC core.
|
||||||
|
|
||||||
|
/sys/kernel/config/pci_ep/controllers/
|
||||||
|
.. <EPC Device1>/
|
||||||
|
... <Symlink EPF Device11>/
|
||||||
|
... <Symlink EPF Device12>/
|
||||||
|
... start
|
||||||
|
.. <EPC Device2>/
|
||||||
|
... <Symlink EPF Device21>/
|
||||||
|
... <Symlink EPF Device22>/
|
||||||
|
... start
|
||||||
|
|
||||||
|
The <EPC Device> directory will have a list of symbolic links to
|
||||||
|
<EPF Device>. These symbolic links should be created by the user to
|
||||||
|
represent the functions present in the endpoint device.
|
||||||
|
|
||||||
|
The <EPC Device> directory will also have a *start* field. Once
|
||||||
|
"1" is written to this field, the endpoint device will be ready to
|
||||||
|
establish the link with the host. This is usually done after
|
||||||
|
all the EPF devices are created and linked with the EPC device.
|
||||||
|
|
||||||
|
|
||||||
|
| controllers/
|
||||||
|
| <Directory: EPC name>/
|
||||||
|
| <Symbolic Link: Function>
|
||||||
|
| start
|
||||||
|
| functions/
|
||||||
|
| <Directory: EPF driver>/
|
||||||
|
| <Directory: EPF device>/
|
||||||
|
| vendorid
|
||||||
|
| deviceid
|
||||||
|
| revid
|
||||||
|
| progif_code
|
||||||
|
| subclass_code
|
||||||
|
| baseclass_code
|
||||||
|
| cache_line_size
|
||||||
|
| subsys_vendor_id
|
||||||
|
| subsys_id
|
||||||
|
| interrupt_pin
|
||||||
|
| function
|
||||||
|
|
||||||
|
[1] -> Documentation/PCI/endpoint/pci-endpoint.txt
|
Loading…
Reference in New Issue