#
# Multimedia Video device configuration
#

menu "Video For Linux"
	depends on VIDEO_DEV

comment "Video Adapters"

config VIDEO_ADV_DEBUG
	bool "Enable advanced debug functionality"
	depends on VIDEO_DEV
	default n
	---help---
	  Say Y here to enable advanced debugging functionality on some
	  V4L devices.
	  In doubt, say N.

source "drivers/media/video/bt8xx/Kconfig"

config VIDEO_SAA6588
	tristate "SAA6588 Radio Chip RDS decoder support on BT848 cards"
	depends on VIDEO_DEV && I2C && VIDEO_BT848

	help
	  Support for  Radio Data System (RDS) decoder. This allows seeing
	  radio station identification transmitted using this standard.
	  Currentlly, it works only with bt8x8 chips.

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

config VIDEO_PMS
	tristate "Mediavision Pro Movie Studio Video For Linux"
	depends on VIDEO_DEV && ISA
	help
	  Say Y if you have such a thing.

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

config VIDEO_PLANB
	tristate "PlanB Video-In on PowerMac"
	depends on PPC_PMAC && VIDEO_DEV && BROKEN
	help
	  PlanB is the V4L driver for the PowerMac 7x00/8x00 series video
	  input hardware. If you want to experiment with this, say Y.
	  Otherwise, or if you don't understand a word, say N. See
	  <http://www.cpu.lu/~mlan/linux/dev/planb.html> for more info.

	  Saying M will compile this driver as a module (planb).

config VIDEO_BWQCAM
	tristate "Quickcam BW Video For Linux"
	depends on VIDEO_DEV && PARPORT
	help
	  Say Y have if you the black and white version of the QuickCam
	  camera. See the next option for the color version.

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

config VIDEO_CQCAM
	tristate "QuickCam Colour Video For Linux (EXPERIMENTAL)"
	depends on EXPERIMENTAL && VIDEO_DEV && PARPORT
	help
	  This is the video4linux driver for the colour version of the
	  Connectix QuickCam.  If you have one of these cameras, say Y here,
	  otherwise say N.  This driver does not work with the original
	  monochrome QuickCam, QuickCam VC or QuickClip.  It is also available
	  as a module (c-qcam).
	  Read <file:Documentation/video4linux/CQcam.txt> for more information.

config VIDEO_W9966
	tristate "W9966CF Webcam (FlyCam Supra and others) Video For Linux"
	depends on PARPORT_1284 && VIDEO_DEV && PARPORT
	help
	  Video4linux driver for Winbond's w9966 based Webcams.
	  Currently tested with the LifeView FlyCam Supra.
	  If you have one of these cameras, say Y here
	  otherwise say N.
	  This driver is also available as a module (w9966).

	  Check out <file:Documentation/video4linux/w9966.txt> for more
	  information.

config VIDEO_CPIA
	tristate "CPiA Video For Linux"
	depends on VIDEO_DEV
	---help---
	  This is the video4linux driver for cameras based on Vision's CPiA
	  (Colour Processor Interface ASIC), such as the Creative Labs Video
	  Blaster Webcam II. If you have one of these cameras, say Y here
	  and select parallel port and/or USB lowlevel support below,
	  otherwise say N. This will not work with the Creative Webcam III.

	  Please read <file:Documentation/video4linux/README.cpia> for more
	  information.

	  This driver is also available as a module (cpia).

config VIDEO_CPIA_PP
	tristate "CPiA Parallel Port Lowlevel Support"
	depends on PARPORT_1284 && VIDEO_CPIA && PARPORT
	help
	  This is the lowlevel parallel port support for cameras based on
	  Vision's CPiA (Colour Processor Interface ASIC), such as the
	  Creative Webcam II. If you have the parallel port version of one
	  of these cameras, say Y here, otherwise say N. It is also available
	  as a module (cpia_pp).

config VIDEO_CPIA_USB
	tristate "CPiA USB Lowlevel Support"
	depends on VIDEO_CPIA && USB
	help
	  This is the lowlevel USB support for cameras based on Vision's CPiA
	  (Colour Processor Interface ASIC), such as the Creative Webcam II.
	  If you have the USB version of one of these cameras, say Y here,
	  otherwise say N. This will not work with the Creative Webcam III.
	  It is also available as a module (cpia_usb).

