#
# Multimedia Video device configuration
#

menu "Video Capture Adapters"
	depends on VIDEO_DEV

comment "Video Capture 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.

config VIDEO_VIVI
	tristate "Virtual Video Driver"
	depends on VIDEO_V4L2 && !SPARC32 && !SPARC64
	select VIDEO_BUF
	default n
	---help---
	  Enables a virtual video driver. This device shows a color bar
	  and a timestamp, as a real device would generate by using V4L2
	  api.
	  Say Y here if you want to test video apps or debug 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 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 ISA && VIDEO_V4L1
	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_V4L1 && 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 PARPORT && VIDEO_V4L1
	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 && PARPORT && VIDEO_V4L1
	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 && PARPORT && VIDEO_V4L1
	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_V4L1
	---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 I2C && VIDEO_V4L1
	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 I2C && SGI_IP22 && EXPERIMENTAL && VIDEO_V4L1
	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 && PCI && VIDEO_V4L1 && !PPC64
	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 PCI && I2C_ALGOBIT && VIDEO_V4L1 && !PPC64
	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_ZORAN_AVS6EYES
	tristate "AverMedia 6 Eyes support (EXPERIMENTAL)"
	depends on VIDEO_ZORAN && EXPERIMENTAL && VIDEO_V4L1
	help
	  Support for the AverMedia 6 Eyes video surveillance card.

config VIDEO_ZR36120
	tristate "Zoran ZR36120/36125 Video For Linux"
	depends on PCI && I2C && VIDEO_V4L1 && 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 PCI && SONYPI && VIDEO_V4L1
	---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 PCI && VIDEO_V4L1
	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 PCI && VIDEO_V4L1
	select VIDEO_SAA7146_VV
	select VIDEO_V4L2
	---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 PCI && VIDEO_V4L1
	select VIDEO_SAA7146_VV
	select VIDEO_V4L2
	---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 PCI && VIDEO_V4L1
	select VIDEO_SAA7146_VV
	select VIDEO_V4L2
	---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_M32R_AR
	tristate "AR devices"
	depends on M32R && VIDEO_V4L1
	---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.

#
# Encoder / Decoder module configuration
#

menu "Encoders and Decoders"
	depends on VIDEO_DEV

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_TLV320AIC23B
	tristate "Texas Instruments TLV320AIC23B audio codec"
	depends on VIDEO_DEV && I2C && EXPERIMENTAL
	---help---
	  Support for the Texas Instruments TLV320AIC23B audio codec.

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

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

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

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

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

config VIDEO_CX2341X
	tristate "Conexant CX2341x MPEG encoders"
	depends on VIDEO_V4L2 && EXPERIMENTAL
	---help---
	  Support for the Conexant CX23416 MPEG encoders
	  and CX23415 MPEG encoder/decoders.

	  This module currently supports the encoding functions only.

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

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_V4L2 && 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.

config VIDEO_UPD64031A
	tristate "NEC Electronics uPD64031A Ghost Reduction"
	depends on VIDEO_V4L2 && I2C && EXPERIMENTAL
	---help---
	  Support for the NEC Electronics uPD64031A Ghost Reduction
	  video chip. It is most often found in NTSC TV cards made for
	  Japan and is used to reduce the 'ghosting' effect that can
	  be present in analog TV broadcasts.

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

config VIDEO_UPD64083
	tristate "NEC Electronics uPD64083 3-Dimensional Y/C separation"
	depends on VIDEO_V4L2 && I2C && EXPERIMENTAL
	---help---
	  Support for the NEC Electronics uPD64083 3-Dimensional Y/C
	  separation video chip. It is used to improve the quality of
	  the colors of a composite signal.

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

endmenu # encoder / decoder chips

#
# USB Multimedia device configuration
#

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

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

config USB_DSBR
	tristate "D-Link USB FM radio support (EXPERIMENTAL)"
	depends on USB && VIDEO_V4L1 && 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.

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

source "drivers/media/video/usbvideo/Kconfig"

source "drivers/media/video/et61x251/Kconfig"

config VIDEO_OVCAMCHIP
	tristate "OmniVision Camera Chip support"
	depends on I2C && VIDEO_V4L1
	---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 USB_W9968CF
	tristate "USB W996[87]CF JPEG Dual Mode Camera support"
	depends on USB && VIDEO_V4L1 && I2C
	select 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/video4linux/w9968cf.txt> for more info.

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

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

	  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_V4L1
	---help---
	  Say Y here if you want to connect this type of camera to your
	  computer's USB port. See <file:Documentation/video4linux/se401.txt>
	  for more information and for a list of supported cameras.

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

source "drivers/media/video/sn9c102/Kconfig"

config USB_STV680
	tristate "USB STV680 (Pencam) Camera support"
	depends on USB && VIDEO_V4L1
	---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/video4linux/stv680.txt> for more information
	  and for a list of supported cameras.

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

source "drivers/media/video/zc0301/Kconfig"

source "drivers/media/video/pwc/Kconfig"

endmenu # V4L USB devices

endmenu
