xref: /linux/drivers/pci/controller/Kconfig (revision 03bdc3884019fb6463ac8163cc0e890920515f8b)
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
76e0832faSShawn Lin	bool "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
136e0832faSShawn Lin
146e0832faSShawn Linconfig PCI_AARDVARK
156e0832faSShawn Lin	bool "Aardvark PCIe controller"
166e0832faSShawn Lin	depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST
176e0832faSShawn Lin	depends on OF
186e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
198a3ebd8dSZachary Zhang	select PCI_BRIDGE_EMUL
206e0832faSShawn Lin	help
216e0832faSShawn Lin	 Add support for Aardvark 64bit PCIe Host Controller. This
226e0832faSShawn Lin	 controller is part of the South Bridge of the Marvel Armada
236e0832faSShawn Lin	 3700 SoC.
246e0832faSShawn Lin
256e0832faSShawn Linconfig PCIE_XILINX_NWL
266e0832faSShawn Lin	bool "NWL PCIe Core"
276e0832faSShawn Lin	depends on ARCH_ZYNQMP || COMPILE_TEST
286e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
296e0832faSShawn Lin	help
306e0832faSShawn Lin	 Say 'Y' here if you want kernel support for Xilinx
316e0832faSShawn Lin	 NWL PCIe controller. The controller can act as Root Port
326e0832faSShawn Lin	 or End Point. The current option selection will only
336e0832faSShawn Lin	 support root port enabling.
346e0832faSShawn Lin
356e0832faSShawn Linconfig PCI_FTPCI100
366e0832faSShawn Lin	bool "Faraday Technology FTPCI100 PCI controller"
376e0832faSShawn Lin	depends on OF
386e0832faSShawn Lin	default ARCH_GEMINI
396e0832faSShawn Lin
406e0832faSShawn Linconfig PCI_TEGRA
416e0832faSShawn Lin	bool "NVIDIA Tegra PCIe controller"
426e0832faSShawn Lin	depends on ARCH_TEGRA || COMPILE_TEST
436e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
446e0832faSShawn Lin	help
456e0832faSShawn Lin	  Say Y here if you want support for the PCIe host controller found
466e0832faSShawn Lin	  on NVIDIA Tegra SoCs.
476e0832faSShawn Lin
486e0832faSShawn Linconfig PCI_RCAR_GEN2
496e0832faSShawn Lin	bool "Renesas R-Car Gen2 Internal PCI controller"
506e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
516e0832faSShawn Lin	depends on ARM
526e0832faSShawn Lin	help
536e0832faSShawn Lin	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
546e0832faSShawn Lin	  There are 3 internal PCI controllers available with a single
556e0832faSShawn Lin	  built-in EHCI/OHCI host controller present on each one.
566e0832faSShawn Lin
576e0832faSShawn Linconfig PCIE_RCAR
586e0832faSShawn Lin	bool "Renesas R-Car PCIe controller"
596e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
606e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
616e0832faSShawn Lin	help
626e0832faSShawn Lin	  Say Y here if you want PCIe controller support on R-Car SoCs.
636e0832faSShawn Lin
646e0832faSShawn Linconfig PCI_HOST_COMMON
656e0832faSShawn Lin	bool
666e0832faSShawn Lin	select PCI_ECAM
676e0832faSShawn Lin
686e0832faSShawn Linconfig PCI_HOST_GENERIC
696e0832faSShawn Lin	bool "Generic PCI host controller"
706e0832faSShawn Lin	depends on OF
716e0832faSShawn Lin	select PCI_HOST_COMMON
726e0832faSShawn Lin	select IRQ_DOMAIN
736e0832faSShawn Lin	help
746e0832faSShawn Lin	  Say Y here if you want to support a simple generic PCI host
756e0832faSShawn Lin	  controller, such as the one emulated by kvmtool.
766e0832faSShawn Lin
776e0832faSShawn Linconfig PCIE_XILINX
786e0832faSShawn Lin	bool "Xilinx AXI PCIe host bridge support"
7934dbc9c6SChristoph Hellwig	depends on OF || COMPILE_TEST
806e0832faSShawn Lin	help
816e0832faSShawn Lin	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
826e0832faSShawn Lin	  Host Bridge driver.
836e0832faSShawn Lin
846e0832faSShawn Linconfig PCI_XGENE
856e0832faSShawn Lin	bool "X-Gene PCIe controller"
866e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
876e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
886e0832faSShawn Lin	help
896e0832faSShawn Lin	  Say Y here if you want internal PCI support on APM X-Gene SoC.
906e0832faSShawn Lin	  There are 5 internal PCIe ports available. Each port is GEN3 capable
916e0832faSShawn Lin	  and have varied lanes from x1 to x8.
926e0832faSShawn Lin
936e0832faSShawn Linconfig PCI_XGENE_MSI
946e0832faSShawn Lin	bool "X-Gene v1 PCIe MSI feature"
956e0832faSShawn Lin	depends on PCI_XGENE
966e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
976e0832faSShawn Lin	default y
986e0832faSShawn Lin	help
996e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
1006e0832faSShawn Lin	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
1016e0832faSShawn Lin
1026e0832faSShawn Linconfig PCI_V3_SEMI
1036e0832faSShawn Lin	bool "V3 Semiconductor PCI controller"
1046e0832faSShawn Lin	depends on OF
1056e0832faSShawn Lin	depends on ARM || COMPILE_TEST
1066e0832faSShawn Lin	default ARCH_INTEGRATOR_AP
1076e0832faSShawn Lin
1086e0832faSShawn Linconfig PCI_VERSATILE
1096e0832faSShawn Lin	bool "ARM Versatile PB PCI controller"
110ecf8fd6dSRob Herring	depends on ARCH_VERSATILE || COMPILE_TEST
1116e0832faSShawn Lin
1126e0832faSShawn Linconfig PCIE_IPROC
1136e0832faSShawn Lin	tristate
1146e0832faSShawn Lin	help
1156e0832faSShawn Lin	  This enables the iProc PCIe core controller support for Broadcom's
1166e0832faSShawn Lin	  iProc family of SoCs. An appropriate bus interface driver needs
1176e0832faSShawn Lin	  to be enabled to select this.
1186e0832faSShawn Lin
1196e0832faSShawn Linconfig PCIE_IPROC_PLATFORM
1206e0832faSShawn Lin	tristate "Broadcom iProc PCIe platform bus driver"
1216e0832faSShawn Lin	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
1226e0832faSShawn Lin	depends on OF
1236e0832faSShawn Lin	select PCIE_IPROC
1246e0832faSShawn Lin	default ARCH_BCM_IPROC
1256e0832faSShawn Lin	help
1266e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1276e0832faSShawn Lin	  through the generic platform bus interface
1286e0832faSShawn Lin
1296e0832faSShawn Linconfig PCIE_IPROC_BCMA
1306e0832faSShawn Lin	tristate "Broadcom iProc PCIe BCMA bus driver"
1316e0832faSShawn Lin	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
1326e0832faSShawn Lin	select PCIE_IPROC
1336e0832faSShawn Lin	select BCMA
1346e0832faSShawn Lin	default ARCH_BCM_5301X
1356e0832faSShawn Lin	help
1366e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1376e0832faSShawn Lin	  through the BCMA bus interface
1386e0832faSShawn Lin
1396e0832faSShawn Linconfig PCIE_IPROC_MSI
1406e0832faSShawn Lin	bool "Broadcom iProc PCIe MSI support"
1416e0832faSShawn Lin	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
1426e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1436e0832faSShawn Lin	default ARCH_BCM_IPROC
1446e0832faSShawn Lin	help
1456e0832faSShawn Lin	  Say Y here if you want to enable MSI support for Broadcom's iProc
1466e0832faSShawn Lin	  PCIe controller
1476e0832faSShawn Lin
1486e0832faSShawn Linconfig PCIE_ALTERA
149ec15c4d0SLey Foon Tan	tristate "Altera PCIe controller"
1505fd831cdSLey Foon Tan	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
1516e0832faSShawn Lin	help
1526e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on Altera
1536e0832faSShawn Lin	  FPGA.
1546e0832faSShawn Lin
1556e0832faSShawn Linconfig PCIE_ALTERA_MSI
156c7ddfd35SLey Foon Tan	tristate "Altera PCIe MSI feature"
1576e0832faSShawn Lin	depends on PCIE_ALTERA
1586e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1596e0832faSShawn Lin	help
1606e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the Altera FPGA.
1616e0832faSShawn Lin	  This MSI driver supports Altera MSI to GIC controller IP.
1626e0832faSShawn Lin
1636e0832faSShawn Linconfig PCI_HOST_THUNDER_PEM
1646e0832faSShawn Lin	bool "Cavium Thunder PCIe controller to off-chip devices"
1656e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1666e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1676e0832faSShawn Lin	select PCI_HOST_COMMON
1686e0832faSShawn Lin	help
1696e0832faSShawn Lin	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
1706e0832faSShawn Lin
1716e0832faSShawn Linconfig PCI_HOST_THUNDER_ECAM
1726e0832faSShawn Lin	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
1736e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1746e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1756e0832faSShawn Lin	select PCI_HOST_COMMON
1766e0832faSShawn Lin	help
1776e0832faSShawn Lin	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
1786e0832faSShawn Lin
1796e0832faSShawn Linconfig PCIE_ROCKCHIP
1806e0832faSShawn Lin	bool
1816e0832faSShawn Lin	depends on PCI
1826e0832faSShawn Lin
1836e0832faSShawn Linconfig PCIE_ROCKCHIP_HOST
1846e0832faSShawn Lin	tristate "Rockchip PCIe host controller"
1856e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
1866e0832faSShawn Lin	depends on OF
1876e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1886e0832faSShawn Lin	select MFD_SYSCON
1896e0832faSShawn Lin	select PCIE_ROCKCHIP
1906e0832faSShawn Lin	help
1916e0832faSShawn Lin	  Say Y here if you want internal PCI support on Rockchip SoC.
1926e0832faSShawn Lin	  There is 1 internal PCIe port available to support GEN2 with
1936e0832faSShawn Lin	  4 slots.
1946e0832faSShawn Lin
1956e0832faSShawn Linconfig PCIE_ROCKCHIP_EP
1966e0832faSShawn Lin	bool "Rockchip PCIe endpoint controller"
1976e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
1986e0832faSShawn Lin	depends on OF
1996e0832faSShawn Lin	depends on PCI_ENDPOINT
2006e0832faSShawn Lin	select MFD_SYSCON
2016e0832faSShawn Lin	select PCIE_ROCKCHIP
2026e0832faSShawn Lin	help
2036e0832faSShawn Lin	  Say Y here if you want to support Rockchip PCIe controller in
2046e0832faSShawn Lin	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
2056e0832faSShawn Lin	  available to support GEN2 with 4 slots.
2066e0832faSShawn Lin
2076e0832faSShawn Linconfig PCIE_MEDIATEK
208031337acSHonghui Zhang	tristate "MediaTek PCIe controller"
2096e0832faSShawn Lin	depends on ARCH_MEDIATEK || COMPILE_TEST
2106e0832faSShawn Lin	depends on OF
2116e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
2126e0832faSShawn Lin	help
2136e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on
2146e0832faSShawn Lin	  MediaTek SoCs.
2156e0832faSShawn Lin
2166e0832faSShawn Linconfig PCIE_TANGO_SMP8759
2176e0832faSShawn Lin	bool "Tango SMP8759 PCIe controller (DANGEROUS)"
2186e0832faSShawn Lin	depends on ARCH_TANGO && PCI_MSI && OF
2196e0832faSShawn Lin	depends on BROKEN
2206e0832faSShawn Lin	select PCI_HOST_COMMON
2216e0832faSShawn Lin	help
2226e0832faSShawn Lin	  Say Y here to enable PCIe controller support for Sigma Designs
2236e0832faSShawn Lin	  Tango SMP8759-based systems.
2246e0832faSShawn Lin
2256e0832faSShawn Lin	  Note: The SMP8759 controller multiplexes PCI config and MMIO
2266e0832faSShawn Lin	  accesses, and Linux doesn't provide a way to serialize them.
2276e0832faSShawn Lin	  This can lead to data corruption if drivers perform concurrent
2286e0832faSShawn Lin	  config and MMIO accesses.
2296e0832faSShawn Lin
2306e0832faSShawn Linconfig VMD
2316e0832faSShawn Lin	depends on PCI_MSI && X86_64 && SRCU
2326e0832faSShawn Lin	tristate "Intel Volume Management Device Driver"
2336e0832faSShawn Lin	---help---
2346e0832faSShawn Lin	  Adds support for the Intel Volume Management Device (VMD). VMD is a
2356e0832faSShawn Lin	  secondary PCI host bridge that allows PCI Express root ports,
2366e0832faSShawn Lin	  and devices attached to them, to be removed from the default
2376e0832faSShawn Lin	  PCI domain and placed within the VMD domain. This provides
2386e0832faSShawn Lin	  more bus resources than are otherwise possible with a
2396e0832faSShawn Lin	  single domain. If you know your system provides one of these and
2406e0832faSShawn Lin	  has devices attached to it, say Y; if you are not sure, say N.
2416e0832faSShawn Lin
2426e0832faSShawn Lin	  To compile this driver as a module, choose M here: the
2436e0832faSShawn Lin	  module will be called vmd.
2446e0832faSShawn Lin
245c0452137SJim Quinlanconfig PCIE_BRCMSTB
246c0452137SJim Quinlan	tristate "Broadcom Brcmstb PCIe host controller"
247c0452137SJim Quinlan	depends on ARCH_BCM2835 || COMPILE_TEST
248c0452137SJim Quinlan	depends on OF
24940ca1bf5SJim Quinlan	depends on PCI_MSI_IRQ_DOMAIN
250c0452137SJim Quinlan	help
251c0452137SJim Quinlan	  Say Y here to enable PCIe host controller support for
252c0452137SJim Quinlan	  Broadcom STB based SoCs, like the Raspberry Pi 4.
253c0452137SJim Quinlan
254348dd93eSHaiyang Zhangconfig PCI_HYPERV_INTERFACE
255348dd93eSHaiyang Zhang	tristate "Hyper-V PCI Interface"
256348dd93eSHaiyang Zhang	depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
257348dd93eSHaiyang Zhang	help
258348dd93eSHaiyang Zhang	  The Hyper-V PCI Interface is a helper driver allows other drivers to
259348dd93eSHaiyang Zhang	  have a common interface with the Hyper-V PCI frontend driver.
260348dd93eSHaiyang Zhang
2616e0832faSShawn Linsource "drivers/pci/controller/dwc/Kconfig"
262*03bdc388SHou Zhiqiangsource "drivers/pci/controller/mobiveil/Kconfig"
263de80f95cSTom Josephsource "drivers/pci/controller/cadence/Kconfig"
2646e0832faSShawn Linendmenu
265