menuconfig UIO
	tristate "Userspace I/O drivers"
	depends on !S390
	help
	  Enable this to allow the userspace driver core code to be
	  built.  This code allows userspace programs easy access to
	  kernel interrupts and memory locations, allowing some drivers
	  to be written in userspace.  Note that a small kernel driver
	  is also required for interrupt handling to work properly.

	  If you don't know what to do here, say N.

if UIO

config UIO_CIF
	tristate "generic Hilscher CIF Card driver"
	depends on PCI
	help
	  Driver for Hilscher CIF DeviceNet and Profibus cards.  This
	  driver requires a userspace component that handles all of the
	  heavy lifting and can be found at:
	  	http://www.osadl.org/projects/downloads/UIO/user/cif-*

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

config UIO_PDRV
	tristate "Userspace I/O platform driver"
	help
	  Generic platform driver for Userspace I/O devices.

	  If you don't know what to do here, say N.

config UIO_PDRV_GENIRQ
	tristate "Userspace I/O platform driver with generic IRQ handling"
	help
	  Platform driver for Userspace I/O devices, including generic
	  interrupt handling code. Shared interrupts are not supported.

	  This kernel driver requires that the matching userspace driver
	  handles interrupts in a special way. Userspace is responsible
	  for acknowledging the hardware device if needed, and re-enabling
	  interrupts in the interrupt controller using the write() syscall.

	  If you don't know what to do here, say N.

config UIO_SMX
	tristate "SMX cryptengine UIO interface"
	help
	  Userspace IO interface to the Cryptography engine found on the
	  Nias Digital SMX boards.  These will be available from Q4 2008
	  from http://www.niasdigital.com.  The userspace part of this
	  driver will be released under the GPL at the same time as the
	  hardware and will be able to be downloaded from the same site.

	  If you compile this as a module, it will be called uio_smx.

config UIO_AEC
	tristate "AEC video timestamp device"
	depends on PCI
	help

	  UIO driver for the Adrienne Electronics Corporation PCI time
	  code device.

	  This device differs from other UIO devices since it uses I/O
	  ports instead of memory mapped I/O. In order to make it
	  possible for UIO to work with this device a utility, uioport,
	  can be used to read and write the ports:

	    git clone git://ifup.org/philips/uioport.git

	  If you compile this as a module, it will be called uio_aec.

config UIO_SERCOS3
	tristate "Automata Sercos III PCI card driver"
	help
	  Userspace I/O interface for the Sercos III PCI card from
	  Automata GmbH. The userspace part of this driver will be
	  available for download from the Automata GmbH web site.

	  Automata GmbH:        http://www.automataweb.com
	  Sercos III interface: http://www.sercos.com

	  If you compile this as a module, it will be called uio_sercos3.

config UIO_PCI_GENERIC
	tristate "Generic driver for PCI 2.3 and PCI Express cards"
	depends on PCI
	default n
	help
	  Generic driver that you can bind, dynamically, to any
	  PCI 2.3 compliant and PCI Express card. It is useful,
	  primarily, for virtualization scenarios.
	  If you compile this as a module, it will be called uio_pci_generic.

endif
