#
# Meilhaus configuration
#

menuconfig MEILHAUS
	tristate "Meilhaus support"
	---help---
	  If you have a Meilhaus card, say Y (or M) here.

	  You need both this driver, and the driver for the particular
	  data collection card.

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

if MEILHAUS

config ME0600
	tristate "Meilhaus ME-600 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-600 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me0600.

config ME0900
	tristate "Meilhaus ME-900 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-900 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me0900.

config ME1000
	tristate "Meilhaus ME-1000 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-1000 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me1000.

config ME1400
	tristate "Meilhaus ME-1400 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-1400 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me1400.

config ME1600
	tristate "Meilhaus ME-1600 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-1600 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me1600.

config ME4600
	tristate "Meilhaus ME-4600 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-4600 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me4600.

config ME6000
	tristate "Meilhaus ME-6000 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-6000 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me6000.

config ME8100
	tristate "Meilhaus ME-8100 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-8100 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me8100.

config ME8200
	tristate "Meilhaus ME-8200 support"
	default n
	depends on PCI
	help
	  This driver supports the Meilhaus ME-8200 family of boards
	  that do data collection and multipurpose I/O.

	  To compile this driver as a module, choose M here: the module
	  will be called me8200.

config MEDUMMY
	tristate "Meilhaus dummy driver"
	default n
	depends on PCI
	help
	  This provides a dummy driver for the Meilhaus driver package

	  To compile this driver as a module, choose M here: the module
	  will be called medummy.

endif # MEILHAUS
