blob: 91bfdb784829b9d3939ea301c187ea01b2896bbe [file] [log] [blame]
Bjorn Helgaas7328c8f2018-01-26 11:45:16 -06001# SPDX-License-Identifier: GPL-2.0
2
Shawn Lin6e0832f2018-05-31 09:12:37 +08003menu "PCI controller drivers"
Thomas Petazzoni45361a42013-05-16 17:55:22 +02004 depends on PCI
5
6config PCI_MVEBU
7 bool "Marvell EBU PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -05008 depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
Bjorn Helgaas5db844e2018-06-06 16:10:33 -05009 depends on MVEBU_MBUS
Thierry Reding61d9e852016-02-18 14:32:10 +010010 depends on ARM
Thomas Petazzoni5477a332013-08-09 12:35:50 +020011 depends on OF
Thomas Petazzoni1f086732018-10-18 17:37:18 +020012 select PCI_BRIDGE_EMUL
Thomas Petazzoni45361a42013-05-16 17:55:22 +020013
Thomas Petazzoni8c39d712016-06-30 11:32:31 +020014config PCI_AARDVARK
15 bool "Aardvark PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -050016 depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
Thomas Petazzoni8c39d712016-06-30 11:32:31 +020017 depends on OF
18 depends on PCI_MSI_IRQ_DOMAIN
Zachary Zhang8a3ebd82018-10-18 17:37:19 +020019 select PCI_BRIDGE_EMUL
Thomas Petazzoni8c39d712016-06-30 11:32:31 +020020 help
21 Add support for Aardvark 64bit PCIe Host Controller. This
22 controller is part of the South Bridge of the Marvel Armada
23 3700 SoC.
Bjorn Helgaas562df5c2016-03-15 08:55:52 -050024
Bharat Kumar Gogadaab597d32016-03-06 22:02:14 +053025config PCIE_XILINX_NWL
26 bool "NWL PCIe Core"
Rob Herring51bc0852018-04-05 14:31:54 -050027 depends on ARCH_ZYNQMP || COMPILE_TEST
Arnd Bergmann3ee803642016-06-15 15:47:33 -050028 depends on PCI_MSI_IRQ_DOMAIN
Bharat Kumar Gogadaab597d32016-03-06 22:02:14 +053029 help
30 Say 'Y' here if you want kernel support for Xilinx
31 NWL PCIe controller. The controller can act as Root Port
32 or End Point. The current option selection will only
33 support root port enabling.
34
Linus Walleijd3c68e02017-03-12 23:24:03 +010035config PCI_FTPCI100
36 bool "Faraday Technology FTPCI100 PCI controller"
37 depends on OF
Linus Walleijd3c68e02017-03-12 23:24:03 +010038 default ARCH_GEMINI
39
Thierry Redingd1523b52013-08-09 16:49:19 +020040config PCI_TEGRA
41 bool "NVIDIA Tegra PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -050042 depends on ARCH_TEGRA || COMPILE_TEST
Arnd Bergmann6de3ff92018-03-13 18:23:06 +000043 depends on PCI_MSI_IRQ_DOMAIN
Thierry Reding6b1c4d72014-11-12 14:53:38 +010044 help
45 Say Y here if you want support for the PCIe host controller found
46 on NVIDIA Tegra SoCs.
Thierry Redingd1523b52013-08-09 16:49:19 +020047
Valentine Barshakba3eb9f2013-10-29 20:12:51 +040048config PCI_RCAR_GEN2
49 bool "Renesas R-Car Gen2 Internal PCI controller"
Simon Horman304e6d572016-02-25 09:45:56 +090050 depends on ARCH_RENESAS || COMPILE_TEST
Rob Herring51bc0852018-04-05 14:31:54 -050051 depends on ARM
Valentine Barshakba3eb9f2013-10-29 20:12:51 +040052 help
53 Say Y here if you want internal PCI support on R-Car Gen2 SoC.
54 There are 3 internal PCI controllers available with a single
55 built-in EHCI/OHCI host controller present on each one.
56
Simon Horman350a73b2016-04-21 13:51:55 +100057config PCIE_RCAR
Phil Edworthyc25da472014-05-12 11:57:48 +010058 bool "Renesas R-Car PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -050059 depends on ARCH_RENESAS || COMPILE_TEST
Arnd Bergmann3ee803642016-06-15 15:47:33 -050060 depends on PCI_MSI_IRQ_DOMAIN
Phil Edworthyc25da472014-05-12 11:57:48 +010061 help
Simon Horman350a73b2016-04-21 13:51:55 +100062 Say Y here if you want PCIe controller support on R-Car SoCs.
Phil Edworthyc25da472014-05-12 11:57:48 +010063
David Daney4e64dbe2016-03-11 15:35:55 -060064config PCI_HOST_COMMON
65 bool
Jayachandran C1958e712016-05-11 17:34:46 -050066 select PCI_ECAM
David Daney4e64dbe2016-03-11 15:35:55 -060067
Will Deaconce292992013-11-22 16:14:41 +000068config PCI_HOST_GENERIC
69 bool "Generic PCI host controller"
Rob Herring51bc0852018-04-05 14:31:54 -050070 depends on OF
David Daney4e64dbe2016-03-11 15:35:55 -060071 select PCI_HOST_COMMON
Arnd Bergmannd7d56772016-05-18 16:15:53 +020072 select IRQ_DOMAIN
Will Deaconce292992013-11-22 16:14:41 +000073 help
74 Say Y here if you want to support a simple generic PCI host
75 controller, such as the one emulated by kvmtool.
76
Srikanth Thokala8961def2014-08-20 21:56:02 +053077config PCIE_XILINX
78 bool "Xilinx AXI PCIe host bridge support"
Christoph Hellwig34dbc9c2018-08-04 12:14:02 +020079 depends on OF || COMPILE_TEST
Srikanth Thokala8961def2014-08-20 21:56:02 +053080 help
81 Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
82 Host Bridge driver.
83
Tanmay Inamdar5f6b6cc2014-10-01 13:01:35 -060084config PCI_XGENE
85 bool "X-Gene PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -050086 depends on ARM64 || COMPILE_TEST
Duc Dangc5d46032016-12-01 18:27:07 -080087 depends on OF || (ACPI && PCI_QUIRKS)
Tanmay Inamdar5f6b6cc2014-10-01 13:01:35 -060088 help
89 Say Y here if you want internal PCI support on APM X-Gene SoC.
90 There are 5 internal PCIe ports available. Each port is GEN3 capable
91 and have varied lanes from x1 to x8.
92
Duc Dangdcd19de2015-06-05 15:56:34 -050093config PCI_XGENE_MSI
94 bool "X-Gene v1 PCIe MSI feature"
Arnd Bergmann3ee803642016-06-15 15:47:33 -050095 depends on PCI_XGENE
96 depends on PCI_MSI_IRQ_DOMAIN
Duc Dangdcd19de2015-06-05 15:56:34 -050097 default y
98 help
99 Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
100 This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
101
Linus Walleij68a15eb2017-09-26 13:02:20 -0500102config PCI_V3_SEMI
103 bool "V3 Semiconductor PCI controller"
104 depends on OF
Rob Herring51bc0852018-04-05 14:31:54 -0500105 depends on ARM || COMPILE_TEST
Linus Walleij68a15eb2017-09-26 13:02:20 -0500106 default ARCH_INTEGRATOR_AP
107
Rob Herringb7e78172015-01-28 10:16:18 -0600108config PCI_VERSATILE
109 bool "ARM Versatile PB PCI controller"
Rob Herringecf8fd62019-10-28 11:32:49 -0500110 depends on ARCH_VERSATILE || COMPILE_TEST
Rob Herringb7e78172015-01-28 10:16:18 -0600111
Ray Jui1fb37a82015-04-08 11:21:35 -0700112config PCIE_IPROC
Arnd Bergmannc1b98e42015-11-24 15:28:48 -0600113 tristate
Ray Jui1fb37a82015-04-08 11:21:35 -0700114 help
115 This enables the iProc PCIe core controller support for Broadcom's
Arnd Bergmannc1b98e42015-11-24 15:28:48 -0600116 iProc family of SoCs. An appropriate bus interface driver needs
117 to be enabled to select this.
Ray Jui1fb37a82015-04-08 11:21:35 -0700118
119config PCIE_IPROC_PLATFORM
120 tristate "Broadcom iProc PCIe platform bus driver"
121 depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
122 depends on OF
123 select PCIE_IPROC
124 default ARCH_BCM_IPROC
125 help
126 Say Y here if you want to use the Broadcom iProc PCIe controller
127 through the generic platform bus interface
128
Hauke Mehrtens4785ffb2015-05-12 23:23:01 +0200129config PCIE_IPROC_BCMA
Hauke Mehrtens05aa7d62015-07-25 21:15:24 +0200130 tristate "Broadcom iProc PCIe BCMA bus driver"
Ray Jui70d334c2015-07-29 10:12:53 -0700131 depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
Hauke Mehrtens4785ffb2015-05-12 23:23:01 +0200132 select PCIE_IPROC
133 select BCMA
Hauke Mehrtens4785ffb2015-05-12 23:23:01 +0200134 default ARCH_BCM_5301X
135 help
136 Say Y here if you want to use the Broadcom iProc PCIe controller
137 through the BCMA bus interface
138
Ray Jui3bc2b232016-01-06 18:04:35 -0600139config PCIE_IPROC_MSI
140 bool "Broadcom iProc PCIe MSI support"
141 depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
Arnd Bergmann3ee803642016-06-15 15:47:33 -0500142 depends on PCI_MSI_IRQ_DOMAIN
Ray Jui3bc2b232016-01-06 18:04:35 -0600143 default ARCH_BCM_IPROC
144 help
145 Say Y here if you want to enable MSI support for Broadcom's iProc
146 PCIe controller
147
Ley Foon Taneaa61112015-10-23 18:27:12 +0800148config PCIE_ALTERA
Ley Foon Tanec15c4d2019-04-24 12:57:14 +0800149 tristate "Altera PCIe controller"
Ley Foon Tan5fd831c2019-02-28 18:52:51 +0800150 depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
Ley Foon Taneaa61112015-10-23 18:27:12 +0800151 help
152 Say Y here if you want to enable PCIe controller support on Altera
153 FPGA.
154
Ley Foon Tanaf1169b2015-10-23 18:27:13 +0800155config PCIE_ALTERA_MSI
Ley Foon Tanc7ddfd32019-04-24 12:57:15 +0800156 tristate "Altera PCIe MSI feature"
Arnd Bergmann3ee803642016-06-15 15:47:33 -0500157 depends on PCIE_ALTERA
158 depends on PCI_MSI_IRQ_DOMAIN
Ley Foon Tanaf1169b2015-10-23 18:27:13 +0800159 help
160 Say Y here if you want PCIe MSI support for the Altera FPGA.
161 This MSI driver supports Altera MSI to GIC controller IP.
162
David Daneyf12b76e2016-03-04 14:31:47 -0800163config PCI_HOST_THUNDER_PEM
164 bool "Cavium Thunder PCIe controller to off-chip devices"
Rob Herring51bc0852018-04-05 14:31:54 -0500165 depends on ARM64 || COMPILE_TEST
Tomasz Nowicki44f22bd2016-12-01 00:07:56 -0600166 depends on OF || (ACPI && PCI_QUIRKS)
David Daneyf12b76e2016-03-04 14:31:47 -0800167 select PCI_HOST_COMMON
168 help
169 Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
170
David Daney7b6e7ba2016-03-04 14:31:48 -0800171config PCI_HOST_THUNDER_ECAM
172 bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
Rob Herring51bc0852018-04-05 14:31:54 -0500173 depends on ARM64 || COMPILE_TEST
Tomasz Nowicki648d93f2016-11-30 23:16:34 -0600174 depends on OF || (ACPI && PCI_QUIRKS)
David Daney7b6e7ba2016-03-04 14:31:48 -0800175 select PCI_HOST_COMMON
176 help
177 Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
178
Shawn Line77f8472016-09-03 11:41:09 -0500179config PCIE_ROCKCHIP
Shawn Lin956cd992018-05-09 09:11:49 +0800180 bool
181 depends on PCI
182
183config PCIE_ROCKCHIP_HOST
184 tristate "Rockchip PCIe host controller"
Shawn Lin1177f762016-12-07 15:05:59 -0600185 depends on ARCH_ROCKCHIP || COMPILE_TEST
Shawn Line77f8472016-09-03 11:41:09 -0500186 depends on OF
187 depends on PCI_MSI_IRQ_DOMAIN
188 select MFD_SYSCON
Shawn Lin956cd992018-05-09 09:11:49 +0800189 select PCIE_ROCKCHIP
Shawn Line77f8472016-09-03 11:41:09 -0500190 help
191 Say Y here if you want internal PCI support on Rockchip SoC.
192 There is 1 internal PCIe port available to support GEN2 with
193 4 slots.
194
Shawn Lincf590b02018-05-09 09:12:59 +0800195config PCIE_ROCKCHIP_EP
196 bool "Rockchip PCIe endpoint controller"
197 depends on ARCH_ROCKCHIP || COMPILE_TEST
198 depends on OF
199 depends on PCI_ENDPOINT
200 select MFD_SYSCON
201 select PCIE_ROCKCHIP
202 help
203 Say Y here if you want to support Rockchip PCIe controller in
204 endpoint mode on Rockchip SoC. There is 1 internal PCIe port
205 available to support GEN2 with 4 slots.
206
Ryder Lee637cfaca2017-05-21 11:42:24 +0800207config PCIE_MEDIATEK
Honghui Zhang031337a2018-10-15 16:08:59 +0800208 tristate "MediaTek PCIe controller"
Rob Herring51bc0852018-04-05 14:31:54 -0500209 depends on ARCH_MEDIATEK || COMPILE_TEST
Ryder Lee637cfaca2017-05-21 11:42:24 +0800210 depends on OF
Honghui Zhang42fe2f92018-05-04 13:47:33 +0800211 depends on PCI_MSI_IRQ_DOMAIN
Ryder Lee637cfaca2017-05-21 11:42:24 +0800212 help
213 Say Y here if you want to enable PCIe controller support on
Ryder Leeb0996312017-08-10 14:34:59 +0800214 MediaTek SoCs.
Ryder Lee637cfaca2017-05-21 11:42:24 +0800215
Marc Gonzalez5e14e9f2017-06-20 10:17:40 +0200216config PCIE_TANGO_SMP8759
217 bool "Tango SMP8759 PCIe controller (DANGEROUS)"
218 depends on ARCH_TANGO && PCI_MSI && OF
219 depends on BROKEN
220 select PCI_HOST_COMMON
221 help
222 Say Y here to enable PCIe controller support for Sigma Designs
223 Tango SMP8759-based systems.
224
225 Note: The SMP8759 controller multiplexes PCI config and MMIO
226 accesses, and Linux doesn't provide a way to serialize them.
227 This can lead to data corruption if drivers perform concurrent
228 config and MMIO accesses.
229
Keith Busch181ffd12016-10-04 12:26:37 -0500230config VMD
Jon Derrick3906b912016-11-11 16:08:45 -0700231 depends on PCI_MSI && X86_64 && SRCU
Keith Busch181ffd12016-10-04 12:26:37 -0500232 tristate "Intel Volume Management Device Driver"
Keith Busch181ffd12016-10-04 12:26:37 -0500233 ---help---
234 Adds support for the Intel Volume Management Device (VMD). VMD is a
235 secondary PCI host bridge that allows PCI Express root ports,
236 and devices attached to them, to be removed from the default
237 PCI domain and placed within the VMD domain. This provides
238 more bus resources than are otherwise possible with a
239 single domain. If you know your system provides one of these and
240 has devices attached to it, say Y; if you are not sure, say N.
241
242 To compile this driver as a module, choose M here: the
243 module will be called vmd.
244
Jim Quinlanc0452132019-12-16 12:01:09 +0100245config PCIE_BRCMSTB
246 tristate "Broadcom Brcmstb PCIe host controller"
247 depends on ARCH_BCM2835 || COMPILE_TEST
248 depends on OF
Jim Quinlan40ca1bf2019-12-16 12:01:10 +0100249 depends on PCI_MSI_IRQ_DOMAIN
Jim Quinlanc0452132019-12-16 12:01:09 +0100250 help
251 Say Y here to enable PCIe host controller support for
252 Broadcom STB based SoCs, like the Raspberry Pi 4.
253
Haiyang Zhang348dd932019-08-22 05:05:41 +0000254config PCI_HYPERV_INTERFACE
255 tristate "Hyper-V PCI Interface"
256 depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
257 help
258 The Hyper-V PCI Interface is a helper driver allows other drivers to
259 have a common interface with the Hyper-V PCI frontend driver.
260
Shawn Lin6e0832f2018-05-31 09:12:37 +0800261source "drivers/pci/controller/dwc/Kconfig"
Hou Zhiqiang03bdc382020-02-13 12:06:35 +0800262source "drivers/pci/controller/mobiveil/Kconfig"
Tom Josephde80f952019-11-11 12:30:44 +0000263source "drivers/pci/controller/cadence/Kconfig"
Thomas Petazzoni45361a42013-05-16 17:55:22 +0200264endmenu