config COMEDI
	tristate "Data acquisition support (comedi)"
	depends on m
	depends on BROKEN || FRV || M32R || MN10300 || SUPERH || TILE || X86
	---help---
	  Enable support a wide range of data acquisition devices
	  for Linux.

if COMEDI

config COMEDI_DEBUG
	bool "Comedi debugging"
	---help---
	  This is an option for use by developers; most people should
	  say N here. This enables comedi core and driver debugging.

config COMEDI_DEFAULT_BUF_SIZE_KB
	int "Comedi default initial asynchronous buffer size in KiB"
	default "2048"
	---help---
	  This is the default asynchronous buffer size which is used for
	  commands running in the background in kernel space.  This
	  defaults to 2048 KiB of memory so that a 16 channel card
	  running at 10 kHz has of 2-4 seconds of buffer.

config COMEDI_DEFAULT_BUF_MAXSIZE_KB
	int "Comedi default maximum asynchronous buffer size in KiB"
	default "20480"
	---help---
	  This is the default maximum asynchronous buffer size which can
	  be requested by a userspace program without root privileges.
	  This is set to 20480 KiB so that a fast I/O card with 16
	  channels running at 100 kHz has 2-4 seconds of buffer.

menuconfig COMEDI_MISC_DRIVERS
	bool "Comedi misc drivers"
	---help---
	  Enable comedi misc drivers to be built

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about misc non-hardware comedi drivers.

if COMEDI_MISC_DRIVERS

config COMEDI_KCOMEDILIB
	tristate "Comedi kcomedilib"
	---help---
	  Build the kcomedilib

config COMEDI_BOND
	tristate "Device bonding support"
	depends on COMEDI_KCOMEDILIB
	---help---
	  Enable support for a driver to 'bond' (merge) multiple subdevices
	  from multiple devices together as one.

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

config COMEDI_TEST
	tristate "Fake waveform generator support"
	select COMEDI_FC
	---help---
	  Enable support for the fake waveform generator.
	  This driver is mainly for testing purposes, but can also be used to
	  generate sample waveforms on systems that don't have data acquisition
	  hardware.

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

config COMEDI_PARPORT
	tristate "Parallel port support"
	---help---
	  Enable support for the standard parallel port.
	  A cheap and easy way to get a few more digital I/O lines. Steal
	  additional parallel ports from old computers or your neighbors'
	  computers.

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

config COMEDI_SERIAL2002
	tristate "Driver for serial connected hardware"
	---help---
	  Enable support for serial connected hardware

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

config COMEDI_SKEL
	tristate "Comedi skeleton driver"
	---help---
	  Build the Skeleton driver, an example for driver writers

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

endif # COMEDI_MISC_DRIVERS

menuconfig COMEDI_ISA_DRIVERS
	bool "Comedi ISA and PC/104 drivers"
	depends on ISA
	---help---
	  Enable comedi ISA and PC/104 drivers to be built

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about ISA and PC/104 comedi drivers.

if COMEDI_ISA_DRIVERS

config COMEDI_ACL7225B
	tristate "ADlink NuDAQ ACL-7225b and compatibles support"
	---help---
	  Enable support for ADlink NuDAQ ACL-7225b and compatibles,
	  ADlink ACL-7225b (acl7225b), ICP P16R16DIO (p16r16dio)

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

config COMEDI_PCL711
	tristate "Advantech PCL-711/711b and ADlink ACL-8112 ISA card support"
	---help---
	  Enable support for Advantech PCL-711 and 711b, ADlink ACL-8112

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

config COMEDI_PCL724
	tristate "Advantech PCL-722/724/731 and ADlink ACL-7122/7124/PET-48DIO"
	select COMEDI_8255
	---help---
	  Enable support for Advantech PCL-724, PCL-722, PCL-731 and
	  ADlink ACL-7122, ACL-7124, PET-48DIO ISA cards

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

config COMEDI_PCL725
	tristate "Advantech PCL-725 and compatible ISA card support"
	---help---
	  Enable support for Advantech PCL-725 and compatible ISA cards.

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

config COMEDI_PCL726
	tristate "Advantech PCL-726 and compatible ISA card support"
	---help---
	  Enable support for Advantech PCL-726 and compatible ISA cards.

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

config COMEDI_PCL730
	tristate "Advantech PCL-730 and ADlink ACL-7130 ISA card support"
	---help---
	  Enable support for Advantech PCL-730, ICP ISO-730 and ADlink
	  ACL-7130 ISA cards

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

