xref: /linux/drivers/pci/controller/Kconfig (revision 1e33888fbe44ade6e9d54eb7c6c5e92d1455ff08)
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
15526a7699SPali Rohár	tristate "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
40f7821b49SLinus Walleijconfig PCI_IXP4XX
41f7821b49SLinus Walleij	bool "Intel IXP4xx PCI controller"
42f7821b49SLinus Walleij	depends on ARM && OF
439f1168cfSGeert Uytterhoeven	depends on ARCH_IXP4XX || COMPILE_TEST
44f7821b49SLinus Walleij	default ARCH_IXP4XX
45f7821b49SLinus Walleij	help
46f7821b49SLinus Walleij	  Say Y here if you want support for the PCI host controller found
47f7821b49SLinus Walleij	  in the Intel IXP4xx XScale-based network processor SoC.
48f7821b49SLinus Walleij
496e0832faSShawn Linconfig PCI_TEGRA
506e0832faSShawn Lin	bool "NVIDIA Tegra PCIe controller"
516e0832faSShawn Lin	depends on ARCH_TEGRA || COMPILE_TEST
526e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
536e0832faSShawn Lin	help
546e0832faSShawn Lin	  Say Y here if you want support for the PCIe host controller found
556e0832faSShawn Lin	  on NVIDIA Tegra SoCs.
566e0832faSShawn Lin
576e0832faSShawn Linconfig PCI_RCAR_GEN2
586e0832faSShawn Lin	bool "Renesas R-Car Gen2 Internal PCI controller"
596e0832faSShawn Lin	depends on ARCH_RENESAS || COMPILE_TEST
606e0832faSShawn Lin	depends on ARM
616e0832faSShawn Lin	help
626e0832faSShawn Lin	  Say Y here if you want internal PCI support on R-Car Gen2 SoC.
636e0832faSShawn Lin	  There are 3 internal PCI controllers available with a single
646e0832faSShawn Lin	  built-in EHCI/OHCI host controller present on each one.
656e0832faSShawn Lin
66a18f4b6eSLad Prabhakarconfig PCIE_RCAR_HOST
67a18f4b6eSLad Prabhakar	bool "Renesas R-Car PCIe host controller"
68a18f4b6eSLad Prabhakar	depends on ARCH_RENESAS || COMPILE_TEST
69a18f4b6eSLad Prabhakar	depends on PCI_MSI_IRQ_DOMAIN
70a18f4b6eSLad Prabhakar	help
71a18f4b6eSLad Prabhakar	  Say Y here if you want PCIe controller support on R-Car SoCs in host
72a18f4b6eSLad Prabhakar	  mode.
736e0832faSShawn Lin
742a6d0d63SLad Prabhakarconfig PCIE_RCAR_EP
752a6d0d63SLad Prabhakar	bool "Renesas R-Car PCIe endpoint controller"
762a6d0d63SLad Prabhakar	depends on ARCH_RENESAS || COMPILE_TEST
772a6d0d63SLad Prabhakar	depends on PCI_ENDPOINT
782a6d0d63SLad Prabhakar	help
792a6d0d63SLad Prabhakar	  Say Y here if you want PCIe controller support on R-Car SoCs in
802a6d0d63SLad Prabhakar	  endpoint mode.
816e0832faSShawn Lin
826e0832faSShawn Linconfig PCI_HOST_COMMON
830c59c06aSRob Herring	tristate
846e0832faSShawn Lin	select PCI_ECAM
856e0832faSShawn Lin
866e0832faSShawn Linconfig PCI_HOST_GENERIC
870c59c06aSRob Herring	tristate "Generic PCI host controller"
886e0832faSShawn Lin	depends on OF
896e0832faSShawn Lin	select PCI_HOST_COMMON
906e0832faSShawn Lin	select IRQ_DOMAIN
916e0832faSShawn Lin	help
926e0832faSShawn Lin	  Say Y here if you want to support a simple generic PCI host
936e0832faSShawn Lin	  controller, such as the one emulated by kvmtool.
946e0832faSShawn Lin
956e0832faSShawn Linconfig PCIE_XILINX
966e0832faSShawn Lin	bool "Xilinx AXI PCIe host bridge support"
9734dbc9c6SChristoph Hellwig	depends on OF || COMPILE_TEST
98313b64c3SMarc Zyngier	depends on PCI_MSI_IRQ_DOMAIN
996e0832faSShawn Lin	help
1006e0832faSShawn Lin	  Say 'Y' here if you want kernel to support the Xilinx AXI PCIe
1016e0832faSShawn Lin	  Host Bridge driver.
1026e0832faSShawn Lin
103508f6106SBharat Kumar Gogadaconfig PCIE_XILINX_CPM
104508f6106SBharat Kumar Gogada	bool "Xilinx Versal CPM host bridge support"
105508f6106SBharat Kumar Gogada	depends on ARCH_ZYNQMP || COMPILE_TEST
106508f6106SBharat Kumar Gogada	select PCI_HOST_COMMON
107508f6106SBharat Kumar Gogada	help
108508f6106SBharat Kumar Gogada	  Say 'Y' here if you want kernel support for the
109508f6106SBharat Kumar Gogada	  Xilinx Versal CPM host bridge.
110508f6106SBharat Kumar Gogada
1116e0832faSShawn Linconfig PCI_XGENE
1126e0832faSShawn Lin	bool "X-Gene PCIe controller"
1136e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1146e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1156e0832faSShawn Lin	help
1166e0832faSShawn Lin	  Say Y here if you want internal PCI support on APM X-Gene SoC.
1176e0832faSShawn Lin	  There are 5 internal PCIe ports available. Each port is GEN3 capable
1186e0832faSShawn Lin	  and have varied lanes from x1 to x8.
1196e0832faSShawn Lin
1206e0832faSShawn Linconfig PCI_XGENE_MSI
1216e0832faSShawn Lin	bool "X-Gene v1 PCIe MSI feature"
1226e0832faSShawn Lin	depends on PCI_XGENE
1236e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1246e0832faSShawn Lin	default y
1256e0832faSShawn Lin	help
1266e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC.
1276e0832faSShawn Lin	  This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC.
1286e0832faSShawn Lin
1296e0832faSShawn Linconfig PCI_V3_SEMI
1306e0832faSShawn Lin	bool "V3 Semiconductor PCI controller"
1316e0832faSShawn Lin	depends on OF
1326e0832faSShawn Lin	depends on ARM || COMPILE_TEST
1336e0832faSShawn Lin	default ARCH_INTEGRATOR_AP
1346e0832faSShawn Lin
1356e0832faSShawn Linconfig PCI_VERSATILE
1366e0832faSShawn Lin	bool "ARM Versatile PB PCI controller"
137ecf8fd6dSRob Herring	depends on ARCH_VERSATILE || COMPILE_TEST
1386e0832faSShawn Lin
1396e0832faSShawn Linconfig PCIE_IPROC
1406e0832faSShawn Lin	tristate
1416e0832faSShawn Lin	help
1426e0832faSShawn Lin	  This enables the iProc PCIe core controller support for Broadcom's
1436e0832faSShawn Lin	  iProc family of SoCs. An appropriate bus interface driver needs
1446e0832faSShawn Lin	  to be enabled to select this.
1456e0832faSShawn Lin
1466e0832faSShawn Linconfig PCIE_IPROC_PLATFORM
1476e0832faSShawn Lin	tristate "Broadcom iProc PCIe platform bus driver"
1486e0832faSShawn Lin	depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST)
1496e0832faSShawn Lin	depends on OF
1506e0832faSShawn Lin	select PCIE_IPROC
1516e0832faSShawn Lin	default ARCH_BCM_IPROC
1526e0832faSShawn Lin	help
1536e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1546e0832faSShawn Lin	  through the generic platform bus interface
1556e0832faSShawn Lin
1566e0832faSShawn Linconfig PCIE_IPROC_BCMA
1576e0832faSShawn Lin	tristate "Broadcom iProc PCIe BCMA bus driver"
1586e0832faSShawn Lin	depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST)
1596e0832faSShawn Lin	select PCIE_IPROC
1606e0832faSShawn Lin	select BCMA
1616e0832faSShawn Lin	default ARCH_BCM_5301X
1626e0832faSShawn Lin	help
1636e0832faSShawn Lin	  Say Y here if you want to use the Broadcom iProc PCIe controller
1646e0832faSShawn Lin	  through the BCMA bus interface
1656e0832faSShawn Lin
1666e0832faSShawn Linconfig PCIE_IPROC_MSI
1676e0832faSShawn Lin	bool "Broadcom iProc PCIe MSI support"
1686e0832faSShawn Lin	depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA
1696e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1706e0832faSShawn Lin	default ARCH_BCM_IPROC
1716e0832faSShawn Lin	help
1726e0832faSShawn Lin	  Say Y here if you want to enable MSI support for Broadcom's iProc
1736e0832faSShawn Lin	  PCIe controller
1746e0832faSShawn Lin
1756e0832faSShawn Linconfig PCIE_ALTERA
176ec15c4d0SLey Foon Tan	tristate "Altera PCIe controller"
1775fd831cdSLey Foon Tan	depends on ARM || NIOS2 || ARM64 || COMPILE_TEST
1786e0832faSShawn Lin	help
1796e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on Altera
1806e0832faSShawn Lin	  FPGA.
1816e0832faSShawn Lin
1826e0832faSShawn Linconfig PCIE_ALTERA_MSI
183c7ddfd35SLey Foon Tan	tristate "Altera PCIe MSI feature"
1846e0832faSShawn Lin	depends on PCIE_ALTERA
1856e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
1866e0832faSShawn Lin	help
1876e0832faSShawn Lin	  Say Y here if you want PCIe MSI support for the Altera FPGA.
1886e0832faSShawn Lin	  This MSI driver supports Altera MSI to GIC controller IP.
1896e0832faSShawn Lin
1906e0832faSShawn Linconfig PCI_HOST_THUNDER_PEM
1916e0832faSShawn Lin	bool "Cavium Thunder PCIe controller to off-chip devices"
1926e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
1936e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
1946e0832faSShawn Lin	select PCI_HOST_COMMON
1956e0832faSShawn Lin	help
1966e0832faSShawn Lin	  Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs.
1976e0832faSShawn Lin
1986e0832faSShawn Linconfig PCI_HOST_THUNDER_ECAM
1996e0832faSShawn Lin	bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon"
2006e0832faSShawn Lin	depends on ARM64 || COMPILE_TEST
2016e0832faSShawn Lin	depends on OF || (ACPI && PCI_QUIRKS)
2026e0832faSShawn Lin	select PCI_HOST_COMMON
2036e0832faSShawn Lin	help
2046e0832faSShawn Lin	  Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs.
2056e0832faSShawn Lin
2066e0832faSShawn Linconfig PCIE_ROCKCHIP
2076e0832faSShawn Lin	bool
2086e0832faSShawn Lin	depends on PCI
2096e0832faSShawn Lin
2106e0832faSShawn Linconfig PCIE_ROCKCHIP_HOST
2116e0832faSShawn Lin	tristate "Rockchip PCIe host controller"
2126e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2136e0832faSShawn Lin	depends on OF
2146e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
2156e0832faSShawn Lin	select MFD_SYSCON
2166e0832faSShawn Lin	select PCIE_ROCKCHIP
2176e0832faSShawn Lin	help
2186e0832faSShawn Lin	  Say Y here if you want internal PCI support on Rockchip SoC.
2196e0832faSShawn Lin	  There is 1 internal PCIe port available to support GEN2 with
2206e0832faSShawn Lin	  4 slots.
2216e0832faSShawn Lin
2226e0832faSShawn Linconfig PCIE_ROCKCHIP_EP
2236e0832faSShawn Lin	bool "Rockchip PCIe endpoint controller"
2246e0832faSShawn Lin	depends on ARCH_ROCKCHIP || COMPILE_TEST
2256e0832faSShawn Lin	depends on OF
2266e0832faSShawn Lin	depends on PCI_ENDPOINT
2276e0832faSShawn Lin	select MFD_SYSCON
2286e0832faSShawn Lin	select PCIE_ROCKCHIP
2296e0832faSShawn Lin	help
2306e0832faSShawn Lin	  Say Y here if you want to support Rockchip PCIe controller in
2316e0832faSShawn Lin	  endpoint mode on Rockchip SoC. There is 1 internal PCIe port
2326e0832faSShawn Lin	  available to support GEN2 with 4 slots.
2336e0832faSShawn Lin
2346e0832faSShawn Linconfig PCIE_MEDIATEK
235031337acSHonghui Zhang	tristate "MediaTek PCIe controller"
2366e0832faSShawn Lin	depends on ARCH_MEDIATEK || COMPILE_TEST
2376e0832faSShawn Lin	depends on OF
2386e0832faSShawn Lin	depends on PCI_MSI_IRQ_DOMAIN
2396e0832faSShawn Lin	help
2406e0832faSShawn Lin	  Say Y here if you want to enable PCIe controller support on
2416e0832faSShawn Lin	  MediaTek SoCs.
2426e0832faSShawn Lin
243d3bf75b5SJianjun Wangconfig PCIE_MEDIATEK_GEN3
244d3bf75b5SJianjun Wang	tristate "MediaTek Gen3 PCIe controller"
245d3bf75b5SJianjun Wang	depends on ARCH_MEDIATEK || COMPILE_TEST
246d3bf75b5SJianjun Wang	depends on PCI_MSI_IRQ_DOMAIN
247d3bf75b5SJianjun Wang	help
248d3bf75b5SJianjun Wang	  Adds support for PCIe Gen3 MAC controller for MediaTek SoCs.
249d3bf75b5SJianjun Wang	  This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed,
250d3bf75b5SJianjun Wang	  and support up to 256 MSI interrupt numbers for
251d3bf75b5SJianjun Wang	  multi-function devices.
252d3bf75b5SJianjun Wang
253d3bf75b5SJianjun Wang	  Say Y here if you want to enable Gen3 PCIe controller support on
254d3bf75b5SJianjun Wang	  MediaTek SoCs.
255d3bf75b5SJianjun Wang
2566e0832faSShawn Linconfig VMD
2576e0832faSShawn Lin	depends on PCI_MSI && X86_64 && SRCU
2586e0832faSShawn Lin	tristate "Intel Volume Management Device Driver"
259a7f7f624SMasahiro Yamada	help
2606e0832faSShawn Lin	  Adds support for the Intel Volume Management Device (VMD). VMD is a
2616e0832faSShawn Lin	  secondary PCI host bridge that allows PCI Express root ports,
2626e0832faSShawn Lin	  and devices attached to them, to be removed from the default
2636e0832faSShawn Lin	  PCI domain and placed within the VMD domain. This provides
2646e0832faSShawn Lin	  more bus resources than are otherwise possible with a
2656e0832faSShawn Lin	  single domain. If you know your system provides one of these and
2666e0832faSShawn Lin	  has devices attached to it, say Y; if you are not sure, say N.
2676e0832faSShawn Lin
2686e0832faSShawn Lin	  To compile this driver as a module, choose M here: the
2696e0832faSShawn Lin	  module will be called vmd.
2706e0832faSShawn Lin
271c0452137SJim Quinlanconfig PCIE_BRCMSTB
272c0452137SJim Quinlan	tristate "Broadcom Brcmstb PCIe host controller"
2730cdfacebSRafał Miłecki	depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCM4908 || COMPILE_TEST
274c0452137SJim Quinlan	depends on OF
27540ca1bf5SJim Quinlan	depends on PCI_MSI_IRQ_DOMAIN
276b927ad34SJim Quinlan	default ARCH_BRCMSTB
277c0452137SJim Quinlan	help
278c0452137SJim Quinlan	  Say Y here to enable PCIe host controller support for
279c0452137SJim Quinlan	  Broadcom STB based SoCs, like the Raspberry Pi 4.
280c0452137SJim Quinlan
281348dd93eSHaiyang Zhangconfig PCI_HYPERV_INTERFACE
282348dd93eSHaiyang Zhang	tristate "Hyper-V PCI Interface"
283348dd93eSHaiyang Zhang	depends on X86 && HYPERV && PCI_MSI && PCI_MSI_IRQ_DOMAIN && X86_64
284348dd93eSHaiyang Zhang	help
285348dd93eSHaiyang Zhang	  The Hyper-V PCI Interface is a helper driver allows other drivers to
286348dd93eSHaiyang Zhang	  have a common interface with the Hyper-V PCI frontend driver.
287348dd93eSHaiyang Zhang
2881f58cca5SJiaxun Yangconfig PCI_LOONGSON
2891f58cca5SJiaxun Yang	bool "LOONGSON PCI Controller"
2901f58cca5SJiaxun Yang	depends on MACH_LOONGSON64 || COMPILE_TEST
2911f58cca5SJiaxun Yang	depends on OF
2921f58cca5SJiaxun Yang	depends on PCI_QUIRKS
2931f58cca5SJiaxun Yang	default MACH_LOONGSON64
2941f58cca5SJiaxun Yang	help
2951f58cca5SJiaxun Yang	  Say Y here if you want to enable PCI controller support on
2961f58cca5SJiaxun Yang	  Loongson systems.
2971f58cca5SJiaxun Yang
2986f15a9c9SDaire McNamaraconfig PCIE_MICROCHIP_HOST
2996f15a9c9SDaire McNamara	bool "Microchip AXI PCIe host bridge support"
3006f15a9c9SDaire McNamara	depends on PCI_MSI && OF
3016f15a9c9SDaire McNamara	select PCI_MSI_IRQ_DOMAIN
3026f15a9c9SDaire McNamara	select GENERIC_MSI_IRQ_DOMAIN
3036f15a9c9SDaire McNamara	select PCI_HOST_COMMON
3046f15a9c9SDaire McNamara	help
3056f15a9c9SDaire McNamara	  Say Y here if you want kernel to support the Microchip AXI PCIe
3066f15a9c9SDaire McNamara	  Host Bridge driver.
3076f15a9c9SDaire McNamara
308acb52897SYicong Yangconfig PCIE_HISI_ERR
309acb52897SYicong Yang	depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
310acb52897SYicong Yang	bool "HiSilicon HIP PCIe controller error handling driver"
311acb52897SYicong Yang	help
312acb52897SYicong Yang	  Say Y here if you want error handling support
313acb52897SYicong Yang	  for the PCIe controller's errors on HiSilicon HIP SoCs
314acb52897SYicong Yang
315*1e33888fSAlyssa Rosenzweigconfig PCIE_APPLE
316*1e33888fSAlyssa Rosenzweig	tristate "Apple PCIe controller"
317*1e33888fSAlyssa Rosenzweig	depends on ARCH_APPLE || COMPILE_TEST
318*1e33888fSAlyssa Rosenzweig	depends on OF
319*1e33888fSAlyssa Rosenzweig	depends on PCI_MSI_IRQ_DOMAIN
320*1e33888fSAlyssa Rosenzweig	select PCI_HOST_COMMON
321*1e33888fSAlyssa Rosenzweig	help
322*1e33888fSAlyssa Rosenzweig	  Say Y here if you want to enable PCIe controller support on Apple
323*1e33888fSAlyssa Rosenzweig	  system-on-chips, like the Apple M1. This is required for the USB
324*1e33888fSAlyssa Rosenzweig	  type-A ports, Ethernet, Wi-Fi, and Bluetooth.
325*1e33888fSAlyssa Rosenzweig
326*1e33888fSAlyssa Rosenzweig	  If unsure, say Y if you have an Apple Silicon system.
327*1e33888fSAlyssa Rosenzweig
3286e0832faSShawn Linsource "drivers/pci/controller/dwc/Kconfig"
32903bdc388SHou Zhiqiangsource "drivers/pci/controller/mobiveil/Kconfig"
330de80f95cSTom Josephsource "drivers/pci/controller/cadence/Kconfig"
3316e0832faSShawn Linendmenu
332