source "drivers/media/video/cpia2/Kconfig"

config VIDEO_SAA5246A
	tristate "SAA5246A, SAA5281 Teletext processor"
	depends on VIDEO_DEV && I2C
	help
	  Support for I2C bus based teletext using the SAA5246A or SAA5281
	  chip. Useful only if you live in Europe.

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

config VIDEO_SAA5249
	tristate "SAA5249 Teletext processor"
	depends on VIDEO_DEV && I2C
	help
	  Support for I2C bus based teletext using the SAA5249 chip. At the
	  moment this is only useful on some European WinTV cards.

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

config TUNER_3036
	tristate "SAB3036 tuner"
	depends on VIDEO_DEV && I2C
	help
	  Say Y here to include support for Philips SAB3036 compatible tuners.
	  If in doubt, say N.

config VIDEO_VINO
	tristate "SGI Vino Video For Linux (EXPERIMENTAL)"
	depends on VIDEO_DEV && I2C && SGI_IP22 && EXPERIMENTAL
	select I2C_ALGO_SGI
	help
	  Say Y here to build in support for the Vino video input system found
	  on SGI Indy machines.

config VIDEO_STRADIS
	tristate "Stradis 4:2:2 MPEG-2 video driver  (EXPERIMENTAL)"
	depends on EXPERIMENTAL && VIDEO_DEV && PCI
	help
	  Say Y here to enable support for the Stradis 4:2:2 MPEG-2 video
	  driver for PCI.  There is a product page at
	  <http://www.stradis.com/>.

config VIDEO_ZORAN
	tristate "Zoran ZR36057/36067 Video For Linux"
	depends on VIDEO_DEV && PCI && I2C_ALGOBIT
	help
	  Say Y for support for MJPEG capture cards based on the Zoran
	  36057/36067 PCI controller chipset. This includes the Iomega
	  Buz, Pinnacle DC10+ and the Linux Media Labs LML33. There is
	  a driver homepage at <http://mjpeg.sf.net/driver-zoran/>. For
	  more information, check <file:Documentation/video4linux/Zoran>.

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

config VIDEO_ZORAN_BUZ
	tristate "Iomega Buz support"
	depends on VIDEO_ZORAN
	help
	  Support for the Iomega Buz MJPEG capture/playback card.

config VIDEO_ZORAN_DC10
	tristate "Pinnacle/Miro DC10(+) support"
	depends on VIDEO_ZORAN
	help
	  Support for the Pinnacle/Miro DC10(+) MJPEG capture/playback
	  card.

config VIDEO_ZORAN_DC30
	tristate "Pinnacle/Miro DC30(+) support"
	depends on VIDEO_ZORAN
	help
	  Support for the Pinnacle/Miro DC30(+) MJPEG capture/playback
	  card. This also supports really old DC10 cards based on the
	  zr36050 MJPEG codec and zr36016 VFE.

config VIDEO_ZORAN_LML33
	tristate "Linux Media Labs LML33 support"
	depends on VIDEO_ZORAN
	help
	  Support for the Linux Media Labs LML33 MJPEG capture/playback
	  card.

config VIDEO_ZORAN_LML33R10
	tristate "Linux Media Labs LML33R10 support"
	depends on VIDEO_ZORAN
	help
	  support for the Linux Media Labs LML33R10 MJPEG capture/playback
	  card.

config VIDEO_ZR36120
	tristate "Zoran ZR36120/36125 Video For Linux"
	depends on VIDEO_DEV && PCI && I2C && BROKEN
	help
	  Support for ZR36120/ZR36125 based frame grabber/overlay boards.
	  This includes the Victor II, WaveWatcher, Video Wonder, Maxi-TV,
	  and Buster boards. Please read the material in
	  <file:Documentation/video4linux/zr36120.txt> for more information.

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

config VIDEO_MEYE
	tristate "Sony Vaio Picturebook Motion Eye Video For Linux"
	depends on VIDEO_DEV && PCI && SONYPI
	---help---
	  This is the video4linux driver for the Motion Eye camera found
	  in the Vaio Picturebook laptops. Please read the material in
	  <file:Documentation/video4linux/meye.txt> for more information.

	  If you say Y or M here, you need to say Y or M to "Sony Programmable
	  I/O Control Device" in the character device section.

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

source "drivers/media/video/saa7134/Kconfig"

