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