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