menuconfig UIO
	tristate "Userspace I/O drivers"
	depends on !S390
	default n
	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
	default n
	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"
	default n
	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
	default n
	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"
	default n
	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.

endif
