#
# Micrel device configuration
#

config NET_VENDOR_MICREL
	bool "Micrel devices"
	default y
	depends on (HAS_IOMEM && DMA_ENGINE) || SPI || PCI || HAS_IOMEM || \
		   (ARM && ARCH_KS8695)
	---help---
	  If you have a network (Ethernet) card belonging to this class, say Y
	  and read the Ethernet-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>.

	  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 Micrel devices. If you say Y, you will be asked
	  for your specific card in the following questions.

if NET_VENDOR_MICREL

config ARM_KS8695_ETHER
	tristate "KS8695 Ethernet support"
	depends on ARM && ARCH_KS8695
	select MII
	---help---
	  If you wish to compile a kernel for the KS8695 and want to
	  use the internal ethernet then you should answer Y to this.

config KS8842
	tristate "Micrel KSZ8841/42 with generic bus interface"
	depends on HAS_IOMEM && DMA_ENGINE
	---help---
	  This platform driver is for KSZ8841(1-port) / KS8842(2-port)
	  ethernet switch chip (managed, VLAN, QoS) from Micrel or
	  Timberdale(FPGA).

config KS8851
	tristate "Micrel KS8851 SPI"
	depends on SPI
	select MII
	select CRC32
	select EEPROM_93CX6
	---help---
	  SPI driver for Micrel KS8851 SPI attached network chip.

config KS8851_MLL
	tristate "Micrel KS8851 MLL"
	depends on HAS_IOMEM
	select MII
	---help---
	  This platform driver is for Micrel KS8851 Address/data bus
	  multiplexed network chip.

config KSZ884X_PCI
	tristate "Micrel KSZ8841/2 PCI"
	depends on PCI
	select MII
	select CRC32
	---help---
	  This PCI driver is for Micrel KSZ8841/KSZ8842 PCI Ethernet chip.

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

endif # NET_VENDOR_MICREL
