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