Lines Matching full:pci
5 This document is a guide to use the PCI Endpoint Framework in order to create
12 Linux has a comprehensive PCI subsystem to support PCI controllers that
13 operates in Root Complex mode. The subsystem has capability to scan PCI bus,
14 assign memory resources and IRQ resources, load PCI driver (based on
18 However the PCI controller IP integrated in some SoCs is capable of operating
19 either in Root Complex mode or Endpoint mode. PCI Endpoint Framework will
24 PCI Endpoint Core
27 The PCI Endpoint Core layer comprises 3 components: the Endpoint Controller
31 PCI Endpoint Controller(EPC) Library
38 APIs for the PCI controller Driver
41 This section lists the APIs that the PCI Endpoint core provides to be used
42 by the PCI controller driver.
46 The PCI controller driver should implement the following ops:
51 * alloc_addr_space: ops to allocate in PCI controller address space
54 * start: ops to start the PCI link
55 * stop: ops to stop the PCI link
57 The PCI controller driver can then create a new EPC device by invoking
62 The PCI controller driver can destroy the EPC device created by
68 they are linked has established a link with the host, the PCI controller
80 EPC APIs for the PCI Endpoint Function Driver
83 This section lists the APIs that the PCI Endpoint core provides to be used
84 by the PCI endpoint function driver.
88 The PCI endpoint function driver should use pci_epc_write_header() to
93 The PCI endpoint function driver should use pci_epc_set_bar() to configure
94 the Base Address Register in order for the host to assign PCI addr space.
100 The PCI endpoint function driver should use pci_epc_clear_bar() to reset
105 The PCI endpoint function driver should use pci_epc_raise_irq() to raise
110 The PCI endpoint function driver should use pci_epc_mem_alloc_addr(), to
116 The PCI endpoint function driver should use pci_epc_mem_free_addr() to
121 A PCI endpoint function driver should use pci_epc_map_addr() to map to a RC
122 PCI address the CPU address of local memory obtained with
127 A PCI endpoint function driver should use pci_epc_unmap_addr() to unmap the
132 A PCI endpoint controller may impose constraints on the RC PCI addresses that
136 allocated with pci_epc_mem_alloc_addr() for successfully mapping a RC PCI
137 address range. This function will also indicate the size of the PCI address
140 RC PCI address range.
144 A PCI endpoint function driver can use pci_epc_mem_unmap() to unmap and free
152 the EPF device with EPC device. pci-ep-cfs.c can be used as reference for
157 Get a reference to the PCI endpoint controller based on the device name of
162 Release the reference to the PCI endpoint controller obtained using
167 Add a PCI endpoint function to a PCI endpoint controller. A PCIe device
172 Remove the PCI endpoint function from PCI endpoint controller.
176 The PCI endpoint function driver should invoke pci_epc_start() once it
177 has configured the endpoint function and wants to start the PCI link.
181 The PCI endpoint function driver should invoke pci_epc_stop() to stop
182 the PCI LINK.
185 PCI Endpoint Function(EPF) Library
191 EPF APIs for the PCI Endpoint Function Driver
194 This section lists the APIs that the PCI Endpoint core provides to be used
195 by the PCI endpoint function driver.
199 The PCI Endpoint Function driver should implement the following ops:
206 The PCI Function driver can then register the PCI EPF driver by using
211 The PCI Function driver can unregister the PCI EPF driver by using
216 The PCI Function driver can allocate space for a particular BAR using
221 The PCI Function driver can free the allocated space
224 APIs for the PCI Endpoint Controller Library
227 This section lists the APIs that the PCI Endpoint core provides to be used
228 by the PCI endpoint controller library.
232 The PCI endpoint controller library invokes pci_epf_linkup() when the
240 pci-ep-cfs.c can be used as reference for using these APIs.
244 Create a new PCI EPF device by passing the name of the PCI EPF device.
249 Destroy the created PCI EPF device.