xref: /linux/drivers/pci/controller/Kconfig (revision ecf8fd6d917dca1065e1021ff7fc6b6c282373f9)
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 Linmenu "Cadence PCIe controllers support"
266e0832faSShawn Lin
276e0832faSShawn Linconfig PCIE_CADENCE
286e0832faSShawn Lin	bool
296e0832faSShawn Lin
306e0832faSShawn Linconfig PCIE_CADENCE_HOST
316e0832faSShawn Lin	bool "Cadence PCIe host controller"
326e0832faSShawn Lin	depends on OF
336e0832faSShawn Lin	depends on PCI
346e0832faSShawn Lin	select IRQ_DOMAIN
356e0832faSShawn Lin	select PCIE_CADENCE
366e0832faSShawn Lin	help
376e0832faSShawn Lin	  Say Y here if you want to support the Cadence PCIe controller in host
386e0832faSShawn Lin	  mode. This PCIe controller may be embedded into many different vendors
396e0832faSShawn Lin	  SoCs.
406e0832faSShawn Lin
416e0832faSShawn Linconfig PCIE_CADENCE_EP
426e0832faSShawn Lin	bool "Cadence PCIe endpoint controller"
436e0832faSShawn Lin	depends on OF
446e0832faSShawn Lin	depends on PCI_ENDPOINT
456e0832faSShawn Lin	select PCIE_CADENCE
466e0832faSShawn Lin	help
476e0832faSShawn Lin	  Say Y here if you want to support the Cadence PCIe  controller in
486e0832faSShawn Lin	  endpoint mode. This PCIe controller may be embedded into many
496e0832faSShawn Lin	  different vendors SoCs.
506e0832faSShawn Lin
516e0832faSShawn Linendmenu
526e0832faSShawn Lin
536e0832faSShawn Linconfig PCIE_XILINX_NWL
546e0832faSShawn Lin	bool "NWL PCIe Core"
556e0832faSShawn Lin	depends on ARCH_ZYNQMP || COMPILE_TEST
566e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
576e0832faSShawn Lin	help
586e0832faSShawn Lin	 Say 'Y' here if you want kernel support for Xilinx
596e0832faSShawn Lin	 NWL PCIe controller. The controller can act as Root Port
606e0832faSShawn Lin	 or End Point. The current option selection will only
616e0832faSShawn Lin	 support root port enabling.
626e0832faSShawn Lin
636e0832faSShawn Linconfig PCI_FTPCI100
646e0832faSShawn Lin	bool "Faraday Technology FTPCI100 PCI controller"
656e0832faSShawn Lin	depends on OF
666e0832faSShawn Lin	default ARCH_GEMINI
676e0832faSShawn Lin
686e0832faSShawn Linconfig PCI_TEGRA
696e0832faSShawn Lin	bool "NVIDIA Tegra PCIe controller"
706e0832faSShawn Lin	depends on ARCH_TEGRA || COMPILE_TEST
716e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
726e0832faSShawn Lin	help
736e0832faSShawn Lin	  Say Y here if you want support for the PCIe host controller found
746e0832faSShawn Lin	  on NVIDIA Tegra SoCs.
756e0832faSShawn Lin
766e0832faSShawn Linconfig PCI_RCAR_GEN2
776e0832faSShawn Lin	bool "Renesas R-Car Gen2 Internal PCI controller"
786e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
796e0832faSShawn Lin	depends on ARM
806e0832faSShawn Lin	help
816e0832faSShawn Lin	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
826e0832faSShawn Lin	  There are 3 internal PCI controllers available with a single
836e0832faSShawn Lin	  built-in EHCI/OHCI host controller present on each one.
846e0832faSShawn Lin
856e0832faSShawn Linconfig PCIE_RCAR
866e0832faSShawn Lin	bool "Renesas R-Car PCIe controller"
876e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
886e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
896e0832faSShawn Lin	help
906e0832faSShawn Lin	  Say Y here if you want PCIe controller support on R-Car SoCs.
916e0832faSShawn Lin
926e0832faSShawn Linconfig PCI_HOST_COMMON
936e0832faSShawn Lin	bool
946e0832faSShawn Lin	select PCI_ECAM
956e0832faSShawn Lin
966e0832faSShawn Linconfig PCI_HOST_GENERIC
976e0832faSShawn Lin	bool "Generic PCI host controller"
986e0832faSShawn Lin	depends on OF
996e0832faSShawn Lin	select PCI_HOST_COMMON
1006e0832faSShawn Lin	select IRQ_DOMAIN
1016e0832faSShawn Lin	help
1026e0832faSShawn Lin	  Say Y here if you want to support a simple generic PCI host
1036e0832faSShawn Lin	  controller, such as the one emulated by kvmtool.
1046e0832faSShawn Lin
1056e0832faSShawn Linconfig PCIE_XILINX
1066e0832faSShawn Lin	bool "Xilinx AXI PCIe host bridge support"
10734dbc9c6SChristoph Hellwig	depends on OF || COMPILE_TEST
1086e0832faSShawn Lin	help
1096e0832faSShawn Lin	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
1106e0832faSShawn Lin	  Host Bridge driver.
1116e0832faSShawn Lin
1126e0832faSShawn Linconfig PCI_XGENE
1136e0832faSShawn Lin	bool "X-Gene PCIe controller"
1146e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1156e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1166e0832faSShawn Lin	help
1176e0832faSShawn Lin	  Say Y here if you want internal PCI support on APM X-Gene SoC.
1186e0832faSShawn Lin	  There are 5 internal PCIe ports available. Each port is GEN3 capable
1196e0832faSShawn Lin	  and have varied lanes from x1 to x8.
1206e0832faSShawn Lin
1216e0832faSShawn Linconfig PCI_XGENE_MSI
1226e0832faSShawn Lin	bool "X-Gene v1 PCIe MSI feature"
1236e0832faSShawn Lin	depends on PCI_XGENE
1246e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1256e0832faSShawn Lin	default y
1266e0832faSShawn Lin	help
1276e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
1286e0832faSShawn Lin	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
1296e0832faSShawn Lin
1306e0832faSShawn Linconfig PCI_V3_SEMI
1316e0832faSShawn Lin	bool "V3 Semiconductor PCI controller"
1326e0832faSShawn Lin	depends on OF
1336e0832faSShawn Lin	depends on ARM || COMPILE_TEST
1346e0832faSShawn Lin	default ARCH_INTEGRATOR_AP
1356e0832faSShawn Lin
1366e0832faSShawn Linconfig PCI_VERSATILE
1376e0832faSShawn Lin	bool "ARM Versatile PB PCI controller"
138*ecf8fd6dSRob Herring	depends on ARCH_VERSATILE || COMPILE_TEST
1396e0832faSShawn Lin
1406e0832faSShawn Linconfig PCIE_IPROC
1416e0832faSShawn Lin	tristate
1426e0832faSShawn Lin	help
1436e0832faSShawn Lin	  This enables the iProc PCIe core controller support for Broadcom's
1446e0832faSShawn Lin	  iProc family of SoCs. An appropriate bus interface driver needs
1456e0832faSShawn Lin	  to be enabled to select this.
1466e0832faSShawn Lin
1476e0832faSShawn Linconfig PCIE_IPROC_PLATFORM
1486e0832faSShawn Lin	tristate "Broadcom iProc PCIe platform bus driver"
1496e0832faSShawn Lin	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
1506e0832faSShawn Lin	depends on OF
1516e0832faSShawn Lin	select PCIE_IPROC
1526e0832faSShawn Lin	default ARCH_BCM_IPROC
1536e0832faSShawn Lin	help
1546e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1556e0832faSShawn Lin	  through the generic platform bus interface
1566e0832faSShawn Lin
1576e0832faSShawn Linconfig PCIE_IPROC_BCMA
1586e0832faSShawn Lin	tristate "Broadcom iProc PCIe BCMA bus driver"
1596e0832faSShawn Lin	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
1606e0832faSShawn Lin	select PCIE_IPROC
1616e0832faSShawn Lin	select BCMA
1626e0832faSShawn Lin	default ARCH_BCM_5301X
1636e0832faSShawn Lin	help
1646e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1656e0832faSShawn Lin	  through the BCMA bus interface
1666e0832faSShawn Lin
1676e0832faSShawn Linconfig PCIE_IPROC_MSI
1686e0832faSShawn Lin	bool "Broadcom iProc PCIe MSI support"
1696e0832faSShawn Lin	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
1706e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1716e0832faSShawn Lin	default ARCH_BCM_IPROC
1726e0832faSShawn Lin	help
1736e0832faSShawn Lin	  Say Y here if you want to enable MSI support for Broadcom's iProc
1746e0832faSShawn Lin	  PCIe controller
1756e0832faSShawn Lin
1766e0832faSShawn Linconfig PCIE_ALTERA
177ec15c4d0SLey Foon Tan	tristate "Altera PCIe controller"
1785fd831cdSLey Foon Tan	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
1796e0832faSShawn Lin	help
1806e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on Altera
1816e0832faSShawn Lin	  FPGA.
1826e0832faSShawn Lin
1836e0832faSShawn Linconfig PCIE_ALTERA_MSI
184c7ddfd35SLey Foon Tan	tristate "Altera PCIe MSI feature"
1856e0832faSShawn Lin	depends on PCIE_ALTERA
1866e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1876e0832faSShawn Lin	help
1886e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the Altera FPGA.
1896e0832faSShawn Lin	  This MSI driver supports Altera MSI to GIC controller IP.
1906e0832faSShawn Lin
1916e0832faSShawn Linconfig PCI_HOST_THUNDER_PEM
1926e0832faSShawn Lin	bool "Cavium Thunder PCIe controller to off-chip devices"
1936e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1946e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1956e0832faSShawn Lin	select PCI_HOST_COMMON
1966e0832faSShawn Lin	help
1976e0832faSShawn Lin	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
1986e0832faSShawn Lin
1996e0832faSShawn Linconfig PCI_HOST_THUNDER_ECAM
2006e0832faSShawn Lin	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
2016e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
2026e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
2036e0832faSShawn Lin	select PCI_HOST_COMMON
2046e0832faSShawn Lin	help
2056e0832faSShawn Lin	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
2066e0832faSShawn Lin
2076e0832faSShawn Linconfig PCIE_ROCKCHIP
2086e0832faSShawn Lin	bool
2096e0832faSShawn Lin	depends on PCI
2106e0832faSShawn Lin
2116e0832faSShawn Linconfig PCIE_ROCKCHIP_HOST
2126e0832faSShawn Lin	tristate "Rockchip PCIe host controller"
2136e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2146e0832faSShawn Lin	depends on OF
2156e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
2166e0832faSShawn Lin	select MFD_SYSCON
2176e0832faSShawn Lin	select PCIE_ROCKCHIP
2186e0832faSShawn Lin	help
2196e0832faSShawn Lin	  Say Y here if you want internal PCI support on Rockchip SoC.
2206e0832faSShawn Lin	  There is 1 internal PCIe port available to support GEN2 with
2216e0832faSShawn Lin	  4 slots.
2226e0832faSShawn Lin
2236e0832faSShawn Linconfig PCIE_ROCKCHIP_EP
2246e0832faSShawn Lin	bool "Rockchip PCIe endpoint controller"
2256e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2266e0832faSShawn Lin	depends on OF
2276e0832faSShawn Lin	depends on PCI_ENDPOINT
2286e0832faSShawn Lin	select MFD_SYSCON
2296e0832faSShawn Lin	select PCIE_ROCKCHIP
2306e0832faSShawn Lin	help
2316e0832faSShawn Lin	  Say Y here if you want to support Rockchip PCIe controller in
2326e0832faSShawn Lin	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
2336e0832faSShawn Lin	  available to support GEN2 with 4 slots.
2346e0832faSShawn Lin
2356e0832faSShawn Linconfig PCIE_MEDIATEK
236031337acSHonghui Zhang	tristate "MediaTek PCIe controller"
2376e0832faSShawn Lin	depends on ARCH_MEDIATEK || COMPILE_TEST
2386e0832faSShawn Lin	depends on OF
2396e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
2406e0832faSShawn Lin	help
2416e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on
2426e0832faSShawn Lin	  MediaTek SoCs.
2436e0832faSShawn Lin
2446f2c73c1SLorenzo Pieralisiconfig PCIE_MOBIVEIL
2456f2c73c1SLorenzo Pieralisi	bool "Mobiveil AXI PCIe controller"
2466f2c73c1SLorenzo Pieralisi	depends on ARCH_ZYNQMP || COMPILE_TEST
2476f2c73c1SLorenzo Pieralisi	depends on OF
2486f2c73c1SLorenzo Pieralisi	depends on PCI_MSI_IRQ_DOMAIN
2496f2c73c1SLorenzo Pieralisi	help
2506f2c73c1SLorenzo Pieralisi	  Say Y here if you want to enable support for the Mobiveil AXI PCIe
2516f2c73c1SLorenzo Pieralisi	  Soft IP. It has up to 8 outbound and inbound windows
2526f2c73c1SLorenzo Pieralisi	  for address translation and it is a PCIe Gen4 IP.
2536f2c73c1SLorenzo Pieralisi
2546e0832faSShawn Linconfig PCIE_TANGO_SMP8759
2556e0832faSShawn Lin	bool "Tango SMP8759 PCIe controller (DANGEROUS)"
2566e0832faSShawn Lin	depends on ARCH_TANGO && PCI_MSI && OF
2576e0832faSShawn Lin	depends on BROKEN
2586e0832faSShawn Lin	select PCI_HOST_COMMON
2596e0832faSShawn Lin	help
2606e0832faSShawn Lin	  Say Y here to enable PCIe controller support for Sigma Designs
2616e0832faSShawn Lin	  Tango SMP8759-based systems.
2626e0832faSShawn Lin
2636e0832faSShawn Lin	  Note: The SMP8759 controller multiplexes PCI config and MMIO
2646e0832faSShawn Lin	  accesses, and Linux doesn't provide a way to serialize them.
2656e0832faSShawn Lin	  This can lead to data corruption if drivers perform concurrent
2666e0832faSShawn Lin	  config and MMIO accesses.
2676e0832faSShawn Lin
2686e0832faSShawn Linconfig VMD
2696e0832faSShawn Lin	depends on PCI_MSI && X86_64 && SRCU
27015854eddSChristoph Hellwig	select X86_DEV_DMA_OPS
2716e0832faSShawn Lin	tristate "Intel Volume Management Device Driver"
2726e0832faSShawn Lin	---help---
2736e0832faSShawn Lin	  Adds support for the Intel Volume Management Device (VMD). VMD is a
2746e0832faSShawn Lin	  secondary PCI host bridge that allows PCI Express root ports,
2756e0832faSShawn Lin	  and devices attached to them, to be removed from the default
2766e0832faSShawn Lin	  PCI domain and placed within the VMD domain. This provides
2776e0832faSShawn Lin	  more bus resources than are otherwise possible with a
2786e0832faSShawn Lin	  single domain. If you know your system provides one of these and
2796e0832faSShawn Lin	  has devices attached to it, say Y; if you are not sure, say N.
2806e0832faSShawn Lin
2816e0832faSShawn Lin	  To compile this driver as a module, choose M here: the
2826e0832faSShawn Lin	  module will be called vmd.
2836e0832faSShawn Lin
284348dd93eSHaiyang Zhangconfig PCI_HYPERV_INTERFACE
285348dd93eSHaiyang Zhang	tristate "Hyper-V PCI Interface"
286348dd93eSHaiyang Zhang	depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
287348dd93eSHaiyang Zhang	help
288348dd93eSHaiyang Zhang	  The Hyper-V PCI Interface is a helper driver allows other drivers to
289348dd93eSHaiyang Zhang	  have a common interface with the Hyper-V PCI frontend driver.
290348dd93eSHaiyang Zhang
2916e0832faSShawn Linsource "drivers/pci/controller/dwc/Kconfig"
2926e0832faSShawn Linendmenu
293