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