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