config COMEDI_PCL812
	tristate "Advantech PCL-812/813 and ADlink ACL-8112/8113/8113/8216"
	depends on VIRT_TO_BUS
	---help---
	  Enable support for Advantech PCL-812/PG, PCL-813/B, ADLink
	  ACL-8112DG/HG/PG, ACL-8113, ACL-8216, ICP DAS A-821PGH/PGL/PGL-NDA,
	  A-822PGH/PGL, A-823PGH/PGL, A-826PG and ICP DAS ISO-813 ISA cards

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

config COMEDI_PCL816
	tristate "Advantech PCL-814 and PCL-816 ISA card support"
	depends on VIRT_TO_BUS
	---help---
	  Enable support for Advantech PCL-814 and PCL-816 ISA cards

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

config COMEDI_PCL818
	tristate "Advantech PCL-718 and PCL-818 ISA card support"
	depends on VIRT_TO_BUS
	---help---
	  Enable support for Advantech PCL-818 ISA cards
	  PCL-818L, PCL-818H, PCL-818HD, PCL-818HG, PCL-818 and PCL-718

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

config COMEDI_PCM3724
	tristate "Advantech PCM-3724 PC/104 card support"
	select COMEDI_8255
	---help---
	  Enable support for Advantech PCM-3724 PC/104 cards.

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

config COMEDI_PCM3730
	tristate "Advantech PCM-3730 and clone PC/104 board support"
	---help---
	  Enable support for Advantech PCM-3730 and clone PC/104 boards

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

config COMEDI_AMPLC_DIO200_ISA
	tristate "Amplicon PC212E/PC214E/PC215E/PC218E/PC272E"
	select COMEDI_AMPLC_DIO200
	---help---
	  Enable support for Amplicon PC212E, PC214E, PC215E, PC218E and
	  PC272E ISA DIO boards

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

config COMEDI_AMPLC_PC236_ISA
	tristate "Amplicon PC36AT DIO board support"
	select COMEDI_AMPLC_PC236
	---help---
	  Enable support for Amplicon PC36AT ISA DIO board.

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

config COMEDI_AMPLC_PC263_ISA
	tristate "Amplicon PC263 relay board support"
	select COMEDI_AMPLC_PC263
	---help---
	  Enable support for Amplicon PC263 ISA relay board.

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

config COMEDI_RTI800
	tristate "Analog Devices RTI-800/815 ISA card support"
	---help---
	  Enable support for Analog Devices RTI-800/815 ISA cards

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

config COMEDI_RTI802
	tristate "Analog Devices RTI-802 ISA card support"
	---help---
	  Enable support for Analog Devices RTI-802 ISA cards

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

config COMEDI_DAS16M1
	tristate "MeasurementComputing CIO-DAS16/M1DAS-16 ISA card support"
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for Measurement Computing CIO-DAS16/M1 ISA cards.

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

config COMEDI_DAS08_ISA
	tristate "DAS-08 compatible ISA and PC/104 card support"
	select COMEDI_DAS08
	---help---
	  Enable support for Keithley Metrabyte/ComputerBoards DAS08
	  and compatible ISA and PC/104 cards:
	  Keithley Metrabyte/ComputerBoards DAS08, DAS08-PGM, DAS08-PGH,
	  DAS08-PGL, DAS08-AOH, DAS08-AOL, DAS08-AOM, DAS08/JR-AO,
	  DAS08/JR-16-AO, PC104-DAS08, DAS08/JR/16.

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

config COMEDI_DAS16
	tristate "DAS-16 compatible ISA and PC/104 card support"
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for Keithley Metrabyte/ComputerBoards DAS16
	  and compatible ISA and PC/104 cards:
	  Keithley Metrabyte DAS-16, DAS-16G, DAS-16F, DAS-1201, DAS-1202,
	  DAS-1401, DAS-1402, DAS-1601, DAS-1602 and
	  ComputerBoards/MeasurementComputing PC104-DAS16/JR/,
	  PC104-DAS16JR/16, CIO-DAS16JR/16, CIO-DAS16/JR, CIO-DAS1401/12,
	  CIO-DAS1402/12, CIO-DAS1402/16, CIO-DAS1601/12, CIO-DAS1602/12,
	  CIO-DAS1602/16, CIO-DAS16/330

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

config COMEDI_DAS800
	tristate "DAS800 and compatible ISA card support"
	select COMEDI_FC
	---help---
	  Enable support for Keithley Metrabyte DAS800 and compatible ISA cards
	  Keithley Metrabyte DAS-800, DAS-801, DAS-802
	  Measurement Computing CIO-DAS800, CIO-DAS801, CIO-DAS802 and
	  CIO-DAS802/16

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

