| 1 | # SPDX-License-Identifier: GPL-2.0 |
| 2 | |
| 3 | menu "PCI controller drivers" |
| 4 | depends on PCI |
| 5 | |
| 6 | config PCI_HOST_COMMON |
| 7 | tristate |
| 8 | select PCI_ECAM |
| 9 | |
| 10 | config PCI_AARDVARK |
| 11 | tristate "Aardvark PCIe controller" |
| 12 | depends on (ARCH_MVEBU && ARM64) || COMPILE_TEST |
| 13 | depends on OF |
| 14 | depends on PCI_MSI |
| 15 | select PCI_BRIDGE_EMUL |
| 16 | select IRQ_MSI_LIB |
| 17 | help |
| 18 | Add support for Aardvark 64bit PCIe Host Controller. This |
| 19 | controller is part of the South Bridge of the Marvel Armada |
| 20 | 3700 SoC. |
| 21 | |
| 22 | config PCIE_ALTERA |
| 23 | tristate "Altera PCIe controller" |
| 24 | depends on ARM || NIOS2 || ARM64 || COMPILE_TEST |
| 25 | help |
| 26 | Say Y here if you want to enable PCIe controller support on Altera |
| 27 | FPGA. |
| 28 | |
| 29 | config PCIE_ALTERA_MSI |
| 30 | tristate "Altera PCIe MSI feature" |
| 31 | depends on PCIE_ALTERA |
| 32 | depends on PCI_MSI |
| 33 | select IRQ_MSI_LIB |
| 34 | help |
| 35 | Say Y here if you want PCIe MSI support for the Altera FPGA. |
| 36 | This MSI driver supports Altera MSI to GIC controller IP. |
| 37 | |
| 38 | config PCIE_APPLE_MSI_DOORBELL_ADDR |
| 39 | hex |
| 40 | default 0xfffff000 |
| 41 | depends on PCIE_APPLE |
| 42 | |
| 43 | config PCIE_APPLE |
| 44 | tristate "Apple PCIe controller" |
| 45 | depends on ARCH_APPLE || COMPILE_TEST |
| 46 | depends on OF |
| 47 | depends on PCI_MSI |
| 48 | select PCI_HOST_COMMON |
| 49 | select IRQ_MSI_LIB |
| 50 | help |
| 51 | Say Y here if you want to enable PCIe controller support on Apple |
| 52 | system-on-chips, like the Apple M1. This is required for the USB |
| 53 | type-A ports, Ethernet, Wi-Fi, and Bluetooth. |
| 54 | |
| 55 | If unsure, say Y if you have an Apple Silicon system. |
| 56 | |
| 57 | config PCI_VERSATILE |
| 58 | bool "ARM Versatile PB PCI controller" |
| 59 | depends on ARCH_VERSATILE || COMPILE_TEST |
| 60 | |
| 61 | config PCIE_ASPEED |
| 62 | bool "ASPEED PCIe controller" |
| 63 | depends on ARCH_ASPEED || COMPILE_TEST |
| 64 | depends on OF |
| 65 | depends on PCI_MSI |
| 66 | select IRQ_MSI_LIB |
| 67 | help |
| 68 | Enable this option to support the PCIe controller found on ASPEED |
| 69 | SoCs. |
| 70 | |
| 71 | This driver provides initialization and management for PCIe |
| 72 | Root Complex functionality, including INTx and MSI support. |
| 73 | |
| 74 | Select Y if your platform uses an ASPEED SoC and requires PCIe |
| 75 | connectivity. |
| 76 | |
| 77 | config PCIE_BRCMSTB |
| 78 | tristate "Broadcom Brcmstb PCIe controller" |
| 79 | depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \ |
| 80 | BMIPS_GENERIC || COMPILE_TEST |
| 81 | depends on OF |
| 82 | depends on PCI_MSI |
| 83 | select IRQ_MSI_LIB |
| 84 | default ARCH_BRCMSTB || BMIPS_GENERIC |
| 85 | help |
| 86 | Say Y here to enable PCIe host controller support for |
| 87 | Broadcom STB based SoCs, like the Raspberry Pi 4. |
| 88 | |
| 89 | config PCIE_IPROC |
| 90 | tristate |
| 91 | help |
| 92 | This enables the iProc PCIe core controller support for Broadcom's |
| 93 | iProc family of SoCs. An appropriate bus interface driver needs |
| 94 | to be enabled to select this. |
| 95 | |
| 96 | config PCIE_IPROC_PLATFORM |
| 97 | tristate "Broadcom iProc PCIe platform bus driver" |
| 98 | depends on ARCH_BCM_IPROC || (ARM && COMPILE_TEST) |
| 99 | depends on OF |
| 100 | select PCIE_IPROC |
| 101 | default ARCH_BCM_IPROC |
| 102 | help |
| 103 | Say Y here if you want to use the Broadcom iProc PCIe controller |
| 104 | through the generic platform bus interface |
| 105 | |
| 106 | config PCIE_IPROC_BCMA |
| 107 | tristate "Broadcom iProc BCMA PCIe controller" |
| 108 | depends on ARM && (ARCH_BCM_IPROC || COMPILE_TEST) |
| 109 | select PCIE_IPROC |
| 110 | select BCMA |
| 111 | default ARCH_BCM_5301X |
| 112 | help |
| 113 | Say Y here if you want to use the Broadcom iProc PCIe controller |
| 114 | through the BCMA bus interface |
| 115 | |
| 116 | config PCIE_IPROC_MSI |
| 117 | bool "Broadcom iProc PCIe MSI support" |
| 118 | depends on PCIE_IPROC_PLATFORM || PCIE_IPROC_BCMA |
| 119 | depends on PCI_MSI |
| 120 | select IRQ_MSI_LIB |
| 121 | default ARCH_BCM_IPROC |
| 122 | help |
| 123 | Say Y here if you want to enable MSI support for Broadcom's iProc |
| 124 | PCIe controller |
| 125 | |
| 126 | config PCI_HOST_THUNDER_PEM |
| 127 | bool "Cavium Thunder PCIe controller to off-chip devices" |
| 128 | depends on ARM64 || COMPILE_TEST |
| 129 | depends on OF || (ACPI && PCI_QUIRKS) |
| 130 | select PCI_HOST_COMMON |
| 131 | help |
| 132 | Say Y here if you want PCIe support for CN88XX Cavium Thunder SoCs. |
| 133 | |
| 134 | config PCI_HOST_THUNDER_ECAM |
| 135 | bool "Cavium Thunder ECAM controller to on-chip devices on pass-1.x silicon" |
| 136 | depends on ARM64 || COMPILE_TEST |
| 137 | depends on OF || (ACPI && PCI_QUIRKS) |
| 138 | select PCI_HOST_COMMON |
| 139 | help |
| 140 | Say Y here if you want ECAM support for CN88XX-Pass-1.x Cavium Thunder SoCs. |
| 141 | |
| 142 | config PCI_FTPCI100 |
| 143 | bool "Faraday Technology FTPCI100 PCI controller" |
| 144 | depends on OF |
| 145 | default ARCH_GEMINI |
| 146 | |
| 147 | config PCI_HOST_GENERIC |
| 148 | tristate "Generic PCI host controller" |
| 149 | depends on OF |
| 150 | select PCI_HOST_COMMON |
| 151 | select IRQ_DOMAIN |
| 152 | help |
| 153 | Say Y here if you want to support a simple generic PCI host |
| 154 | controller, such as the one emulated by kvmtool. |
| 155 | |
| 156 | config PCIE_HISI_ERR |
| 157 | depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST) |
| 158 | bool "HiSilicon HIP PCIe controller error handling driver" |
| 159 | help |
| 160 | Say Y here if you want error handling support |
| 161 | for the PCIe controller's errors on HiSilicon HIP SoCs |
| 162 | |
| 163 | config PCI_IXP4XX |
| 164 | bool "Intel IXP4xx PCI controller" |
| 165 | depends on OF |
| 166 | depends on ARCH_IXP4XX || COMPILE_TEST |
| 167 | default ARCH_IXP4XX |
| 168 | help |
| 169 | Say Y here if you want support for the PCI host controller found |
| 170 | in the Intel IXP4xx XScale-based network processor SoC. |
| 171 | |
| 172 | config VMD |
| 173 | depends on PCI_MSI && X86_64 && !UML |
| 174 | tristate "Intel Volume Management Device Driver" |
| 175 | select IRQ_MSI_LIB |
| 176 | help |
| 177 | Adds support for the Intel Volume Management Device (VMD). VMD is a |
| 178 | secondary PCI host bridge that allows PCI Express root ports, |
| 179 | and devices attached to them, to be removed from the default |
| 180 | PCI domain and placed within the VMD domain. This provides |
| 181 | more bus resources than are otherwise possible with a |
| 182 | single domain. If you know your system provides one of these and |
| 183 | has devices attached to it, say Y; if you are not sure, say N. |
| 184 | |
| 185 | To compile this driver as a module, choose M here: the |
| 186 | module will be called vmd. |
| 187 | |
| 188 | config PCI_LOONGSON |
| 189 | bool "LOONGSON PCIe controller" |
| 190 | depends on MACH_LOONGSON32 || MACH_LOONGSON64 || COMPILE_TEST |
| 191 | depends on OF || ACPI |
| 192 | depends on PCI_QUIRKS |
| 193 | default MACH_LOONGSON64 |
| 194 | help |
| 195 | Say Y here if you want to enable PCI controller support on |
| 196 | Loongson systems. |
| 197 | |
| 198 | config PCI_MVEBU |
| 199 | tristate "Marvell EBU PCIe controller" |
| 200 | depends on ARCH_MVEBU || ARCH_DOVE || COMPILE_TEST |
| 201 | depends on MVEBU_MBUS |
| 202 | depends on ARM |
| 203 | depends on OF |
| 204 | select PCI_BRIDGE_EMUL |
| 205 | help |
| 206 | Add support for Marvell EBU PCIe controller. This PCIe controller |
| 207 | is used on 32-bit Marvell ARM SoCs: Dove, Kirkwood, Armada 370, |
| 208 | Armada XP, Armada 375, Armada 38x and Armada 39x. |
| 209 | |
| 210 | config PCIE_MEDIATEK |
| 211 | tristate "MediaTek PCIe controller" |
| 212 | depends on ARCH_AIROHA || ARCH_MEDIATEK || ECONET || COMPILE_TEST |
| 213 | depends on OF |
| 214 | depends on PCI_MSI |
| 215 | select IRQ_MSI_LIB |
| 216 | help |
| 217 | Say Y here if you want to enable PCIe controller support on |
| 218 | MediaTek SoCs. |
| 219 | |
| 220 | config PCIE_MEDIATEK_GEN3 |
| 221 | tristate "MediaTek Gen3 PCIe controller" |
| 222 | depends on ARCH_AIROHA || ARCH_MEDIATEK || COMPILE_TEST |
| 223 | depends on PCI_MSI |
| 224 | select IRQ_MSI_LIB |
| 225 | select PCI_PWRCTRL_GENERIC |
| 226 | help |
| 227 | Adds support for PCIe Gen3 MAC controller for MediaTek SoCs. |
| 228 | This PCIe controller is compatible with Gen3, Gen2 and Gen1 speed, |
| 229 | and support up to 256 MSI interrupt numbers for |
| 230 | multi-function devices. |
| 231 | |
| 232 | Say Y here if you want to enable Gen3 PCIe controller support on |
| 233 | MediaTek SoCs. |
| 234 | |
| 235 | config PCIE_MT7621 |
| 236 | tristate "MediaTek MT7621 PCIe controller" |
| 237 | depends on SOC_MT7621 || COMPILE_TEST |
| 238 | select PHY_MT7621_PCI |
| 239 | default SOC_MT7621 |
| 240 | help |
| 241 | This selects a driver for the MediaTek MT7621 PCIe Controller. |
| 242 | |
| 243 | config PCI_HYPERV_INTERFACE |
| 244 | tristate "Microsoft Hyper-V PCI Interface" |
| 245 | depends on ((X86 && X86_64) || ARM64) && HYPERV && PCI_MSI |
| 246 | help |
| 247 | The Hyper-V PCI Interface is a helper driver that allows other |
| 248 | drivers to have a common interface with the Hyper-V PCI frontend |
| 249 | driver. |
| 250 | |
| 251 | config PCI_TEGRA |
| 252 | tristate "NVIDIA Tegra PCIe controller" |
| 253 | depends on ARCH_TEGRA || COMPILE_TEST |
| 254 | depends on PCI_MSI |
| 255 | select IRQ_MSI_LIB |
| 256 | help |
| 257 | Say Y here if you want support for the PCIe host controller found |
| 258 | on NVIDIA Tegra SoCs (Tegra20 through Tegra186). |
| 259 | |
| 260 | config PCIE_TEGRA264 |
| 261 | tristate "NVIDIA Tegra264 PCIe controller" |
| 262 | depends on ARCH_TEGRA || COMPILE_TEST |
| 263 | select PCI_ECAM |
| 264 | help |
| 265 | Say Y here if you want support for the PCIe Host Controller found |
| 266 | on NVIDIA Tegra264 SoCs. |
| 267 | |
| 268 | config PCIE_RCAR_HOST |
| 269 | bool "Renesas R-Car PCIe controller (host mode)" |
| 270 | depends on ARCH_RENESAS || COMPILE_TEST |
| 271 | depends on OF |
| 272 | depends on PCI_MSI |
| 273 | select IRQ_MSI_LIB |
| 274 | help |
| 275 | Say Y here if you want PCIe controller support on R-Car SoCs in host |
| 276 | mode. |
| 277 | |
| 278 | config PCIE_RCAR_EP |
| 279 | bool "Renesas R-Car PCIe controller (endpoint mode)" |
| 280 | depends on ARCH_RENESAS || COMPILE_TEST |
| 281 | depends on PCI_ENDPOINT |
| 282 | help |
| 283 | Say Y here if you want PCIe controller support on R-Car SoCs in |
| 284 | endpoint mode. |
| 285 | |
| 286 | config PCI_RCAR_GEN2 |
| 287 | bool "Renesas R-Car Gen2 Internal PCI controller" |
| 288 | depends on (ARCH_RENESAS && ARM) || COMPILE_TEST |
| 289 | help |
| 290 | Say Y here if you want internal PCI support on R-Car Gen2 SoC. |
| 291 | Each internal PCI controller contains a single built-in EHCI/OHCI |
| 292 | host controller. |
| 293 | |
| 294 | config PCIE_RENESAS_RZG3S_HOST |
| 295 | bool "Renesas RZ/G3S PCIe host controller" |
| 296 | depends on ARCH_RENESAS || COMPILE_TEST |
| 297 | select MFD_SYSCON |
| 298 | select IRQ_MSI_LIB |
| 299 | help |
| 300 | Say Y here if you want PCIe host controller support on Renesas RZ/G3S |
| 301 | SoC. |
| 302 | |
| 303 | config PCIE_ROCKCHIP |
| 304 | bool |
| 305 | depends on PCI |
| 306 | |
| 307 | config PCIE_ROCKCHIP_HOST |
| 308 | tristate "Rockchip PCIe controller (host mode)" |
| 309 | depends on ARCH_ROCKCHIP || COMPILE_TEST |
| 310 | depends on OF |
| 311 | depends on PCI_MSI |
| 312 | select MFD_SYSCON |
| 313 | select PCIE_ROCKCHIP |
| 314 | help |
| 315 | Say Y here if you want internal PCI support on Rockchip SoC. |
| 316 | There is 1 internal PCIe port available to support GEN2 with |
| 317 | 4 slots. |
| 318 | |
| 319 | config PCIE_ROCKCHIP_EP |
| 320 | bool "Rockchip PCIe controller (endpoint mode)" |
| 321 | depends on ARCH_ROCKCHIP || COMPILE_TEST |
| 322 | depends on OF |
| 323 | depends on PCI_ENDPOINT |
| 324 | select MFD_SYSCON |
| 325 | select PCIE_ROCKCHIP |
| 326 | help |
| 327 | Say Y here if you want to support Rockchip PCIe controller in |
| 328 | endpoint mode on Rockchip SoC. There is 1 internal PCIe port |
| 329 | available to support GEN2 with 4 slots. |
| 330 | |
| 331 | config PCI_V3_SEMI |
| 332 | bool "V3 Semiconductor PCI controller" |
| 333 | depends on OF |
| 334 | depends on ARM || COMPILE_TEST |
| 335 | default ARCH_INTEGRATOR_AP |
| 336 | |
| 337 | config PCI_XGENE |
| 338 | bool "X-Gene PCIe controller" |
| 339 | depends on ARM64 || COMPILE_TEST |
| 340 | depends on OF || (ACPI && PCI_QUIRKS) |
| 341 | help |
| 342 | Say Y here if you want internal PCI support on APM X-Gene SoC. |
| 343 | There are 5 internal PCIe ports available. Each port is GEN3 capable |
| 344 | and have varied lanes from x1 to x8. |
| 345 | |
| 346 | config PCI_XGENE_MSI |
| 347 | bool "X-Gene v1 PCIe MSI feature" |
| 348 | depends on PCI_XGENE |
| 349 | depends on PCI_MSI |
| 350 | select IRQ_MSI_LIB |
| 351 | default y |
| 352 | help |
| 353 | Say Y here if you want PCIe MSI support for the APM X-Gene v1 SoC. |
| 354 | This MSI driver supports 5 PCIe ports on the APM X-Gene v1 SoC. |
| 355 | |
| 356 | config PCIE_XILINX |
| 357 | bool "Xilinx AXI PCIe controller" |
| 358 | depends on OF |
| 359 | depends on PCI_MSI |
| 360 | select IRQ_MSI_LIB |
| 361 | help |
| 362 | Say 'Y' here if you want kernel to support the Xilinx AXI PCIe |
| 363 | Host Bridge driver. |
| 364 | |
| 365 | config PCIE_XILINX_DMA_PL |
| 366 | bool "Xilinx DMA PL PCIe host bridge support" |
| 367 | depends on ARCH_ZYNQMP || COMPILE_TEST |
| 368 | depends on PCI_MSI |
| 369 | select PCI_HOST_COMMON |
| 370 | select IRQ_MSI_LIB |
| 371 | help |
| 372 | Say 'Y' here if you want kernel support for the Xilinx PL DMA |
| 373 | PCIe host bridge. The controller is a Soft IP which can act as |
| 374 | Root Port. If your system provides Xilinx PCIe host controller |
| 375 | bridge DMA as Soft IP say 'Y'; if you are not sure, say 'N'. |
| 376 | |
| 377 | config PCIE_XILINX_NWL |
| 378 | bool "Xilinx NWL PCIe controller" |
| 379 | depends on ARCH_ZYNQMP || COMPILE_TEST |
| 380 | depends on PCI_MSI |
| 381 | select IRQ_MSI_LIB |
| 382 | help |
| 383 | Say 'Y' here if you want kernel support for Xilinx |
| 384 | NWL PCIe controller. The controller can act as Root Port |
| 385 | or End Point. The current option selection will only |
| 386 | support root port enabling. |
| 387 | |
| 388 | config PCIE_XILINX_CPM |
| 389 | bool "Xilinx Versal CPM PCI controller" |
| 390 | depends on ARCH_ZYNQMP || COMPILE_TEST |
| 391 | select PCI_HOST_COMMON |
| 392 | help |
| 393 | Say 'Y' here if you want kernel support for the |
| 394 | Xilinx Versal CPM host bridge. |
| 395 | |
| 396 | source "drivers/pci/controller/cadence/Kconfig" |
| 397 | source "drivers/pci/controller/dwc/Kconfig" |
| 398 | source "drivers/pci/controller/mobiveil/Kconfig" |
| 399 | source "drivers/pci/controller/plda/Kconfig" |
| 400 | endmenu |