# SPDX-License-Identifier: GPL-2.0-only
config STMMAC_ETH
	tristate "STMicroelectronics Multi-Gigabit Ethernet driver"
	depends on HAS_IOMEM && HAS_DMA
	depends on PTP_1588_CLOCK_OPTIONAL
	select MII
	select PCS_XPCS
	select PAGE_POOL
	select PHYLINK
	select CRC32
	select RESET_CONTROLLER
	help
	  This is the driver for the Ethernet IPs built around a
	  Synopsys IP Core.

if STMMAC_ETH

config STMMAC_SELFTESTS
	bool "Support for STMMAC Selftests"
	depends on INET
	depends on STMMAC_ETH
	default n
	help
	  This adds support for STMMAC Selftests using ethtool. Enable this
	  feature if you are facing problems with your HW and submit the test
	  results to the netdev Mailing List.

config STMMAC_PLATFORM
	tristate "STMMAC Platform bus support"
	depends on STMMAC_ETH
	select MFD_SYSCON
	default y
	help
	  This selects the platform specific bus support for the stmmac driver.
	  This is the driver used on several SoCs:
	  STi, Allwinner, Amlogic Meson, Altera SOCFPGA.

	  If you have a controller with this interface, say Y or M here.

	  If unsure, say N.

if STMMAC_PLATFORM

config DWMAC_DWC_QOS_ETH
	tristate "Support for snps,dwc-qos-ethernet.txt DT binding."
	select CRC32
	select MII
	depends on OF && HAS_DMA
	help
	  Support for chips using the snps,dwc-qos-ethernet.txt DT binding.

config DWMAC_GENERIC
	tristate "Generic driver for DWMAC"
	default STMMAC_PLATFORM
	help
	  Generic DWMAC driver for platforms that don't require any
	  platform specific code to function or is using platform
	  data for setup.

config DWMAC_ANARION
	tristate "Adaptrum Anarion GMAC support"
	default ARC
	depends on OF && (ARC || COMPILE_TEST)
	help
	  Support for Adaptrum Anarion GMAC Ethernet controller.

	  This selects the Anarion SoC glue layer support for the stmmac driver.