config COMEDI_DAS1800
	tristate "DAS1800 and compatible ISA card support"
	depends on VIRT_TO_BUS
	select COMEDI_FC
	---help---
	  Enable support for DAS1800 and compatible ISA cards
	  Keithley Metrabyte DAS-1701ST, DAS-1701ST-DA, DAS-1701/AO,
	  DAS-1702ST, DAS-1702ST-DA, DAS-1702HR, DAS-1702HR-DA, DAS-1702/AO,
	  DAS-1801ST, DAS-1801ST-DA, DAS-1801HC, DAS-1801AO, DAS-1802ST,
	  DAS-1802ST-DA, DAS-1802HR, DAS-1802HR-DA, DAS-1802HC and
	  DAS-1802AO

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

config COMEDI_DAS6402
	tristate "DAS6402 and compatible ISA card support"
	---help---
	  Enable support for DAS6402 and compatible ISA cards
	  Computerboards, Keithley Metrabyte DAS6402 and compatibles

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

config COMEDI_DT2801
	tristate "Data Translation DT2801 ISA card support"
	---help---
	  Enable support for Data Translation DT2801 ISA cards

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

config COMEDI_DT2811
	tristate "Data Translation DT2811 ISA card support"
	---help---
	  Enable support for Data Translation DT2811 ISA cards

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

config COMEDI_DT2814
	tristate "Data Translation DT2814 ISA card support"
	---help---
	  Enable support for Data Translation DT2814 ISA cards

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

config COMEDI_DT2815
	tristate "Data Translation DT2815 ISA card support"
	---help---
	  Enable support for Data Translation DT2815 ISA cards

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

config COMEDI_DT2817
	tristate "Data Translation DT2817 ISA card support"
	---help---
	  Enable support for Data Translation DT2817 ISA cards

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

config COMEDI_DT282X
	tristate "Data Translation DT2821 series and DT-EZ ISA card support"
	select COMEDI_FC
	depends on VIRT_TO_BUS
	---help---
	  Enable support for Data Translation DT2821 series including DT-EZ
	  DT2821, DT2821-F-16SE, DT2821-F-8DI, DT2821-G-16SE, DT2821-G-8DI,
	  DT2823 (dt2823), DT2824-PGH, DT2824-PGL, DT2825, DT2827, DT2828,
	  DT21-EZ, DT23-EZ, DT24-EZ and DT24-EZ-PGL

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

config COMEDI_DMM32AT
	tristate "Diamond Systems MM-32-AT PC/104 board support"
	---help---
	  Enable support for Diamond Systems MM-32-AT PC/104 boards

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

config COMEDI_FL512
	tristate "FL512 ISA card support"
	---help---
	  Enable support for FL512 ISA card

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

config COMEDI_AIO_AIO12_8
	tristate "I/O Products PC/104 AIO12-8 Analog I/O Board support"
	select COMEDI_8255
	---help---
	  Enable support for I/O Products PC/104 AIO12-8 Analog I/O Board

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

config COMEDI_AIO_IIRO_16
	tristate "I/O Products PC/104 IIRO16 Board support"
	---help---
	  Enable support for I/O Products PC/104 IIRO16 Relay And Isolated
	  Input Board

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

config COMEDI_C6XDIGIO
	tristate "Mechatronic Systems Inc. C6x_DIGIO DSP daughter card support"
	---help---
	  Enable support for Mechatronic Systems Inc. C6x_DIGIO DSP daughter
	  card

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

config COMEDI_MPC624
	tristate "Micro/sys MPC-624 PC/104 board support"
	---help---
	  Enable support for Micro/sys MPC-624 PC/104 board

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

config COMEDI_ADQ12B
	tristate "MicroAxial ADQ12-B data acquisition and control card support"
	---help---
	  Enable MicroAxial ADQ12-B daq and control card support.

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

config COMEDI_NI_AT_A2150
	tristate "NI AT-A2150 ISA card support"
	depends on VIRT_TO_BUS
	---help---
	  Enable support for National Instruments AT-A2150 cards

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

config COMEDI_NI_AT_AO
	tristate "NI AT-AO-6/10 EISA card support"
	---help---
	  Enable support for National Instruments AT-AO-6/10 cards

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

