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 either
69 they are linked has established a link with the host, the PCI controller
81 EPC APIs for the PCI Endpoint Function Driver
84 This section lists the APIs that the PCI Endpoint core provides to be used
85 by the PCI endpoint function driver.
89 The PCI endpoint function driver should use pci_epc_write_header() to
94 The PCI endpoint function driver should use pci_epc_set_bar() to configure
95 the Base Address Register in order for the host to assign PCI addr space.
101 The PCI endpoint function driver should use pci_epc_clear_bar() to reset
106 The PCI endpoint function driver should use pci_epc_raise_irq() to raise
111 The PCI endpoint function driver should use pci_epc_mem_alloc_addr(), to
117 The PCI endpoint function driver should use pci_epc_mem_free_addr() to
122 A PCI endpoint function driver should use pci_epc_map_addr() to map to a RC
123 PCI address the CPU address of local memory obtained with
128 A PCI endpoint function driver should use pci_epc_unmap_addr() to unmap the
133 A PCI endpoint controller may impose constraints on the RC PCI addresses that
137 allocated with pci_epc_mem_alloc_addr() for successfully mapping a RC PCI
138 address range. This function will also indicate the size of the PCI address
141 RC PCI address range.
145 A PCI endpoint function driver can use pci_epc_mem_unmap() to unmap and free
153 the EPF device with EPC device. pci-ep-cfs.c can be used as reference for
158 Get a reference to the PCI endpoint controller based on the device name of
163 Release the reference to the PCI endpoint controller obtained using
168 Add a PCI endpoint function to a PCI endpoint controller. A PCIe device
173 Remove the PCI endpoint function from PCI endpoint controller.
177 The PCI endpoint function driver should invoke pci_epc_start() once it
178 has configured the endpoint function and wants to start the PCI link.
182 The PCI endpoint function driver should invoke pci_epc_stop() to stop
183 the PCI LINK.
186 PCI Endpoint Function(EPF) Library
192 EPF APIs for the PCI Endpoint Function Driver
195 This section lists the APIs that the PCI Endpoint core provides to be used
196 by the PCI endpoint function driver.
200 The PCI Endpoint Function driver should implement the following ops:
207 The PCI Function driver can then register the PCI EPF driver by using
212 The PCI Function driver can unregister the PCI EPF driver by using
217 The PCI Function driver can allocate space for a particular BAR using
222 The PCI Function driver can free the allocated space
225 APIs for the PCI Endpoint Controller Library
228 This section lists the APIs that the PCI Endpoint core provides to be used
229 by the PCI endpoint controller library.
233 The PCI endpoint controller library invokes pci_epf_linkup() when the
241 pci-ep-cfs.c can be used as reference for using these APIs.
245 Create a new PCI EPF device by passing the name of the PCI EPF device.
250 Destroy the created PCI EPF device.