#
# USB Miscellaneous driver configuration
#
comment "USB Miscellaneous drivers"

config USB_EMI62
	tristate "EMI 6|2m USB Audio interface support"
	---help---
	  This driver loads firmware to Emagic EMI 6|2m low latency USB
	  Audio and Midi interface.

	  After firmware load the device is handled with standard linux
	  USB Audio driver.

	  This code is also available as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want).
	  The module will be called audio. If you want to compile it as a
	  module, say M here and read <file:Documentation/kbuild/modules.txt>.

config USB_EMI26
	tristate "EMI 2|6 USB Audio interface support"
	---help---
	  This driver loads firmware to Emagic EMI 2|6 low latency USB
	  Audio interface.

	  After firmware load the device is handled with standard linux
	  USB Audio driver.

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

config USB_ADUTUX
	tristate "ADU devices from Ontrak Control Systems"
	help
	  Say Y if you want to use an ADU device from Ontrak Control
	  Systems.

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

config USB_SEVSEG
	tristate "USB 7-Segment LED Display"
	help
	  Say Y here if you have a USB 7-Segment Display by Delcom

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

config USB_RIO500
	tristate "USB Diamond Rio500 support"
	help
	  Say Y here if you want to connect a USB Rio500 mp3 player to your
	  computer's USB port. Please read <file:Documentation/usb/rio.txt>
	  for more information.

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

config USB_LEGOTOWER
	tristate "USB Lego Infrared Tower support"
	help
	  Say Y here if you want to connect a USB Lego Infrared Tower to your
	  computer's USB port.

	  This code is also available as a module ( = code which can be
	  inserted in and removed from the running kernel whenever you want).
	  The module will be called legousbtower. If you want to compile it as
	  a module, say M here and read
	  <file:Documentation/kbuild/modules.txt>.

config USB_LCD
	tristate "USB LCD driver support"
	help
	  Say Y here if you want to connect an USBLCD to your computer's
	  USB port. The USBLCD is a small USB interface board for
	  alphanumeric LCD modules. See <http://www.usblcd.de/> for more
	  information.

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

config USB_CYPRESS_CY7C63
	tristate "Cypress CY7C63xxx USB driver support"
	help
	  Say Y here if you want to connect a Cypress CY7C63xxx
	  micro controller to your computer's USB port. Currently this
	  driver supports the pre-programmed devices (incl. firmware)
	  by AK Modul-Bus Computer GmbH.

	  Please see: http://www.ak-modul-bus.de/stat/mikrocontroller.html

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

config USB_CYTHERM
	tristate "Cypress USB thermometer driver support"
	help
	  Say Y here if you want to connect a Cypress USB thermometer
	  device to your computer's USB port. This device is also known
	  as the Cypress USB Starter kit or demo board. The Elektor
	  magazine published a modified version of this device in issue 
	  #291.

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

config USB_IDMOUSE
	tristate "Siemens ID USB Mouse Fingerprint sensor support"
	help
	  Say Y here if you want to use the fingerprint sensor on
	  the Siemens ID Mouse. There is also a Siemens ID Mouse
	  _Professional_, which has not been tested with this driver,
	  but uses the same sensor and may therefore work.

	  This driver creates an entry "/dev/idmouseX" or "/dev/usb/idmouseX",
	  which can be used by, e.g.,"cat /dev/idmouse0 > fingerprint.pnm".

	  See also <http://www.fs.tum.de/~echtler/idmouse/>.

config USB_FTDI_ELAN
	tristate "Elan PCMCIA CardBus Adapter USB Client"
	help
	  ELAN's Uxxx series of adapters are USB to PCMCIA CardBus adapters.
	  Currently only the U132 adapter is available.

	  The U132 is specifically designed for CardBus PC cards that contain
	  an OHCI host controller. Typical PC cards are the Orange Mobile 3G
	  Option GlobeTrotter Fusion card. The U132 adapter will *NOT* work
	  with PC cards that do not contain an OHCI controller. To use a U132
	  adapter you will need this "ftdi-elan" module as well as the "u132-hcd"
	  module which is a USB host controller driver that talks to the OHCI
	  controller within CardBus card that are inserted in the U132 adapter.

	  This driver has been tested with a CardBus OHCI USB adapter, and
	  worked with a USB PEN Drive inserted into the first USB port of
	  the PCCARD. A rather pointless thing to do, but useful for testing.

	  See also the USB_U132_HCD entry "Elan U132 Adapter Host Controller"

	  It is safe to say M here.