config COMEDI_NI_ATMIO
	tristate "NI AT-MIO E series ISA-PNP card support"
	depends on ISAPNP
	select COMEDI_8255
	select COMEDI_NI_TIO
	---help---
	  Enable support for National Instruments AT-MIO E series cards
	  National Instruments AT-MIO-16E-1 (ni_atmio),
	  AT-MIO-16E-2, AT-MIO-16E-10, AT-MIO-16DE-10, AT-MIO-64E-3,
	  AT-MIO-16XE-50, AT-MIO-16XE-10, AT-AI-16XE-10

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

config COMEDI_NI_ATMIO16D
	tristate "NI AT-MIO16/AT-MIO16D series ISA-PNP card support"
	depends on ISAPNP
	select COMEDI_8255
	---help---
	  Enable support for National Instruments AT-MIO16/AT-MIO16D cards.

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

config COMEDI_PCMAD
	tristate "Winsystems PCM-A/D12 and PCM-A/D16 PC/104 board support"
	---help---
	  Enable support for Winsystems PCM-A/D12 and PCM-A/D16 PC/104 boards.

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

config COMEDI_PCMDA12
	tristate "Winsystems PCM-D/A-12 8-channel AO PC/104 board support"
	---help---
	  Enable support for Winsystems PCM-D/A-12 8-channel AO PC/104 boards.
	  Note that the board is not ISA-PNP capable and thus needs the I/O
	  port comedi_config parameter.

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

config COMEDI_PCMMIO
	tristate "Winsystems PCM-MIO PC/104 board support"
	---help---
	  Enable support for Winsystems PCM-MIO multifunction PC/104 boards.

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

config COMEDI_PCMUIO
	tristate "Winsystems PCM-UIO48A and PCM-UIO96A PC/104 board support"
	---help---
	  Enable support for PCM-UIO48A and PCM-UIO96A PC/104 boards.

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

config COMEDI_MULTIQ3
	tristate "Quanser Consulting MultiQ-3 ISA card support"
	---help---
	  Enable support for Quanser Consulting MultiQ-3 ISA cards

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

config COMEDI_POC
	tristate "Generic driver for very simple devices"
	---help---
	  Enable generic support for very simple / POC (Piece of Crap) boards,
	  Keithley Metrabyte DAC-02 (dac02), Advantech PCL-733 (pcl733) and
	  PCL-734 (pcl734)

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

endif # COMEDI_ISA_DRIVERS

menuconfig COMEDI_PCI_DRIVERS
	bool "Comedi PCI drivers"
	depends on PCI
	---help---
	  Enable comedi PCI drivers to be built

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about PCI comedi drivers.

if COMEDI_PCI_DRIVERS

config COMEDI_8255_PCI
	tristate "Generic PCI based 8255 digital i/o board support"
	select COMEDI_8255
	---help---
	  Enable support for PCI based 8255 digital i/o boards. This driver
	  provides a PCI wrapper around the generic 8255 driver.

	  Supported boards:
	    ADlink - PCI-7224, PCI-7248, and PCI-7296
	    Measurement Computing - PCI-DIO24, PCI-DIO24H, PCI-DIO48H and
	                            PCI-DIO96H
	    National Instruments - PCI-DIO-96, PCI-DIO-96B, PXI-6508, PCI-6503,
	                           PCI-6503B, PCI-6503X, and PXI-6503

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

config COMEDI_ADDI_APCI_035
	tristate "ADDI-DATA APCI_035 support"
	---help---
	  Enable support for ADDI-DATA APCI_035 cards

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

config COMEDI_ADDI_APCI_1032
	tristate "ADDI-DATA APCI_1032 support"
	---help---
	  Enable support for ADDI-DATA APCI_1032 cards

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

config COMEDI_ADDI_APCI_1500
	tristate "ADDI-DATA APCI_1500 support"
	---help---
	  Enable support for ADDI-DATA APCI_1500 cards

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

config COMEDI_ADDI_APCI_1516
	tristate "ADDI-DATA APCI-1016/1516/2016 support"
	---help---
	  Enable support for ADDI-DATA APCI-1016, APCI-1516 and APCI-2016 boards.
	  These are 16 channel, optically isolated, digital I/O boards. The 1516
	  and 2016 boards also have a watchdog for resetting the outputs to "0".

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

config COMEDI_ADDI_APCI_1564
	tristate "ADDI-DATA APCI_1564 support"
	---help---
	  Enable support for ADDI-DATA APCI_1564 cards

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

config COMEDI_ADDI_APCI_16XX
	tristate "ADDI-DATA APCI_16xx support"
	---help---
	  Enable support for ADDI-DATA APCI_16xx cards

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

