1menuconfig PCI
2	bool "PCI support"
3	default y if PPC
4	help
5	  Enable support for PCI (Peripheral Interconnect Bus), a type of bus
6	  used on some devices to allow the CPU to communicate with its
7	  peripherals.
8
9if PCI
10
11config DM_PCI
12	bool "Enable driver model for PCI"
13	depends on DM
14	help
15	  Use driver model for PCI. Driver model is the new method for
16	  orgnising devices in U-Boot. For PCI, driver model keeps track of
17	  available PCI devices, allows scanning of PCI buses and provides
18	  device configuration support.
19
20config DM_PCI_COMPAT
21	bool "Enable compatible functions for PCI"
22	depends on DM_PCI
23	help
24	  Enable compatibility functions for PCI so that old code can be used
25	  with CONFIG_DM_PCI enabled. This should be used as an interim
26	  measure when porting a board to use driver model for PCI. Once the
27	  board is fully supported, this option should be disabled.
28
29config PCI_AARDVARK
30	bool "Enable Aardvark PCIe driver"
31	default n
32	depends on DM_PCI
33	depends on DM_GPIO
34	depends on ARMADA_3700
35	help
36	  Say Y here if you want to enable PCIe controller support on
37	  Armada37x0 SoCs. The PCIe controller on Armada37x0 is based on
38	  Aardvark hardware.
39
40config PCI_PNP
41	bool "Enable Plug & Play support for PCI"
42	depends on PCI || DM_PCI
43	default y
44	help
45	  Enable PCI memory and I/O space resource allocation and assignment.
46
47config PCI_REGION_MULTI_ENTRY
48	bool "Enable Multiple entries of region type MEMORY in ranges for PCI"
49	depends on PCI || DM_PCI
50	default n
51	help
52	  Enable PCI memory regions to be of multiple entry. Multiple entry
53	  here refers to allow more than one count of address ranges for MEMORY
54	  region type. This helps to add support for SoC's like OcteonTX/TX2
55	  where every peripheral is on the PCI bus.
56
57config PCI_SRIOV
58	bool "Enable Single Root I/O Virtualization support for PCI"
59	depends on PCI || DM_PCI
60	default n
61	help
62	  Say Y here if you want to enable PCI Single Root I/O Virtualization
63	  capability support. This helps to enumerate Virtual Function devices
64	  if available on a PCI Physical Function device and probe for
65	  applicable drivers.
66
67config PCI_ARID
68        bool "Enable Alternate Routing-ID support for PCI"
69        depends on PCI || DM_PCI
70        default n
71        help
72          Say Y here if you want to enable Alternate Routing-ID capability
73          support on PCI devices. This helps to skip some devices in BDF
74          scan that are not present.
75
76config PCIE_ECAM_GENERIC
77	bool "Generic ECAM-based PCI host controller support"
78	default n
79	depends on DM_PCI
80	help
81	  Say Y here if you want to enable support for generic ECAM-based
82	  PCIe host controllers, such as the one emulated by QEMU.
83
84config PCI_PHYTIUM
85	bool "Phytium PCIe support"
86	depends on DM_PCI
87	help
88	  Say Y here if you want to enable PCIe controller support on
89	  Phytium SoCs.
90
91config PCIE_DW_MVEBU
92	bool "Enable Armada-8K PCIe driver (DesignWare core)"
93	depends on DM_PCI
94	depends on ARMADA_8K
95	help
96	  Say Y here if you want to enable PCIe controller support on
97	  Armada-8K SoCs. The PCIe controller on Armada-8K is based on
98	  DesignWare hardware.
99
100config PCIE_FSL
101	bool "FSL PowerPC PCIe support"
102	depends on DM_PCI
103	help
104	  Say Y here if you want to enable PCIe controller support on FSL
105	  PowerPC MPC85xx, MPC86xx, B series, P series and T series SoCs.
106	  This driver does not support SRIO_PCIE_BOOT feature.
107
108config PCI_MPC85XX
109	bool "MPC85XX PowerPC PCI support"
110	depends on DM_PCI
111	help
112	  Say Y here if you want to enable PCI controller support on FSL
113	  PowerPC MPC85xx SoC.
114
115config PCI_RCAR_GEN2
116	bool "Renesas RCar Gen2 PCIe driver"
117	depends on DM_PCI
118	depends on RCAR_32
119	help
120	  Say Y here if you want to enable PCIe controller support on
121	  Renesas RCar Gen2 SoCs. The PCIe controller on RCar Gen2 is
122	  also used to access EHCI USB controller on the SoC.
123
124config PCI_RCAR_GEN3
125	bool "Renesas RCar Gen3 PCIe driver"
126	depends on DM_PCI
127	depends on RCAR_GEN3
128	help
129	  Say Y here if you want to enable PCIe controller support on
130	  Renesas RCar Gen3 SoCs.
131
132config PCI_SANDBOX
133	bool "Sandbox PCI support"
134	depends on SANDBOX && DM_PCI
135	help
136	  Support PCI on sandbox, as an emulated bus. This permits testing of
137	  PCI feature such as bus scanning, device configuration and device
138	  access. The available (emulated) devices are defined statically in
139	  the device tree but the normal PCI scan technique is used to find
140	  then.
141
142config PCI_TEGRA
143	bool "Tegra PCI support"
144	depends on ARCH_TEGRA
145	depends on (TEGRA186 && POWER_DOMAIN) || (!TEGRA186)
146	help
147	  Enable support for the PCIe controller found on some generations of
148	  Tegra. Tegra20 has 2 root ports with a total of 4 lanes, Tegra30 has
149	  3 root ports with a total of 6 lanes and Tegra124 has 2 root ports
150	  with a total of 5 lanes. Some boards require this for Ethernet
151	  support to work (e.g. beaver, jetson-tk1).
152
153config PCI_OCTEONTX
154	bool "OcteonTX PCI support"
155	depends on (ARCH_OCTEONTX || ARCH_OCTEONTX2)
156	help
157	  Enable support for the OcteonTX/TX2 SoC family ECAM/PEM controllers.
158	  These controllers provide PCI configuration access to all on-board
159	  peripherals so it should only be disabled for testing purposes
160
161config PCI_XILINX
162	bool "Xilinx AXI Bridge for PCI Express"
163	depends on DM_PCI
164	help
165	  Enable support for the Xilinx AXI bridge for PCI express, an IP block
166	  which can be used on some generations of Xilinx FPGAs.
167
168config PCIE_LAYERSCAPE
169	bool
170	default n
171
172config PCIE_LAYERSCAPE_RC
173	bool "Layerscape PCIe Root Complex mode support"
174	depends on DM_PCI
175	select PCIE_LAYERSCAPE
176	help
177	  Enable Layerscape PCIe Root Complex mode driver support. The Layerscape
178	  SoC may have one or several PCIe controllers. Each controller can be
179	  configured to Root Complex mode by clearing the corresponding bit of
180	  RCW[HOST_AGT_PEX].
181
182config PCI_IOMMU_EXTRA_MAPPINGS
183	bool "Support for specifying extra IOMMU mappings for PCI"
184	depends on PCIE_LAYERSCAPE_RC
185	help
186	  Enable support for specifying extra IOMMU mappings for PCI
187	  controllers through a special env var called "pci_iommu_extra" or
188	  through a device tree property named "pci-iommu-extra" placed in
189	  the node describing the PCI controller.
190	  The intent is to cover SR-IOV scenarios which need mappings for VFs
191	  and PCI hot-plug scenarios. More documentation can be found under:
192	    arch/arm/cpu/armv8/fsl-layerscape/doc/README.pci_iommu_extra
193
194config PCIE_LAYERSCAPE_EP
195	bool "Layerscape PCIe Endpoint mode support"
196	depends on DM_PCI
197	select PCIE_LAYERSCAPE
198	select PCI_ENDPOINT
199	help
200	  Enable Layerscape PCIe Endpoint mode driver support. The Layerscape
201	  SoC may have one or several PCIe controllers. Each controller can be
202	  configured to Endpoint mode by setting the corresponding bit of
203	  RCW[HOST_AGT_PEX].
204
205config PCIE_LAYERSCAPE_GEN4
206	bool "Layerscape Gen4 PCIe support"
207	depends on DM_PCI
208	help
209	  Support PCIe Gen4 on NXP Layerscape SoCs, which may have one or
210	  several PCIe controllers. The PCIe controller can work in RC or
211	  EP mode according to RCW[HOST_AGT_PEX] setting.
212
213config FSL_PCIE_COMPAT
214	string "PCIe compatible of Kernel DT"
215	depends on PCIE_LAYERSCAPE_RC || PCIE_LAYERSCAPE_GEN4
216	default "fsl,ls1012a-pcie" if ARCH_LS1012A
217	default "fsl,ls1028a-pcie" if ARCH_LS1028A
218	default "fsl,ls1043a-pcie" if ARCH_LS1043A
219	default "fsl,ls1046a-pcie" if ARCH_LS1046A
220	default "fsl,ls2080a-pcie" if ARCH_LS2080A
221	default "fsl,ls1088a-pcie" if ARCH_LS1088A
222	default "fsl,lx2160a-pcie" if ARCH_LX2160A
223	default "fsl,ls2088a-pcie" if ARCH_LX2162A
224	default "fsl,ls1021a-pcie" if ARCH_LS1021A
225	help
226	  This compatible is used to find pci controller node in Kernel DT
227	  to complete fixup.
228
229config FSL_PCIE_EP_COMPAT
230	string "PCIe EP compatible of Kernel DT"
231	depends on PCIE_LAYERSCAPE_RC || PCIE_LAYERSCAPE_GEN4
232	default "fsl,lx2160a-pcie-ep" if ARCH_LX2160A
233	default "fsl,ls-pcie-ep"
234	help
235	  This compatible is used to find pci controller ep node in Kernel DT
236	  to complete fixup.
237
238config PCIE_INTEL_FPGA
239	bool "Intel FPGA PCIe support"
240	depends on DM_PCI
241	help
242	  Say Y here if you want to enable PCIe controller support on Intel
243	  FPGA, example Stratix 10.
244
245config PCIE_IPROC
246	bool "Iproc PCIe support"
247	depends on DM_PCI
248	help
249	  Broadcom iProc PCIe controller driver.
250	  Say Y here if you want to enable Broadcom iProc PCIe controller,
251
252config PCI_MVEBU
253	bool "Enable Armada XP/38x PCIe driver"
254	depends on ARCH_MVEBU
255	select DM_PCI
256	select MISC
257	help
258	  Say Y here if you want to enable PCIe controller support on
259	  Armada XP/38x SoCs.
260
261config PCI_KEYSTONE
262	bool "TI Keystone PCIe controller"
263	depends on DM_PCI
264	help
265	  Say Y here if you want to enable PCI controller support on AM654 SoC.
266
267config PCIE_MEDIATEK
268	bool "MediaTek PCIe Gen2 controller"
269	depends on DM_PCI
270	depends on ARCH_MEDIATEK
271	help
272	  Say Y here if you want to enable Gen2 PCIe controller,
273	  which could be found on MT7623 SoC family.
274
275config PCIE_ROCKCHIP
276	bool "Enable Rockchip PCIe driver"
277	depends on ARCH_ROCKCHIP
278	select DM_PCI
279	select PHY_ROCKCHIP_PCIE
280	default y if ROCKCHIP_RK3399
281	help
282	  Say Y here if you want to enable PCIe controller support on
283	  Rockchip SoCs.
284
285config PCIE_DW_ROCKCHIP
286	bool "Rockchip DesignWare based PCIe controller"
287	depends on ARCH_ROCKCHIP
288	select DM_PCI
289	select PHY_ROCKCHIP_SNPS_PCIE3
290	help
291	  Say Y here if you want to enable DW PCIe controller support on
292	  Rockchip SoCs.
293
294config PCI_BRCMSTB
295	bool "Broadcom STB PCIe controller"
296	depends on DM_PCI
297	depends on ARCH_BCM283X
298	help
299	  Say Y here if you want to enable support for PCIe controller
300	  on Broadcom set-top-box (STB) SoCs.
301	  This driver currently supports only BCM2711 SoC and RC mode
302	  of the controller.
303endif
304