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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_IRQ_DOMAIN 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_ROCKCHIP_DW_HOST 226 bool "Rockchip DesignWare PCIe controller" 227 select PCIE_DW 228 select PCIE_DW_HOST 229 depends on PCI_MSI_IRQ_DOMAIN 230 depends on ARCH_ROCKCHIP || COMPILE_TEST 231 depends on OF 232 help 233 Enables support for the DesignWare PCIe controller in the 234 Rockchip SoC except RK3399. 235 236config PCIE_INTEL_GW 237 bool "Intel Gateway PCIe host controller support" 238 depends on OF && (X86 || COMPILE_TEST) 239 depends on PCI_MSI_IRQ_DOMAIN 240 select PCIE_DW_HOST 241 help 242 Say 'Y' here to enable PCIe Host controller support on Intel 243 Gateway SoCs. 244 The PCIe controller uses the DesignWare core plus Intel-specific 245 hardware wrappers. 246 247config PCIE_KEEMBAY 248 bool 249 250config PCIE_KEEMBAY_HOST 251 bool "Intel Keem Bay PCIe controller - Host mode" 252 depends on ARCH_KEEMBAY || COMPILE_TEST 253 depends on PCI && PCI_MSI_IRQ_DOMAIN 254 select PCIE_DW_HOST 255 select PCIE_KEEMBAY 256 help 257 Say 'Y' here to enable support for the PCIe controller in Keem Bay 258 to work in host mode. 259 The PCIe controller is based on DesignWare Hardware and uses 260 DesignWare core functions. 261 262config PCIE_KEEMBAY_EP 263 bool "Intel Keem Bay PCIe controller - Endpoint mode" 264 depends on ARCH_KEEMBAY || COMPILE_TEST 265 depends on PCI && PCI_MSI_IRQ_DOMAIN 266 depends on PCI_ENDPOINT 267 select PCIE_DW_EP 268 select PCIE_KEEMBAY 269 help 270 Say 'Y' here to enable support for the PCIe controller in Keem Bay 271 to work in endpoint mode. 272 The PCIe controller is based on DesignWare Hardware and uses 273 DesignWare core functions. 274 275config PCIE_KIRIN 276 depends on OF && (ARM64 || COMPILE_TEST) 277 tristate "HiSilicon Kirin series SoCs PCIe controllers" 278 depends on PCI_MSI_IRQ_DOMAIN 279 select PCIE_DW_HOST 280 help 281 Say Y here if you want PCIe controller support 282 on HiSilicon Kirin series SoCs. 283 284config PCIE_HISI_STB 285 bool "HiSilicon STB SoCs PCIe controllers" 286 depends on ARCH_HISI || COMPILE_TEST 287 depends on PCI_MSI_IRQ_DOMAIN 288 select PCIE_DW_HOST 289 help 290 Say Y here if you want PCIe controller support on HiSilicon STB SoCs 291 292config PCI_MESON 293 tristate "MESON PCIe controller" 294 default m if ARCH_MESON 295 depends on PCI_MSI_IRQ_DOMAIN 296 select PCIE_DW_HOST 297 select REGMAP_MMIO 298 help 299 Say Y here if you want to enable PCI controller support on Amlogic 300 SoCs. The PCI controller on Amlogic is based on DesignWare hardware 301 and therefore the driver re-uses the DesignWare core functions to 302 implement the driver. 303 304config PCIE_TEGRA194 305 tristate 306 307config PCIE_TEGRA194_HOST 308 tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode" 309 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 310 depends on PCI_MSI_IRQ_DOMAIN 311 select PCIE_DW_HOST 312 select PHY_TEGRA194_P2U 313 select PCIE_TEGRA194 314 help 315 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 316 work in host mode. There are two instances of PCIe controllers in 317 Tegra194. This controller can work either as EP or RC. In order to 318 enable host-specific features PCIE_TEGRA194_HOST must be selected and 319 in order to enable device-specific features PCIE_TEGRA194_EP must be 320 selected. This uses the DesignWare core. 321 322config PCIE_TEGRA194_EP 323 tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode" 324 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 325 depends on PCI_ENDPOINT 326 select PCIE_DW_EP 327 select PHY_TEGRA194_P2U 328 select PCIE_TEGRA194 329 help 330 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 331 work in endpoint mode. There are two instances of PCIe controllers in 332 Tegra194. This controller can work either as EP or RC. In order to 333 enable host-specific features PCIE_TEGRA194_HOST must be selected and 334 in order to enable device-specific features PCIE_TEGRA194_EP must be 335 selected. This uses the DesignWare core. 336 337config PCIE_VISCONTI_HOST 338 bool "Toshiba Visconti PCIe controllers" 339 depends on ARCH_VISCONTI || COMPILE_TEST 340 depends on PCI_MSI_IRQ_DOMAIN 341 select PCIE_DW_HOST 342 help 343 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 344 This driver supports TMPV7708 SoC. 345 346config PCIE_UNIPHIER 347 bool "Socionext UniPhier PCIe host controllers" 348 depends on ARCH_UNIPHIER || COMPILE_TEST 349 depends on OF && HAS_IOMEM 350 depends on PCI_MSI_IRQ_DOMAIN 351 select PCIE_DW_HOST 352 help 353 Say Y here if you want PCIe host controller support on UniPhier SoCs. 354 This driver supports LD20 and PXs3 SoCs. 355 356config PCIE_UNIPHIER_EP 357 bool "Socionext UniPhier PCIe endpoint controllers" 358 depends on ARCH_UNIPHIER || COMPILE_TEST 359 depends on OF && HAS_IOMEM 360 depends on PCI_ENDPOINT 361 select PCIE_DW_EP 362 help 363 Say Y here if you want PCIe endpoint controller support on 364 UniPhier SoCs. This driver supports Pro5 SoC. 365 366config PCIE_AL 367 bool "Amazon Annapurna Labs PCIe controller" 368 depends on OF && (ARM64 || COMPILE_TEST) 369 depends on PCI_MSI_IRQ_DOMAIN 370 select PCIE_DW_HOST 371 select PCI_ECAM 372 help 373 Say Y here to enable support of the Amazon's Annapurna Labs PCIe 374 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare 375 core plus Annapurna Labs proprietary hardware wrappers. This is 376 required only for DT-based platforms. ACPI platforms with the 377 Annapurna Labs PCIe controller don't need to enable this. 378 379config PCIE_FU740 380 bool "SiFive FU740 PCIe host controller" 381 depends on PCI_MSI_IRQ_DOMAIN 382 depends on SOC_SIFIVE || COMPILE_TEST 383 select PCIE_DW_HOST 384 help 385 Say Y here if you want PCIe controller support for the SiFive 386 FU740. 387 388endmenu 389