config COMEDI_ADDI_APCI_2032
	tristate "ADDI-DATA APCI_2032 support"
	---help---
	  Enable support for ADDI-DATA APCI_2032 cards

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

config COMEDI_ADDI_APCI_2200
	tristate "ADDI-DATA APCI_2200 support"
	---help---
	  Enable support for ADDI-DATA APCI_2200 cards

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

config COMEDI_ADDI_APCI_3120
	tristate "ADDI-DATA APCI_3120/3001 support"
	depends on VIRT_TO_BUS
	select COMEDI_FC
	---help---
	  Enable support for ADDI-DATA APCI_3120/3001 cards

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

config COMEDI_ADDI_APCI_3501
	tristate "ADDI-DATA APCI_3501 support"
	---help---
	  Enable support for ADDI-DATA APCI_3501 cards

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

config COMEDI_ADDI_APCI_3XXX
	tristate "ADDI-DATA APCI_3xxx support"
	---help---
	  Enable support for ADDI-DATA APCI_3xxx cards

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

config COMEDI_ADL_PCI6208
	tristate "ADLink PCI-6208A support"
	---help---
	  Enable support for ADLink PCI-6208A cards

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

config COMEDI_ADL_PCI7X3X
	tristate "ADLink PCI-723X/743X isolated digital i/o board support"
	---help---
	  Enable support for ADlink PCI-723X/743X isolated digital i/o boards.
	  Supported boards include the 32-channel PCI-7230 (16 in/16 out),
	  PCI-7233 (32 in), and PCI-7234 (32 out) as well as the 64-channel
	  PCI-7432 (32 in/32 out), PCI-7433 (64 in), and PCI-7434 (64 out).

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

config COMEDI_ADL_PCI8164
	tristate "ADLink PCI-8164 4 Axes Motion Control board support"
	---help---
	  Enable support for ADlink PCI-8164 4 Axes Motion Control board

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

config COMEDI_ADL_PCI9111
	tristate "ADLink PCI-9111HR support"
	select COMEDI_FC
	---help---
	  Enable support for ADlink PCI9111 cards

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

config COMEDI_ADL_PCI9118
	tristate "ADLink PCI-9118DG, PCI-9118HG, PCI-9118HR support"
	select COMEDI_FC
	depends on VIRT_TO_BUS
	---help---
	  Enable support for ADlink PCI-9118DG, PCI-9118HG, PCI-9118HR cards

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

config COMEDI_ADV_PCI1710
	tristate "Advantech PCI-171x, PCI-1720 and PCI-1731 support"
	---help---
	  Enable support for Advantech PCI-1710, PCI-1710HG, PCI-1711,
	  PCI-1713, PCI-1720 and PCI-1731

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

config COMEDI_ADV_PCI1723
	tristate "Advantech PCI-1723 support"
	---help---
	  Enable support for Advantech PCI-1723 cards

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

config COMEDI_ADV_PCI_DIO
	tristate "Advantech PCI DIO card support"
	select COMEDI_8255
	---help---
	  Enable support for Advantech PCI DIO cards
	  PCI-1730, PCI-1733, PCI-1734, PCI-1735U, PCI-1736UP, PCI-1739U,
	  PCI-1750, PCI-1751, PCI-1752, PCI-1753/E, PCI-1754, PCI-1756,
	  PCI-1760 and PCI-1762

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

config COMEDI_AMPLC_DIO200_PCI
	tristate "Amplicon PCI215/PCI272/PCIe215/PCIe236/PCIe296 DIO support"
	select COMEDI_AMPLC_DIO200
	---help---
	  Enable support for Amplicon PCI215, PCI272, PCIe215, PCIe236
	  and PCIe296 DIO boards.

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

config COMEDI_AMPLC_PC236_PCI
	tristate "Amplicon PCI236 DIO board support"
	select COMEDI_AMPLC_PC236
	---help---
	  Enable support for Amplicon PCI236 DIO board.

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

config COMEDI_AMPLC_PC263_PCI
	tristate "Amplicon PCI263 relay board support"
	select COMEDI_AMPLC_PC263
	---help---
	  Enable support for Amplicon PCI263 relay board.

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

config COMEDI_AMPLC_PCI224
	tristate "Amplicon PCI224 and PCI234 support"
	select COMEDI_FC
	---help---
	  Enable support for Amplicon PCI224 and PCI234 AO boards

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