config VIDEO_MXB
	tristate "Siemens-Nixdorf 'Multimedia eXtension Board'"
	depends on VIDEO_DEV && PCI
	select VIDEO_SAA7146_VV
	select VIDEO_TUNER
	---help---
	  This is a video4linux driver for the 'Multimedia eXtension Board'
	  TV card by Siemens-Nixdorf.

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

config VIDEO_DPC
	tristate "Philips-Semiconductors 'dpc7146 demonstration board'"
	depends on VIDEO_DEV && PCI
	select VIDEO_SAA7146_VV
	---help---
	  This is a video4linux driver for the 'dpc7146 demonstration
	  board' by Philips-Semiconductors. It's the reference design
	  for SAA7146 bases boards, so if you have some unsupported
	  saa7146 based, analog video card, chances are good that it
	  will work with this skeleton driver.

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

config VIDEO_HEXIUM_ORION
	tristate "Hexium HV-PCI6 and Orion frame grabber"
	depends on VIDEO_DEV && PCI
	select VIDEO_SAA7146_VV
	---help---
	  This is a video4linux driver for the Hexium HV-PCI6 and
	  Orion frame grabber cards by Hexium.

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

config VIDEO_HEXIUM_GEMINI
	tristate "Hexium Gemini frame grabber"
	depends on VIDEO_DEV && PCI
	select VIDEO_SAA7146_VV
	---help---
	  This is a video4linux driver for the Hexium Gemini frame
	  grabber card by Hexium. Please note that the Gemini Dual
	  card is *not* fully supported.

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

source "drivers/media/video/cx88/Kconfig"

config VIDEO_OVCAMCHIP
	tristate "OmniVision Camera Chip support"
	depends on VIDEO_DEV && I2C
	---help---
	  Support for the OmniVision OV6xxx and OV7xxx series of camera chips.
	  This driver is intended to be used with the ov511 and w9968cf USB
	  camera drivers.

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

config VIDEO_M32R_AR
	tristate "AR devices"
	depends on M32R
	---help---
	  This is a video4linux driver for the Renesas AR (Artificial Retina)
	  camera module.

config VIDEO_M32R_AR_M64278
	tristate "Use Colour AR module M64278(VGA)"
	depends on VIDEO_M32R_AR && PLAT_M32700UT
	---help---
	  Say Y here to use the Renesas M64278E-800 camera module,
	  which supports VGA(640x480 pixcels) size of images.

config VIDEO_MSP3400
	tristate "Micronas MSP34xx audio decoders"
	depends on VIDEO_DEV && I2C
	---help---
	  Support for the Micronas MSP34xx series of audio decoders.

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

config VIDEO_CS53L32A
	tristate "Cirrus Logic CS53L32A audio ADC"
	depends on VIDEO_DEV && I2C && EXPERIMENTAL
	---help---
	  Support for the Cirrus Logic CS53L32A low voltage
	  stereo A/D converter.

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

config VIDEO_WM8775
	tristate "Wolfson Microelectronics WM8775 audio ADC"
	depends on VIDEO_DEV && I2C && EXPERIMENTAL
	---help---
	  Support for the Wolfson Microelectronics WM8775
	  high performance stereo A/D Converter.

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

source "drivers/media/video/cx25840/Kconfig"

config VIDEO_SAA711X
	tristate "Philips SAA7113/4/5 video decoders"
	depends on VIDEO_DEV && I2C && EXPERIMENTAL
	---help---
	  Support for the Philips SAA7113/4/5 video decoders.

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

config VIDEO_SAA7127
	tristate "Philips SAA7127/9 digital video encoders"
	depends on VIDEO_DEV && I2C && EXPERIMENTAL
	---help---
	  Support for the Philips SAA7127/9 digital video encoders.

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

#
# USB Multimedia device configuration
#

menu "V4L USB devices"
	depends on USB && VIDEO_DEV

source "drivers/media/video/em28xx/Kconfig"

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_ZC0301
	tristate "USB ZC0301 Image Processor and Control Chip support"
	depends on USB && VIDEO_DEV
	---help---
	  Say Y here if you want support for cameras based on the ZC0301
	  Image Processor and Control Chip.

	  See <file:Documentation/usb/zc0301.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 zc0301.

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.

endmenu # V4L USB devices

endmenu
