1# SPDX-License-Identifier: GPL-2.0
2
3menu "PCI controller drivers"
4	depends on PCI
5
6config PCI_MVEBU
7	bool "Marvell EBU PCIe controller"
8	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
9	depends on MVEBU_MBUS
10	depends on ARM
11	depends on OF
12
13config PCI_AARDVARK
14	bool "Aardvark PCIe controller"
15	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
16	depends on OF
17	depends on PCI_MSI_IRQ_DOMAIN
18	help
19	 Add support for Aardvark 64bit PCIe Host Controller. This
20	 controller is part of the South Bridge of the Marvel Armada
21	 3700 SoC.
22
23menu "Cadence PCIe controllers support"
24
25config PCIE_CADENCE
26	bool
27
28config PCIE_CADENCE_HOST
29	bool "Cadence PCIe host controller"
30	depends on OF
31	depends on PCI
32	select IRQ_DOMAIN
33	select PCIE_CADENCE
34	help
35	  Say Y here if you want to support the Cadence PCIe controller in host
36	  mode. This PCIe controller may be embedded into many different vendors
37	  SoCs.
38
39config PCIE_CADENCE_EP
40	bool "Cadence PCIe endpoint controller"
41	depends on OF
42	depends on PCI_ENDPOINT
43	select PCIE_CADENCE
44	help
45	  Say Y here if you want to support the Cadence PCIe  controller in
46	  endpoint mode. This PCIe controller may be embedded into many
47	  different vendors SoCs.
48
49endmenu
50
51config PCIE_XILINX_NWL
52	bool "NWL PCIe Core"
53	depends on ARCH_ZYNQMP || COMPILE_TEST
54	depends on PCI_MSI_IRQ_DOMAIN
55	help
56	 Say 'Y' here if you want kernel support for Xilinx
57	 NWL PCIe controller. The controller can act as Root Port
58	 or End Point. The current option selection will only
59	 support root port enabling.
60
61config PCI_FTPCI100
62	bool "Faraday Technology FTPCI100 PCI controller"
63	depends on OF
64	default ARCH_GEMINI
65
66config PCI_TEGRA
67	bool "NVIDIA Tegra PCIe controller"
68	depends on ARCH_TEGRA || COMPILE_TEST
69	depends on PCI_MSI_IRQ_DOMAIN
70	help
71	  Say Y here if you want support for the PCIe host controller found
72	  on NVIDIA Tegra SoCs.
73
74config PCI_RCAR_GEN2
75	bool "Renesas R-Car Gen2 Internal PCI controller"
76	depends on ARCH_RENESAS || COMPILE_TEST
77	depends on ARM
78	help
79	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
80	  There are 3 internal PCI controllers available with a single
81	  built-in EHCI/OHCI host controller present on each one.
82
83config PCIE_RCAR
84	bool "Renesas R-Car PCIe controller"
85	depends on ARCH_RENESAS || COMPILE_TEST
86	depends on PCI_MSI_IRQ_DOMAIN
87	help
88	  Say Y here if you want PCIe controller support on R-Car SoCs.
89
90config PCI_HOST_COMMON
91	bool
92	select PCI_ECAM
93
94config PCI_HOST_GENERIC
95	bool "Generic PCI host controller"
96	depends on OF
97	select PCI_HOST_COMMON
98	select IRQ_DOMAIN
99	help
100	  Say Y here if you want to support a simple generic PCI host
101	  controller, such as the one emulated by kvmtool.
102
103config PCIE_XILINX
104	bool "Xilinx AXI PCIe host bridge support"
105	depends on OF || COMPILE_TEST
106	help
107	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
108	  Host Bridge driver.
109
110config PCI_XGENE
111	bool "X-Gene PCIe controller"
112	depends on ARM64 || COMPILE_TEST
113	depends on OF || (ACPI && PCI_QUIRKS)
114	help
115	  Say Y here if you want internal PCI support on APM X-Gene SoC.
116	  There are 5 internal PCIe ports available. Each port is GEN3 capable
117	  and have varied lanes from x1 to x8.
118
119config PCI_XGENE_MSI
120	bool "X-Gene v1 PCIe MSI feature"
121	depends on PCI_XGENE
122	depends on PCI_MSI_IRQ_DOMAIN
123	default y
124	help
125	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
126	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
127
128config PCI_V3_SEMI
129	bool "V3 Semiconductor PCI controller"
130	depends on OF
131	depends on ARM || COMPILE_TEST
132	default ARCH_INTEGRATOR_AP
133
134config PCI_VERSATILE
135	bool "ARM Versatile PB PCI controller"
136	depends on ARCH_VERSATILE
137
138config PCIE_IPROC
139	tristate
140	help
141	  This enables the iProc PCIe core controller support for Broadcom's
142	  iProc family of SoCs. An appropriate bus interface driver needs
143	  to be enabled to select this.
144
145config PCIE_IPROC_PLATFORM
146	tristate "Broadcom iProc PCIe platform bus driver"
147	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
148	depends on OF
149	select PCIE_IPROC
150	default ARCH_BCM_IPROC
151	help
152	  Say Y here if you want to use the Broadcom iProc PCIe controller
153	  through the generic platform bus interface
154
155config PCIE_IPROC_BCMA
156	tristate "Broadcom iProc PCIe BCMA bus driver"
157	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
158	select PCIE_IPROC
159	select BCMA
160	default ARCH_BCM_5301X
161	help
162	  Say Y here if you want to use the Broadcom iProc PCIe controller
163	  through the BCMA bus interface
164
165config PCIE_IPROC_MSI
166	bool "Broadcom iProc PCIe MSI support"
167	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
168	depends on PCI_MSI_IRQ_DOMAIN
169	default ARCH_BCM_IPROC
170	help
171	  Say Y here if you want to enable MSI support for Broadcom's iProc
172	  PCIe controller
173
174config PCIE_ALTERA
175	bool "Altera PCIe controller"
176	depends on ARM || NIOS2 || COMPILE_TEST
177	help
178	  Say Y here if you want to enable PCIe controller support on Altera
179	  FPGA.
180
181config PCIE_ALTERA_MSI
182	bool "Altera PCIe MSI feature"
183	depends on PCIE_ALTERA
184	depends on PCI_MSI_IRQ_DOMAIN
185	help
186	  Say Y here if you want PCIe MSI support for the Altera FPGA.
187	  This MSI driver supports Altera MSI to GIC controller IP.
188
189config PCI_HOST_THUNDER_PEM
190	bool "Cavium Thunder PCIe controller to off-chip devices"
191	depends on ARM64 || COMPILE_TEST
192	depends on OF || (ACPI && PCI_QUIRKS)
193	select PCI_HOST_COMMON
194	help
195	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
196
197config PCI_HOST_THUNDER_ECAM
198	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
199	depends on ARM64 || COMPILE_TEST
200	depends on OF || (ACPI && PCI_QUIRKS)
201	select PCI_HOST_COMMON
202	help
203	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
204
205config PCIE_ROCKCHIP
206	bool
207	depends on PCI
208
209config PCIE_ROCKCHIP_HOST
210	tristate "Rockchip PCIe host controller"
211	depends on ARCH_ROCKCHIP || COMPILE_TEST
212	depends on OF
213	depends on PCI_MSI_IRQ_DOMAIN
214	select MFD_SYSCON
215	select PCIE_ROCKCHIP
216	help
217	  Say Y here if you want internal PCI support on Rockchip SoC.
218	  There is 1 internal PCIe port available to support GEN2 with
219	  4 slots.
220
221config PCIE_ROCKCHIP_EP
222	bool "Rockchip PCIe endpoint controller"
223	depends on ARCH_ROCKCHIP || COMPILE_TEST
224	depends on OF
225	depends on PCI_ENDPOINT
226	select MFD_SYSCON
227	select PCIE_ROCKCHIP
228	help
229	  Say Y here if you want to support Rockchip PCIe controller in
230	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
231	  available to support GEN2 with 4 slots.
232
233config PCIE_MEDIATEK
234	bool "MediaTek PCIe controller"
235	depends on ARCH_MEDIATEK || COMPILE_TEST
236	depends on OF
237	depends on PCI_MSI_IRQ_DOMAIN
238	help
239	  Say Y here if you want to enable PCIe controller support on
240	  MediaTek SoCs.
241
242config PCIE_MOBIVEIL
243	bool "Mobiveil AXI PCIe controller"
244	depends on ARCH_ZYNQMP || COMPILE_TEST
245	depends on OF
246	depends on PCI_MSI_IRQ_DOMAIN
247	help
248	  Say Y here if you want to enable support for the Mobiveil AXI PCIe
249	  Soft IP. It has up to 8 outbound and inbound windows
250	  for address translation and it is a PCIe Gen4 IP.
251
252config PCIE_TANGO_SMP8759
253	bool "Tango SMP8759 PCIe controller (DANGEROUS)"
254	depends on ARCH_TANGO && PCI_MSI && OF
255	depends on BROKEN
256	select PCI_HOST_COMMON
257	help
258	  Say Y here to enable PCIe controller support for Sigma Designs
259	  Tango SMP8759-based systems.
260
261	  Note: The SMP8759 controller multiplexes PCI config and MMIO
262	  accesses, and Linux doesn't provide a way to serialize them.
263	  This can lead to data corruption if drivers perform concurrent
264	  config and MMIO accesses.
265
266config VMD
267	depends on PCI_MSI && X86_64 && SRCU
268	tristate "Intel Volume Management Device Driver"
269	---help---
270	  Adds support for the Intel Volume Management Device (VMD). VMD is a
271	  secondary PCI host bridge that allows PCI Express root ports,
272	  and devices attached to them, to be removed from the default
273	  PCI domain and placed within the VMD domain. This provides
274	  more bus resources than are otherwise possible with a
275	  single domain. If you know your system provides one of these and
276	  has devices attached to it, say Y; if you are not sure, say N.
277
278	  To compile this driver as a module, choose M here: the
279	  module will be called vmd.
280
281source "drivers/pci/controller/dwc/Kconfig"
282endmenu
283