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_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 "TI Keystone PCIe controller (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 "TI Keystone PCIe controller (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 controller" 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 (host mode)" 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 controller " 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 PCIe controller" 308 depends on PCI_MSI 309 select PCIE_DW_HOST 310 select REGMAP_MMIO 311 help 312 Say Y here if you want PCIe controller support 313 on HiSilicon Kirin series SoCs. 314 315config PCIE_HISI_STB 316 bool "HiSilicon STB PCIe controller" 317 depends on ARCH_HISI || COMPILE_TEST 318 depends on PCI_MSI 319 select PCIE_DW_HOST 320 help 321 Say Y here if you want PCIe controller support on HiSilicon STB SoCs 322 323config PCI_MESON 324 tristate "Amlogic Meson PCIe controller" 325 default m if ARCH_MESON 326 depends on PCI_MSI 327 select PCIE_DW_HOST 328 help 329 Say Y here if you want to enable PCI controller support on Amlogic 330 SoCs. The PCI controller on Amlogic is based on DesignWare hardware 331 and therefore the driver re-uses the DesignWare core functions to 332 implement the driver. 333 334config PCIE_TEGRA194 335 tristate 336 337config PCIE_TEGRA194_HOST 338 tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)" 339 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 340 depends on PCI_MSI 341 select PCIE_DW_HOST 342 select PHY_TEGRA194_P2U 343 select PCIE_TEGRA194 344 help 345 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 346 work in host mode. There are two instances of PCIe controllers in 347 Tegra194. This controller can work either as EP or RC. In order to 348 enable host-specific features PCIE_TEGRA194_HOST must be selected and 349 in order to enable device-specific features PCIE_TEGRA194_EP must be 350 selected. This uses the DesignWare core. 351 352config PCIE_TEGRA194_EP 353 tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)" 354 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST 355 depends on PCI_ENDPOINT 356 select PCIE_DW_EP 357 select PHY_TEGRA194_P2U 358 select PCIE_TEGRA194 359 help 360 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to 361 work in endpoint mode. There are two instances of PCIe controllers in 362 Tegra194. This controller can work either as EP or RC. In order to 363 enable host-specific features PCIE_TEGRA194_HOST must be selected and 364 in order to enable device-specific features PCIE_TEGRA194_EP must be 365 selected. This uses the DesignWare core. 366 367config PCIE_VISCONTI_HOST 368 bool "Toshiba Visconti PCIe controller" 369 depends on ARCH_VISCONTI || COMPILE_TEST 370 depends on PCI_MSI 371 select PCIE_DW_HOST 372 help 373 Say Y here if you want PCIe controller support on Toshiba Visconti SoC. 374 This driver supports TMPV7708 SoC. 375 376config PCIE_UNIPHIER 377 bool "Socionext UniPhier PCIe controller (host mode)" 378 depends on ARCH_UNIPHIER || COMPILE_TEST 379 depends on OF && HAS_IOMEM 380 depends on PCI_MSI 381 select PCIE_DW_HOST 382 help 383 Say Y here if you want PCIe host controller support on UniPhier SoCs. 384 This driver supports LD20 and PXs3 SoCs. 385 386config PCIE_UNIPHIER_EP 387 bool "Socionext UniPhier PCIe controller (endpoint mode)" 388 depends on ARCH_UNIPHIER || COMPILE_TEST 389 depends on OF && HAS_IOMEM 390 depends on PCI_ENDPOINT 391 select PCIE_DW_EP 392 help 393 Say Y here if you want PCIe endpoint controller support on 394 UniPhier SoCs. This driver supports Pro5 SoC. 395 396config PCIE_AL 397 bool "Amazon Annapurna Labs PCIe controller" 398 depends on OF && (ARM64 || COMPILE_TEST) 399 depends on PCI_MSI 400 select PCIE_DW_HOST 401 select PCI_ECAM 402 help 403 Say Y here to enable support of the Amazon's Annapurna Labs PCIe 404 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare 405 core plus Annapurna Labs proprietary hardware wrappers. This is 406 required only for DT-based platforms. ACPI platforms with the 407 Annapurna Labs PCIe controller don't need to enable this. 408 409config PCIE_FU740 410 bool "SiFive FU740 PCIe controller" 411 depends on PCI_MSI 412 depends on SOC_SIFIVE || COMPILE_TEST 413 select PCIE_DW_HOST 414 help 415 Say Y here if you want PCIe controller support for the SiFive 416 FU740. 417 418endmenu 419