1# SPDX-License-Identifier: GPL-2.0 2 3menu "DesignWare-based PCIe controllers" 4 depends on PCI 5 6config PCIE_DW 7 bool 8 9config PCIE_DW_DEBUGFS 10 bool "DesignWare PCIe debugfs entries" 11 depends on DEBUG_FS 12 depends on PCIE_DW_HOST || PCIE_DW_EP 13 help 14 Say Y here to enable debugfs entries for the PCIe controller. These 15 entries provide various debug features related to the controller and 16 expose the RAS DES capabilities such as Silicon Debug, Error Injection 17 and Statistical Counters. 18 19config PCIE_DW_HOST 20 bool 21 select PCIE_DW 22 select IRQ_MSI_LIB 23 select PCI_HOST_COMMON 24 25config PCIE_DW_EP 26 bool 27 select PCIE_DW 28 29config PCIE_AL 30 bool "Amazon Annapurna Labs PCIe controller" 31 depends on OF && (ARM64 || COMPILE_TEST) 32 depends on PCI_MSI 33 select PCIE_DW_HOST 34 select PCI_ECAM 35 help 36 Say Y here to enable support of the Amazon's Annapurna Labs PCIe 37 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare 38 core plus Annapurna Labs proprietary hardware wrappers. This is 39 required only for DT-based platforms. ACPI platforms with the 40 Annapurna Labs PCIe controller don't need to enable this. 41 42config PCIE_AMD_MDB 43 bool "AMD MDB Versal2 PCIe controller" 44 depends on OF && (ARM64 || COMPILE_TEST) 45 depends on PCI_MSI 46 select PCIE_DW_HOST 47 help 48 Say Y here if you want to enable PCIe controller support on AMD 49 Versal2 SoCs. The AMD MDB Versal2 PCIe controller is based on 50 DesignWare IP and therefore the driver re-uses the DesignWare 51 core functions to implement the driver. 52 53config PCI_MESON 54 tristate "Amlogic Meson PCIe controller" 55 default m if ARCH_MESON 56 depends on PCI_MSI 57 select PCIE_DW_HOST 58 help 59 Say Y here if you want to enable PCI controller support on Amlogic 60 SoCs. The PCI controller on Amlogic is based on DesignWare hardware 61 and therefore the driver re-uses the DesignWare core functions to 62 implement the driver. 63 64config PCIE_ARTPEC6 65 bool 66 67config PCIE_ARTPEC6_HOST 68 bool "Axis ARTPEC-6 PCIe controller (host mode)" 69 depends on MACH_ARTPEC6 || COMPILE_TEST 70 depends on PCI_MSI 71 select PCIE_DW_HOST 72 select PCIE_ARTPEC6 73 help 74 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 75 host mode. This uses the DesignWare core. 76 77config PCIE_ARTPEC6_EP 78 bool "Axis ARTPEC-6 PCIe controller (endpoint mode)" 79 depends on MACH_ARTPEC6 || COMPILE_TEST 80 depends on PCI_ENDPOINT 81 select PCIE_DW_EP 82 select PCIE_ARTPEC6 83 help 84 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 85 endpoint mode. This uses the DesignWare core. 86 87config PCI_IMX6 88 bool 89 90config PCI_IMX6_HOST 91 bool "Freescale i.MX6/7/8 PCIe controller (host mode)" 92 depends on ARCH_MXC || COMPILE_TEST 93 depends on PCI_MSI 94 select PCIE_DW_HOST 95 select PCI_IMX6 96 help 97 Enables support for the PCIe controller in the i.MX SoCs to 98 work in Root Complex mode. The PCI controller on i.MX is based 99 on DesignWare hardware and therefore the driver re-uses the 100 DesignWare core functions to implement the driver. 101 102config PCI_IMX6_EP 103 bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)" 104 depends on ARCH_MXC || COMPILE_TEST 105 depends on PCI_ENDPOINT 106 select PCIE_DW_EP 107 select PCI_IMX6 108 help 109 Enables support for the PCIe controller in the i.MX SoCs to 110 work in endpoint mode. The PCI controller on i.MX is based 111 on DesignWare hardware and therefore the driver re-uses the 112 DesignWare core functions to implement the driver. 113 114config PCI_LAYERSCAPE 115 bool "Freescale Layerscape PCIe controller (host mode)" 116 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 117 depends on PCI_MSI 118 select PCIE_DW_HOST 119 select MFD_SYSCON 120 help 121 Say Y here if you want to enable PCIe controller support on Layerscape 122 SoCs to work in Host mode. 123 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 124 determines which PCIe controller works in EP mode and which PCIe 125 controller works in RC mode. 126 127config PCI_LAYERSCAPE_EP 128 bool "Freescale Layerscape PCIe controller (endpoint mode)" 129 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 130 depends on PCI_ENDPOINT 131 select PCIE_DW_EP 132 help 133 Say Y here if you want to enable PCIe controller support on Layerscape 134 SoCs to work in Endpoint mode. 135 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 136 determines which PCIe controller works in EP mode and which PCIe 137 controller works in RC mode. 138 139config PCI_HISI 140 depends on OF && (ARM64 || COMPILE_TEST) 141 bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller" 142 depends on PCI_MSI 143 select PCIE_DW_HOST 144 select PCI_HOST_COMMON 145 help 146 Say Y here if you want PCIe controller support on HiSilicon 147 Hip05 and Hip06 SoCs 148 149config PCIE_KIRIN 150 depends on OF && (ARM64 || COMPILE_TEST) 151 tristate "HiSilicon Kirin PCIe controller" 152 depends on PCI_MSI 153 select PCIE_DW_HOST 154 select REGMAP_MMIO 155 help 156 Say Y here if you want PCIe controller support 157 on HiSilicon Kirin series SoCs. 158 159config PCIE_HISI_STB 160 bool "HiSilicon STB PCIe controller" 161 depends on ARCH_HISI || COMPILE_TEST 162 depends on PCI_MSI 163 select PCIE_DW_HOST 164 help 165 Say Y here if you want PCIe controller support on HiSilicon STB SoCs 166 167config PCIE_INTEL_GW 168 bool "Intel Gateway PCIe controller " 169 depends on OF && (X86 || COMPILE_TEST) 170 depends on PCI_MSI 171 select PCIE_DW_HOST 172 help 173 Say 'Y' here to enable PCIe Host controller support on Intel 174 Gateway SoCs. 175 The PCIe controller uses the DesignWare core plus Intel-specific 176 hardware wrappers. 177 178config PCIE_KEEMBAY 179 bool 180 181config PCIE_KEEMBAY_HOST 182 bool "Intel Keem Bay PCIe controller (host mode)" 183 depends on ARCH_KEEMBAY || COMPILE_TEST 184 depends on PCI_MSI 185 select PCIE_DW_HOST 186 select PCIE_KEEMBAY 187 help 188 Say 'Y' here to enable support for the PCIe controller in Keem Bay 189 to work in host mode. 190 The PCIe controller is based on DesignWare Hardware and uses 191 DesignWare core functions. 192 193config PCIE_KEEMBAY_EP 194 bool "Intel Keem Bay PCIe controller (endpoint mode)" 195 depends on ARCH_KEEMBAY || COMPILE_TEST 196 depends on PCI_MSI 197 depends on PCI_ENDPOINT 198 select PCIE_DW_EP 199 select PCIE_KEEMBAY 200 help 201 Say 'Y' here to enable support for the PCIe controller in Keem Bay 202 to work in endpoint mode. 203 The PCIe controller is based on DesignWare Hardware and uses 204 DesignWare core functions. 205 206config PCIE_ARMADA_8K 207 bool "Marvell Armada-8K PCIe controller" 208 depends on ARCH_MVEBU || COMPILE_TEST 209 depends on PCI_MSI 210 select PCIE_DW_HOST 211 help 212 Say Y here if you want to enable PCIe controller support on 213 Armada-8K SoCs. The PCIe controller on Armada-8K is based on 214 DesignWare hardware and therefore the driver re-uses the 215 DesignWare core functions to implement the driver. 216 217config PCIE_TEGRA194 218 tristate 219 220config PCIE_TEGRA194_HOST 221 tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)" 222 depends on (ARCH_TEGRA && ARM64) || COMPILE_TEST 223 depends on PCI_MSI 224 select PCIE_DW_HOST 225 select PHY_TEGRA194_P2U 226 select PCIE_TEGRA194 227 help 228 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 229 work in host mode. There are two instances of PCIe controllers in 230 Tegra194. This controller can work either as EP or RC. In order to 231 enable host-specific features PCIE_TEGRA194_HOST must be selected and 232 in order to enable device-specific features PCIE_TEGRA194_EP must be 233 selected. This uses the DesignWare core. 234 235config PCIE_TEGRA194_EP 236 tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)" 237 depends on (ARCH_TEGRA && ARM64) || COMPILE_TEST 238 depends on PCI_ENDPOINT 239 select PCIE_DW_EP 240 select PHY_TEGRA194_P2U 241 select PCIE_TEGRA194 242 help 243 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 244 work in endpoint mode. There are two instances of PCIe controllers in 245 Tegra194. This controller can work either as EP or RC. In order to 246 enable host-specific features PCIE_TEGRA194_HOST must be selected and 247 in order to enable device-specific features PCIE_TEGRA194_EP must be 248 selected. This uses the DesignWare core. 249 250config PCIE_NXP_S32G 251 bool "NXP S32G PCIe controller (host mode)" 252 depends on ARCH_S32 || COMPILE_TEST 253 select PCIE_DW_HOST 254 help 255 Enable support for the PCIe controller in NXP S32G based boards to 256 work in Host mode. The controller is based on DesignWare IP and 257 can work either as RC or EP. In order to enable host-specific 258 features PCIE_NXP_S32G must be selected. 259 260config PCIE_DW_PLAT 261 bool 262 263config PCIE_DW_PLAT_HOST 264 bool "Platform bus based DesignWare PCIe controller (host mode)" 265 depends on PCI_MSI 266 select PCIE_DW_HOST 267 select PCIE_DW_PLAT 268 help 269 Enables support for the PCIe controller in the Designware IP to 270 work in host mode. There are two instances of PCIe controller in 271 Designware IP. 272 This controller can work either as EP or RC. In order to enable 273 host-specific features PCIE_DW_PLAT_HOST must be selected and in 274 order to enable device-specific features PCI_DW_PLAT_EP must be 275 selected. 276 277config PCIE_DW_PLAT_EP 278 bool "Platform bus based DesignWare PCIe controller (endpoint mode)" 279 depends on PCI && PCI_MSI 280 depends on PCI_ENDPOINT 281 select PCIE_DW_EP 282 select PCIE_DW_PLAT 283 help 284 Enables support for the PCIe controller in the Designware IP to 285 work in endpoint mode. There are two instances of PCIe controller 286 in Designware IP. 287 This controller can work either as EP or RC. In order to enable 288 host-specific features PCIE_DW_PLAT_HOST must be selected and in 289 order to enable device-specific features PCI_DW_PLAT_EP must be 290 selected. 291 292config PCIE_QCOM_COMMON 293 bool 294 295config PCIE_QCOM 296 bool "Qualcomm PCIe controller (host mode)" 297 depends on OF && (ARCH_QCOM || COMPILE_TEST) 298 depends on PCI_MSI 299 select PCIE_DW_HOST 300 select CRC8 301 select PCIE_QCOM_COMMON 302 select PCI_HOST_COMMON 303 select PCI_PWRCTRL_GENERIC 304 help 305 Say Y here to enable PCIe controller support on Qualcomm SoCs. The 306 PCIe controller uses the DesignWare core plus Qualcomm-specific 307 hardware wrappers. 308 309config PCIE_QCOM_EP 310 tristate "Qualcomm PCIe controller (endpoint mode)" 311 depends on OF && (ARCH_QCOM || COMPILE_TEST) 312 depends on PCI_ENDPOINT 313 select PCIE_DW_EP 314 select PCIE_QCOM_COMMON 315 help 316 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs 317 to work in endpoint mode. The PCIe controller uses the DesignWare core 318 plus Qualcomm-specific hardware wrappers. 319 320config PCIE_RCAR_GEN4 321 tristate 322 323config PCIE_RCAR_GEN4_HOST 324 tristate "Renesas R-Car Gen4 PCIe controller (host mode)" 325 depends on ARCH_RENESAS || COMPILE_TEST 326 depends on PCI_MSI 327 select PCIE_DW_HOST 328 select PCIE_RCAR_GEN4 329 help 330 Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs. 331 To compile this driver as a module, choose M here: the module will be 332 called pcie-rcar-gen4.ko. This uses the DesignWare core. 333 334config PCIE_RCAR_GEN4_EP 335 tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)" 336 depends on ARCH_RENESAS || COMPILE_TEST 337 depends on PCI_ENDPOINT 338 select PCIE_DW_EP 339 select PCIE_RCAR_GEN4 340 help 341 Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4 342 SoCs. To compile this driver as a module, choose M here: the module 343 will be called pcie-rcar-gen4.ko. This uses the DesignWare core. 344 345config PCIE_ROCKCHIP_DW 346 bool 347 348config PCIE_ROCKCHIP_DW_HOST 349 bool "Rockchip DesignWare PCIe controller (host mode)" 350 depends on PCI_MSI 351 depends on ARCH_ROCKCHIP || COMPILE_TEST 352 depends on OF 353 select PCIE_DW_HOST 354 select PCIE_ROCKCHIP_DW 355 help 356 Enables support for the DesignWare PCIe controller in the 357 Rockchip SoC (except RK3399) to work in host mode. 358 359config PCIE_ROCKCHIP_DW_EP 360 bool "Rockchip DesignWare PCIe controller (endpoint mode)" 361 depends on ARCH_ROCKCHIP || COMPILE_TEST 362 depends on OF 363 depends on PCI_ENDPOINT 364 select PCIE_DW_EP 365 select PCIE_ROCKCHIP_DW 366 help 367 Enables support for the DesignWare PCIe controller in the 368 Rockchip SoC (except RK3399) to work in endpoint mode. 369 370config PCI_EXYNOS 371 tristate "Samsung Exynos PCIe controller" 372 depends on ARCH_EXYNOS || COMPILE_TEST 373 depends on PCI_MSI 374 select PCIE_DW_HOST 375 help 376 Enables support for the PCIe controller in the Samsung Exynos SoCs 377 to work in host mode. The PCI controller is based on the DesignWare 378 hardware and therefore the driver re-uses the DesignWare core 379 functions to implement the driver. 380 381config PCIE_FU740 382 bool "SiFive FU740 PCIe controller" 383 depends on PCI_MSI 384 depends on ARCH_SIFIVE || COMPILE_TEST 385 select PCIE_DW_HOST 386 help 387 Say Y here if you want PCIe controller support for the SiFive 388 FU740. 389 390config PCIE_UNIPHIER 391 bool "Socionext UniPhier PCIe controller (host mode)" 392 depends on ARCH_UNIPHIER || COMPILE_TEST 393 depends on OF && HAS_IOMEM 394 depends on PCI_MSI 395 select PCIE_DW_HOST 396 help 397 Say Y here if you want PCIe host controller support on UniPhier SoCs. 398 This driver supports LD20 and PXs3 SoCs. 399 400config PCIE_UNIPHIER_EP 401 bool "Socionext UniPhier PCIe controller (endpoint mode)" 402 depends on ARCH_UNIPHIER || COMPILE_TEST 403 depends on OF && HAS_IOMEM 404 depends on PCI_ENDPOINT 405 select PCIE_DW_EP 406 help 407 Say Y here if you want PCIe endpoint controller support on 408 UniPhier SoCs. This driver supports Pro5 SoC. 409 410config PCIE_SOPHGO_DW 411 bool "Sophgo DesignWare PCIe controller (host mode)" 412 depends on ARCH_SOPHGO || COMPILE_TEST 413 depends on PCI_MSI 414 depends on OF 415 select PCIE_DW_HOST 416 help 417 Say Y here if you want PCIe host controller support on 418 Sophgo SoCs. 419 420config PCIE_SPACEMIT_K1 421 tristate "SpacemiT K1 PCIe controller (host mode)" 422 depends on ARCH_SPACEMIT || COMPILE_TEST 423 depends on HAS_IOMEM 424 select PCIE_DW_HOST 425 select PCI_PWRCTRL_GENERIC 426 default ARCH_SPACEMIT 427 help 428 Enables support for the DesignWare based PCIe controller in 429 the SpacemiT K1 SoC operating in host mode. Three controllers 430 are available on the K1 SoC; the first of these shares a PHY 431 with a USB 3.0 host controller (one or the other can be used). 432 433config PCIE_SPEAR13XX 434 bool "STMicroelectronics SPEAr PCIe controller" 435 depends on ARCH_SPEAR13XX || COMPILE_TEST 436 depends on PCI_MSI 437 select PCIE_DW_HOST 438 help 439 Say Y here if you want PCIe support on SPEAr13XX SoCs. 440 441config PCIE_STM32_HOST 442 tristate "STMicroelectronics STM32MP25 PCIe Controller (host mode)" 443 depends on ARCH_STM32 || COMPILE_TEST 444 depends on PCI_MSI 445 select PCIE_DW_HOST 446 help 447 Enables Root Complex (RC) support for the DesignWare core based PCIe 448 controller found in STM32MP25 SoC. 449 450 This driver can also be built as a module. If so, the module 451 will be called pcie-stm32. 452 453config PCIE_STM32_EP 454 tristate "STMicroelectronics STM32MP25 PCIe Controller (endpoint mode)" 455 depends on ARCH_STM32 || COMPILE_TEST 456 depends on PCI_ENDPOINT 457 select PCIE_DW_EP 458 help 459 Enables Endpoint (EP) support for the DesignWare core based PCIe 460 controller found in STM32MP25 SoC. 461 462 This driver can also be built as a module. If so, the module 463 will be called pcie-stm32-ep. 464 465config PCI_DRA7XX 466 tristate 467 468config PCI_DRA7XX_HOST 469 tristate "TI DRA7xx PCIe controller (host mode)" 470 depends on SOC_DRA7XX || COMPILE_TEST 471 depends on OF && HAS_IOMEM && TI_PIPE3 472 depends on PCI_MSI 473 select PCIE_DW_HOST 474 select PCI_DRA7XX 475 default y if SOC_DRA7XX 476 help 477 Enables support for the PCIe controller in the DRA7xx SoC to work in 478 host mode. There are two instances of PCIe controller in DRA7xx. 479 This controller can work either as EP or RC. In order to enable 480 host-specific features PCI_DRA7XX_HOST must be selected and in order 481 to enable device-specific features PCI_DRA7XX_EP must be selected. 482 This uses the DesignWare core. 483 484config PCI_DRA7XX_EP 485 tristate "TI DRA7xx PCIe controller (endpoint mode)" 486 depends on SOC_DRA7XX || COMPILE_TEST 487 depends on OF && HAS_IOMEM && TI_PIPE3 488 depends on PCI_ENDPOINT 489 select PCIE_DW_EP 490 select PCI_DRA7XX 491 help 492 Enables support for the PCIe controller in the DRA7xx SoC to work in 493 endpoint mode. There are two instances of PCIe controller in DRA7xx. 494 This controller can work either as EP or RC. In order to enable 495 host-specific features PCI_DRA7XX_HOST must be selected and in order 496 to enable device-specific features PCI_DRA7XX_EP must be selected. 497 This uses the DesignWare core. 498 499# ARM32 platforms use hook_fault_code() and cannot support loadable module. 500config PCI_KEYSTONE 501 bool 502 503# On non-ARM32 platforms, loadable module can be supported. 504config PCI_KEYSTONE_TRISTATE 505 tristate 506 507config PCI_KEYSTONE_HOST 508 tristate "TI Keystone PCIe controller (host mode)" 509 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 510 depends on PCI_MSI 511 select PCIE_DW_HOST 512 select PCI_KEYSTONE if ARM 513 select PCI_KEYSTONE_TRISTATE if !ARM 514 help 515 Enables support for the PCIe controller in the Keystone SoC to 516 work in host mode. The PCI controller on Keystone is based on 517 DesignWare hardware and therefore the driver re-uses the 518 DesignWare core functions to implement the driver. 519 520config PCI_KEYSTONE_EP 521 tristate "TI Keystone PCIe controller (endpoint mode)" 522 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 523 depends on PCI_ENDPOINT 524 select PCIE_DW_EP 525 select PCI_KEYSTONE if ARM 526 select PCI_KEYSTONE_TRISTATE if !ARM 527 help 528 Enables support for the PCIe controller in the Keystone SoC to 529 work in endpoint mode. The PCI controller on Keystone is based 530 on DesignWare hardware and therefore the driver re-uses the 531 DesignWare core functions to implement the driver. 532 533config PCIE_VISCONTI_HOST 534 bool "Toshiba Visconti PCIe controller" 535 depends on ARCH_VISCONTI || COMPILE_TEST 536 depends on PCI_MSI 537 select PCIE_DW_HOST 538 help 539 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 540 This driver supports TMPV7708 SoC. 541 542endmenu 543