xref: /linux/drivers/pci/controller/Kconfig (revision a8f0ff9185ae0de54dc6ec1ba4d8c5bdd29cb71b)
16e0832faSShawn Lin# SPDX-License-Identifier: GPL-2.0
26e0832faSShawn Lin
36e0832faSShawn Linmenu "PCI controller drivers"
46e0832faSShawn Lin	depends on PCI
56e0832faSShawn Lin
66e0832faSShawn Linconfig PCI_MVEBU
70746ae1bSPali Rohár	tristate "Marvell EBU PCIe controller"
86e0832faSShawn Lin	depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST
96e0832faSShawn Lin	depends on MVEBU_MBUS
106e0832faSShawn Lin	depends on ARM
116e0832faSShawn Lin	depends on OF
121f08673eSThomas Petazzoni	select PCI_BRIDGE_EMUL
137f09a4b1SPali Rohár	help
147f09a4b1SPali Rohár	 Add support for Marvell EBU PCIe controller. This PCIe controller
157f09a4b1SPali Rohár	 is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370,
167f09a4b1SPali Rohár	 Armada XP, Armada 375, Armada 38x and Armada 39x.
176e0832faSShawn Lin
186e0832faSShawn Linconfig PCI_AARDVARK
19526a7699SPali Rohár	tristate "Aardvark PCIe controller"
206e0832faSShawn Lin	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
216e0832faSShawn Lin	depends on OF
22a474d3fbSThomas Gleixner	depends on PCI_MSI
238a3ebd8dSZachary Zhang	select PCI_BRIDGE_EMUL
246e0832faSShawn Lin	help
256e0832faSShawn Lin	 Add support for Aardvark 64bit PCIe Host Controller. This
266e0832faSShawn Lin	 controller is part of the South Bridge of the Marvel Armada
276e0832faSShawn Lin	 3700 SoC.
286e0832faSShawn Lin
296e0832faSShawn Linconfig PCIE_XILINX_NWL
306e0832faSShawn Lin	bool "NWL PCIe Core"
316e0832faSShawn Lin	depends on ARCH_ZYNQMP || COMPILE_TEST
32a474d3fbSThomas Gleixner	depends on PCI_MSI
336e0832faSShawn Lin	help
346e0832faSShawn Lin	 Say 'Y' here if you want kernel support for Xilinx
356e0832faSShawn Lin	 NWL PCIe controller. The controller can act as Root Port
366e0832faSShawn Lin	 or End Point. The current option selection will only
376e0832faSShawn Lin	 support root port enabling.
386e0832faSShawn Lin
396e0832faSShawn Linconfig PCI_FTPCI100
406e0832faSShawn Lin	bool "Faraday Technology FTPCI100 PCI controller"
416e0832faSShawn Lin	depends on OF
426e0832faSShawn Lin	default ARCH_GEMINI
436e0832faSShawn Lin
44f7821b49SLinus Walleijconfig PCI_IXP4XX
45f7821b49SLinus Walleij	bool "Intel IXP4xx PCI controller"
46f7821b49SLinus Walleij	depends on ARM && OF
479f1168cfSGeert Uytterhoeven	depends on ARCH_IXP4XX || COMPILE_TEST
48f7821b49SLinus Walleij	default ARCH_IXP4XX
49f7821b49SLinus Walleij	help
50f7821b49SLinus Walleij	  Say Y here if you want support for the PCI host controller found
51f7821b49SLinus Walleij	  in the Intel IXP4xx XScale-based network processor SoC.
52f7821b49SLinus Walleij
536e0832faSShawn Linconfig PCI_TEGRA
546e0832faSShawn Lin	bool "NVIDIA Tegra PCIe controller"
556e0832faSShawn Lin	depends on ARCH_TEGRA || COMPILE_TEST
56a474d3fbSThomas Gleixner	depends on PCI_MSI
576e0832faSShawn Lin	help
586e0832faSShawn Lin	  Say Y here if you want support for the PCIe host controller found
596e0832faSShawn Lin	  on NVIDIA Tegra SoCs.
606e0832faSShawn Lin
616e0832faSShawn Linconfig PCI_RCAR_GEN2
626e0832faSShawn Lin	bool "Renesas R-Car Gen2 Internal PCI controller"
636e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
646e0832faSShawn Lin	depends on ARM
656e0832faSShawn Lin	help
666e0832faSShawn Lin	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
676e0832faSShawn Lin	  There are 3 internal PCI controllers available with a single
686e0832faSShawn Lin	  built-in EHCI/OHCI host controller present on each one.
696e0832faSShawn Lin
70a18f4b6eSLad Prabhakarconfig PCIE_RCAR_HOST
71a18f4b6eSLad Prabhakar	bool "Renesas R-Car PCIe host controller"
72a18f4b6eSLad Prabhakar	depends on ARCH_RENESAS || COMPILE_TEST
73a474d3fbSThomas Gleixner	depends on PCI_MSI
74a18f4b6eSLad Prabhakar	help
75a18f4b6eSLad Prabhakar	  Say Y here if you want PCIe controller support on R-Car SoCs in host
76a18f4b6eSLad Prabhakar	  mode.
776e0832faSShawn Lin
782a6d0d63SLad Prabhakarconfig PCIE_RCAR_EP
792a6d0d63SLad Prabhakar	bool "Renesas R-Car PCIe endpoint controller"
802a6d0d63SLad Prabhakar	depends on ARCH_RENESAS || COMPILE_TEST
812a6d0d63SLad Prabhakar	depends on PCI_ENDPOINT
822a6d0d63SLad Prabhakar	help
832a6d0d63SLad Prabhakar	  Say Y here if you want PCIe controller support on R-Car SoCs in
842a6d0d63SLad Prabhakar	  endpoint mode.
856e0832faSShawn Lin
866e0832faSShawn Linconfig PCI_HOST_COMMON
870c59c06aSRob Herring	tristate
886e0832faSShawn Lin	select PCI_ECAM
896e0832faSShawn Lin
906e0832faSShawn Linconfig PCI_HOST_GENERIC
910c59c06aSRob Herring	tristate "Generic PCI host controller"
926e0832faSShawn Lin	depends on OF
936e0832faSShawn Lin	select PCI_HOST_COMMON
946e0832faSShawn Lin	select IRQ_DOMAIN
956e0832faSShawn Lin	help
966e0832faSShawn Lin	  Say Y here if you want to support a simple generic PCI host
976e0832faSShawn Lin	  controller, such as the one emulated by kvmtool.
986e0832faSShawn Lin
996e0832faSShawn Linconfig PCIE_XILINX
1006e0832faSShawn Lin	bool "Xilinx AXI PCIe host bridge support"
10134dbc9c6SChristoph Hellwig	depends on OF || COMPILE_TEST
102a474d3fbSThomas Gleixner	depends on PCI_MSI
1036e0832faSShawn Lin	help
1046e0832faSShawn Lin	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
1056e0832faSShawn Lin	  Host Bridge driver.
1066e0832faSShawn Lin
107508f6106SBharat Kumar Gogadaconfig PCIE_XILINX_CPM
108508f6106SBharat Kumar Gogada	bool "Xilinx Versal CPM host bridge support"
109508f6106SBharat Kumar Gogada	depends on ARCH_ZYNQMP || COMPILE_TEST
110508f6106SBharat Kumar Gogada	select PCI_HOST_COMMON
111508f6106SBharat Kumar Gogada	help
112508f6106SBharat Kumar Gogada	  Say 'Y' here if you want kernel support for the
113508f6106SBharat Kumar Gogada	  Xilinx Versal CPM host bridge.
114508f6106SBharat Kumar Gogada
1156e0832faSShawn Linconfig PCI_XGENE
1166e0832faSShawn Lin	bool "X-Gene PCIe controller"
1176e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1186e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1196e0832faSShawn Lin	help
1206e0832faSShawn Lin	  Say Y here if you want internal PCI support on APM X-Gene SoC.
1216e0832faSShawn Lin	  There are 5 internal PCIe ports available. Each port is GEN3 capable
1226e0832faSShawn Lin	  and have varied lanes from x1 to x8.
1236e0832faSShawn Lin
1246e0832faSShawn Linconfig PCI_XGENE_MSI
1256e0832faSShawn Lin	bool "X-Gene v1 PCIe MSI feature"
1266e0832faSShawn Lin	depends on PCI_XGENE
127a474d3fbSThomas Gleixner	depends on PCI_MSI
1286e0832faSShawn Lin	default y
1296e0832faSShawn Lin	help
1306e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
1316e0832faSShawn Lin	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
1326e0832faSShawn Lin
1336e0832faSShawn Linconfig PCI_V3_SEMI
1346e0832faSShawn Lin	bool "V3 Semiconductor PCI controller"
1356e0832faSShawn Lin	depends on OF
1366e0832faSShawn Lin	depends on ARM || COMPILE_TEST
1376e0832faSShawn Lin	default ARCH_INTEGRATOR_AP
1386e0832faSShawn Lin
1396e0832faSShawn Linconfig PCI_VERSATILE
1406e0832faSShawn Lin	bool "ARM Versatile PB PCI controller"
141ecf8fd6dSRob Herring	depends on ARCH_VERSATILE || COMPILE_TEST
1426e0832faSShawn Lin
1436e0832faSShawn Linconfig PCIE_IPROC
1446e0832faSShawn Lin	tristate
1456e0832faSShawn Lin	help
1466e0832faSShawn Lin	  This enables the iProc PCIe core controller support for Broadcom's
1476e0832faSShawn Lin	  iProc family of SoCs. An appropriate bus interface driver needs
1486e0832faSShawn Lin	  to be enabled to select this.
1496e0832faSShawn Lin
1506e0832faSShawn Linconfig PCIE_IPROC_PLATFORM
1516e0832faSShawn Lin	tristate "Broadcom iProc PCIe platform bus driver"
1526e0832faSShawn Lin	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
1536e0832faSShawn Lin	depends on OF
1546e0832faSShawn Lin	select PCIE_IPROC
1556e0832faSShawn Lin	default ARCH_BCM_IPROC
1566e0832faSShawn Lin	help
1576e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1586e0832faSShawn Lin	  through the generic platform bus interface
1596e0832faSShawn Lin
1606e0832faSShawn Linconfig PCIE_IPROC_BCMA
1616e0832faSShawn Lin	tristate "Broadcom iProc PCIe BCMA bus driver"
1626e0832faSShawn Lin	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
1636e0832faSShawn Lin	select PCIE_IPROC
1646e0832faSShawn Lin	select BCMA
1656e0832faSShawn Lin	default ARCH_BCM_5301X
1666e0832faSShawn Lin	help
1676e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1686e0832faSShawn Lin	  through the BCMA bus interface
1696e0832faSShawn Lin
1706e0832faSShawn Linconfig PCIE_IPROC_MSI
1716e0832faSShawn Lin	bool "Broadcom iProc PCIe MSI support"
1726e0832faSShawn Lin	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
173a474d3fbSThomas Gleixner	depends on PCI_MSI
1746e0832faSShawn Lin	default ARCH_BCM_IPROC
1756e0832faSShawn Lin	help
1766e0832faSShawn Lin	  Say Y here if you want to enable MSI support for Broadcom's iProc
1776e0832faSShawn Lin	  PCIe controller
1786e0832faSShawn Lin
1796e0832faSShawn Linconfig PCIE_ALTERA
180ec15c4d0SLey Foon Tan	tristate "Altera PCIe controller"
1815fd831cdSLey Foon Tan	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
1826e0832faSShawn Lin	help
1836e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on Altera
1846e0832faSShawn Lin	  FPGA.
1856e0832faSShawn Lin
1866e0832faSShawn Linconfig PCIE_ALTERA_MSI
187c7ddfd35SLey Foon Tan	tristate "Altera PCIe MSI feature"
1886e0832faSShawn Lin	depends on PCIE_ALTERA
189a474d3fbSThomas Gleixner	depends on PCI_MSI
1906e0832faSShawn Lin	help
1916e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the Altera FPGA.
1926e0832faSShawn Lin	  This MSI driver supports Altera MSI to GIC controller IP.
1936e0832faSShawn Lin
1946e0832faSShawn Linconfig PCI_HOST_THUNDER_PEM
1956e0832faSShawn Lin	bool "Cavium Thunder PCIe controller to off-chip devices"
1966e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1976e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1986e0832faSShawn Lin	select PCI_HOST_COMMON
1996e0832faSShawn Lin	help
2006e0832faSShawn Lin	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
2016e0832faSShawn Lin
2026e0832faSShawn Linconfig PCI_HOST_THUNDER_ECAM
2036e0832faSShawn Lin	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
2046e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
2056e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
2066e0832faSShawn Lin	select PCI_HOST_COMMON
2076e0832faSShawn Lin	help
2086e0832faSShawn Lin	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
2096e0832faSShawn Lin
2106e0832faSShawn Linconfig PCIE_ROCKCHIP
2116e0832faSShawn Lin	bool
2126e0832faSShawn Lin	depends on PCI
2136e0832faSShawn Lin
2146e0832faSShawn Linconfig PCIE_ROCKCHIP_HOST
2156e0832faSShawn Lin	tristate "Rockchip PCIe host controller"
2166e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2176e0832faSShawn Lin	depends on OF
218a474d3fbSThomas Gleixner	depends on PCI_MSI
2196e0832faSShawn Lin	select MFD_SYSCON
2206e0832faSShawn Lin	select PCIE_ROCKCHIP
2216e0832faSShawn Lin	help
2226e0832faSShawn Lin	  Say Y here if you want internal PCI support on Rockchip SoC.
2236e0832faSShawn Lin	  There is 1 internal PCIe port available to support GEN2 with
2246e0832faSShawn Lin	  4 slots.
2256e0832faSShawn Lin
2266e0832faSShawn Linconfig PCIE_ROCKCHIP_EP
2276e0832faSShawn Lin	bool "Rockchip PCIe endpoint controller"
2286e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2296e0832faSShawn Lin	depends on OF
2306e0832faSShawn Lin	depends on PCI_ENDPOINT
2316e0832faSShawn Lin	select MFD_SYSCON
2326e0832faSShawn Lin	select PCIE_ROCKCHIP
2336e0832faSShawn Lin	help
2346e0832faSShawn Lin	  Say Y here if you want to support Rockchip PCIe controller in
2356e0832faSShawn Lin	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
2366e0832faSShawn Lin	  available to support GEN2 with 4 slots.
2376e0832faSShawn Lin
2386e0832faSShawn Linconfig PCIE_MEDIATEK
239031337acSHonghui Zhang	tristate "MediaTek PCIe controller"
240b3b76fc8SFelix Fietkau	depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST
2416e0832faSShawn Lin	depends on OF
242a474d3fbSThomas Gleixner	depends on PCI_MSI
2436e0832faSShawn Lin	help
2446e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on
2456e0832faSShawn Lin	  MediaTek SoCs.
2466e0832faSShawn Lin
247d3bf75b5SJianjun Wangconfig PCIE_MEDIATEK_GEN3
248d3bf75b5SJianjun Wang	tristate "MediaTek Gen3 PCIe controller"
249d3bf75b5SJianjun Wang	depends on ARCH_MEDIATEK || COMPILE_TEST
250a474d3fbSThomas Gleixner	depends on PCI_MSI
251d3bf75b5SJianjun Wang	help
252d3bf75b5SJianjun Wang	  Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
253d3bf75b5SJianjun Wang	  This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
254d3bf75b5SJianjun Wang	  and support up to 256 MSI interrupt numbers for
255d3bf75b5SJianjun Wang	  multi-function devices.
256d3bf75b5SJianjun Wang
257d3bf75b5SJianjun Wang	  Say Y here if you want to enable Gen3 PCIe controller support on
258d3bf75b5SJianjun Wang	  MediaTek SoCs.
259d3bf75b5SJianjun Wang
2606e0832faSShawn Linconfig VMD
261*a8f0ff91SPaul E. McKenney	depends on PCI_MSI && X86_64 && !UML
2626e0832faSShawn Lin	tristate "Intel Volume Management Device Driver"
263a7f7f624SMasahiro Yamada	help
2646e0832faSShawn Lin	  Adds support for the Intel Volume Management Device (VMD). VMD is a
2656e0832faSShawn Lin	  secondary PCI host bridge that allows PCI Express root ports,
2666e0832faSShawn Lin	  and devices attached to them, to be removed from the default
2676e0832faSShawn Lin	  PCI domain and placed within the VMD domain. This provides
2686e0832faSShawn Lin	  more bus resources than are otherwise possible with a
2696e0832faSShawn Lin	  single domain. If you know your system provides one of these and
2706e0832faSShawn Lin	  has devices attached to it, say Y; if you are not sure, say N.
2716e0832faSShawn Lin
2726e0832faSShawn Lin	  To compile this driver as a module, choose M here: the
2736e0832faSShawn Lin	  module will be called vmd.
2746e0832faSShawn Lin
275c0452137SJim Quinlanconfig PCIE_BRCMSTB
276c0452137SJim Quinlan	tristate "Broadcom Brcmstb PCIe host controller"
2777bb49d77SWilliam Zhang	depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
27870060ee3SFlorian Fainelli		   BMIPS_GENERIC || COMPILE_TEST
279c0452137SJim Quinlan	depends on OF
280a474d3fbSThomas Gleixner	depends on PCI_MSI
281aa8589aaSJim Quinlan	default ARCH_BRCMSTB || BMIPS_GENERIC
282c0452137SJim Quinlan	help
283c0452137SJim Quinlan	  Say Y here to enable PCIe host controller support for
284c0452137SJim Quinlan	  Broadcom STB based SoCs, like the Raspberry Pi 4.
285c0452137SJim Quinlan
286348dd93eSHaiyang Zhangconfig PCI_HYPERV_INTERFACE
287348dd93eSHaiyang Zhang	tristate "Hyper-V PCI Interface"
288a474d3fbSThomas Gleixner	depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI && PCI_MSI
289348dd93eSHaiyang Zhang	help
290348dd93eSHaiyang Zhang	  The Hyper-V PCI Interface is a helper driver allows other drivers to
291348dd93eSHaiyang Zhang	  have a common interface with the Hyper-V PCI frontend driver.
292348dd93eSHaiyang Zhang
2931f58cca5SJiaxun Yangconfig PCI_LOONGSON
2941f58cca5SJiaxun Yang	bool "LOONGSON PCI Controller"
2951f58cca5SJiaxun Yang	depends on MACH_LOONGSON64 || COMPILE_TEST
296cd89eddaSHuacai Chen	depends on OF || ACPI
2971f58cca5SJiaxun Yang	depends on PCI_QUIRKS
2981f58cca5SJiaxun Yang	default MACH_LOONGSON64
2991f58cca5SJiaxun Yang	help
3001f58cca5SJiaxun Yang	  Say Y here if you want to enable PCI controller support on
3011f58cca5SJiaxun Yang	  Loongson systems.
3021f58cca5SJiaxun Yang
3036f15a9c9SDaire McNamaraconfig PCIE_MICROCHIP_HOST
3046f15a9c9SDaire McNamara	bool "Microchip AXI PCIe host bridge support"
3056f15a9c9SDaire McNamara	depends on PCI_MSI && OF
3066f15a9c9SDaire McNamara	select PCI_HOST_COMMON
3076f15a9c9SDaire McNamara	help
3086f15a9c9SDaire McNamara	  Say Y here if you want kernel to support the Microchip AXI PCIe
3096f15a9c9SDaire McNamara	  Host Bridge driver.
3106f15a9c9SDaire McNamara
311acb52897SYicong Yangconfig PCIE_HISI_ERR
312acb52897SYicong Yang	depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
313acb52897SYicong Yang	bool "HiSilicon HIP PCIe controller error handling driver"
314acb52897SYicong Yang	help
315acb52897SYicong Yang	  Say Y here if you want error handling support
316acb52897SYicong Yang	  for the PCIe controller's errors on HiSilicon HIP SoCs
317acb52897SYicong Yang
318946d619fSMarc Zyngierconfig PCIE_APPLE_MSI_DOORBELL_ADDR
319946d619fSMarc Zyngier	hex
320946d619fSMarc Zyngier	default 0xfffff000
321946d619fSMarc Zyngier	depends on PCIE_APPLE
322946d619fSMarc Zyngier
3231e33888fSAlyssa Rosenzweigconfig PCIE_APPLE
3241e33888fSAlyssa Rosenzweig	tristate "Apple PCIe controller"
3251e33888fSAlyssa Rosenzweig	depends on ARCH_APPLE || COMPILE_TEST
3261e33888fSAlyssa Rosenzweig	depends on OF
327a474d3fbSThomas Gleixner	depends on PCI_MSI
3281e33888fSAlyssa Rosenzweig	select PCI_HOST_COMMON
3291e33888fSAlyssa Rosenzweig	help
3301e33888fSAlyssa Rosenzweig	  Say Y here if you want to enable PCIe controller support on Apple
3311e33888fSAlyssa Rosenzweig	  system-on-chips, like the Apple M1. This is required for the USB
3321e33888fSAlyssa Rosenzweig	  type-A ports, Ethernet, Wi-Fi, and Bluetooth.
3331e33888fSAlyssa Rosenzweig
3341e33888fSAlyssa Rosenzweig	  If unsure, say Y if you have an Apple Silicon system.
3351e33888fSAlyssa Rosenzweig
3362bdd5238SSergio Paracuellosconfig PCIE_MT7621
3372bdd5238SSergio Paracuellos	tristate "MediaTek MT7621 PCIe Controller"
33844ddb791SSergio Paracuellos	depends on SOC_MT7621 || COMPILE_TEST
3392bdd5238SSergio Paracuellos	select PHY_MT7621_PCI
3402bdd5238SSergio Paracuellos	default SOC_MT7621
3412bdd5238SSergio Paracuellos	help
3422bdd5238SSergio Paracuellos	  This selects a driver for the MediaTek MT7621 PCIe Controller.
3432bdd5238SSergio Paracuellos
3446e0832faSShawn Linsource "drivers/pci/controller/dwc/Kconfig"
34503bdc388SHou Zhiqiangsource "drivers/pci/controller/mobiveil/Kconfig"
346de80f95cSTom Josephsource "drivers/pci/controller/cadence/Kconfig"
3476e0832faSShawn Linendmenu
348