#
# USB Multimedia device configuration
#
comment "USB Multimedia devices"
	depends on USB

config USB_DABUSB
	tristate "DABUSB driver"
	depends on USB
	---help---
	  A Digital Audio Broadcasting (DAB) Receiver for USB and Linux
	  brought to you by the DAB-Team
	  <http://wwwbode.cs.tum.edu/Par/arch/dab/>.  This driver can be taken
	  as an example for URB-based bulk, control, and isochronous
	  transactions. URB's are explained in
	  <file:Documentation/usb/URB.txt>.

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

comment "Video4Linux support is needed for USB Multimedia device support"
	depends on USB && VIDEO_DEV=n

config USB_VICAM
	tristate "USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)"
	depends on USB && VIDEO_DEV && EXPERIMENTAL
	---help---
	  Say Y here if you have 3com homeconnect camera (vicam).

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" (under Multimedia Devices) to use this driver.
	  Information on this API and pointers to "v4l" programs may be found
	  at <file:Documentation/video4linux/API.html>.

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

config USB_DSBR
	tristate "D-Link USB FM radio support (EXPERIMENTAL)"
	depends on USB && VIDEO_DEV && EXPERIMENTAL
	---help---
	  Say Y here if you want to connect this type of radio to your
	  computer's USB port. Note that the audio is not digital, and
	  you must connect the line out connector to a sound card or a
	  set of speakers.

	  This driver uses the Video For Linux API.  You must enable
	  (Y or M in config) Video For Linux (under Character Devices)
	  to use this driver.  Information on this API and pointers to
	  "v4l" programs may be found at
	  <file:Documentation/video4linux/API.html>.

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

config USB_ET61X251
	tristate "USB ET61X[12]51 PC Camera Controller support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want support for cameras based on Etoms ET61X151
	  or ET61X251 PC Camera Controllers.

	  See <file:Documentation/usb/et61x251.txt> for more informations.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" to use this driver.

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

config USB_IBMCAM
	tristate "USB IBM (Xirlink) C-it Camera support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want to connect a IBM "C-It" camera, also known as
	  "Xirlink PC Camera" to your computer's USB port.  For more
	  information, read <file:Documentation/usb/ibmcam.txt>.

	  This driver uses the Video For Linux API.  You must enable
	  (Y or M in config) Video For Linux (under Character Devices)
	  to use this driver.  Information on this API and pointers to
	  "v4l" programs may be found at
	  <file:Documentation/video4linux/API.html>.

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

	  This camera has several configuration options which
	  can be specified when you load the module. Read
	  <file:Documentation/usb/ibmcam.txt> to learn more.

config USB_KONICAWC
	tristate "USB Konica Webcam support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want support for webcams based on a Konica
	  chipset. This is known to work with the Intel YC76 webcam.

	  This driver uses the Video For Linux API.  You must enable
	  (Y or M in config) Video For Linux (under Character Devices)
	  to use this driver.  Information on this API and pointers to
	  "v4l" programs may be found at
	  <file:Documentation/video4linux/API.html>.

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

config USB_OV511
	tristate "USB OV511 Camera support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want to connect this type of camera to your
	  computer's USB port. See <file:Documentation/usb/ov511.txt> for more
	  information and for a list of supported cameras.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" (under Character Devices) to use this driver.
	  Information on this API and pointers to "v4l" programs may be found
	  at <file:Documentation/video4linux/API.html>.

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

config USB_SE401
	tristate "USB SE401 Camera support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want to connect this type of camera to your
	  computer's USB port. See <file:Documentation/usb/se401.txt> for more
	  information and for a list of supported cameras.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" (under Multimedia Devices) to use this driver.
	  Information on this API and pointers to "v4l" programs may be found
	  at <file:Documentation/video4linux/API.html>.

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

config USB_SN9C102
	tristate "USB SN9C10x PC Camera Controller support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want support for cameras based on SONiX SN9C101,
	  SN9C102 or SN9C103 PC Camera Controllers.

	  See <file:Documentation/usb/sn9c102.txt> for more informations.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" to use this driver.

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

config USB_STV680
	tristate "USB STV680 (Pencam) Camera support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want to connect this type of camera to your
	  computer's USB port. This includes the Pencam line of cameras.
	  See <file:Documentation/usb/stv680.txt> for more information and for
	  a list of supported cameras.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" (under Multimedia Devices) to use this driver.
	  Information on this API and pointers to "v4l" programs may be found
	  at <file:Documentation/video4linux/API.html>.

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

config USB_W9968CF
	tristate "USB W996[87]CF JPEG Dual Mode Camera support"
	depends on USB && VIDEO_DEV && I2C && VIDEO_OVCAMCHIP
	---help---
	  Say Y here if you want support for cameras based on OV681 or
	  Winbond W9967CF/W9968CF JPEG USB Dual Mode Camera Chips.
	
	  This driver has an optional plugin, which is distributed as a
	  separate module only (released under GPL). It allows to use higher 
	  resolutions and framerates, but cannot be included in the official 
	  Linux kernel for performance purposes.

	  See <file:Documentation/usb/w9968cf.txt> for more informations.

	  This driver uses the Video For Linux and the I2C APIs. It needs the
	  OmniVision Camera Chip support as well. You must say Y or M to
	  "Video For Linux", "I2C Support" and "OmniVision Camera Chip 
	  support" to use this driver.

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

config USB_PWC
	tristate "USB Philips Cameras"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y or M here if you want to use one of these Philips & OEM
          webcams:
           * Philips PCA645, PCA646
           * Philips PCVC675, PCVC680, PCVC690
           * Philips PCVC720/40, PCVC730, PCVC740, PCVC750
	   * Askey VC010
	   * Logitech QuickCam Pro 3000, 4000, 'Zoom', 'Notebook Pro' 
             and 'Orbit'/'Sphere'
           * Samsung MPC-C10, MPC-C30
	   * Creative Webcam 5, Pro Ex
	   * SOTEC Afina Eye
	   * Visionite VCS-UC300, VCS-UM100
	   
	  The PCA635, PCVC665 and PCVC720/20 are not supported by this driver
	  and never will be, but the 665 and 720/20 are supported by other 
	  drivers.

	  See <file:Documentation/usb/philips.txt> for more information and
	  installation instructions.

	  The built-in microphone is enabled by selecting USB Audio support.

	  This driver uses the Video For Linux API. You must say Y or M to
	  "Video For Linux" (under Character Devices) to use this driver.
	  Information on this API and pointers to "v4l" programs may be found
	  at <file:Documentation/video4linux/API.html>.

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