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