config COMEDI_AMPLC_PCI230
	tristate "Amplicon PCI230 and PCI260 support"
	select COMEDI_8255
	---help---
	  Enable support for Amplicon PCI230 and PCI260 Multifunction I/O
	  boards

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

config COMEDI_CONTEC_PCI_DIO
	tristate "Contec PIO1616L digital I/O board support"
	---help---
	  Enable support for the Contec PIO1616L digital I/O board

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

config COMEDI_DAS08_PCI
	tristate "DAS-08 PCI support"
	select COMEDI_DAS08
	---help---
	  Enable support for PCI DAS-08 cards.

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

config COMEDI_DT3000
	tristate "Data Translation DT3000 series support"
	---help---
	  Enable support for Data Translation DT3000 series
	  DT3001, DT3001-PGL, DT3002, DT3003, DT3003-PGL, DT3004, DT3005 and
	  DT3004-200

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

config COMEDI_DYNA_PCI10XX
	tristate "Dynalog PCI DAQ series support"
	---help---
	  Enable support for Dynalog PCI DAQ series
	  PCI-1050

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

config COMEDI_UNIOXX5
	tristate "Fastwel UNIOxx-5 analog and digital io board support"
	---help---
	  Enable support for Fastwel UNIOxx-5 (analog and digital i/o) boards

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

config COMEDI_GSC_HPDI
	tristate "General Standards PCI-HPDI32 / PMC-HPDI32 support"
	select COMEDI_FC
	---help---
	  Enable support for General Standards Corporation high speed parallel
	  digital interface rs485 boards PCI-HPDI32 and PMC-HPDI32.
	  Only receive mode works, transmit not supported.

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

config COMEDI_ICP_MULTI
	tristate "Inova ICP_MULTI support"
	---help---
	  Enable support for Inova ICP_MULTI card

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

config COMEDI_II_PCI20KC
	tristate "Intelligent Instruments PCI-20001C carrier support"
	---help---
	  Enable support for Intelligent Instruments PCI-20001C carrier
	  PCI-20001, PCI-20006 and PCI-20341

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

config COMEDI_DAQBOARD2000
	tristate "IOtech DAQboard/2000 support"
	select COMEDI_8255
	---help---
	  Enable support for the IOtech DAQboard/2000

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

config COMEDI_JR3_PCI
	tristate "JR3/PCI force sensor board support"
	---help---
	  Enable support for JR3/PCI force sensor boards

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

config COMEDI_KE_COUNTER
	tristate "Kolter-Electronic PCI Counter 1 card support"
	---help---
	  Enable support for Kolter-Electronic PCI Counter 1 cards

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

config COMEDI_CB_PCIDAS64
	tristate "MeasurementComputing PCI-DAS 64xx, 60xx, and 4020 support"
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for ComputerBoards/MeasurementComputing PCI-DAS 64xx,
	  60xx, and 4020 series with the PLX 9080 PCI controller

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

config COMEDI_CB_PCIDAS
	tristate "MeasurementComputing PCI-DAS support"
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for ComputerBoards/MeasurementComputing PCI-DAS with
	  AMCC S5933 PCIcontroller: PCI-DAS1602/16, PCI-DAS1602/16jr,
	  PCI-DAS1602/12, PCI-DAS1200, PCI-DAS1200jr, PCI-DAS1000, PCI-DAS1001
	  and PCI_DAS1002.

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

config COMEDI_CB_PCIDDA
	tristate "MeasurementComputing PCI-DDA series support"
	select COMEDI_8255
	---help---
	  Enable support for ComputerBoards/MeasurementComputing PCI-DDA
	  series: PCI-DDA08/12, PCI-DDA04/12, PCI-DDA02/12, PCI-DDA08/16,
	  PCI-DDA04/16 and PCI-DDA02/16

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

config COMEDI_CB_PCIMDAS
	tristate "MeasurementComputing PCIM-DAS1602/16 support"
	select COMEDI_8255
	---help---
	  Enable support for ComputerBoards/MeasurementComputing PCI Migration
	  series PCIM-DAS1602/16

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

config COMEDI_CB_PCIMDDA
	tristate "MeasurementComputing PCIM-DDA06-16 support"
	select COMEDI_8255
	---help---
	  Enable support for ComputerBoards/MeasurementComputing PCIM-DDA06-16

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

config COMEDI_ME4000
	tristate "Meilhaus ME-4000 support"
	---help---
	  Enable support for Meilhaus PCI data acquisition cards
	  ME-4650, ME-4670i, ME-4680, ME-4680i and ME-4680is

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

