config VIDEO_USBVIDEO
	tristate

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

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

config USB_IBMCAM
	tristate "USB IBM (Xirlink) C-it Camera support"
	depends on VIDEO_V4L1
	select VIDEO_USBVIDEO
	---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.

	  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/video4linux/ibmcam.txt> to learn more.

config USB_KONICAWC
	tristate "USB Konica Webcam support"
	depends on VIDEO_V4L1
	select VIDEO_USBVIDEO
	---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.

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

config USB_QUICKCAM_MESSENGER
	tristate "USB Logitech Quickcam Messenger (DEPRECATED)"
	depends on VIDEO_V4L1
	select VIDEO_USBVIDEO
	---help---
	  This driver is DEPRECATED please use the gspca stv06xx module
	  instead.

	  Say Y or M here to enable support for the USB Logitech Quickcam
	  Messenger webcam.

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