config DWMAC_INGENIC
	tristate "Ingenic MAC support"
	default MACH_INGENIC
	depends on OF && HAS_IOMEM && (MACH_INGENIC || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for ethernet controller on Ingenic SoCs.

	  This selects Ingenic SoCs glue layer support for the stmmac
	  device driver. This driver is used on for the Ingenic SoCs
	  MAC ethernet controller.

config DWMAC_IPQ806X
	tristate "QCA IPQ806x DWMAC support"
	default ARCH_QCOM
	depends on OF && (ARCH_QCOM || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for QCA IPQ806X DWMAC Ethernet.

	  This selects the IPQ806x SoC glue layer support for the stmmac
	  device driver. This driver does not use any of the hardware
	  acceleration features available on this SoC. Network devices
	  will behave like standard non-accelerated ethernet interfaces.

	  Select the QCOM_SOCINFO config flag to enable specific dwmac
	  fixup based on the ipq806x SoC revision.

config DWMAC_LPC18XX
	tristate "NXP LPC18xx/43xx DWMAC support"
	default ARCH_LPC18XX
	depends on OF && (ARCH_LPC18XX || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for NXP LPC18xx/43xx DWMAC Ethernet.

config DWMAC_MEDIATEK
	tristate "MediaTek MT27xx GMAC support"
	depends on OF && (ARCH_MEDIATEK || COMPILE_TEST)
	help
	  Support for MediaTek GMAC Ethernet controller.

	  This selects the MT2712 SoC support for the stmmac driver.

config DWMAC_MESON
	tristate "Amlogic Meson dwmac support"
	default ARCH_MESON
	depends on OF && COMMON_CLK && (ARCH_MESON || COMPILE_TEST)
	help
	  Support for Ethernet controller on Amlogic Meson SoCs.

	  This selects the Amlogic Meson SoC glue layer support for
	  the stmmac device driver. This driver is used for Meson6,
	  Meson8, Meson8b and GXBB SoCs.

config DWMAC_QCOM_ETHQOS
	tristate "Qualcomm ETHQOS support"
	default ARCH_QCOM
	depends on OF && (ARCH_QCOM || COMPILE_TEST)
	help
	  Support for the Qualcomm ETHQOS core.

	  This selects the Qualcomm ETHQOS glue layer support for the
	  stmmac device driver.

config DWMAC_ROCKCHIP
	tristate "Rockchip dwmac support"
	default ARCH_ROCKCHIP
	depends on OF && (ARCH_ROCKCHIP || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for Ethernet controller on Rockchip RK3288 SoC.

	  This selects the Rockchip RK3288 SoC glue layer support for
	  the stmmac device driver.

config DWMAC_SOCFPGA
	tristate "SOCFPGA dwmac support"
	default ARCH_INTEL_SOCFPGA
	depends on OF && (ARCH_INTEL_SOCFPGA || COMPILE_TEST)
	select MFD_SYSCON
	select MDIO_REGMAP
	select REGMAP_MMIO
	select PCS_LYNX
	help
	  Support for ethernet controller on Altera SOCFPGA

	  This selects the Altera SOCFPGA SoC glue layer support
	  for the stmmac device driver. This driver is used for
	  arria5 and cyclone5 FPGA SoCs.

config DWMAC_STARFIVE
	tristate "StarFive dwmac support"
	depends on OF && (ARCH_STARFIVE || COMPILE_TEST)
	select MFD_SYSCON
	default m if ARCH_STARFIVE
	help
	  Support for ethernet controllers on StarFive RISC-V SoCs

	  This selects the StarFive platform specific glue layer support for
	  the stmmac device driver. This driver is used for StarFive JH7110
	  ethernet controller.

config DWMAC_STI
	tristate "STi GMAC support"
	default ARCH_STI
	depends on OF && (ARCH_STI || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for ethernet controller on STi SOCs.

	  This selects STi SoC glue layer support for the stmmac
	  device driver. This driver is used on for the STi series
	  SOCs GMAC ethernet controller.

config DWMAC_STM32
	tristate "STM32 DWMAC support"
	default ARCH_STM32
	depends on OF && HAS_IOMEM && (ARCH_STM32 || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for ethernet controller on STM32 SOCs.

	  This selects STM32 SoC glue layer support for the stmmac
	  device driver. This driver is used on for the STM32 series
	  SOCs GMAC ethernet controller.

config DWMAC_SUNXI
	tristate "Allwinner GMAC support"
	default ARCH_SUNXI
	depends on OF && (ARCH_SUNXI || COMPILE_TEST)
	help
	  Support for Allwinner A20/A31 GMAC ethernet controllers.

	  This selects Allwinner SoC glue layer support for the
	  stmmac device driver. This driver is used for A20/A31
	  GMAC ethernet controller.

config DWMAC_SUN8I
	tristate "Allwinner sun8i GMAC support"
	default ARCH_SUNXI
	depends on OF && (ARCH_SUNXI || COMPILE_TEST)
	select MDIO_BUS_MUX
	help
	  Support for Allwinner H3 A83T A64 EMAC ethernet controllers.

	  This selects Allwinner SoC glue layer support for the
	  stmmac device driver. This driver is used for H3/A83T/A64
	  EMAC ethernet controller.

config DWMAC_IMX8
	tristate "NXP IMX8 DWMAC support"
	default ARCH_MXC
	depends on OF && (ARCH_MXC || COMPILE_TEST)
	select MFD_SYSCON
	help
	  Support for ethernet controller on NXP i.MX8 SOCs.

	  This selects NXP SoC glue layer support for the stmmac
	  device driver. This driver is used for i.MX8 series like
	  iMX8MP/iMX8DXL GMAC ethernet controller.

config DWMAC_INTEL_PLAT
	tristate "Intel dwmac support"
	depends on OF && COMMON_CLK
	depends on STMMAC_ETH
	help
	  Support for ethernet controllers on Intel SoCs

	  This selects the Intel platform specific glue layer support for
	  the stmmac device driver. This driver is used for the Intel Keem Bay
	  SoC.

config DWMAC_TEGRA
	tristate "NVIDIA Tegra MGBE support"
	depends on ARCH_TEGRA || COMPILE_TEST
	help
	  This selects the Multi-GigaBit Ethernet (MGBE) Controller that is
	  found on the NVIDIA Tegra SoC devices. This driver provides the glue
	  layer on top of the stmmac driver required for these NVIDIA Tegra SoC
	  devices.

config DWMAC_VISCONTI
	tristate "Toshiba Visconti DWMAC support"
	default ARCH_VISCONTI
	depends on OF && COMMON_CLK && (ARCH_VISCONTI || COMPILE_TEST)
	help
	  Support for ethernet controller on Visconti SoCs.

endif

config DWMAC_INTEL
	tristate "Intel GMAC support"
	default X86
	depends on X86 && STMMAC_ETH && PCI
	depends on COMMON_CLK
	help
	  This selects the Intel platform specific bus support for the
	  stmmac driver. This driver is used for Intel Quark/EHL/TGL.

config DWMAC_LOONGSON
	tristate "Loongson PCI DWMAC support"
	default MACH_LOONGSON64
	depends on STMMAC_ETH && PCI
	depends on COMMON_CLK
	help
	  This selects the LOONGSON PCI bus support for the stmmac driver,
	  Support for ethernet controller on Loongson-2K1000 SoC and LS7A1000 bridge.

config STMMAC_PCI
	tristate "STMMAC PCI bus support"
	depends on STMMAC_ETH && PCI
	depends on COMMON_CLK
	help
	  This selects the platform specific bus support for the stmmac driver.
	  This driver was tested on XLINX XC2V3000 FF1152AMT0221
	  D1215994A VIRTEX FPGA board and SNPS QoS IPK Prototyping Kit.

	  If you have a controller with this interface, say Y or M here.

	  If unsure, say N.
endif