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 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