# 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
	select MARVELL_10G_PHY
	select REGMAP
	select I2C
	select I2C_DESIGNWARE_PLATFORM
	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
