| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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
|