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 12b3574f57SPali Rohár depends on BROKEN 131f08673eSThomas Petazzoni select PCI_BRIDGE_EMUL 147f09a4b1SPali Rohár help 157f09a4b1SPali Rohár Add support for Marvell EBU PCIe controller. This PCIe controller 167f09a4b1SPali Rohár is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370, 177f09a4b1SPali Rohár Armada XP, Armada 375, Armada 38x and Armada 39x. 186e0832faSShawn Lin 196e0832faSShawn Linconfig PCI_AARDVARK 20526a7699SPali Rohár tristate "Aardvark PCIe controller" 216e0832faSShawn Lin depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST 226e0832faSShawn Lin depends on OF 23a474d3fbSThomas Gleixner depends on PCI_MSI 248a3ebd8dSZachary Zhang select PCI_BRIDGE_EMUL 256e0832faSShawn Lin help 266e0832faSShawn Lin Add support for Aardvark 64bit PCIe Host Controller. This 276e0832faSShawn Lin controller is part of the South Bridge of the Marvel Armada 286e0832faSShawn Lin 3700 SoC. 296e0832faSShawn Lin 306e0832faSShawn Linconfig PCIE_XILINX_NWL 31bf909c57SBjorn Helgaas bool "Xilinx NWL PCIe controller" 326e0832faSShawn Lin depends on ARCH_ZYNQMP || COMPILE_TEST 33a474d3fbSThomas Gleixner depends on PCI_MSI 346e0832faSShawn Lin help 356e0832faSShawn Lin Say 'Y' here if you want kernel support for Xilinx 366e0832faSShawn Lin NWL PCIe controller. The controller can act as Root Port 376e0832faSShawn Lin or End Point. The current option selection will only 386e0832faSShawn Lin support root port enabling. 396e0832faSShawn Lin 406e0832faSShawn Linconfig PCI_FTPCI100 416e0832faSShawn Lin bool "Faraday Technology FTPCI100 PCI controller" 426e0832faSShawn Lin depends on OF 436e0832faSShawn Lin default ARCH_GEMINI 446e0832faSShawn Lin 45f7821b49SLinus Walleijconfig PCI_IXP4XX 46f7821b49SLinus Walleij bool "Intel IXP4xx PCI controller" 47f7821b49SLinus Walleij depends on ARM && OF 489f1168cfSGeert Uytterhoeven depends on ARCH_IXP4XX || COMPILE_TEST 49f7821b49SLinus Walleij default ARCH_IXP4XX 50f7821b49SLinus Walleij help 51f7821b49SLinus Walleij Say Y here if you want support for the PCI host controller found 52f7821b49SLinus Walleij in the Intel IXP4xx XScale-based network processor SoC. 53f7821b49SLinus Walleij 546e0832faSShawn Linconfig PCI_TEGRA 556e0832faSShawn Lin bool "NVIDIA Tegra PCIe controller" 566e0832faSShawn Lin depends on ARCH_TEGRA || COMPILE_TEST 57a474d3fbSThomas Gleixner depends on PCI_MSI 586e0832faSShawn Lin help 596e0832faSShawn Lin Say Y here if you want support for the PCIe host controller found 606e0832faSShawn Lin on NVIDIA Tegra SoCs. 616e0832faSShawn Lin 626e0832faSShawn Linconfig PCI_RCAR_GEN2 636e0832faSShawn Lin bool "Renesas R-Car Gen2 Internal PCI controller" 646e0832faSShawn Lin depends on ARCH_RENESAS || COMPILE_TEST 656e0832faSShawn Lin depends on ARM 666e0832faSShawn Lin help 676e0832faSShawn Lin Say Y here if you want internal PCI support on R-Car Gen2 SoC. 686e0832faSShawn Lin There are 3 internal PCI controllers available with a single 696e0832faSShawn Lin built-in EHCI/OHCI host controller present on each one. 706e0832faSShawn Lin 71a18f4b6eSLad Prabhakarconfig PCIE_RCAR_HOST 72*80c170d7SBjorn Helgaas bool "Renesas R-Car PCIe controller (host mode)" 73a18f4b6eSLad Prabhakar depends on ARCH_RENESAS || COMPILE_TEST 74a474d3fbSThomas Gleixner depends on PCI_MSI 75a18f4b6eSLad Prabhakar help 76a18f4b6eSLad Prabhakar Say Y here if you want PCIe controller support on R-Car SoCs in host 77a18f4b6eSLad Prabhakar mode. 786e0832faSShawn Lin 792a6d0d63SLad Prabhakarconfig PCIE_RCAR_EP 80*80c170d7SBjorn Helgaas bool "Renesas R-Car PCIe controller (endpoint mode)" 812a6d0d63SLad Prabhakar depends on ARCH_RENESAS || COMPILE_TEST 822a6d0d63SLad Prabhakar depends on PCI_ENDPOINT 832a6d0d63SLad Prabhakar help 842a6d0d63SLad Prabhakar Say Y here if you want PCIe controller support on R-Car SoCs in 852a6d0d63SLad Prabhakar endpoint mode. 866e0832faSShawn Lin 876e0832faSShawn Linconfig PCI_HOST_COMMON 880c59c06aSRob Herring tristate 896e0832faSShawn Lin select PCI_ECAM 906e0832faSShawn Lin 916e0832faSShawn Linconfig PCI_HOST_GENERIC 920c59c06aSRob Herring tristate "Generic PCI host controller" 936e0832faSShawn Lin depends on OF 946e0832faSShawn Lin select PCI_HOST_COMMON 956e0832faSShawn Lin select IRQ_DOMAIN 966e0832faSShawn Lin help 976e0832faSShawn Lin Say Y here if you want to support a simple generic PCI host 986e0832faSShawn Lin controller, such as the one emulated by kvmtool. 996e0832faSShawn Lin 1006e0832faSShawn Linconfig PCIE_XILINX 101*80c170d7SBjorn Helgaas bool "Xilinx AXI PCIe controller" 10234dbc9c6SChristoph Hellwig depends on OF || COMPILE_TEST 103a474d3fbSThomas Gleixner depends on PCI_MSI 1046e0832faSShawn Lin help 1056e0832faSShawn Lin Say 'Y' here if you want kernel to support the Xilinx AXI PCIe 1066e0832faSShawn Lin Host Bridge driver. 1076e0832faSShawn Lin 108508f6106SBharat Kumar Gogadaconfig PCIE_XILINX_CPM 109*80c170d7SBjorn Helgaas bool "Xilinx Versal CPM PCI controller" 110508f6106SBharat Kumar Gogada depends on ARCH_ZYNQMP || COMPILE_TEST 111508f6106SBharat Kumar Gogada select PCI_HOST_COMMON 112508f6106SBharat Kumar Gogada help 113508f6106SBharat Kumar Gogada Say 'Y' here if you want kernel support for the 114508f6106SBharat Kumar Gogada Xilinx Versal CPM host bridge. 115508f6106SBharat Kumar Gogada 1166e0832faSShawn Linconfig PCI_XGENE 1176e0832faSShawn Lin bool "X-Gene PCIe controller" 1186e0832faSShawn Lin depends on ARM64 || COMPILE_TEST 1196e0832faSShawn Lin depends on OF || (ACPI && PCI_QUIRKS) 1206e0832faSShawn Lin help 1216e0832faSShawn Lin Say Y here if you want internal PCI support on APM X-Gene SoC. 1226e0832faSShawn Lin There are 5 internal PCIe ports available. Each port is GEN3 capable 1236e0832faSShawn Lin and have varied lanes from x1 to x8. 1246e0832faSShawn Lin 1256e0832faSShawn Linconfig PCI_XGENE_MSI 1266e0832faSShawn Lin bool "X-Gene v1 PCIe MSI feature" 1276e0832faSShawn Lin depends on PCI_XGENE 128a474d3fbSThomas Gleixner depends on PCI_MSI 1296e0832faSShawn Lin default y 1306e0832faSShawn Lin help 1316e0832faSShawn Lin Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. 1326e0832faSShawn Lin This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. 1336e0832faSShawn Lin 1346e0832faSShawn Linconfig PCI_V3_SEMI 1356e0832faSShawn Lin bool "V3 Semiconductor PCI controller" 1366e0832faSShawn Lin depends on OF 1376e0832faSShawn Lin depends on ARM || COMPILE_TEST 1386e0832faSShawn Lin default ARCH_INTEGRATOR_AP 1396e0832faSShawn Lin 1406e0832faSShawn Linconfig PCI_VERSATILE 1416e0832faSShawn Lin bool "ARM Versatile PB PCI controller" 142ecf8fd6dSRob Herring depends on ARCH_VERSATILE || COMPILE_TEST 1436e0832faSShawn Lin 1446e0832faSShawn Linconfig PCIE_IPROC 1456e0832faSShawn Lin tristate 1466e0832faSShawn Lin help 1476e0832faSShawn Lin This enables the iProc PCIe core controller support for Broadcom's 1486e0832faSShawn Lin iProc family of SoCs. An appropriate bus interface driver needs 1496e0832faSShawn Lin to be enabled to select this. 1506e0832faSShawn Lin 1516e0832faSShawn Linconfig PCIE_IPROC_PLATFORM 1526e0832faSShawn Lin tristate "Broadcom iProc PCIe platform bus driver" 1536e0832faSShawn Lin depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) 1546e0832faSShawn Lin depends on OF 1556e0832faSShawn Lin select PCIE_IPROC 1566e0832faSShawn Lin default ARCH_BCM_IPROC 1576e0832faSShawn Lin help 1586e0832faSShawn Lin Say Y here if you want to use the Broadcom iProc PCIe controller 1596e0832faSShawn Lin through the generic platform bus interface 1606e0832faSShawn Lin 1616e0832faSShawn Linconfig PCIE_IPROC_BCMA 162*80c170d7SBjorn Helgaas tristate "Broadcom iProc BCMA PCIe controller" 1636e0832faSShawn Lin depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) 1646e0832faSShawn Lin select PCIE_IPROC 1656e0832faSShawn Lin select BCMA 1666e0832faSShawn Lin default ARCH_BCM_5301X 1676e0832faSShawn Lin help 1686e0832faSShawn Lin Say Y here if you want to use the Broadcom iProc PCIe controller 1696e0832faSShawn Lin through the BCMA bus interface 1706e0832faSShawn Lin 1716e0832faSShawn Linconfig PCIE_IPROC_MSI 1726e0832faSShawn Lin bool "Broadcom iProc PCIe MSI support" 1736e0832faSShawn Lin depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA 174a474d3fbSThomas Gleixner depends on PCI_MSI 1756e0832faSShawn Lin default ARCH_BCM_IPROC 1766e0832faSShawn Lin help 1776e0832faSShawn Lin Say Y here if you want to enable MSI support for Broadcom's iProc 1786e0832faSShawn Lin PCIe controller 1796e0832faSShawn Lin 1806e0832faSShawn Linconfig PCIE_ALTERA 181ec15c4d0SLey Foon Tan tristate "Altera PCIe controller" 1825fd831cdSLey Foon Tan depends on ARM || NIOS2 || ARM64 || COMPILE_TEST 1836e0832faSShawn Lin help 1846e0832faSShawn Lin Say Y here if you want to enable PCIe controller support on Altera 1856e0832faSShawn Lin FPGA. 1866e0832faSShawn Lin 1876e0832faSShawn Linconfig PCIE_ALTERA_MSI 188c7ddfd35SLey Foon Tan tristate "Altera PCIe MSI feature" 1896e0832faSShawn Lin depends on PCIE_ALTERA 190a474d3fbSThomas Gleixner depends on PCI_MSI 1916e0832faSShawn Lin help 1926e0832faSShawn Lin Say Y here if you want PCIe MSI support for the Altera FPGA. 1936e0832faSShawn Lin This MSI driver supports Altera MSI to GIC controller IP. 1946e0832faSShawn Lin 1956e0832faSShawn Linconfig PCI_HOST_THUNDER_PEM 1966e0832faSShawn Lin bool "Cavium Thunder PCIe controller to off-chip devices" 1976e0832faSShawn Lin depends on ARM64 || COMPILE_TEST 1986e0832faSShawn Lin depends on OF || (ACPI && PCI_QUIRKS) 1996e0832faSShawn Lin select PCI_HOST_COMMON 2006e0832faSShawn Lin help 2016e0832faSShawn Lin Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. 2026e0832faSShawn Lin 2036e0832faSShawn Linconfig PCI_HOST_THUNDER_ECAM 2046e0832faSShawn Lin bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" 2056e0832faSShawn Lin depends on ARM64 || COMPILE_TEST 2066e0832faSShawn Lin depends on OF || (ACPI && PCI_QUIRKS) 2076e0832faSShawn Lin select PCI_HOST_COMMON 2086e0832faSShawn Lin help 2096e0832faSShawn Lin Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. 2106e0832faSShawn Lin 2116e0832faSShawn Linconfig PCIE_ROCKCHIP 2126e0832faSShawn Lin bool 2136e0832faSShawn Lin depends on PCI 2146e0832faSShawn Lin 2156e0832faSShawn Linconfig PCIE_ROCKCHIP_HOST 216*80c170d7SBjorn Helgaas tristate "Rockchip PCIe controller (host mode)" 2176e0832faSShawn Lin depends on ARCH_ROCKCHIP || COMPILE_TEST 2186e0832faSShawn Lin depends on OF 219a474d3fbSThomas Gleixner depends on PCI_MSI 2206e0832faSShawn Lin select MFD_SYSCON 2216e0832faSShawn Lin select PCIE_ROCKCHIP 2226e0832faSShawn Lin help 2236e0832faSShawn Lin Say Y here if you want internal PCI support on Rockchip SoC. 2246e0832faSShawn Lin There is 1 internal PCIe port available to support GEN2 with 2256e0832faSShawn Lin 4 slots. 2266e0832faSShawn Lin 2276e0832faSShawn Linconfig PCIE_ROCKCHIP_EP 228*80c170d7SBjorn Helgaas bool "Rockchip PCIe controller (endpoint mode)" 2296e0832faSShawn Lin depends on ARCH_ROCKCHIP || COMPILE_TEST 2306e0832faSShawn Lin depends on OF 2316e0832faSShawn Lin depends on PCI_ENDPOINT 2326e0832faSShawn Lin select MFD_SYSCON 2336e0832faSShawn Lin select PCIE_ROCKCHIP 2346e0832faSShawn Lin help 2356e0832faSShawn Lin Say Y here if you want to support Rockchip PCIe controller in 2366e0832faSShawn Lin endpoint mode on Rockchip SoC. There is 1 internal PCIe port 2376e0832faSShawn Lin available to support GEN2 with 4 slots. 2386e0832faSShawn Lin 2396e0832faSShawn Linconfig PCIE_MEDIATEK 240031337acSHonghui Zhang tristate "MediaTek PCIe controller" 241b3b76fc8SFelix Fietkau depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST 2426e0832faSShawn Lin depends on OF 243a474d3fbSThomas Gleixner depends on PCI_MSI 2446e0832faSShawn Lin help 2456e0832faSShawn Lin Say Y here if you want to enable PCIe controller support on 2466e0832faSShawn Lin MediaTek SoCs. 2476e0832faSShawn Lin 248d3bf75b5SJianjun Wangconfig PCIE_MEDIATEK_GEN3 249d3bf75b5SJianjun Wang tristate "MediaTek Gen3 PCIe controller" 250d3bf75b5SJianjun Wang depends on ARCH_MEDIATEK || COMPILE_TEST 251a474d3fbSThomas Gleixner depends on PCI_MSI 252d3bf75b5SJianjun Wang help 253d3bf75b5SJianjun Wang Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. 254d3bf75b5SJianjun Wang This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, 255d3bf75b5SJianjun Wang and support up to 256 MSI interrupt numbers for 256d3bf75b5SJianjun Wang multi-function devices. 257d3bf75b5SJianjun Wang 258d3bf75b5SJianjun Wang Say Y here if you want to enable Gen3 PCIe controller support on 259d3bf75b5SJianjun Wang MediaTek SoCs. 260d3bf75b5SJianjun Wang 2616e0832faSShawn Linconfig VMD 262a8f0ff91SPaul E. McKenney depends on PCI_MSI && X86_64 && !UML 2636e0832faSShawn Lin tristate "Intel Volume Management Device Driver" 264a7f7f624SMasahiro Yamada help 2656e0832faSShawn Lin Adds support for the Intel Volume Management Device (VMD). VMD is a 2666e0832faSShawn Lin secondary PCI host bridge that allows PCI Express root ports, 2676e0832faSShawn Lin and devices attached to them, to be removed from the default 2686e0832faSShawn Lin PCI domain and placed within the VMD domain. This provides 2696e0832faSShawn Lin more bus resources than are otherwise possible with a 2706e0832faSShawn Lin single domain. If you know your system provides one of these and 2716e0832faSShawn Lin has devices attached to it, say Y; if you are not sure, say N. 2726e0832faSShawn Lin 2736e0832faSShawn Lin To compile this driver as a module, choose M here: the 2746e0832faSShawn Lin module will be called vmd. 2756e0832faSShawn Lin 276c0452137SJim Quinlanconfig PCIE_BRCMSTB 277*80c170d7SBjorn Helgaas tristate "Broadcom Brcmstb PCIe controller" 2787bb49d77SWilliam Zhang depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \ 27970060ee3SFlorian Fainelli BMIPS_GENERIC || COMPILE_TEST 280c0452137SJim Quinlan depends on OF 281a474d3fbSThomas Gleixner depends on PCI_MSI 282aa8589aaSJim Quinlan default ARCH_BRCMSTB || BMIPS_GENERIC 283c0452137SJim Quinlan help 284c0452137SJim Quinlan Say Y here to enable PCIe host controller support for 285c0452137SJim Quinlan Broadcom STB based SoCs, like the Raspberry Pi 4. 286c0452137SJim Quinlan 287348dd93eSHaiyang Zhangconfig PCI_HYPERV_INTERFACE 2887f5441c1SBjorn Helgaas tristate "Microsoft Hyper-V PCI Interface" 2899574d57fSLukas Bulwahn depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI 290348dd93eSHaiyang Zhang help 2917f5441c1SBjorn Helgaas The Hyper-V PCI Interface is a helper driver that allows other 2927f5441c1SBjorn Helgaas drivers to have a common interface with the Hyper-V PCI frontend 2937f5441c1SBjorn Helgaas driver. 294348dd93eSHaiyang Zhang 2951f58cca5SJiaxun Yangconfig PCI_LOONGSON 296*80c170d7SBjorn Helgaas bool "LOONGSON PCIe controller" 2971f58cca5SJiaxun Yang depends on MACH_LOONGSON64 || COMPILE_TEST 298cd89eddaSHuacai Chen depends on OF || ACPI 2991f58cca5SJiaxun Yang depends on PCI_QUIRKS 3001f58cca5SJiaxun Yang default MACH_LOONGSON64 3011f58cca5SJiaxun Yang help 3021f58cca5SJiaxun Yang Say Y here if you want to enable PCI controller support on 3031f58cca5SJiaxun Yang Loongson systems. 3041f58cca5SJiaxun Yang 3056f15a9c9SDaire McNamaraconfig PCIE_MICROCHIP_HOST 306*80c170d7SBjorn Helgaas bool "Microchip AXI PCIe controller" 3076f15a9c9SDaire McNamara depends on PCI_MSI && OF 3086f15a9c9SDaire McNamara select PCI_HOST_COMMON 3096f15a9c9SDaire McNamara help 3106f15a9c9SDaire McNamara Say Y here if you want kernel to support the Microchip AXI PCIe 3116f15a9c9SDaire McNamara Host Bridge driver. 3126f15a9c9SDaire McNamara 313acb52897SYicong Yangconfig PCIE_HISI_ERR 314acb52897SYicong Yang depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) 315acb52897SYicong Yang bool "HiSilicon HIP PCIe controller error handling driver" 316acb52897SYicong Yang help 317acb52897SYicong Yang Say Y here if you want error handling support 318acb52897SYicong Yang for the PCIe controller's errors on HiSilicon HIP SoCs 319acb52897SYicong Yang 320946d619fSMarc Zyngierconfig PCIE_APPLE_MSI_DOORBELL_ADDR 321946d619fSMarc Zyngier hex 322946d619fSMarc Zyngier default 0xfffff000 323946d619fSMarc Zyngier depends on PCIE_APPLE 324946d619fSMarc Zyngier 3251e33888fSAlyssa Rosenzweigconfig PCIE_APPLE 3261e33888fSAlyssa Rosenzweig tristate "Apple PCIe controller" 3271e33888fSAlyssa Rosenzweig depends on ARCH_APPLE || COMPILE_TEST 3281e33888fSAlyssa Rosenzweig depends on OF 329a474d3fbSThomas Gleixner depends on PCI_MSI 3301e33888fSAlyssa Rosenzweig select PCI_HOST_COMMON 3311e33888fSAlyssa Rosenzweig help 3321e33888fSAlyssa Rosenzweig Say Y here if you want to enable PCIe controller support on Apple 3331e33888fSAlyssa Rosenzweig system-on-chips, like the Apple M1. This is required for the USB 3341e33888fSAlyssa Rosenzweig type-A ports, Ethernet, Wi-Fi, and Bluetooth. 3351e33888fSAlyssa Rosenzweig 3361e33888fSAlyssa Rosenzweig If unsure, say Y if you have an Apple Silicon system. 3371e33888fSAlyssa Rosenzweig 3382bdd5238SSergio Paracuellosconfig PCIE_MT7621 339*80c170d7SBjorn Helgaas tristate "MediaTek MT7621 PCIe controller" 34044ddb791SSergio Paracuellos depends on SOC_MT7621 || COMPILE_TEST 3412bdd5238SSergio Paracuellos select PHY_MT7621_PCI 3422bdd5238SSergio Paracuellos default SOC_MT7621 3432bdd5238SSergio Paracuellos help 3442bdd5238SSergio Paracuellos This selects a driver for the MediaTek MT7621 PCIe Controller. 3452bdd5238SSergio Paracuellos 3466e0832faSShawn Linsource "drivers/pci/controller/dwc/Kconfig" 34703bdc388SHou Zhiqiangsource "drivers/pci/controller/mobiveil/Kconfig" 348de80f95cSTom Josephsource "drivers/pci/controller/cadence/Kconfig" 3496e0832faSShawn Linendmenu 350