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 help 300 Say Y here to enable PCIe controller support on Qualcomm SoCs. The 301 PCIe controller uses the DesignWare core plus Qualcomm-specific 302 hardware wrappers. 303 304config PCIE_QCOM_EP 305 tristate "Qualcomm PCIe controller (endpoint mode)" 306 depends on OF && (ARCH_QCOM || COMPILE_TEST) 307 depends on PCI_ENDPOINT 308 select PCIE_DW_EP 309 select PCIE_QCOM_COMMON 310 help 311 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs 312 to work in endpoint mode. The PCIe controller uses the DesignWare core 313 plus Qualcomm-specific hardware wrappers. 314 315config PCIE_RCAR_GEN4 316 tristate 317 318config PCIE_RCAR_GEN4_HOST 319 tristate "Renesas R-Car Gen4 PCIe controller (host mode)" 320 depends on ARCH_RENESAS || COMPILE_TEST 321 depends on PCI_MSI 322 select PCIE_DW_HOST 323 select PCIE_RCAR_GEN4 324 help 325 Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs. 326 To compile this driver as a module, choose M here: the module will be 327 called pcie-rcar-gen4.ko. This uses the DesignWare core. 328 329config PCIE_RCAR_GEN4_EP 330 tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)" 331 depends on ARCH_RENESAS || COMPILE_TEST 332 depends on PCI_ENDPOINT 333 select PCIE_DW_EP 334 select PCIE_RCAR_GEN4 335 help 336 Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4 337 SoCs. To compile this driver as a module, choose M here: the module 338 will be called pcie-rcar-gen4.ko. This uses the DesignWare core. 339 340config PCIE_ROCKCHIP_DW 341 bool 342 343config PCIE_ROCKCHIP_DW_HOST 344 bool "Rockchip DesignWare PCIe controller (host mode)" 345 depends on PCI_MSI 346 depends on ARCH_ROCKCHIP || COMPILE_TEST 347 depends on OF 348 select PCIE_DW_HOST 349 select PCIE_ROCKCHIP_DW 350 help 351 Enables support for the DesignWare PCIe controller in the 352 Rockchip SoC (except RK3399) to work in host mode. 353 354config PCIE_ROCKCHIP_DW_EP 355 bool "Rockchip DesignWare PCIe controller (endpoint mode)" 356 depends on ARCH_ROCKCHIP || COMPILE_TEST 357 depends on OF 358 depends on PCI_ENDPOINT 359 select PCIE_DW_EP 360 select PCIE_ROCKCHIP_DW 361 help 362 Enables support for the DesignWare PCIe controller in the 363 Rockchip SoC (except RK3399) to work in endpoint mode. 364 365config PCI_EXYNOS 366 tristate "Samsung Exynos PCIe controller" 367 depends on ARCH_EXYNOS || COMPILE_TEST 368 depends on PCI_MSI 369 select PCIE_DW_HOST 370 help 371 Enables support for the PCIe controller in the Samsung Exynos SoCs 372 to work in host mode. The PCI controller is based on the DesignWare 373 hardware and therefore the driver re-uses the DesignWare core 374 functions to implement the driver. 375 376config PCIE_FU740 377 bool "SiFive FU740 PCIe controller" 378 depends on PCI_MSI 379 depends on ARCH_SIFIVE || COMPILE_TEST 380 select PCIE_DW_HOST 381 help 382 Say Y here if you want PCIe controller support for the SiFive 383 FU740. 384 385config PCIE_UNIPHIER 386 bool "Socionext UniPhier PCIe controller (host mode)" 387 depends on ARCH_UNIPHIER || COMPILE_TEST 388 depends on OF && HAS_IOMEM 389 depends on PCI_MSI 390 select PCIE_DW_HOST 391 help 392 Say Y here if you want PCIe host controller support on UniPhier SoCs. 393 This driver supports LD20 and PXs3 SoCs. 394 395config PCIE_UNIPHIER_EP 396 bool "Socionext UniPhier PCIe controller (endpoint mode)" 397 depends on ARCH_UNIPHIER || COMPILE_TEST 398 depends on OF && HAS_IOMEM 399 depends on PCI_ENDPOINT 400 select PCIE_DW_EP 401 help 402 Say Y here if you want PCIe endpoint controller support on 403 UniPhier SoCs. This driver supports Pro5 SoC. 404 405config PCIE_SPEAR13XX 406 bool "STMicroelectronics SPEAr PCIe controller" 407 depends on ARCH_SPEAR13XX || COMPILE_TEST 408 depends on PCI_MSI 409 select PCIE_DW_HOST 410 help 411 Say Y here if you want PCIe support on SPEAr13XX SoCs. 412 413config PCI_DRA7XX 414 tristate 415 416config PCI_DRA7XX_HOST 417 tristate "TI DRA7xx PCIe controller (host mode)" 418 depends on SOC_DRA7XX || COMPILE_TEST 419 depends on OF && HAS_IOMEM && TI_PIPE3 420 depends on PCI_MSI 421 select PCIE_DW_HOST 422 select PCI_DRA7XX 423 default y if SOC_DRA7XX 424 help 425 Enables support for the PCIe controller in the DRA7xx SoC to work in 426 host mode. There are two instances of PCIe controller in DRA7xx. 427 This controller can work either as EP or RC. In order to enable 428 host-specific features PCI_DRA7XX_HOST must be selected and in order 429 to enable device-specific features PCI_DRA7XX_EP must be selected. 430 This uses the DesignWare core. 431 432config PCI_DRA7XX_EP 433 tristate "TI DRA7xx PCIe controller (endpoint mode)" 434 depends on SOC_DRA7XX || COMPILE_TEST 435 depends on OF && HAS_IOMEM && TI_PIPE3 436 depends on PCI_ENDPOINT 437 select PCIE_DW_EP 438 select PCI_DRA7XX 439 help 440 Enables support for the PCIe controller in the DRA7xx SoC to work in 441 endpoint mode. There are two instances of PCIe controller in DRA7xx. 442 This controller can work either as EP or RC. In order to enable 443 host-specific features PCI_DRA7XX_HOST must be selected and in order 444 to enable device-specific features PCI_DRA7XX_EP must be selected. 445 This uses the DesignWare core. 446 447config PCI_KEYSTONE 448 bool 449 450config PCI_KEYSTONE_HOST 451 bool "TI Keystone PCIe controller (host mode)" 452 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 453 depends on PCI_MSI 454 select PCIE_DW_HOST 455 select PCI_KEYSTONE 456 help 457 Enables support for the PCIe controller in the Keystone SoC to 458 work in host mode. The PCI controller on Keystone is based on 459 DesignWare hardware and therefore the driver re-uses the 460 DesignWare core functions to implement the driver. 461 462config PCI_KEYSTONE_EP 463 bool "TI Keystone PCIe controller (endpoint mode)" 464 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 465 depends on PCI_ENDPOINT 466 select PCIE_DW_EP 467 select PCI_KEYSTONE 468 help 469 Enables support for the PCIe controller in the Keystone SoC to 470 work in endpoint mode. The PCI controller on Keystone is based 471 on DesignWare hardware and therefore the driver re-uses the 472 DesignWare core functions to implement the driver. 473 474config PCIE_VISCONTI_HOST 475 bool "Toshiba Visconti PCIe controller" 476 depends on ARCH_VISCONTI || COMPILE_TEST 477 depends on PCI_MSI 478 select PCIE_DW_HOST 479 help 480 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 481 This driver supports TMPV7708 SoC. 482 483endmenu 484