# SPDX-License-Identifier: GPL-2.0-only
#
# Wangxun network device configuration
#

config NET_VENDOR_WANGXUN
	bool "Wangxun devices"
	default y
	help
	  If you have a network (Ethernet) card from Wangxun(R), say Y.

	  Note that the answer to this question doesn't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about Wangxun(R) cards. If you say Y, you will
	  be asked for your specific card in the following questions.

if NET_VENDOR_WANGXUN

config LIBWX
	tristate
	select PAGE_POOL
	help
	Common library for Wangxun(R) Ethernet drivers.

config NGBE
	tristate "Wangxun(R) GbE PCI Express adapters support"
	depends on PCI
	select LIBWX
	select PHYLINK
	help
	  This driver supports Wangxun(R) GbE PCI Express family of
	  adapters.

	  More specific information on configuring the driver is in
	  <file:Documentation/networking/device_drivers/ethernet/wangxun/ngbe.rst>.

	  To compile this driver as a module, choose M here. The module
	  will be called ngbe.

config TXGBE
	tristate "Wangxun(R) 10GbE PCI Express adapters support"
	depends on PCI
	depends on COMMON_CLK
	depends on I2C_DESIGNWARE_PLATFORM
	select MARVELL_10G_PHY
	select REGMAP
	select PHYLINK
	select HWMON if TXGBE=y
	select SFP
	select GPIOLIB
	select GPIOLIB_IRQCHIP
	select PCS_XPCS
	select LIBWX
	help
	  This driver supports Wangxun(R) 10GbE PCI Express family of
	  adapters.

	  More specific information on configuring the driver is in
	  <file:Documentation/networking/device_drivers/ethernet/wangxun/txgbe.rst>.

	  To compile this driver as a module, choose M here. The module
	  will be called txgbe.

endif # NET_VENDOR_WANGXUN
