1# SPDX-License-Identifier: GPL-2.0 2 3menu "DesignWare PCI Core Support" 4 depends on PCI 5 6config PCIE_DW 7 bool 8 9config PCIE_DW_HOST 10 bool 11 select PCIE_DW 12 13config PCIE_DW_EP 14 bool 15 select PCIE_DW 16 17config PCI_DRA7XX 18 tristate 19 20config PCI_DRA7XX_HOST 21 tristate "TI DRA7xx PCIe controller Host Mode" 22 depends on SOC_DRA7XX || COMPILE_TEST 23 depends on OF && HAS_IOMEM && TI_PIPE3 24 depends on PCI_MSI 25 select PCIE_DW_HOST 26 select PCI_DRA7XX 27 default y if SOC_DRA7XX 28 help 29 Enables support for the PCIe controller in the DRA7xx SoC to work in 30 host mode. There are two instances of PCIe controller in DRA7xx. 31 This controller can work either as EP or RC. In order to enable 32 host-specific features PCI_DRA7XX_HOST must be selected and in order 33 to enable device-specific features PCI_DRA7XX_EP must be selected. 34 This uses the DesignWare core. 35 36config PCI_DRA7XX_EP 37 tristate "TI DRA7xx PCIe controller Endpoint Mode" 38 depends on SOC_DRA7XX || COMPILE_TEST 39 depends on OF && HAS_IOMEM && TI_PIPE3 40 depends on PCI_ENDPOINT 41 select PCIE_DW_EP 42 select PCI_DRA7XX 43 help 44 Enables support for the PCIe controller in the DRA7xx SoC to work in 45 endpoint mode. There are two instances of PCIe controller in DRA7xx. 46 This controller can work either as EP or RC. In order to enable 47 host-specific features PCI_DRA7XX_HOST must be selected and in order 48 to enable device-specific features PCI_DRA7XX_EP must be selected. 49 This uses the DesignWare core. 50 51config PCIE_DW_PLAT 52 bool 53 54config PCIE_DW_PLAT_HOST 55 bool "Platform bus based DesignWare PCIe Controller - Host mode" 56 depends on PCI_MSI 57 select PCIE_DW_HOST 58 select PCIE_DW_PLAT 59 help 60 Enables support for the PCIe controller in the Designware IP to 61 work in host mode. There are two instances of PCIe controller in 62 Designware IP. 63 This controller can work either as EP or RC. In order to enable 64 host-specific features PCIE_DW_PLAT_HOST must be selected and in 65 order to enable device-specific features PCI_DW_PLAT_EP must be 66 selected. 67 68config PCIE_DW_PLAT_EP 69 bool "Platform bus based DesignWare PCIe Controller - Endpoint mode" 70 depends on PCI && PCI_MSI 71 depends on PCI_ENDPOINT 72 select PCIE_DW_EP 73 select PCIE_DW_PLAT 74 help 75 Enables support for the PCIe controller in the Designware IP to 76 work in endpoint mode. There are two instances of PCIe controller 77 in Designware IP. 78 This controller can work either as EP or RC. In order to enable 79 host-specific features PCIE_DW_PLAT_HOST must be selected and in 80 order to enable device-specific features PCI_DW_PLAT_EP must be 81 selected. 82 83config PCI_EXYNOS 84 tristate "Samsung Exynos PCIe controller" 85 depends on ARCH_EXYNOS || COMPILE_TEST 86 depends on PCI_MSI 87 select PCIE_DW_HOST 88 help 89 Enables support for the PCIe controller in the Samsung Exynos SoCs 90 to work in host mode. The PCI controller is based on the DesignWare 91 hardware and therefore the driver re-uses the DesignWare core 92 functions to implement the driver. 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 PCIE_SPEAR13XX 122 bool "STMicroelectronics SPEAr PCIe controller" 123 depends on ARCH_SPEAR13XX || COMPILE_TEST 124 depends on PCI_MSI 125 select PCIE_DW_HOST 126 help 127 Say Y here if you want PCIe support on SPEAr13XX SoCs. 128 129config PCI_KEYSTONE 130 bool 131 132config PCI_KEYSTONE_HOST 133 bool "PCI Keystone Host Mode" 134 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 135 depends on PCI_MSI 136 select PCIE_DW_HOST 137 select PCI_KEYSTONE 138 help 139 Enables support for the PCIe controller in the Keystone SoC to 140 work in host mode. The PCI controller on Keystone is based on 141 DesignWare hardware and therefore the driver re-uses the 142 DesignWare core functions to implement the driver. 143 144config PCI_KEYSTONE_EP 145 bool "PCI Keystone Endpoint Mode" 146 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 147 depends on PCI_ENDPOINT 148 select PCIE_DW_EP 149 select PCI_KEYSTONE 150 help 151 Enables support for the PCIe controller in the Keystone SoC to 152 work in endpoint mode. The PCI controller on Keystone is based 153 on DesignWare hardware and therefore the driver re-uses the 154 DesignWare core functions to implement the driver. 155 156config PCI_LAYERSCAPE 157 bool "Freescale Layerscape PCIe controller - Host mode" 158 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 159 depends on PCI_MSI 160 select PCIE_DW_HOST 161 select MFD_SYSCON 162 help 163 Say Y here if you want to enable PCIe controller support on Layerscape 164 SoCs to work in Host mode. 165 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 166 determines which PCIe controller works in EP mode and which PCIe 167 controller works in RC mode. 168 169config PCI_LAYERSCAPE_EP 170 bool "Freescale Layerscape PCIe controller - Endpoint mode" 171 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 172 depends on PCI_ENDPOINT 173 select PCIE_DW_EP 174 help 175 Say Y here if you want to enable PCIe controller support on Layerscape 176 SoCs to work in Endpoint mode. 177 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 178 determines which PCIe controller works in EP mode and which PCIe 179 controller works in RC mode. 180 181config PCI_HISI 182 depends on OF && (ARM64 || COMPILE_TEST) 183 bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers" 184 depends on PCI_MSI 185 select PCIE_DW_HOST 186 select PCI_HOST_COMMON 187 help 188 Say Y here if you want PCIe controller support on HiSilicon 189 Hip05 and Hip06 SoCs 190 191config PCIE_QCOM 192 bool "Qualcomm PCIe controller" 193 depends on OF && (ARCH_QCOM || COMPILE_TEST) 194 depends on PCI_MSI 195 select PCIE_DW_HOST 196 select CRC8 197 help 198 Say Y here to enable PCIe controller support on Qualcomm SoCs. The 199 PCIe controller uses the DesignWare core plus Qualcomm-specific 200 hardware wrappers. 201 202config PCIE_QCOM_EP 203 tristate "Qualcomm PCIe controller - Endpoint mode" 204 depends on OF && (ARCH_QCOM || COMPILE_TEST) 205 depends on PCI_ENDPOINT 206 select PCIE_DW_EP 207 help 208 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs 209 to work in endpoint mode. The PCIe controller uses the DesignWare core 210 plus Qualcomm-specific hardware wrappers. 211 212config PCIE_ARMADA_8K 213 bool "Marvell Armada-8K PCIe controller" 214 depends on ARCH_MVEBU || COMPILE_TEST 215 depends on PCI_MSI 216 select PCIE_DW_HOST 217 help 218 Say Y here if you want to enable PCIe controller support on 219 Armada-8K SoCs. The PCIe controller on Armada-8K is based on 220 DesignWare hardware and therefore the driver re-uses the 221 DesignWare core functions to implement the driver. 222 223config PCIE_ARTPEC6 224 bool 225 226config PCIE_ARTPEC6_HOST 227 bool "Axis ARTPEC-6 PCIe controller Host Mode" 228 depends on MACH_ARTPEC6 || COMPILE_TEST 229 depends on PCI_MSI 230 select PCIE_DW_HOST 231 select PCIE_ARTPEC6 232 help 233 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 234 host mode. This uses the DesignWare core. 235 236config PCIE_ARTPEC6_EP 237 bool "Axis ARTPEC-6 PCIe controller Endpoint Mode" 238 depends on MACH_ARTPEC6 || COMPILE_TEST 239 depends on PCI_ENDPOINT 240 select PCIE_DW_EP 241 select PCIE_ARTPEC6 242 help 243 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 244 endpoint mode. This uses the DesignWare core. 245 246config PCIE_BT1 247 tristate "Baikal-T1 PCIe controller" 248 depends on MIPS_BAIKAL_T1 || COMPILE_TEST 249 depends on PCI_MSI 250 select PCIE_DW_HOST 251 help 252 Enables support for the PCIe controller in the Baikal-T1 SoC to work 253 in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core. 254 255config PCIE_ROCKCHIP_DW_HOST 256 bool "Rockchip DesignWare PCIe controller" 257 select PCIE_DW 258 select PCIE_DW_HOST 259 depends on PCI_MSI 260 depends on ARCH_ROCKCHIP || COMPILE_TEST 261 depends on OF 262 help 263 Enables support for the DesignWare PCIe controller in the 264 Rockchip SoC except RK3399. 265 266config PCIE_INTEL_GW 267 bool "Intel Gateway PCIe host controller support" 268 depends on OF && (X86 || COMPILE_TEST) 269 depends on PCI_MSI 270 select PCIE_DW_HOST 271 help 272 Say 'Y' here to enable PCIe Host controller support on Intel 273 Gateway SoCs. 274 The PCIe controller uses the DesignWare core plus Intel-specific 275 hardware wrappers. 276 277config PCIE_KEEMBAY 278 bool 279 280config PCIE_KEEMBAY_HOST 281 bool "Intel Keem Bay PCIe controller - Host mode" 282 depends on ARCH_KEEMBAY || COMPILE_TEST 283 depends on PCI_MSI 284 select PCIE_DW_HOST 285 select PCIE_KEEMBAY 286 help 287 Say 'Y' here to enable support for the PCIe controller in Keem Bay 288 to work in host mode. 289 The PCIe controller is based on DesignWare Hardware and uses 290 DesignWare core functions. 291 292config PCIE_KEEMBAY_EP 293 bool "Intel Keem Bay PCIe controller - Endpoint mode" 294 depends on ARCH_KEEMBAY || COMPILE_TEST 295 depends on PCI_MSI 296 depends on PCI_ENDPOINT 297 select PCIE_DW_EP 298 select PCIE_KEEMBAY 299 help 300 Say 'Y' here to enable support for the PCIe controller in Keem Bay 301 to work in endpoint mode. 302 The PCIe controller is based on DesignWare Hardware and uses 303 DesignWare core functions. 304 305config PCIE_KIRIN 306 depends on OF && (ARM64 || COMPILE_TEST) 307 tristate "HiSilicon Kirin series SoCs PCIe controllers" 308 depends on PCI_MSI 309 select PCIE_DW_HOST 310 help 311 Say Y here if you want PCIe controller support 312 on HiSilicon Kirin series SoCs. 313 314config PCIE_HISI_STB 315 bool "HiSilicon STB SoCs PCIe controllers" 316 depends on ARCH_HISI || COMPILE_TEST 317 depends on PCI_MSI 318 select PCIE_DW_HOST 319 help 320 Say Y here if you want PCIe controller support on HiSilicon STB SoCs 321 322config PCI_MESON 323 tristate "MESON PCIe controller" 324 default m if ARCH_MESON 325 depends on PCI_MSI 326 select PCIE_DW_HOST 327 help 328 Say Y here if you want to enable PCI controller support on Amlogic 329 SoCs. The PCI controller on Amlogic is based on DesignWare hardware 330 and therefore the driver re-uses the DesignWare core functions to 331 implement the driver. 332 333config PCIE_TEGRA194 334 tristate 335 336config PCIE_TEGRA194_HOST 337 tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode" 338 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 339 depends on PCI_MSI 340 select PCIE_DW_HOST 341 select PHY_TEGRA194_P2U 342 select PCIE_TEGRA194 343 help 344 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 345 work in host mode. There are two instances of PCIe controllers in 346 Tegra194. This controller can work either as EP or RC. In order to 347 enable host-specific features PCIE_TEGRA194_HOST must be selected and 348 in order to enable device-specific features PCIE_TEGRA194_EP must be 349 selected. This uses the DesignWare core. 350 351config PCIE_TEGRA194_EP 352 tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode" 353 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 354 depends on PCI_ENDPOINT 355 select PCIE_DW_EP 356 select PHY_TEGRA194_P2U 357 select PCIE_TEGRA194 358 help 359 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 360 work in endpoint mode. There are two instances of PCIe controllers in 361 Tegra194. This controller can work either as EP or RC. In order to 362 enable host-specific features PCIE_TEGRA194_HOST must be selected and 363 in order to enable device-specific features PCIE_TEGRA194_EP must be 364 selected. This uses the DesignWare core. 365 366config PCIE_VISCONTI_HOST 367 bool "Toshiba Visconti PCIe controllers" 368 depends on ARCH_VISCONTI || COMPILE_TEST 369 depends on PCI_MSI 370 select PCIE_DW_HOST 371 help 372 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 373 This driver supports TMPV7708 SoC. 374 375config PCIE_UNIPHIER 376 bool "Socionext UniPhier PCIe host controllers" 377 depends on ARCH_UNIPHIER || COMPILE_TEST 378 depends on OF && HAS_IOMEM 379 depends on PCI_MSI 380 select PCIE_DW_HOST 381 help 382 Say Y here if you want PCIe host controller support on UniPhier SoCs. 383 This driver supports LD20 and PXs3 SoCs. 384 385config PCIE_UNIPHIER_EP 386 bool "Socionext UniPhier PCIe endpoint controllers" 387 depends on ARCH_UNIPHIER || COMPILE_TEST 388 depends on OF && HAS_IOMEM 389 depends on PCI_ENDPOINT 390 select PCIE_DW_EP 391 help 392 Say Y here if you want PCIe endpoint controller support on 393 UniPhier SoCs. This driver supports Pro5 SoC. 394 395config PCIE_AL 396 bool "Amazon Annapurna Labs PCIe controller" 397 depends on OF && (ARM64 || COMPILE_TEST) 398 depends on PCI_MSI 399 select PCIE_DW_HOST 400 select PCI_ECAM 401 help 402 Say Y here to enable support of the Amazon's Annapurna Labs PCIe 403 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare 404 core plus Annapurna Labs proprietary hardware wrappers. This is 405 required only for DT-based platforms. ACPI platforms with the 406 Annapurna Labs PCIe controller don't need to enable this. 407 408config PCIE_FU740 409 bool "SiFive FU740 PCIe host controller" 410 depends on PCI_MSI 411 depends on SOC_SIFIVE || COMPILE_TEST 412 select PCIE_DW_HOST 413 help 414 Say Y here if you want PCIe controller support for the SiFive 415 FU740. 416 417endmenu 418