xref: /openbmc/linux/drivers/pci/controller/Kconfig (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
1 # SPDX-License-Identifier: GPL-2.0
2 
3 menu "PCI controller drivers"
4 	depends on PCI
5 
6 config PCI_AARDVARK
7 	tristate "Aardvark PCIe controller"
8 	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
9 	depends on OF
10 	depends on PCI_MSI
11 	select PCI_BRIDGE_EMUL
12 	help
13 	 Add support for Aardvark 64bit PCIe Host Controller. This
14 	 controller is part of the South Bridge of the Marvel Armada
15 	 3700 SoC.
16 
17 config PCIE_ALTERA
18 	tristate "Altera PCIe controller"
19 	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
20 	help
21 	  Say Y here if you want to enable PCIe controller support on Altera
22 	  FPGA.
23 
24 config PCIE_ALTERA_MSI
25 	tristate "Altera PCIe MSI feature"
26 	depends on PCIE_ALTERA
27 	depends on PCI_MSI
28 	help
29 	  Say Y here if you want PCIe MSI support for the Altera FPGA.
30 	  This MSI driver supports Altera MSI to GIC controller IP.
31 
32 config PCIE_APPLE_MSI_DOORBELL_ADDR
33 	hex
34 	default 0xfffff000
35 	depends on PCIE_APPLE
36 
37 config PCIE_APPLE
38 	tristate "Apple PCIe controller"
39 	depends on ARCH_APPLE || COMPILE_TEST
40 	depends on OF
41 	depends on PCI_MSI
42 	select PCI_HOST_COMMON
43 	help
44 	  Say Y here if you want to enable PCIe controller support on Apple
45 	  system-on-chips, like the Apple M1. This is required for the USB
46 	  type-A ports, Ethernet, Wi-Fi, and Bluetooth.
47 
48 	  If unsure, say Y if you have an Apple Silicon system.
49 
50 config PCI_VERSATILE
51 	bool "ARM Versatile PB PCI controller"
52 	depends on ARCH_VERSATILE || COMPILE_TEST
53 
54 config PCIE_BRCMSTB
55 	tristate "Broadcom Brcmstb PCIe controller"
56 	depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
57 		   BMIPS_GENERIC || COMPILE_TEST
58 	depends on OF
59 	depends on PCI_MSI
60 	default ARCH_BRCMSTB || BMIPS_GENERIC
61 	help
62 	  Say Y here to enable PCIe host controller support for
63 	  Broadcom STB based SoCs, like the Raspberry Pi 4.
64 
65 config PCIE_IPROC
66 	tristate
67 	help
68 	  This enables the iProc PCIe core controller support for Broadcom's
69 	  iProc family of SoCs. An appropriate bus interface driver needs
70 	  to be enabled to select this.
71 
72 config PCIE_IPROC_PLATFORM
73 	tristate "Broadcom iProc PCIe platform bus driver"
74 	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
75 	depends on OF
76 	select PCIE_IPROC
77 	default ARCH_BCM_IPROC
78 	help
79 	  Say Y here if you want to use the Broadcom iProc PCIe controller
80 	  through the generic platform bus interface
81 
82 config PCIE_IPROC_BCMA
83 	tristate "Broadcom iProc BCMA PCIe controller"
84 	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
85 	select PCIE_IPROC
86 	select BCMA
87 	default ARCH_BCM_5301X
88 	help
89 	  Say Y here if you want to use the Broadcom iProc PCIe controller
90 	  through the BCMA bus interface
91 
92 config PCIE_IPROC_MSI
93 	bool "Broadcom iProc PCIe MSI support"
94 	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
95 	depends on PCI_MSI
96 	default ARCH_BCM_IPROC
97 	help
98 	  Say Y here if you want to enable MSI support for Broadcom's iProc
99 	  PCIe controller
100 
101 config PCI_HOST_THUNDER_PEM
102 	bool "Cavium Thunder PCIe controller to off-chip devices"
103 	depends on ARM64 || COMPILE_TEST
104 	depends on OF || (ACPI && PCI_QUIRKS)
105 	select PCI_HOST_COMMON
106 	help
107 	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
108 
109 config PCI_HOST_THUNDER_ECAM
110 	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
111 	depends on ARM64 || COMPILE_TEST
112 	depends on OF || (ACPI && PCI_QUIRKS)
113 	select PCI_HOST_COMMON
114 	help
115 	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
116 
117 config PCI_FTPCI100
118 	bool "Faraday Technology FTPCI100 PCI controller"
119 	depends on OF
120 	default ARCH_GEMINI
121 
122 config PCI_HOST_COMMON
123 	tristate
124 	select PCI_ECAM
125 
126 config PCI_HOST_GENERIC
127 	tristate "Generic PCI host controller"
128 	depends on OF
129 	select PCI_HOST_COMMON
130 	select IRQ_DOMAIN
131 	help
132 	  Say Y here if you want to support a simple generic PCI host
133 	  controller, such as the one emulated by kvmtool.
134 
135 config PCIE_HISI_ERR
136 	depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
137 	bool "HiSilicon HIP PCIe controller error handling driver"
138 	help
139 	  Say Y here if you want error handling support
140 	  for the PCIe controller's errors on HiSilicon HIP SoCs
141 
142 config PCI_IXP4XX
143 	bool "Intel IXP4xx PCI controller"
144 	depends on ARM && OF
145 	depends on ARCH_IXP4XX || COMPILE_TEST
146 	default ARCH_IXP4XX
147 	help
148 	  Say Y here if you want support for the PCI host controller found
149 	  in the Intel IXP4xx XScale-based network processor SoC.
150 
151 config VMD
152 	depends on PCI_MSI && X86_64 && !UML
153 	tristate "Intel Volume Management Device Driver"
154 	help
155 	  Adds support for the Intel Volume Management Device (VMD). VMD is a
156 	  secondary PCI host bridge that allows PCI Express root ports,
157 	  and devices attached to them, to be removed from the default
158 	  PCI domain and placed within the VMD domain. This provides
159 	  more bus resources than are otherwise possible with a
160 	  single domain. If you know your system provides one of these and
161 	  has devices attached to it, say Y; if you are not sure, say N.
162 
163 	  To compile this driver as a module, choose M here: the
164 	  module will be called vmd.
165 
166 config PCI_LOONGSON
167 	bool "LOONGSON PCIe controller"
168 	depends on MACH_LOONGSON64 || COMPILE_TEST
169 	depends on OF || ACPI
170 	depends on PCI_QUIRKS
171 	default MACH_LOONGSON64
172 	help
173 	  Say Y here if you want to enable PCI controller support on
174 	  Loongson systems.
175 
176 config PCI_MVEBU
177 	tristate "Marvell EBU PCIe controller"
178 	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
179 	depends on MVEBU_MBUS
180 	depends on ARM
181 	depends on OF
182 	select PCI_BRIDGE_EMUL
183 	help
184 	 Add support for Marvell EBU PCIe controller. This PCIe controller
185 	 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
186 	 Armada XP, Armada 375, Armada 38x and Armada 39x.
187 
188 config PCIE_MEDIATEK
189 	tristate "MediaTek PCIe controller"
190 	depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
191 	depends on OF
192 	depends on PCI_MSI
193 	help
194 	  Say Y here if you want to enable PCIe controller support on
195 	  MediaTek SoCs.
196 
197 config PCIE_MEDIATEK_GEN3
198 	tristate "MediaTek Gen3 PCIe controller"
199 	depends on ARCH_MEDIATEK || COMPILE_TEST
200 	depends on PCI_MSI
201 	help
202 	  Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
203 	  This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
204 	  and support up to 256 MSI interrupt numbers for
205 	  multi-function devices.
206 
207 	  Say Y here if you want to enable Gen3 PCIe controller support on
208 	  MediaTek SoCs.
209 
210 config PCIE_MT7621
211 	tristate "MediaTek MT7621 PCIe controller"
212 	depends on SOC_MT7621 || COMPILE_TEST
213 	select PHY_MT7621_PCI
214 	default SOC_MT7621
215 	help
216 	  This selects a driver for the MediaTek MT7621 PCIe Controller.
217 
218 config PCIE_MICROCHIP_HOST
219 	tristate "Microchip AXI PCIe controller"
220 	depends on PCI_MSI && OF
221 	select PCI_HOST_COMMON
222 	help
223 	  Say Y here if you want kernel to support the Microchip AXI PCIe
224 	  Host Bridge driver.
225 
226 config PCI_HYPERV_INTERFACE
227 	tristate "Microsoft Hyper-V PCI Interface"
228 	depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI
229 	help
230 	  The Hyper-V PCI Interface is a helper driver that allows other
231 	  drivers to have a common interface with the Hyper-V PCI frontend
232 	  driver.
233 
234 config PCI_TEGRA
235 	bool "NVIDIA Tegra PCIe controller"
236 	depends on ARCH_TEGRA || COMPILE_TEST
237 	depends on PCI_MSI
238 	help
239 	  Say Y here if you want support for the PCIe host controller found
240 	  on NVIDIA Tegra SoCs.
241 
242 config PCIE_RCAR_HOST
243 	bool "Renesas R-Car PCIe controller (host mode)"
244 	depends on ARCH_RENESAS || COMPILE_TEST
245 	depends on PCI_MSI
246 	help
247 	  Say Y here if you want PCIe controller support on R-Car SoCs in host
248 	  mode.
249 
250 config PCIE_RCAR_EP
251 	bool "Renesas R-Car PCIe controller (endpoint mode)"
252 	depends on ARCH_RENESAS || COMPILE_TEST
253 	depends on PCI_ENDPOINT
254 	help
255 	  Say Y here if you want PCIe controller support on R-Car SoCs in
256 	  endpoint mode.
257 
258 config PCI_RCAR_GEN2
259 	bool "Renesas R-Car Gen2 Internal PCI controller"
260 	depends on ARCH_RENESAS || COMPILE_TEST
261 	depends on ARM
262 	help
263 	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
264 	  There are 3 internal PCI controllers available with a single
265 	  built-in EHCI/OHCI host controller present on each one.
266 
267 config PCIE_ROCKCHIP
268 	bool
269 	depends on PCI
270 
271 config PCIE_ROCKCHIP_HOST
272 	tristate "Rockchip PCIe controller (host mode)"
273 	depends on ARCH_ROCKCHIP || COMPILE_TEST
274 	depends on OF
275 	depends on PCI_MSI
276 	select MFD_SYSCON
277 	select PCIE_ROCKCHIP
278 	help
279 	  Say Y here if you want internal PCI support on Rockchip SoC.
280 	  There is 1 internal PCIe port available to support GEN2 with
281 	  4 slots.
282 
283 config PCIE_ROCKCHIP_EP
284 	bool "Rockchip PCIe controller (endpoint mode)"
285 	depends on ARCH_ROCKCHIP || COMPILE_TEST
286 	depends on OF
287 	depends on PCI_ENDPOINT
288 	select MFD_SYSCON
289 	select PCIE_ROCKCHIP
290 	help
291 	  Say Y here if you want to support Rockchip PCIe controller in
292 	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
293 	  available to support GEN2 with 4 slots.
294 
295 config PCI_V3_SEMI
296 	bool "V3 Semiconductor PCI controller"
297 	depends on OF
298 	depends on ARM || COMPILE_TEST
299 	default ARCH_INTEGRATOR_AP
300 
301 config PCI_XGENE
302 	bool "X-Gene PCIe controller"
303 	depends on ARM64 || COMPILE_TEST
304 	depends on OF || (ACPI && PCI_QUIRKS)
305 	help
306 	  Say Y here if you want internal PCI support on APM X-Gene SoC.
307 	  There are 5 internal PCIe ports available. Each port is GEN3 capable
308 	  and have varied lanes from x1 to x8.
309 
310 config PCI_XGENE_MSI
311 	bool "X-Gene v1 PCIe MSI feature"
312 	depends on PCI_XGENE
313 	depends on PCI_MSI
314 	default y
315 	help
316 	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
317 	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
318 
319 config PCIE_XILINX
320 	bool "Xilinx AXI PCIe controller"
321 	depends on OF
322 	depends on PCI_MSI
323 	help
324 	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
325 	  Host Bridge driver.
326 
327 config PCIE_XILINX_NWL
328 	bool "Xilinx NWL PCIe controller"
329 	depends on ARCH_ZYNQMP || COMPILE_TEST
330 	depends on PCI_MSI
331 	help
332 	 Say 'Y' here if you want kernel support for Xilinx
333 	 NWL PCIe controller. The controller can act as Root Port
334 	 or End Point. The current option selection will only
335 	 support root port enabling.
336 
337 config PCIE_XILINX_CPM
338 	bool "Xilinx Versal CPM PCI controller"
339 	depends on ARCH_ZYNQMP || COMPILE_TEST
340 	select PCI_HOST_COMMON
341 	help
342 	  Say 'Y' here if you want kernel support for the
343 	  Xilinx Versal CPM host bridge.
344 
345 source "drivers/pci/controller/cadence/Kconfig"
346 source "drivers/pci/controller/dwc/Kconfig"
347 source "drivers/pci/controller/mobiveil/Kconfig"
348 endmenu
349