#
# EISA configuration
#

config HAVE_EISA
	bool

menuconfig EISA
	bool "EISA support"
	depends on HAVE_EISA
	---help---
	  The Extended Industry Standard Architecture (EISA) bus was
	  developed as an open alternative to the IBM MicroChannel bus.

	  The EISA bus provided some of the features of the IBM MicroChannel
	  bus while maintaining backward compatibility with cards made for
	  the older ISA bus.  The EISA bus saw limited use between 1988 and
	  1995 when it was made obsolete by the PCI bus.

	  Say Y here if you are building a kernel for an EISA-based machine.

	  Otherwise, say N.

config EISA_VLB_PRIMING
	bool "Vesa Local Bus priming"
	depends on X86 && EISA
	default n
	---help---
	  Activate this option if your system contains a Vesa Local
	  Bus (VLB) card that identify itself as an EISA card (such as
	  the Adaptec AHA-284x).

	  When in doubt, say N.

config EISA_PCI_EISA
	bool "Generic PCI/EISA bridge"
	depends on !PARISC && PCI && EISA
	default y
	---help---
	  Activate this option if your system contains a PCI to EISA
	  bridge. If your system have both PCI and EISA slots, you
	  certainly need this option.

	  When in doubt, say Y.

# Using EISA_VIRTUAL_ROOT on something other than an Alpha or
# an X86 may lead to crashes...

config EISA_VIRTUAL_ROOT
	bool "EISA virtual root device"
	depends on EISA && (ALPHA || X86)
	default y
	---help---
	  Activate this option if your system only have EISA bus
	  (no PCI slots). The Alpha Jensen is an example of such
	  a system.

	  When in doubt, say Y.

config EISA_NAMES
	bool "EISA device name database"
	depends on EISA
	default y
	---help---
	  By default, the kernel contains a database of all known EISA
	  device names to make the information in sysfs comprehensible
	  to the user. This database increases size of the kernel
	  image by about 40KB, but it gets freed after the system
	  boots up, so it doesn't take up kernel memory. Anyway, if
	  you are building an installation floppy or kernel for an
	  embedded system where kernel image size really matters, you
	  can disable this feature and you'll get device ID instead of
	  names.

	  When in doubt, say Y.
