During high data transmission rates such as 16.0 GT/s, there is an increased risk of signal loss due to poor channel quality and interference. This can impact receiver's ability to capture signals accurately. Hence, as signal compensation is achieved through appropriate lane equalization, apply lane equalization settings at both transmitter and receiver which results in an increase in the PCIe signal strength. While at it, modify the pcie-tegra194 driver to make use of the common GEN3_EQ_CONTROL_OFF definitions in pcie-designware.h. Link: https://lore.kernel.org/linux-pci/20240911-pci-qcom-gen4-stability-v7-3-743f5c1fd027@linaro.org Tested-by: Johan Hovold <johan+linaro@kernel.org> Signed-off-by: Shashank Babu Chinta Venkata <quic_schintav@quicinc.com> [mani: dropped the code refactoring and minor changes] Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> [kwilczynski: commit log] Signed-off-by: Krzysztof Wilczyński <kwilczynski@kernel.org> Reviewed-by: Johan Hovold <johan+linaro@kernel.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
462 lines
14 KiB
Text
462 lines
14 KiB
Text
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
menu "DesignWare-based PCIe controllers"
|
|
depends on PCI
|
|
|
|
config PCIE_DW
|
|
bool
|
|
|
|
config PCIE_DW_HOST
|
|
bool
|
|
select PCIE_DW
|
|
|
|
config PCIE_DW_EP
|
|
bool
|
|
select PCIE_DW
|
|
|
|
config PCIE_AL
|
|
bool "Amazon Annapurna Labs PCIe controller"
|
|
depends on OF && (ARM64 || COMPILE_TEST)
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCI_ECAM
|
|
help
|
|
Say Y here to enable support of the Amazon's Annapurna Labs PCIe
|
|
controller IP on Amazon SoCs. The PCIe controller uses the DesignWare
|
|
core plus Annapurna Labs proprietary hardware wrappers. This is
|
|
required only for DT-based platforms. ACPI platforms with the
|
|
Annapurna Labs PCIe controller don't need to enable this.
|
|
|
|
config PCI_MESON
|
|
tristate "Amlogic Meson PCIe controller"
|
|
default m if ARCH_MESON
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want to enable PCI controller support on Amlogic
|
|
SoCs. The PCI controller on Amlogic is based on DesignWare hardware
|
|
and therefore the driver re-uses the DesignWare core functions to
|
|
implement the driver.
|
|
|
|
config PCIE_ARTPEC6
|
|
bool
|
|
|
|
config PCIE_ARTPEC6_HOST
|
|
bool "Axis ARTPEC-6 PCIe controller (host mode)"
|
|
depends on MACH_ARTPEC6 || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCIE_ARTPEC6
|
|
help
|
|
Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
|
|
host mode. This uses the DesignWare core.
|
|
|
|
config PCIE_ARTPEC6_EP
|
|
bool "Axis ARTPEC-6 PCIe controller (endpoint mode)"
|
|
depends on MACH_ARTPEC6 || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_ARTPEC6
|
|
help
|
|
Enables support for the PCIe controller in the ARTPEC-6 SoC to work in
|
|
endpoint mode. This uses the DesignWare core.
|
|
|
|
config PCIE_BT1
|
|
tristate "Baikal-T1 PCIe controller"
|
|
depends on MIPS_BAIKAL_T1 || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Enables support for the PCIe controller in the Baikal-T1 SoC to work
|
|
in host mode. It's based on the Synopsys DWC PCIe v4.60a IP-core.
|
|
|
|
config PCI_IMX6
|
|
bool
|
|
|
|
config PCI_IMX6_HOST
|
|
bool "Freescale i.MX6/7/8 PCIe controller (host mode)"
|
|
depends on ARCH_MXC || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCI_IMX6
|
|
help
|
|
Enables support for the PCIe controller in the i.MX SoCs to
|
|
work in Root Complex mode. The PCI controller on i.MX is based
|
|
on DesignWare hardware and therefore the driver re-uses the
|
|
DesignWare core functions to implement the driver.
|
|
|
|
config PCI_IMX6_EP
|
|
bool "Freescale i.MX6/7/8 PCIe controller (endpoint mode)"
|
|
depends on ARCH_MXC || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCI_IMX6
|
|
help
|
|
Enables support for the PCIe controller in the i.MX SoCs to
|
|
work in endpoint mode. The PCI controller on i.MX is based
|
|
on DesignWare hardware and therefore the driver re-uses the
|
|
DesignWare core functions to implement the driver.
|
|
|
|
config PCI_LAYERSCAPE
|
|
bool "Freescale Layerscape PCIe controller (host mode)"
|
|
depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select MFD_SYSCON
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on Layerscape
|
|
SoCs to work in Host mode.
|
|
This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
|
|
determines which PCIe controller works in EP mode and which PCIe
|
|
controller works in RC mode.
|
|
|
|
config PCI_LAYERSCAPE_EP
|
|
bool "Freescale Layerscape PCIe controller (endpoint mode)"
|
|
depends on OF && (ARM || ARCH_LAYERSCAPE || COMPILE_TEST)
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on Layerscape
|
|
SoCs to work in Endpoint mode.
|
|
This controller can work either as EP or RC. The RCW[HOST_AGT_PEX]
|
|
determines which PCIe controller works in EP mode and which PCIe
|
|
controller works in RC mode.
|
|
|
|
config PCI_HISI
|
|
depends on OF && (ARM64 || COMPILE_TEST)
|
|
bool "HiSilicon Hip05 and Hip06 SoCs PCIe controller"
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCI_HOST_COMMON
|
|
help
|
|
Say Y here if you want PCIe controller support on HiSilicon
|
|
Hip05 and Hip06 SoCs
|
|
|
|
config PCIE_KIRIN
|
|
depends on OF && (ARM64 || COMPILE_TEST)
|
|
tristate "HiSilicon Kirin PCIe controller"
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select REGMAP_MMIO
|
|
help
|
|
Say Y here if you want PCIe controller support
|
|
on HiSilicon Kirin series SoCs.
|
|
|
|
config PCIE_HISI_STB
|
|
bool "HiSilicon STB PCIe controller"
|
|
depends on ARCH_HISI || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want PCIe controller support on HiSilicon STB SoCs
|
|
|
|
config PCIE_INTEL_GW
|
|
bool "Intel Gateway PCIe controller "
|
|
depends on OF && (X86 || COMPILE_TEST)
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say 'Y' here to enable PCIe Host controller support on Intel
|
|
Gateway SoCs.
|
|
The PCIe controller uses the DesignWare core plus Intel-specific
|
|
hardware wrappers.
|
|
|
|
config PCIE_KEEMBAY
|
|
bool
|
|
|
|
config PCIE_KEEMBAY_HOST
|
|
bool "Intel Keem Bay PCIe controller (host mode)"
|
|
depends on ARCH_KEEMBAY || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCIE_KEEMBAY
|
|
help
|
|
Say 'Y' here to enable support for the PCIe controller in Keem Bay
|
|
to work in host mode.
|
|
The PCIe controller is based on DesignWare Hardware and uses
|
|
DesignWare core functions.
|
|
|
|
config PCIE_KEEMBAY_EP
|
|
bool "Intel Keem Bay PCIe controller (endpoint mode)"
|
|
depends on ARCH_KEEMBAY || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_KEEMBAY
|
|
help
|
|
Say 'Y' here to enable support for the PCIe controller in Keem Bay
|
|
to work in endpoint mode.
|
|
The PCIe controller is based on DesignWare Hardware and uses
|
|
DesignWare core functions.
|
|
|
|
config PCIE_ARMADA_8K
|
|
bool "Marvell Armada-8K PCIe controller"
|
|
depends on ARCH_MVEBU || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want to enable PCIe controller support on
|
|
Armada-8K SoCs. The PCIe controller on Armada-8K is based on
|
|
DesignWare hardware and therefore the driver re-uses the
|
|
DesignWare core functions to implement the driver.
|
|
|
|
config PCIE_TEGRA194
|
|
tristate
|
|
|
|
config PCIE_TEGRA194_HOST
|
|
tristate "NVIDIA Tegra194 (and later) PCIe controller (host mode)"
|
|
depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PHY_TEGRA194_P2U
|
|
select PCIE_TEGRA194
|
|
help
|
|
Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
|
|
work in host mode. There are two instances of PCIe controllers in
|
|
Tegra194. This controller can work either as EP or RC. In order to
|
|
enable host-specific features PCIE_TEGRA194_HOST must be selected and
|
|
in order to enable device-specific features PCIE_TEGRA194_EP must be
|
|
selected. This uses the DesignWare core.
|
|
|
|
config PCIE_TEGRA194_EP
|
|
tristate "NVIDIA Tegra194 (and later) PCIe controller (endpoint mode)"
|
|
depends on ARCH_TEGRA_194_SOC || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PHY_TEGRA194_P2U
|
|
select PCIE_TEGRA194
|
|
help
|
|
Enables support for the PCIe controller in the NVIDIA Tegra194 SoC to
|
|
work in endpoint mode. There are two instances of PCIe controllers in
|
|
Tegra194. This controller can work either as EP or RC. In order to
|
|
enable host-specific features PCIE_TEGRA194_HOST must be selected and
|
|
in order to enable device-specific features PCIE_TEGRA194_EP must be
|
|
selected. This uses the DesignWare core.
|
|
|
|
config PCIE_DW_PLAT
|
|
bool
|
|
|
|
config PCIE_DW_PLAT_HOST
|
|
bool "Platform bus based DesignWare PCIe controller (host mode)"
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCIE_DW_PLAT
|
|
help
|
|
Enables support for the PCIe controller in the Designware IP to
|
|
work in host mode. There are two instances of PCIe controller in
|
|
Designware IP.
|
|
This controller can work either as EP or RC. In order to enable
|
|
host-specific features PCIE_DW_PLAT_HOST must be selected and in
|
|
order to enable device-specific features PCI_DW_PLAT_EP must be
|
|
selected.
|
|
|
|
config PCIE_DW_PLAT_EP
|
|
bool "Platform bus based DesignWare PCIe controller (endpoint mode)"
|
|
depends on PCI && PCI_MSI
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_DW_PLAT
|
|
help
|
|
Enables support for the PCIe controller in the Designware IP to
|
|
work in endpoint mode. There are two instances of PCIe controller
|
|
in Designware IP.
|
|
This controller can work either as EP or RC. In order to enable
|
|
host-specific features PCIE_DW_PLAT_HOST must be selected and in
|
|
order to enable device-specific features PCI_DW_PLAT_EP must be
|
|
selected.
|
|
|
|
config PCIE_QCOM_COMMON
|
|
bool
|
|
|
|
config PCIE_QCOM
|
|
bool "Qualcomm PCIe controller (host mode)"
|
|
depends on OF && (ARCH_QCOM || COMPILE_TEST)
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select CRC8
|
|
select PCIE_QCOM_COMMON
|
|
help
|
|
Say Y here to enable PCIe controller support on Qualcomm SoCs. The
|
|
PCIe controller uses the DesignWare core plus Qualcomm-specific
|
|
hardware wrappers.
|
|
|
|
config PCIE_QCOM_EP
|
|
tristate "Qualcomm PCIe controller (endpoint mode)"
|
|
depends on OF && (ARCH_QCOM || COMPILE_TEST)
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_QCOM_COMMON
|
|
help
|
|
Say Y here to enable support for the PCIe controllers on Qualcomm SoCs
|
|
to work in endpoint mode. The PCIe controller uses the DesignWare core
|
|
plus Qualcomm-specific hardware wrappers.
|
|
|
|
config PCIE_RCAR_GEN4
|
|
tristate
|
|
|
|
config PCIE_RCAR_GEN4_HOST
|
|
tristate "Renesas R-Car Gen4 PCIe controller (host mode)"
|
|
depends on ARCH_RENESAS || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCIE_RCAR_GEN4
|
|
help
|
|
Say Y here if you want PCIe controller (host mode) on R-Car Gen4 SoCs.
|
|
To compile this driver as a module, choose M here: the module will be
|
|
called pcie-rcar-gen4.ko. This uses the DesignWare core.
|
|
|
|
config PCIE_RCAR_GEN4_EP
|
|
tristate "Renesas R-Car Gen4 PCIe controller (endpoint mode)"
|
|
depends on ARCH_RENESAS || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_RCAR_GEN4
|
|
help
|
|
Say Y here if you want PCIe controller (endpoint mode) on R-Car Gen4
|
|
SoCs. To compile this driver as a module, choose M here: the module
|
|
will be called pcie-rcar-gen4.ko. This uses the DesignWare core.
|
|
|
|
config PCIE_ROCKCHIP_DW
|
|
bool
|
|
|
|
config PCIE_ROCKCHIP_DW_HOST
|
|
bool "Rockchip DesignWare PCIe controller (host mode)"
|
|
depends on PCI_MSI
|
|
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
|
depends on OF
|
|
select PCIE_DW_HOST
|
|
select PCIE_ROCKCHIP_DW
|
|
help
|
|
Enables support for the DesignWare PCIe controller in the
|
|
Rockchip SoC (except RK3399) to work in host mode.
|
|
|
|
config PCIE_ROCKCHIP_DW_EP
|
|
bool "Rockchip DesignWare PCIe controller (endpoint mode)"
|
|
depends on ARCH_ROCKCHIP || COMPILE_TEST
|
|
depends on OF
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCIE_ROCKCHIP_DW
|
|
help
|
|
Enables support for the DesignWare PCIe controller in the
|
|
Rockchip SoC (except RK3399) to work in endpoint mode.
|
|
|
|
config PCI_EXYNOS
|
|
tristate "Samsung Exynos PCIe controller"
|
|
depends on ARCH_EXYNOS || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Enables support for the PCIe controller in the Samsung Exynos SoCs
|
|
to work in host mode. The PCI controller is based on the DesignWare
|
|
hardware and therefore the driver re-uses the DesignWare core
|
|
functions to implement the driver.
|
|
|
|
config PCIE_FU740
|
|
bool "SiFive FU740 PCIe controller"
|
|
depends on PCI_MSI
|
|
depends on ARCH_SIFIVE || COMPILE_TEST
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want PCIe controller support for the SiFive
|
|
FU740.
|
|
|
|
config PCIE_UNIPHIER
|
|
bool "Socionext UniPhier PCIe controller (host mode)"
|
|
depends on ARCH_UNIPHIER || COMPILE_TEST
|
|
depends on OF && HAS_IOMEM
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want PCIe host controller support on UniPhier SoCs.
|
|
This driver supports LD20 and PXs3 SoCs.
|
|
|
|
config PCIE_UNIPHIER_EP
|
|
bool "Socionext UniPhier PCIe controller (endpoint mode)"
|
|
depends on ARCH_UNIPHIER || COMPILE_TEST
|
|
depends on OF && HAS_IOMEM
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
help
|
|
Say Y here if you want PCIe endpoint controller support on
|
|
UniPhier SoCs. This driver supports Pro5 SoC.
|
|
|
|
config PCIE_SPEAR13XX
|
|
bool "STMicroelectronics SPEAr PCIe controller"
|
|
depends on ARCH_SPEAR13XX || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want PCIe support on SPEAr13XX SoCs.
|
|
|
|
config PCI_DRA7XX
|
|
tristate
|
|
|
|
config PCI_DRA7XX_HOST
|
|
tristate "TI DRA7xx PCIe controller (host mode)"
|
|
depends on SOC_DRA7XX || COMPILE_TEST
|
|
depends on OF && HAS_IOMEM && TI_PIPE3
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCI_DRA7XX
|
|
default y if SOC_DRA7XX
|
|
help
|
|
Enables support for the PCIe controller in the DRA7xx SoC to work in
|
|
host mode. There are two instances of PCIe controller in DRA7xx.
|
|
This controller can work either as EP or RC. In order to enable
|
|
host-specific features PCI_DRA7XX_HOST must be selected and in order
|
|
to enable device-specific features PCI_DRA7XX_EP must be selected.
|
|
This uses the DesignWare core.
|
|
|
|
config PCI_DRA7XX_EP
|
|
tristate "TI DRA7xx PCIe controller (endpoint mode)"
|
|
depends on SOC_DRA7XX || COMPILE_TEST
|
|
depends on OF && HAS_IOMEM && TI_PIPE3
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCI_DRA7XX
|
|
help
|
|
Enables support for the PCIe controller in the DRA7xx SoC to work in
|
|
endpoint mode. There are two instances of PCIe controller in DRA7xx.
|
|
This controller can work either as EP or RC. In order to enable
|
|
host-specific features PCI_DRA7XX_HOST must be selected and in order
|
|
to enable device-specific features PCI_DRA7XX_EP must be selected.
|
|
This uses the DesignWare core.
|
|
|
|
config PCI_KEYSTONE
|
|
bool
|
|
|
|
config PCI_KEYSTONE_HOST
|
|
bool "TI Keystone PCIe controller (host mode)"
|
|
depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
select PCI_KEYSTONE
|
|
help
|
|
Enables support for the PCIe controller in the Keystone SoC to
|
|
work in host mode. The PCI controller on Keystone is based on
|
|
DesignWare hardware and therefore the driver re-uses the
|
|
DesignWare core functions to implement the driver.
|
|
|
|
config PCI_KEYSTONE_EP
|
|
bool "TI Keystone PCIe controller (endpoint mode)"
|
|
depends on ARCH_KEYSTONE || ARCH_K3 || COMPILE_TEST
|
|
depends on PCI_ENDPOINT
|
|
select PCIE_DW_EP
|
|
select PCI_KEYSTONE
|
|
help
|
|
Enables support for the PCIe controller in the Keystone SoC to
|
|
work in endpoint mode. The PCI controller on Keystone is based
|
|
on DesignWare hardware and therefore the driver re-uses the
|
|
DesignWare core functions to implement the driver.
|
|
|
|
config PCIE_VISCONTI_HOST
|
|
bool "Toshiba Visconti PCIe controller"
|
|
depends on ARCH_VISCONTI || COMPILE_TEST
|
|
depends on PCI_MSI
|
|
select PCIE_DW_HOST
|
|
help
|
|
Say Y here if you want PCIe controller support on Toshiba Visconti SoC.
|
|
This driver supports TMPV7708 SoC.
|
|
|
|
endmenu
|