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

config NET_VENDOR_MICROCHIP
	bool "Microchip devices"
	default y
	---help---
	  If you have a network (Ethernet) card belonging to this class, 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 Microchip cards. If you say Y, you will be asked
	  for your specific card in the following questions.

if NET_VENDOR_MICROCHIP

config ENC28J60
	tristate "ENC28J60 support"
	depends on SPI
	select CRC32
	---help---
	  Support for the Microchip EN28J60 ethernet chip.

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

config ENC28J60_WRITEVERIFY
	bool "Enable write verify"
	depends on ENC28J60
	---help---
	  Enable the verify after the buffer write useful for debugging purpose.
	  If unsure, say N.

config ENCX24J600
    tristate "ENCX24J600 support"
    depends on SPI
    ---help---
      Support for the Microchip ENC424J600/624J600 ethernet chip.

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

config LAN743X
	tristate "LAN743x support"
	depends on PCI
	select PHYLIB
	select CRC16
	---help---
	  Support for the Microchip LAN743x PCI Express Gigabit Ethernet chip

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

endif # NET_VENDOR_MICROCHIP
