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 "Freescale i.MX6/7/8 PCIe controller" 96 depends on ARCH_MXC || COMPILE_TEST 97 depends on PCI_MSI 98 select PCIE_DW_HOST 99 100config PCIE_SPEAR13XX 101 bool "STMicroelectronics SPEAr PCIe controller" 102 depends on ARCH_SPEAR13XX || COMPILE_TEST 103 depends on PCI_MSI 104 select PCIE_DW_HOST 105 help 106 Say Y here if you want PCIe support on SPEAr13XX SoCs. 107 108config PCI_KEYSTONE 109 bool 110 111config PCI_KEYSTONE_HOST 112 bool "PCI Keystone Host Mode" 113 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 114 depends on PCI_MSI 115 select PCIE_DW_HOST 116 select PCI_KEYSTONE 117 help 118 Enables support for the PCIe controller in the Keystone SoC to 119 work in host mode. The PCI controller on Keystone is based on 120 DesignWare hardware and therefore the driver re-uses the 121 DesignWare core functions to implement the driver. 122 123config PCI_KEYSTONE_EP 124 bool "PCI Keystone Endpoint Mode" 125 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST 126 depends on PCI_ENDPOINT 127 select PCIE_DW_EP 128 select PCI_KEYSTONE 129 help 130 Enables support for the PCIe controller in the Keystone SoC to 131 work in endpoint mode. The PCI controller on Keystone is based 132 on DesignWare hardware and therefore the driver re-uses the 133 DesignWare core functions to implement the driver. 134 135config PCI_LAYERSCAPE 136 bool "Freescale Layerscape PCIe controller - Host mode" 137 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 138 depends on PCI_MSI 139 select PCIE_DW_HOST 140 select MFD_SYSCON 141 help 142 Say Y here if you want to enable PCIe controller support on Layerscape 143 SoCs to work in Host mode. 144 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 145 determines which PCIe controller works in EP mode and which PCIe 146 controller works in RC mode. 147 148config PCI_LAYERSCAPE_EP 149 bool "Freescale Layerscape PCIe controller - Endpoint mode" 150 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST) 151 depends on PCI_ENDPOINT 152 select PCIE_DW_EP 153 help 154 Say Y here if you want to enable PCIe controller support on Layerscape 155 SoCs to work in Endpoint mode. 156 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX] 157 determines which PCIe controller works in EP mode and which PCIe 158 controller works in RC mode. 159 160config PCI_HISI 161 depends on OF && (ARM64 || COMPILE_TEST) 162 bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers" 163 depends on PCI_MSI 164 select PCIE_DW_HOST 165 select PCI_HOST_COMMON 166 help 167 Say Y here if you want PCIe controller support on HiSilicon 168 Hip05 and Hip06 SoCs 169 170config PCIE_QCOM 171 bool "Qualcomm PCIe controller" 172 depends on OF && (ARCH_QCOM || COMPILE_TEST) 173 depends on PCI_MSI 174 select PCIE_DW_HOST 175 select CRC8 176 help 177 Say Y here to enable PCIe controller support on Qualcomm SoCs. The 178 PCIe controller uses the DesignWare core plus Qualcomm-specific 179 hardware wrappers. 180 181config PCIE_QCOM_EP 182 tristate "Qualcomm PCIe controller - Endpoint mode" 183 depends on OF && (ARCH_QCOM || COMPILE_TEST) 184 depends on PCI_ENDPOINT 185 select PCIE_DW_EP 186 help 187 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs 188 to work in endpoint mode. The PCIe controller uses the DesignWare core 189 plus Qualcomm-specific hardware wrappers. 190 191config PCIE_ARMADA_8K 192 bool "Marvell Armada-8K PCIe controller" 193 depends on ARCH_MVEBU || COMPILE_TEST 194 depends on PCI_MSI 195 select PCIE_DW_HOST 196 help 197 Say Y here if you want to enable PCIe controller support on 198 Armada-8K SoCs. The PCIe controller on Armada-8K is based on 199 DesignWare hardware and therefore the driver re-uses the 200 DesignWare core functions to implement the driver. 201 202config PCIE_ARTPEC6 203 bool 204 205config PCIE_ARTPEC6_HOST 206 bool "Axis ARTPEC-6 PCIe controller Host Mode" 207 depends on MACH_ARTPEC6 || COMPILE_TEST 208 depends on PCI_MSI 209 select PCIE_DW_HOST 210 select PCIE_ARTPEC6 211 help 212 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 213 host mode. This uses the DesignWare core. 214 215config PCIE_ARTPEC6_EP 216 bool "Axis ARTPEC-6 PCIe controller Endpoint Mode" 217 depends on MACH_ARTPEC6 || COMPILE_TEST 218 depends on PCI_ENDPOINT 219 select PCIE_DW_EP 220 select PCIE_ARTPEC6 221 help 222 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in 223 endpoint mode. This uses the DesignWare core. 224 225config PCIE_BT1 226 tristate "Baikal-T1 PCIe controller" 227 depends on MIPS_BAIKAL_T1 || COMPILE_TEST 228 depends on PCI_MSI 229 select PCIE_DW_HOST 230 help 231 Enables support for the PCIe controller in the Baikal-T1 SoC to work 232 in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core. 233 234config PCIE_ROCKCHIP_DW_HOST 235 bool "Rockchip DesignWare PCIe controller" 236 select PCIE_DW 237 select PCIE_DW_HOST 238 depends on PCI_MSI 239 depends on ARCH_ROCKCHIP || COMPILE_TEST 240 depends on OF 241 help 242 Enables support for the DesignWare PCIe controller in the 243 Rockchip SoC except RK3399. 244 245config PCIE_INTEL_GW 246 bool "Intel Gateway PCIe host controller support" 247 depends on OF && (X86 || COMPILE_TEST) 248 depends on PCI_MSI 249 select PCIE_DW_HOST 250 help 251 Say 'Y' here to enable PCIe Host controller support on Intel 252 Gateway SoCs. 253 The PCIe controller uses the DesignWare core plus Intel-specific 254 hardware wrappers. 255 256config PCIE_KEEMBAY 257 bool 258 259config PCIE_KEEMBAY_HOST 260 bool "Intel Keem Bay PCIe controller - Host mode" 261 depends on ARCH_KEEMBAY || COMPILE_TEST 262 depends on PCI_MSI 263 select PCIE_DW_HOST 264 select PCIE_KEEMBAY 265 help 266 Say 'Y' here to enable support for the PCIe controller in Keem Bay 267 to work in host mode. 268 The PCIe controller is based on DesignWare Hardware and uses 269 DesignWare core functions. 270 271config PCIE_KEEMBAY_EP 272 bool "Intel Keem Bay PCIe controller - Endpoint mode" 273 depends on ARCH_KEEMBAY || COMPILE_TEST 274 depends on PCI_MSI 275 depends on PCI_ENDPOINT 276 select PCIE_DW_EP 277 select PCIE_KEEMBAY 278 help 279 Say 'Y' here to enable support for the PCIe controller in Keem Bay 280 to work in endpoint mode. 281 The PCIe controller is based on DesignWare Hardware and uses 282 DesignWare core functions. 283 284config PCIE_KIRIN 285 depends on OF && (ARM64 || COMPILE_TEST) 286 tristate "HiSilicon Kirin series SoCs PCIe controllers" 287 depends on PCI_MSI 288 select PCIE_DW_HOST 289 help 290 Say Y here if you want PCIe controller support 291 on HiSilicon Kirin series SoCs. 292 293config PCIE_HISI_STB 294 bool "HiSilicon STB SoCs PCIe controllers" 295 depends on ARCH_HISI || COMPILE_TEST 296 depends on PCI_MSI 297 select PCIE_DW_HOST 298 help 299 Say Y here if you want PCIe controller support on HiSilicon STB SoCs 300 301config PCI_MESON 302 tristate "MESON PCIe controller" 303 default m if ARCH_MESON 304 depends on PCI_MSI 305 select PCIE_DW_HOST 306 help 307 Say Y here if you want to enable PCI controller support on Amlogic 308 SoCs. The PCI controller on Amlogic is based on DesignWare hardware 309 and therefore the driver re-uses the DesignWare core functions to 310 implement the driver. 311 312config PCIE_TEGRA194 313 tristate 314 315config PCIE_TEGRA194_HOST 316 tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode" 317 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 318 depends on PCI_MSI 319 select PCIE_DW_HOST 320 select PHY_TEGRA194_P2U 321 select PCIE_TEGRA194 322 help 323 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 324 work in host mode. There are two instances of PCIe controllers in 325 Tegra194. This controller can work either as EP or RC. In order to 326 enable host-specific features PCIE_TEGRA194_HOST must be selected and 327 in order to enable device-specific features PCIE_TEGRA194_EP must be 328 selected. This uses the DesignWare core. 329 330config PCIE_TEGRA194_EP 331 tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode" 332 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 333 depends on PCI_ENDPOINT 334 select PCIE_DW_EP 335 select PHY_TEGRA194_P2U 336 select PCIE_TEGRA194 337 help 338 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 339 work in endpoint mode. There are two instances of PCIe controllers in 340 Tegra194. This controller can work either as EP or RC. In order to 341 enable host-specific features PCIE_TEGRA194_HOST must be selected and 342 in order to enable device-specific features PCIE_TEGRA194_EP must be 343 selected. This uses the DesignWare core. 344 345config PCIE_VISCONTI_HOST 346 bool "Toshiba Visconti PCIe controllers" 347 depends on ARCH_VISCONTI || COMPILE_TEST 348 depends on PCI_MSI 349 select PCIE_DW_HOST 350 help 351 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 352 This driver supports TMPV7708 SoC. 353 354config PCIE_UNIPHIER 355 bool "Socionext UniPhier PCIe host controllers" 356 depends on ARCH_UNIPHIER || COMPILE_TEST 357 depends on OF && HAS_IOMEM 358 depends on PCI_MSI 359 select PCIE_DW_HOST 360 help 361 Say Y here if you want PCIe host controller support on UniPhier SoCs. 362 This driver supports LD20 and PXs3 SoCs. 363 364config PCIE_UNIPHIER_EP 365 bool "Socionext UniPhier PCIe endpoint controllers" 366 depends on ARCH_UNIPHIER || COMPILE_TEST 367 depends on OF && HAS_IOMEM 368 depends on PCI_ENDPOINT 369 select PCIE_DW_EP 370 help 371 Say Y here if you want PCIe endpoint controller support on 372 UniPhier SoCs. This driver supports Pro5 SoC. 373 374config PCIE_AL 375 bool "Amazon Annapurna Labs PCIe controller" 376 depends on OF && (ARM64 || COMPILE_TEST) 377 depends on PCI_MSI 378 select PCIE_DW_HOST 379 select PCI_ECAM 380 help 381 Say Y here to enable support of the Amazon's Annapurna Labs PCIe 382 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare 383 core plus Annapurna Labs proprietary hardware wrappers. This is 384 required only for DT-based platforms. ACPI platforms with the 385 Annapurna Labs PCIe controller don't need to enable this. 386 387config PCIE_FU740 388 bool "SiFive FU740 PCIe host controller" 389 depends on PCI_MSI 390 depends on SOC_SIFIVE || COMPILE_TEST 391 select PCIE_DW_HOST 392 help 393 Say Y here if you want PCIe controller support for the SiFive 394 FU740. 395 396endmenu 397