config COMEDI_ME_DAQ
	tristate "Meilhaus ME-2000i, ME-2600i, ME-3000vm1 support"
	---help---
	  Enable support for Meilhaus PCI data acquisition cards
	  ME-2000i, ME-2600i and ME-3000vm1

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

config COMEDI_NI_6527
	tristate "NI 6527 support"
	select COMEDI_MITE
	---help---
	  Enable support for the National Instruments 6527 PCI card

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

config COMEDI_NI_65XX
	tristate "NI 65xx static dio PCI card support"
	select COMEDI_MITE
	---help---
	  Enable support for National Instruments 65xx static dio boards.
	  Supported devices: National Instruments PCI-6509 (ni_65xx),
	  PXI-6509, PCI-6510, PCI-6511, PXI-6511, PCI-6512, PXI-6512, PCI-6513,
	  PXI-6513, PCI-6514, PXI-6514, PCI-6515, PXI-6515, PCI-6516, PCI-6517,
	  PCI-6518, PCI-6519, PCI-6520, PCI-6521, PXI-6521, PCI-6528, PXI-6528

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

config COMEDI_NI_660X
	tristate "NI 660x counter/timer PCI card support"
	select COMEDI_NI_TIOCMD
	---help---
	  Enable support for National Instruments PCI-6601 (ni_660x), PCI-6602,
	  PXI-6602 and PXI-6608.

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

config COMEDI_NI_670X
	tristate "NI 670x PCI card support"
	select COMEDI_MITE
	---help---
	  Enable support for National Instruments PCI-6703 and PCI-6704

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

config COMEDI_NI_LABPC
	tristate "NI Lab-PC and compatibles ISA and PCI support"
	select COMEDI_MITE
	select COMEDI_8255
	select COMEDI_FC
	depends on VIRT_TO_BUS
	---help---
	  Enable support for National Instruments Lab-PC and compatibles
	  Lab-PC-1200, Lab-PC-1200AI, Lab-PC+ and PCI-1200.
	  Kernel-level ISA plug-and-play support for the lab-pc-1200 boards has
	  not yet been added to the driver.

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

config COMEDI_NI_PCIDIO
	tristate "NI PCI-DIO32HS, PCI-6533, PCI-6534 support"
	select COMEDI_MITE
	select COMEDI_8255
	---help---
	  Enable support for National Instruments PCI-DIO-32HS, PXI-6533,
	  PCI-6533 and PCI-6534

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

config COMEDI_NI_PCIMIO
	tristate "NI PCI-MIO-E series and M series support"
	select COMEDI_NI_TIOCMD
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for National Instruments PCI-MIO-E series and M series
	  (all boards): PCI-MIO-16XE-10, PXI-6030E, PCI-MIO-16E-1,
	  PCI-MIO-16E-4, PCI-6014, PCI-6040E, PXI-6040E, PCI-6030E, PCI-6031E,
	  PCI-6032E, PCI-6033E, PCI-6071E, PCI-6023E, PCI-6024E, PCI-6025E,
	  PXI-6025E, PCI-6034E, PCI-6035E, PCI-6052E, PCI-6110, PCI-6111,
	  PCI-6220, PCI-6221, PCI-6224, PXI-6224, PCI-6225, PXI-6225, PCI-6229,
	  PCI-6250, PCI-6251, PCIe-6251, PCI-6254, PCI-6259, PCIe-6259,
	  PCI-6280, PCI-6281, PXI-6281, PCI-6284, PCI-6289, PCI-6711, PXI-6711,
	  PCI-6713, PXI-6713, PXI-6071E, PCI-6070E, PXI-6070E, PXI-6052E,
	  PCI-6036E, PCI-6731, PCI-6733, PXI-6733, PCI-6143, PXI-6143

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

config COMEDI_RTD520
	tristate "Real Time Devices PCI4520/DM7520 support"
	---help---
	  Enable support for Real Time Devices PCI4520/DM7520

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

config COMEDI_S526
	tristate "Sensoray s526 support"
	---help---
	  Enable support for Sensoray s526

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

config COMEDI_S626
	tristate "Sensoray 626 support"
	select COMEDI_FC
	---help---
	  Enable support for Sensoray 626

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

config COMEDI_SSV_DNP
	tristate "SSV Embedded Systems DIL/Net-PC support"
	---help---
	  Enable support for SSV Embedded Systems DIL/Net-PC

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

config COMEDI_MITE
	tristate

config COMEDI_NI_TIOCMD
	tristate
	select COMEDI_NI_TIO
	select COMEDI_MITE

