|  | # SPDX-License-Identifier: GPL-2.0 | 
|  |  | 
|  | menu "PCI controller drivers" | 
|  | depends on PCI | 
|  |  | 
|  | config PCI_AARDVARK | 
|  | tristate "Aardvark PCIe controller" | 
|  | depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | select PCI_BRIDGE_EMUL | 
|  | help | 
|  | Add support for Aardvark 64bit PCIe Host Controller. This | 
|  | controller is part of the South Bridge of the Marvel Armada | 
|  | 3700 SoC. | 
|  |  | 
|  | config PCIE_ALTERA | 
|  | tristate "Altera PCIe controller" | 
|  | depends on ARM || NIOS2 || ARM64 || COMPILE_TEST | 
|  | help | 
|  | Say Y here if you want to enable PCIe controller support on Altera | 
|  | FPGA. | 
|  |  | 
|  | config PCIE_ALTERA_MSI | 
|  | tristate "Altera PCIe MSI feature" | 
|  | depends on PCIE_ALTERA | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say Y here if you want PCIe MSI support for the Altera FPGA. | 
|  | This MSI driver supports Altera MSI to GIC controller IP. | 
|  |  | 
|  | config PCIE_APPLE_MSI_DOORBELL_ADDR | 
|  | hex | 
|  | default 0xfffff000 | 
|  | depends on PCIE_APPLE | 
|  |  | 
|  | config PCIE_APPLE | 
|  | tristate "Apple PCIe controller" | 
|  | depends on ARCH_APPLE || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | select PCI_HOST_COMMON | 
|  | help | 
|  | Say Y here if you want to enable PCIe controller support on Apple | 
|  | system-on-chips, like the Apple M1. This is required for the USB | 
|  | type-A ports, Ethernet, Wi-Fi, and Bluetooth. | 
|  |  | 
|  | If unsure, say Y if you have an Apple Silicon system. | 
|  |  | 
|  | config PCI_VERSATILE | 
|  | bool "ARM Versatile PB PCI controller" | 
|  | depends on ARCH_VERSATILE || COMPILE_TEST | 
|  |  | 
|  | config PCIE_BRCMSTB | 
|  | tristate "Broadcom Brcmstb PCIe controller" | 
|  | depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \ | 
|  | BMIPS_GENERIC || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | default ARCH_BRCMSTB || BMIPS_GENERIC | 
|  | help | 
|  | Say Y here to enable PCIe host controller support for | 
|  | Broadcom STB based SoCs, like the Raspberry Pi 4. | 
|  |  | 
|  | config PCIE_IPROC | 
|  | tristate | 
|  | help | 
|  | This enables the iProc PCIe core controller support for Broadcom's | 
|  | iProc family of SoCs. An appropriate bus interface driver needs | 
|  | to be enabled to select this. | 
|  |  | 
|  | config PCIE_IPROC_PLATFORM | 
|  | tristate "Broadcom iProc PCIe platform bus driver" | 
|  | depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) | 
|  | depends on OF | 
|  | select PCIE_IPROC | 
|  | default ARCH_BCM_IPROC | 
|  | help | 
|  | Say Y here if you want to use the Broadcom iProc PCIe controller | 
|  | through the generic platform bus interface | 
|  |  | 
|  | config PCIE_IPROC_BCMA | 
|  | tristate "Broadcom iProc BCMA PCIe controller" | 
|  | depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) | 
|  | select PCIE_IPROC | 
|  | select BCMA | 
|  | default ARCH_BCM_5301X | 
|  | help | 
|  | Say Y here if you want to use the Broadcom iProc PCIe controller | 
|  | through the BCMA bus interface | 
|  |  | 
|  | config PCIE_IPROC_MSI | 
|  | bool "Broadcom iProc PCIe MSI support" | 
|  | depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA | 
|  | depends on PCI_MSI | 
|  | default ARCH_BCM_IPROC | 
|  | help | 
|  | Say Y here if you want to enable MSI support for Broadcom's iProc | 
|  | PCIe controller | 
|  |  | 
|  | config PCI_HOST_THUNDER_PEM | 
|  | bool "Cavium Thunder PCIe controller to off-chip devices" | 
|  | depends on ARM64 || COMPILE_TEST | 
|  | depends on OF || (ACPI && PCI_QUIRKS) | 
|  | select PCI_HOST_COMMON | 
|  | help | 
|  | Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. | 
|  |  | 
|  | config PCI_HOST_THUNDER_ECAM | 
|  | bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" | 
|  | depends on ARM64 || COMPILE_TEST | 
|  | depends on OF || (ACPI && PCI_QUIRKS) | 
|  | select PCI_HOST_COMMON | 
|  | help | 
|  | Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. | 
|  |  | 
|  | config PCI_FTPCI100 | 
|  | bool "Faraday Technology FTPCI100 PCI controller" | 
|  | depends on OF | 
|  | default ARCH_GEMINI | 
|  |  | 
|  | config PCI_HOST_COMMON | 
|  | tristate | 
|  | select PCI_ECAM | 
|  |  | 
|  | config PCI_HOST_GENERIC | 
|  | tristate "Generic PCI host controller" | 
|  | depends on OF | 
|  | select PCI_HOST_COMMON | 
|  | select IRQ_DOMAIN | 
|  | help | 
|  | Say Y here if you want to support a simple generic PCI host | 
|  | controller, such as the one emulated by kvmtool. | 
|  |  | 
|  | config PCIE_HISI_ERR | 
|  | depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) | 
|  | bool "HiSilicon HIP PCIe controller error handling driver" | 
|  | help | 
|  | Say Y here if you want error handling support | 
|  | for the PCIe controller's errors on HiSilicon HIP SoCs | 
|  |  | 
|  | config PCI_IXP4XX | 
|  | bool "Intel IXP4xx PCI controller" | 
|  | depends on ARM && OF | 
|  | depends on ARCH_IXP4XX || COMPILE_TEST | 
|  | default ARCH_IXP4XX | 
|  | help | 
|  | Say Y here if you want support for the PCI host controller found | 
|  | in the Intel IXP4xx XScale-based network processor SoC. | 
|  |  | 
|  | config VMD | 
|  | depends on PCI_MSI && X86_64 && !UML | 
|  | tristate "Intel Volume Management Device Driver" | 
|  | help | 
|  | Adds support for the Intel Volume Management Device (VMD). VMD is a | 
|  | secondary PCI host bridge that allows PCI Express root ports, | 
|  | and devices attached to them, to be removed from the default | 
|  | PCI domain and placed within the VMD domain. This provides | 
|  | more bus resources than are otherwise possible with a | 
|  | single domain. If you know your system provides one of these and | 
|  | has devices attached to it, say Y; if you are not sure, say N. | 
|  |  | 
|  | To compile this driver as a module, choose M here: the | 
|  | module will be called vmd. | 
|  |  | 
|  | config PCI_LOONGSON | 
|  | bool "LOONGSON PCIe controller" | 
|  | depends on MACH_LOONGSON64 || COMPILE_TEST | 
|  | depends on OF || ACPI | 
|  | depends on PCI_QUIRKS | 
|  | default MACH_LOONGSON64 | 
|  | help | 
|  | Say Y here if you want to enable PCI controller support on | 
|  | Loongson systems. | 
|  |  | 
|  | config PCI_MVEBU | 
|  | tristate "Marvell EBU PCIe controller" | 
|  | depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST | 
|  | depends on MVEBU_MBUS | 
|  | depends on ARM | 
|  | depends on OF | 
|  | select PCI_BRIDGE_EMUL | 
|  | help | 
|  | Add support for Marvell EBU PCIe controller. This PCIe controller | 
|  | is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370, | 
|  | Armada XP, Armada 375, Armada 38x and Armada 39x. | 
|  |  | 
|  | config PCIE_MEDIATEK | 
|  | tristate "MediaTek PCIe controller" | 
|  | depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say Y here if you want to enable PCIe controller support on | 
|  | MediaTek SoCs. | 
|  |  | 
|  | config PCIE_MEDIATEK_GEN3 | 
|  | tristate "MediaTek Gen3 PCIe controller" | 
|  | depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. | 
|  | This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, | 
|  | and support up to 256 MSI interrupt numbers for | 
|  | multi-function devices. | 
|  |  | 
|  | Say Y here if you want to enable Gen3 PCIe controller support on | 
|  | MediaTek SoCs. | 
|  |  | 
|  | config PCIE_MT7621 | 
|  | tristate "MediaTek MT7621 PCIe controller" | 
|  | depends on SOC_MT7621 || COMPILE_TEST | 
|  | select PHY_MT7621_PCI | 
|  | default SOC_MT7621 | 
|  | help | 
|  | This selects a driver for the MediaTek MT7621 PCIe Controller. | 
|  |  | 
|  | config PCI_HYPERV_INTERFACE | 
|  | tristate "Microsoft Hyper-V PCI Interface" | 
|  | depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI | 
|  | help | 
|  | The Hyper-V PCI Interface is a helper driver that allows other | 
|  | drivers to have a common interface with the Hyper-V PCI frontend | 
|  | driver. | 
|  |  | 
|  | config PCI_TEGRA | 
|  | bool "NVIDIA Tegra PCIe controller" | 
|  | depends on ARCH_TEGRA || COMPILE_TEST | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say Y here if you want support for the PCIe host controller found | 
|  | on NVIDIA Tegra SoCs. | 
|  |  | 
|  | config PCIE_RCAR_HOST | 
|  | bool "Renesas R-Car PCIe controller (host mode)" | 
|  | depends on ARCH_RENESAS || COMPILE_TEST | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say Y here if you want PCIe controller support on R-Car SoCs in host | 
|  | mode. | 
|  |  | 
|  | config PCIE_RCAR_EP | 
|  | bool "Renesas R-Car PCIe controller (endpoint mode)" | 
|  | depends on ARCH_RENESAS || COMPILE_TEST | 
|  | depends on PCI_ENDPOINT | 
|  | help | 
|  | Say Y here if you want PCIe controller support on R-Car SoCs in | 
|  | endpoint mode. | 
|  |  | 
|  | config PCI_RCAR_GEN2 | 
|  | bool "Renesas R-Car Gen2 Internal PCI controller" | 
|  | depends on ARCH_RENESAS || COMPILE_TEST | 
|  | depends on ARM | 
|  | help | 
|  | Say Y here if you want internal PCI support on R-Car Gen2 SoC. | 
|  | There are 3 internal PCI controllers available with a single | 
|  | built-in EHCI/OHCI host controller present on each one. | 
|  |  | 
|  | config PCIE_ROCKCHIP | 
|  | bool | 
|  | depends on PCI | 
|  |  | 
|  | config PCIE_ROCKCHIP_HOST | 
|  | tristate "Rockchip PCIe controller (host mode)" | 
|  | depends on ARCH_ROCKCHIP || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | select MFD_SYSCON | 
|  | select PCIE_ROCKCHIP | 
|  | help | 
|  | Say Y here if you want internal PCI support on Rockchip SoC. | 
|  | There is 1 internal PCIe port available to support GEN2 with | 
|  | 4 slots. | 
|  |  | 
|  | config PCIE_ROCKCHIP_EP | 
|  | bool "Rockchip PCIe controller (endpoint mode)" | 
|  | depends on ARCH_ROCKCHIP || COMPILE_TEST | 
|  | depends on OF | 
|  | depends on PCI_ENDPOINT | 
|  | select MFD_SYSCON | 
|  | select PCIE_ROCKCHIP | 
|  | help | 
|  | Say Y here if you want to support Rockchip PCIe controller in | 
|  | endpoint mode on Rockchip SoC. There is 1 internal PCIe port | 
|  | available to support GEN2 with 4 slots. | 
|  |  | 
|  | config PCI_V3_SEMI | 
|  | bool "V3 Semiconductor PCI controller" | 
|  | depends on OF | 
|  | depends on ARM || COMPILE_TEST | 
|  | default ARCH_INTEGRATOR_AP | 
|  |  | 
|  | config PCI_XGENE | 
|  | bool "X-Gene PCIe controller" | 
|  | depends on ARM64 || COMPILE_TEST | 
|  | depends on OF || (ACPI && PCI_QUIRKS) | 
|  | help | 
|  | Say Y here if you want internal PCI support on APM X-Gene SoC. | 
|  | There are 5 internal PCIe ports available. Each port is GEN3 capable | 
|  | and have varied lanes from x1 to x8. | 
|  |  | 
|  | config PCI_XGENE_MSI | 
|  | bool "X-Gene v1 PCIe MSI feature" | 
|  | depends on PCI_XGENE | 
|  | depends on PCI_MSI | 
|  | default y | 
|  | help | 
|  | Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. | 
|  | This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. | 
|  |  | 
|  | config PCIE_XILINX | 
|  | bool "Xilinx AXI PCIe controller" | 
|  | depends on OF | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say 'Y' here if you want kernel to support the Xilinx AXI PCIe | 
|  | Host Bridge driver. | 
|  |  | 
|  | config PCIE_XILINX_DMA_PL | 
|  | bool "Xilinx DMA PL PCIe host bridge support" | 
|  | depends on ARCH_ZYNQMP || COMPILE_TEST | 
|  | depends on PCI_MSI | 
|  | select PCI_HOST_COMMON | 
|  | help | 
|  | Say 'Y' here if you want kernel support for the Xilinx PL DMA | 
|  | PCIe host bridge. The controller is a Soft IP which can act as | 
|  | Root Port. If your system provides Xilinx PCIe host controller | 
|  | bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'. | 
|  |  | 
|  | config PCIE_XILINX_NWL | 
|  | bool "Xilinx NWL PCIe controller" | 
|  | depends on ARCH_ZYNQMP || COMPILE_TEST | 
|  | depends on PCI_MSI | 
|  | help | 
|  | Say 'Y' here if you want kernel support for Xilinx | 
|  | NWL PCIe controller. The controller can act as Root Port | 
|  | or End Point. The current option selection will only | 
|  | support root port enabling. | 
|  |  | 
|  | config PCIE_XILINX_CPM | 
|  | bool "Xilinx Versal CPM PCI controller" | 
|  | depends on ARCH_ZYNQMP || COMPILE_TEST | 
|  | select PCI_HOST_COMMON | 
|  | help | 
|  | Say 'Y' here if you want kernel support for the | 
|  | Xilinx Versal CPM host bridge. | 
|  |  | 
|  | source "drivers/pci/controller/cadence/Kconfig" | 
|  | source "drivers/pci/controller/dwc/Kconfig" | 
|  | source "drivers/pci/controller/mobiveil/Kconfig" | 
|  | source "drivers/pci/controller/plda/Kconfig" | 
|  | endmenu |