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