endif # COMEDI_PCI_DRIVERS

menuconfig COMEDI_PCMCIA_DRIVERS
	bool "Comedi PCMCIA drivers"
	depends on PCMCIA
	---help---
	  Enable comedi PCMCIA and PCCARD drivers to be built

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about PCMCIA comedi drivers.

if COMEDI_PCMCIA_DRIVERS

config COMEDI_CB_DAS16_CS
	tristate "CB DAS16 series PCMCIA support"
	---help---
	  Enable support for the ComputerBoards/MeasurementComputing PCMCIA
	  cards DAS16/16, PCM-DAS16D/12 and PCM-DAS16s/16

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

config COMEDI_DAS08_CS
	tristate "CB DAS08 PCMCIA support"
	select COMEDI_DAS08
	---help---
	  Enable support for the ComputerBoards/MeasurementComputing DAS-08
	  PCMCIA card

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

config COMEDI_NI_DAQ_700_CS
	tristate "NI DAQCard-700 PCMCIA support"
	---help---
	  Enable support for the National Instruments PCMCIA DAQCard-700 DIO

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

config COMEDI_NI_DAQ_DIO24_CS
	tristate "NI DAQ-Card DIO-24 PCMCIA support"
	select COMEDI_8255
	---help---
	  Enable support for the National Instruments PCMCIA DAQ-Card DIO-24

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

config COMEDI_NI_LABPC_CS
	tristate "NI DAQCard-1200 PCMCIA support"
	depends on COMEDI_NI_LABPC
	---help---
	  Enable support for the National Instruments PCMCIA DAQCard-1200

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

config COMEDI_NI_MIO_CS
	tristate "NI DAQCard E series PCMCIA support"
	select COMEDI_NI_TIO
	select COMEDI_8255
	select COMEDI_FC
	---help---
	  Enable support for the National Instruments PCMCIA DAQCard E series
	  DAQCard-ai-16xe-50, DAQCard-ai-16e-4, DAQCard-6062E, DAQCard-6024E
	  and DAQCard-6036E

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

config COMEDI_QUATECH_DAQP_CS
	tristate "Quatech DAQP PCMCIA data capture card support"
	---help---
	  Enable support for the Quatech DAQP PCMCIA data capture cards
	  DAQP-208 and DAQP-308

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

endif # COMEDI_PCMCIA_DRIVERS

menuconfig COMEDI_USB_DRIVERS
	bool "Comedi USB drivers"
	depends on USB
	---help---
	  Enable comedi USB drivers to be built

	  Note that the answer to this question won't directly affect the
	  kernel: saying N will just cause the configurator to skip all
	  the questions about USB comedi drivers.

if COMEDI_USB_DRIVERS

config COMEDI_DT9812
	tristate "DataTranslation DT9812 USB module support"
	---help---
	  Enable support for the Data Translation DT9812 USB module

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

config COMEDI_USBDUX
	tristate "ITL USB-DUX-D support"
	---help---
	  Enable support for the Incite Technology Ltd USB-DUX-D Board

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

config COMEDI_USBDUXFAST
	tristate "ITL USB-DUXfast support"
	select COMEDI_FC
	---help---
	  Enable support for the Incite Technology Ltd USB-DUXfast Board

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

config COMEDI_USBDUXSIGMA
	tristate "ITL USB-DUXsigma support"
	select COMEDI_FC
	---help---
	  Enable support for the Incite Technology Ltd USB-DUXsigma Board

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

config COMEDI_VMK80XX
	tristate "Velleman VM110/VM140 USB Board support"
	---help---
	  Build the Velleman USB Board Low-Level Driver supporting the
	  K8055/K8061 aka VM110/VM140 devices

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

endif # COMEDI_USB_DRIVERS

config COMEDI_8255
	tristate "Generic 8255 support"
	---help---
	  Enable generic 8255 support.

	  You should enable compilation this driver if you plan to use a board
	  that has an 8255 chip. For multifunction boards, the main driver will
	  configure the 8255 subdevice automatically.

	  Note that most PCI based 8255 boards use the 8255_pci driver as a
	  wrapper around this driver.

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

config COMEDI_FC
	tristate

config COMEDI_AMPLC_DIO200
	tristate

config COMEDI_AMPLC_PC236
	tristate
	select COMEDI_8255

config COMEDI_AMPLC_PC263
	tristate

config COMEDI_DAS08
	tristate
	select COMEDI_8255

config COMEDI_NI_TIO
	tristate

endif # COMEDI
