#
# 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 NET_CORE
	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 NET_CORE
	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 NET_CORE
	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 NET_CORE
	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