config USB_APPLEDISPLAY
	tristate "Apple Cinema Display support"
	select BACKLIGHT_LCD_SUPPORT
	select BACKLIGHT_CLASS_DEVICE
	help
	  Say Y here if you want to control the backlight of Apple Cinema
	  Displays over USB. This driver provides a sysfs interface.

source "drivers/usb/misc/sisusbvga/Kconfig"

config USB_LD
	tristate "USB LD driver"
	help
	  This driver is for generic USB devices that use interrupt transfers,
	  like LD Didactic's USB devices.

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

config USB_TRANCEVIBRATOR
	tristate "PlayStation 2 Trance Vibrator driver support"
	help
	  Say Y here if you want to connect a PlayStation 2 Trance Vibrator
	  device to your computer's USB port.

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

config USB_IOWARRIOR
	tristate "IO Warrior driver support"
	help
	  Say Y here if you want to support the IO Warrior devices from Code
	  Mercenaries.  This includes support for the following devices:
	  	IO Warrior 40
		IO Warrior 24
		IO Warrior 56
		IO Warrior 24 Power Vampire

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

config USB_TEST
	tristate "USB testing driver"
	help
	  This driver is for testing host controller software.  It is used
	  with specialized device firmware for regression and stress testing,
	  to help prevent problems from cropping up with "real" drivers.

	  See <http://www.linux-usb.org/usbtest/> for more information,
	  including sample test device firmware and "how to use it".

config USB_EHSET_TEST_FIXTURE
        tristate "USB EHSET Test Fixture driver"
        help
	  Say Y here if you want to support the special test fixture device
	  used for the USB-IF Embedded Host High-Speed Electrical Test procedure.

	  When the test fixture is connected, it can enumerate as one of several
	  VID/PID pairs. This driver then initiates a corresponding test mode on
	  the downstream port to which the test fixture is attached.

	  See <http://www.usb.org/developers/onthego/EHSET_v1.01.pdf> for more
	  information.

config USB_ISIGHTFW
	tristate "iSight firmware loading support"
	select FW_LOADER
	help
	  This driver loads firmware for USB Apple iSight cameras, allowing
	  them to be driven by the USB video class driver available at
	  http://linux-uvc.berlios.de

	  The firmware for this driver must be extracted from the MacOS
	  driver beforehand. Tools for doing so are available at
	  http://bersace03.free.fr

config USB_YUREX
	tristate "USB YUREX driver support"
	help
	  Say Y here if you want to connect a YUREX to your computer's
	  USB port. The YUREX is a leg-shakes sensor. See
	  <http://bbu.kayac.com/en/> for further information.
	  This driver supports read/write of leg-shakes counter and
	  fasync for the counter update via a device file /dev/yurex*.

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

config USB_EZUSB_FX2
	tristate "Functions for loading firmware on EZUSB chips"
	help
	  Say Y here if you need EZUSB device support.
	  (Cypress FX/FX2/FX2LP microcontrollers)

config USB_HUB_USB251XB
	tristate "USB251XB Hub Controller Configuration Driver"
	depends on I2C
	help
	  This option enables support for configuration via SMBus of the
	  Microchip USB251xB/xBi USB 2.0 Hub Controller series.
	  Configuration parameters may be set in devicetree or platform data.
	  Say Y or M here if you need to configure such a device via SMBus.

config USB_HSIC_USB3503
       tristate "USB3503 HSIC to USB20 Driver"
       depends on I2C
       select REGMAP_I2C
       help
         This option enables support for SMSC USB3503 HSIC to USB 2.0 Driver.

config USB_HSIC_USB4604
       tristate "USB4604 HSIC to USB20 Driver"
       depends on I2C
       help
         This option enables support for SMSC USB4604 HSIC to USB 2.0 Driver.

config USB_LINK_LAYER_TEST
	tristate "USB Link Layer Test driver"
	help
	  This driver is for generating specific traffic for Super Speed Link
	  Layer Test Device. Say Y only when you want to conduct USB Super Speed
	  Link Layer Test for host controllers.

config USB_CHAOSKEY
	tristate "ChaosKey random number generator driver support"
	depends on HW_RANDOM
	help
	  Say Y here if you want to connect an AltusMetrum ChaosKey or
	  Araneus Alea I to your computer's USB port. These devices
	  are hardware random number generators which hook into the
	  kernel entropy pool to ensure a large supply of entropy for
	  /dev/random and /dev/urandom and also provides direct access
	  via /dev/chaoskeyX

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