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