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