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_DW_PLAT 260 bool 261 262config PCIE_DW_PLAT_HOST 263 bool "Platform bus based DesignWare PCIe controller (host mode)" 264 depends on PCI_MSI 265 select PCIE_DW_HOST 266 select PCIE_DW_PLAT 267 help 268 Enables support for the PCIe controller in the Designware IP to 269 work in host mode. There are two instances of PCIe controller in 270 Designware IP. 271 This controller can work either as EP or RC. In order to enable 272 host-specific features PCIE_DW_PLAT_HOST must be selected and in 273 order to enable device-specific features PCI_DW_PLAT_EP must be 274 selected. 275 276config PCIE_DW_PLAT_EP 277 bool "Platform bus based DesignWare PCIe controller (endpoint mode)" 278 depends on PCI && PCI_MSI 279 depends on PCI_ENDPOINT 280 select PCIE_DW_EP 281 select PCIE_DW_PLAT 282 help 283 Enables support for the PCIe controller in the Designware IP to 284 work in endpoint mode. There are two instances of PCIe controller 285 in Designware IP. 286 This controller can work either as EP or RC. In order to enable 287 host-specific features PCIE_DW_PLAT_HOST must be selected and in 288 order to enable device-specific features PCI_DW_PLAT_EP must be 289 selected. 290 291config PCIE_QCOM_COMMON 292 bool 293 294config PCIE_QCOM 295 bool "Qualcomm PCIe controller (host mode)" 296 depends on OF && (ARCH_QCOM || COMPILE_TEST) 297 depends on PCI_MSI 298 select PCIE_DW_HOST 299 select CRC8 300 select PCIE_QCOM_COMMON 301 select PCI_HOST_COMMON 302 select PCI_PWRCTRL_SLOT 303 help 304 Say Y here to enable PCIe controller support on Qualcomm SoCs. The 305 PCIe controller uses the DesignWare core plus Qualcomm-specific 306 hardware wrappers. 307 308config PCIE_QCOM_EP 309 tristate "Qualcomm PCIe controller (endpoint mode)" 310 depends on OF && (ARCH_QCOM || COMPILE_TEST) 311 depends on PCI_ENDPOINT 312 select PCIE_DW_EP 313 select PCIE_QCOM_COMMON 314 help 315 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs 316 to work in endpoint mode. The PCIe controller uses the DesignWare core 317 plus Qualcomm-specific hardware wrappers. 318 319config PCIE_RCAR_GEN4 320 tristate 321 322config PCIE_RCAR_GEN4_HOST 323 tristate "Renesas R-Car Gen4 PCIe controller (host mode)" 324 depends on ARCH_RENESAS || COMPILE_TEST 325 depends on PCI_MSI 326 select PCIE_DW_HOST 327 select PCIE_RCAR_GEN4 328 help 329 Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs. 330 To compile this driver as a module, choose M here: the module will be 331 called pcie-rcar-gen4.ko. This uses the DesignWare core. 332 333config PCIE_RCAR_GEN4_EP 334 tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)" 335 depends on ARCH_RENESAS || COMPILE_TEST 336 depends on PCI_ENDPOINT 337 select PCIE_DW_EP 338 select PCIE_RCAR_GEN4 339 help 340 Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4 341 SoCs. To compile this driver as a module, choose M here: the module 342 will be called pcie-rcar-gen4.ko. This uses the DesignWare core. 343 344config PCIE_ROCKCHIP_DW 345 bool 346 347config PCIE_ROCKCHIP_DW_HOST 348 bool "Rockchip DesignWare PCIe controller (host mode)" 349 depends on PCI_MSI 350 depends on ARCH_ROCKCHIP || COMPILE_TEST 351 depends on OF 352 select PCIE_DW_HOST 353 select PCIE_ROCKCHIP_DW 354 help 355 Enables support for the DesignWare PCIe controller in the 356 Rockchip SoC (except RK3399) to work in host mode. 357 358config PCIE_ROCKCHIP_DW_EP 359 bool "Rockchip DesignWare PCIe controller (endpoint mode)" 360 depends on ARCH_ROCKCHIP || COMPILE_TEST 361 depends on OF 362 depends on PCI_ENDPOINT 363 select PCIE_DW_EP 364 select PCIE_ROCKCHIP_DW 365 help 366 Enables support for the DesignWare PCIe controller in the 367 Rockchip SoC (except RK3399) to work in endpoint mode. 368 369config PCI_EXYNOS 370 tristate "Samsung Exynos PCIe controller" 371 depends on ARCH_EXYNOS || COMPILE_TEST 372 depends on PCI_MSI 373 select PCIE_DW_HOST 374 help 375 Enables support for the PCIe controller in the Samsung Exynos SoCs 376 to work in host mode. The PCI controller is based on the DesignWare 377 hardware and therefore the driver re-uses the DesignWare core 378 functions to implement the driver. 379 380config PCIE_FU740 381 bool "SiFive FU740 PCIe controller" 382 depends on PCI_MSI 383 depends on ARCH_SIFIVE || COMPILE_TEST 384 select PCIE_DW_HOST 385 help 386 Say Y here if you want PCIe controller support for the SiFive 387 FU740. 388 389config PCIE_UNIPHIER 390 bool "Socionext UniPhier PCIe controller (host mode)" 391 depends on ARCH_UNIPHIER || COMPILE_TEST 392 depends on OF && HAS_IOMEM 393 depends on PCI_MSI 394 select PCIE_DW_HOST 395 help 396 Say Y here if you want PCIe host controller support on UniPhier SoCs. 397 This driver supports LD20 and PXs3 SoCs. 398 399config PCIE_UNIPHIER_EP 400 bool "Socionext UniPhier PCIe controller (endpoint mode)" 401 depends on ARCH_UNIPHIER || COMPILE_TEST 402 depends on OF && HAS_IOMEM 403 depends on PCI_ENDPOINT 404 select PCIE_DW_EP 405 help 406 Say Y here if you want PCIe endpoint controller support on 407 UniPhier SoCs. This driver supports Pro5 SoC. 408 409config PCIE_SOPHGO_DW 410 bool "Sophgo DesignWare PCIe controller (host mode)" 411 depends on ARCH_SOPHGO || COMPILE_TEST 412 depends on PCI_MSI 413 depends on OF 414 select PCIE_DW_HOST 415 help 416 Say Y here if you want PCIe host controller support on 417 Sophgo SoCs. 418 419config PCIE_SPEAR13XX 420 bool "STMicroelectronics SPEAr PCIe controller" 421 depends on ARCH_SPEAR13XX || COMPILE_TEST 422 depends on PCI_MSI 423 select PCIE_DW_HOST 424 help 425 Say Y here if you want PCIe support on SPEAr13XX SoCs. 426 427config PCIE_STM32_HOST 428 tristate "STMicroelectronics STM32MP25 PCIe Controller (host mode)" 429 depends on ARCH_STM32 || COMPILE_TEST 430 depends on PCI_MSI 431 select PCIE_DW_HOST 432 help 433 Enables Root Complex (RC) support for the DesignWare core based PCIe 434 controller found in STM32MP25 SoC. 435 436 This driver can also be built as a module. If so, the module 437 will be called pcie-stm32. 438 439config PCIE_STM32_EP 440 tristate "STMicroelectronics STM32MP25 PCIe Controller (endpoint mode)" 441 depends on ARCH_STM32 || COMPILE_TEST 442 depends on PCI_ENDPOINT 443 select PCIE_DW_EP 444 help 445 Enables Endpoint (EP) support for the DesignWare core based PCIe 446 controller found in STM32MP25 SoC. 447 448 This driver can also be built as a module. If so, the module 449 will be called pcie-stm32-ep. 450 451config PCI_DRA7XX 452 tristate 453 454config PCI_DRA7XX_HOST 455 tristate "TI DRA7xx PCIe controller (host mode)" 456 depends on SOC_DRA7XX || COMPILE_TEST 457 depends on OF && HAS_IOMEM && TI_PIPE3 458 depends on PCI_MSI 459 select PCIE_DW_HOST 460 select PCI_DRA7XX 461 default y if SOC_DRA7XX 462 help 463 Enables support for the PCIe controller in the DRA7xx SoC to work in 464 host mode. There are two instances of PCIe controller in DRA7xx. 465 This controller can work either as EP or RC. In order to enable 466 host-specific features PCI_DRA7XX_HOST must be selected and in order 467 to enable device-specific features PCI_DRA7XX_EP must be selected. 468 This uses the DesignWare core. 469 470config PCI_DRA7XX_EP 471 tristate "TI DRA7xx PCIe controller (endpoint mode)" 472 depends on SOC_DRA7XX || COMPILE_TEST 473 depends on OF && HAS_IOMEM && TI_PIPE3 474 depends on PCI_ENDPOINT 475 select PCIE_DW_EP 476 select PCI_DRA7XX 477 help 478 Enables support for the PCIe controller in the DRA7xx SoC to work in 479 endpoint mode. There are two instances of PCIe controller in DRA7xx. 480 This controller can work either as EP or RC. In order to enable 481 host-specific features PCI_DRA7XX_HOST must be selected and in order 482 to enable device-specific features PCI_DRA7XX_EP must be selected. 483 This uses the DesignWare core. 484 485config PCI_KEYSTONE 486 bool 487 488config PCI_KEYSTONE_HOST 489 bool "TI Keystone PCIe controller (host mode)" 490 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 491 depends on PCI_MSI 492 select PCIE_DW_HOST 493 select PCI_KEYSTONE 494 help 495 Enables support for the PCIe controller in the Keystone SoC to 496 work in host mode. The PCI controller on Keystone is based on 497 DesignWare hardware and therefore the driver re-uses the 498 DesignWare core functions to implement the driver. 499 500config PCI_KEYSTONE_EP 501 bool "TI Keystone PCIe controller (endpoint mode)" 502 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 503 depends on PCI_ENDPOINT 504 select PCIE_DW_EP 505 select PCI_KEYSTONE 506 help 507 Enables support for the PCIe controller in the Keystone SoC to 508 work in endpoint mode. The PCI controller on Keystone is based 509 on DesignWare hardware and therefore the driver re-uses the 510 DesignWare core functions to implement the driver. 511 512config PCIE_VISCONTI_HOST 513 bool "Toshiba Visconti PCIe controller" 514 depends on ARCH_VISCONTI || COMPILE_TEST 515 depends on PCI_MSI 516 select PCIE_DW_HOST 517 help 518 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 519 This driver supports TMPV7708 SoC. 520 521endmenu 522