0001 # SPDX-License-Identifier: GPL-2.0
0002
0003 menu "DesignWare PCI Core Support"
0004 depends on PCI
0005
0006 config PCIE_DW
0007 bool
0008
0009 config PCIE_DW_HOST
0010 bool
0011 select PCIE_DW
0012
0013 config PCIE_DW_EP
0014 bool
0015 select PCIE_DW
0016
0017 config PCI_DRA7XX
0018 tristate
0019
0020 config PCI_DRA7XX_HOST
0021 tristate "TI DRA7xx PCIe controller Host Mode"
0022 depends on SOC_DRA7XX || COMPILE_TEST
0023 depends on OF && HAS_IOMEM && TI_PIPE3
0024 depends on PCI_MSI_IRQ_DOMAIN
0025 select PCIE_DW_HOST
0026 select PCI_DRA7XX
0027 default y if SOC_DRA7XX
0028 help
0029 Enables support for the PCIe controller in the DRA7xx SoC to work in
0030 host mode. There are two instances of PCIe controller in DRA7xx.
0031 This controller can work either as EP or RC. In order to enable
0032 host-specific features PCI_DRA7XX_HOST must be selected and in order
0033 to enable device-specific features PCI_DRA7XX_EP must be selected.
0034 This uses the DesignWare core.
0035
0036 config PCI_DRA7XX_EP
0037 tristate "TI DRA7xx PCIe controller Endpoint Mode"
0038 depends on SOC_DRA7XX || COMPILE_TEST
0039 depends on OF && HAS_IOMEM && TI_PIPE3
0040 depends on PCI_ENDPOINT
0041 select PCIE_DW_EP
0042 select PCI_DRA7XX
0043 help
0044 Enables support for the PCIe controller in the DRA7xx SoC to work in
0045 endpoint mode. There are two instances of PCIe controller in DRA7xx.
0046 This controller can work either as EP or RC. In order to enable
0047 host-specific features PCI_DRA7XX_HOST must be selected and in order
0048 to enable device-specific features PCI_DRA7XX_EP must be selected.
0049 This uses the DesignWare core.
0050
0051 config PCIE_DW_PLAT
0052 bool
0053
0054 config PCIE_DW_PLAT_HOST
0055 bool "Platform bus based DesignWare PCIe Controller - Host mode"
0056 depends on PCI_MSI_IRQ_DOMAIN
0057 select PCIE_DW_HOST
0058 select PCIE_DW_PLAT
0059 help
0060 Enables support for the PCIe controller in the Designware IP to
0061 work in host mode. There are two instances of PCIe controller in
0062 Designware IP.
0063 This controller can work either as EP or RC. In order to enable
0064 host-specific features PCIE_DW_PLAT_HOST must be selected and in
0065 order to enable device-specific features PCI_DW_PLAT_EP must be
0066 selected.
0067
0068 config PCIE_DW_PLAT_EP
0069 bool "Platform bus based DesignWare PCIe Controller - Endpoint mode"
0070 depends on PCI && PCI_MSI_IRQ_DOMAIN
0071 depends on PCI_ENDPOINT
0072 select PCIE_DW_EP
0073 select PCIE_DW_PLAT
0074 help
0075 Enables support for the PCIe controller in the Designware IP to
0076 work in endpoint mode. There are two instances of PCIe controller
0077 in Designware IP.
0078 This controller can work either as EP or RC. In order to enable
0079 host-specific features PCIE_DW_PLAT_HOST must be selected and in
0080 order to enable device-specific features PCI_DW_PLAT_EP must be
0081 selected.
0082
0083 config PCI_EXYNOS
0084 tristate "Samsung Exynos PCIe controller"
0085 depends on ARCH_EXYNOS || COMPILE_TEST
0086 depends on PCI_MSI_IRQ_DOMAIN
0087 select PCIE_DW_HOST
0088 help
0089 Enables support for the PCIe controller in the Samsung Exynos SoCs
0090 to work in host mode. The PCI controller is based on the DesignWare
0091 hardware and therefore the driver re-uses the DesignWare core
0092 functions to implement the driver.
0093
0094 config PCI_IMX6
0095 bool "Freescale i.MX6/7/8 PCIe controller"
0096 depends on ARCH_MXC || COMPILE_TEST
0097 depends on PCI_MSI_IRQ_DOMAIN
0098 select PCIE_DW_HOST
0099
0100 config PCIE_SPEAR13XX
0101 bool "STMicroelectronics SPEAr PCIe controller"
0102 depends on ARCH_SPEAR13XX || COMPILE_TEST
0103 depends on PCI_MSI_IRQ_DOMAIN
0104 select PCIE_DW_HOST
0105 help
0106 Say Y here if you want PCIe support on SPEAr13XX SoCs.
0107
0108 config PCI_KEYSTONE
0109 bool
0110
0111 config PCI_KEYSTONE_HOST
0112 bool "PCI Keystone Host Mode"
0113 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
0114 depends on PCI_MSI_IRQ_DOMAIN
0115 select PCIE_DW_HOST
0116 select PCI_KEYSTONE
0117 help
0118 Enables support for the PCIe controller in the Keystone SoC to
0119 work in host mode. The PCI controller on Keystone is based on
0120 DesignWare hardware and therefore the driver re-uses the
0121 DesignWare core functions to implement the driver.
0122
0123 config PCI_KEYSTONE_EP
0124 bool "PCI Keystone Endpoint Mode"
0125 depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
0126 depends on PCI_ENDPOINT
0127 select PCIE_DW_EP
0128 select PCI_KEYSTONE
0129 help
0130 Enables support for the PCIe controller in the Keystone SoC to
0131 work in endpoint mode. The PCI controller on Keystone is based
0132 on DesignWare hardware and therefore the driver re-uses the
0133 DesignWare core functions to implement the driver.
0134
0135 config PCI_LAYERSCAPE
0136 bool "Freescale Layerscape PCIe controller - Host mode"
0137 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
0138 depends on PCI_MSI_IRQ_DOMAIN
0139 select PCIE_DW_HOST
0140 select MFD_SYSCON
0141 help
0142 Say Y here if you want to enable PCIe controller support on Layerscape
0143 SoCs to work in Host mode.
0144 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
0145 determines which PCIe controller works in EP mode and which PCIe
0146 controller works in RC mode.
0147
0148 config PCI_LAYERSCAPE_EP
0149 bool "Freescale Layerscape PCIe controller - Endpoint mode"
0150 depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
0151 depends on PCI_ENDPOINT
0152 select PCIE_DW_EP
0153 help
0154 Say Y here if you want to enable PCIe controller support on Layerscape
0155 SoCs to work in Endpoint mode.
0156 This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
0157 determines which PCIe controller works in EP mode and which PCIe
0158 controller works in RC mode.
0159
0160 config PCI_HISI
0161 depends on OF && (ARM64 || COMPILE_TEST)
0162 bool "HiSilicon Hip05 and Hip06 SoCs PCIe controllers"
0163 depends on PCI_MSI_IRQ_DOMAIN
0164 select PCIE_DW_HOST
0165 select PCI_HOST_COMMON
0166 help
0167 Say Y here if you want PCIe controller support on HiSilicon
0168 Hip05 and Hip06 SoCs
0169
0170 config PCIE_QCOM
0171 bool "Qualcomm PCIe controller"
0172 depends on OF && (ARCH_QCOM || COMPILE_TEST)
0173 depends on PCI_MSI_IRQ_DOMAIN
0174 select PCIE_DW_HOST
0175 select CRC8
0176 help
0177 Say Y here to enable PCIe controller support on Qualcomm SoCs. The
0178 PCIe controller uses the DesignWare core plus Qualcomm-specific
0179 hardware wrappers.
0180
0181 config PCIE_QCOM_EP
0182 tristate "Qualcomm PCIe controller - Endpoint mode"
0183 depends on OF && (ARCH_QCOM || COMPILE_TEST)
0184 depends on PCI_ENDPOINT
0185 select PCIE_DW_EP
0186 help
0187 Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
0188 to work in endpoint mode. The PCIe controller uses the DesignWare core
0189 plus Qualcomm-specific hardware wrappers.
0190
0191 config PCIE_ARMADA_8K
0192 bool "Marvell Armada-8K PCIe controller"
0193 depends on ARCH_MVEBU || COMPILE_TEST
0194 depends on PCI_MSI_IRQ_DOMAIN
0195 select PCIE_DW_HOST
0196 help
0197 Say Y here if you want to enable PCIe controller support on
0198 Armada-8K SoCs. The PCIe controller on Armada-8K is based on
0199 DesignWare hardware and therefore the driver re-uses the
0200 DesignWare core functions to implement the driver.
0201
0202 config PCIE_ARTPEC6
0203 bool
0204
0205 config PCIE_ARTPEC6_HOST
0206 bool "Axis ARTPEC-6 PCIe controller Host Mode"
0207 depends on MACH_ARTPEC6 || COMPILE_TEST
0208 depends on PCI_MSI_IRQ_DOMAIN
0209 select PCIE_DW_HOST
0210 select PCIE_ARTPEC6
0211 help
0212 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
0213 host mode. This uses the DesignWare core.
0214
0215 config PCIE_ARTPEC6_EP
0216 bool "Axis ARTPEC-6 PCIe controller Endpoint Mode"
0217 depends on MACH_ARTPEC6 || COMPILE_TEST
0218 depends on PCI_ENDPOINT
0219 select PCIE_DW_EP
0220 select PCIE_ARTPEC6
0221 help
0222 Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
0223 endpoint mode. This uses the DesignWare core.
0224
0225 config PCIE_ROCKCHIP_DW_HOST
0226 bool "Rockchip DesignWare PCIe controller"
0227 select PCIE_DW
0228 select PCIE_DW_HOST
0229 depends on PCI_MSI_IRQ_DOMAIN
0230 depends on ARCH_ROCKCHIP || COMPILE_TEST
0231 depends on OF
0232 help
0233 Enables support for the DesignWare PCIe controller in the
0234 Rockchip SoC except RK3399.
0235
0236 config PCIE_INTEL_GW
0237 bool "Intel Gateway PCIe host controller support"
0238 depends on OF && (X86 || COMPILE_TEST)
0239 depends on PCI_MSI_IRQ_DOMAIN
0240 select PCIE_DW_HOST
0241 help
0242 Say 'Y' here to enable PCIe Host controller support on Intel
0243 Gateway SoCs.
0244 The PCIe controller uses the DesignWare core plus Intel-specific
0245 hardware wrappers.
0246
0247 config PCIE_KEEMBAY
0248 bool
0249
0250 config PCIE_KEEMBAY_HOST
0251 bool "Intel Keem Bay PCIe controller - Host mode"
0252 depends on ARCH_KEEMBAY || COMPILE_TEST
0253 depends on PCI && PCI_MSI_IRQ_DOMAIN
0254 select PCIE_DW_HOST
0255 select PCIE_KEEMBAY
0256 help
0257 Say 'Y' here to enable support for the PCIe controller in Keem Bay
0258 to work in host mode.
0259 The PCIe controller is based on DesignWare Hardware and uses
0260 DesignWare core functions.
0261
0262 config PCIE_KEEMBAY_EP
0263 bool "Intel Keem Bay PCIe controller - Endpoint mode"
0264 depends on ARCH_KEEMBAY || COMPILE_TEST
0265 depends on PCI && PCI_MSI_IRQ_DOMAIN
0266 depends on PCI_ENDPOINT
0267 select PCIE_DW_EP
0268 select PCIE_KEEMBAY
0269 help
0270 Say 'Y' here to enable support for the PCIe controller in Keem Bay
0271 to work in endpoint mode.
0272 The PCIe controller is based on DesignWare Hardware and uses
0273 DesignWare core functions.
0274
0275 config PCIE_KIRIN
0276 depends on OF && (ARM64 || COMPILE_TEST)
0277 tristate "HiSilicon Kirin series SoCs PCIe controllers"
0278 depends on PCI_MSI_IRQ_DOMAIN
0279 select PCIE_DW_HOST
0280 help
0281 Say Y here if you want PCIe controller support
0282 on HiSilicon Kirin series SoCs.
0283
0284 config PCIE_HISI_STB
0285 bool "HiSilicon STB SoCs PCIe controllers"
0286 depends on ARCH_HISI || COMPILE_TEST
0287 depends on PCI_MSI_IRQ_DOMAIN
0288 select PCIE_DW_HOST
0289 help
0290 Say Y here if you want PCIe controller support on HiSilicon STB SoCs
0291
0292 config PCI_MESON
0293 tristate "MESON PCIe controller"
0294 default m if ARCH_MESON
0295 depends on PCI_MSI_IRQ_DOMAIN
0296 select PCIE_DW_HOST
0297 help
0298 Say Y here if you want to enable PCI controller support on Amlogic
0299 SoCs. The PCI controller on Amlogic is based on DesignWare hardware
0300 and therefore the driver re-uses the DesignWare core functions to
0301 implement the driver.
0302
0303 config PCIE_TEGRA194
0304 tristate
0305
0306 config PCIE_TEGRA194_HOST
0307 tristate "NVIDIA Tegra194 (and later) PCIe controller - Host Mode"
0308 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
0309 depends on PCI_MSI_IRQ_DOMAIN
0310 select PCIE_DW_HOST
0311 select PHY_TEGRA194_P2U
0312 select PCIE_TEGRA194
0313 help
0314 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
0315 work in host mode. There are two instances of PCIe controllers in
0316 Tegra194. This controller can work either as EP or RC. In order to
0317 enable host-specific features PCIE_TEGRA194_HOST must be selected and
0318 in order to enable device-specific features PCIE_TEGRA194_EP must be
0319 selected. This uses the DesignWare core.
0320
0321 config PCIE_TEGRA194_EP
0322 tristate "NVIDIA Tegra194 (and later) PCIe controller - Endpoint Mode"
0323 depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
0324 depends on PCI_ENDPOINT
0325 select PCIE_DW_EP
0326 select PHY_TEGRA194_P2U
0327 select PCIE_TEGRA194
0328 help
0329 Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
0330 work in endpoint mode. There are two instances of PCIe controllers in
0331 Tegra194. This controller can work either as EP or RC. In order to
0332 enable host-specific features PCIE_TEGRA194_HOST must be selected and
0333 in order to enable device-specific features PCIE_TEGRA194_EP must be
0334 selected. This uses the DesignWare core.
0335
0336 config PCIE_VISCONTI_HOST
0337 bool "Toshiba Visconti PCIe controllers"
0338 depends on ARCH_VISCONTI || COMPILE_TEST
0339 depends on PCI_MSI_IRQ_DOMAIN
0340 select PCIE_DW_HOST
0341 help
0342 Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
0343 This driver supports TMPV7708 SoC.
0344
0345 config PCIE_UNIPHIER
0346 bool "Socionext UniPhier PCIe host controllers"
0347 depends on ARCH_UNIPHIER || COMPILE_TEST
0348 depends on OF && HAS_IOMEM
0349 depends on PCI_MSI_IRQ_DOMAIN
0350 select PCIE_DW_HOST
0351 help
0352 Say Y here if you want PCIe host controller support on UniPhier SoCs.
0353 This driver supports LD20 and PXs3 SoCs.
0354
0355 config PCIE_UNIPHIER_EP
0356 bool "Socionext UniPhier PCIe endpoint controllers"
0357 depends on ARCH_UNIPHIER || COMPILE_TEST
0358 depends on OF && HAS_IOMEM
0359 depends on PCI_ENDPOINT
0360 select PCIE_DW_EP
0361 help
0362 Say Y here if you want PCIe endpoint controller support on
0363 UniPhier SoCs. This driver supports Pro5 SoC.
0364
0365 config PCIE_AL
0366 bool "Amazon Annapurna Labs PCIe controller"
0367 depends on OF && (ARM64 || COMPILE_TEST)
0368 depends on PCI_MSI_IRQ_DOMAIN
0369 select PCIE_DW_HOST
0370 select PCI_ECAM
0371 help
0372 Say Y here to enable support of the Amazon's Annapurna Labs PCIe
0373 controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
0374 core plus Annapurna Labs proprietary hardware wrappers. This is
0375 required only for DT-based platforms. ACPI platforms with the
0376 Annapurna Labs PCIe controller don't need to enable this.
0377
0378 config PCIE_FU740
0379 bool "SiFive FU740 PCIe host controller"
0380 depends on PCI_MSI_IRQ_DOMAIN
0381 depends on SOC_SIFIVE || COMPILE_TEST
0382 select PCIE_DW_HOST
0383 help
0384 Say Y here if you want PCIe controller support for the SiFive
0385 FU740.
0386
0387 endmenu