#
# Generic video config states
#

config VIDEO_V4L2
	tristate
	depends on VIDEO_DEV && VIDEO_V4L2_COMMON
	default VIDEO_DEV && VIDEO_V4L2_COMMON

config VIDEO_V4L1
	tristate
	depends on VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1
	default VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1

config VIDEOBUF_GEN
	tristate

config VIDEOBUF_DMA_SG
	depends on HAS_DMA
	select VIDEOBUF_GEN
	tristate

config VIDEOBUF_VMALLOC
	select VIDEOBUF_GEN
	tristate

config VIDEOBUF_DMA_CONTIG
	depends on HAS_DMA
	select VIDEOBUF_GEN
	tristate

config VIDEOBUF_DVB
	tristate
	select VIDEOBUF_GEN

config VIDEO_BTCX
	depends on PCI
	tristate

config VIDEO_IR
	tristate
	depends on INPUT

config VIDEO_TVEEPROM
	tristate
	depends on I2C

config VIDEO_TUNER
	tristate
	depends on MEDIA_TUNER

#
# Multimedia Video device configuration
#

menuconfig VIDEO_CAPTURE_DRIVERS
	bool "Video capture adapters"
	depends on VIDEO_V4L2
	default y
	---help---
	  Say Y here to enable selecting the video adapters for
	  webcams, analog TV, and hybrid analog/digital TV.
	  Some of those devices also supports FM radio.

if VIDEO_CAPTURE_DRIVERS && VIDEO_V4L2

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

config VIDEO_FIXED_MINOR_RANGES
	bool "Enable old-style fixed minor ranges for video devices"
	default n
	---help---
	  Say Y here to enable the old-style fixed-range minor assignments.
	  Only useful if you rely on the old behavior and use mknod instead of udev.

	  When in doubt, say N.

config VIDEO_HELPER_CHIPS_AUTO
	bool "Autoselect pertinent encoders/decoders and other helper chips"
	default y
	---help---
	  Most video cards may require additional modules to encode or
	  decode audio/video standards. This option will autoselect
	  all pertinent modules to each selected video module.

	  Unselect this only if you know exactly what you are doing, since
	  it may break support on some boards.

	  In doubt, say Y.

config VIDEO_IR_I2C
	tristate "I2C module for IR" if !VIDEO_HELPER_CHIPS_AUTO
	depends on I2C && VIDEO_IR
	default y
	---help---
	  Most boards have an IR chip directly connected via GPIO. However,
	  some video boards have the IR connected via I2C bus.

	  If your board doesn't have an I2C IR chip, you may disable this
	  option.

	  In doubt, say Y.

#
# Encoder / Decoder module configuration
#

menu "Encoders/decoders and other helper chips"
	depends on !VIDEO_HELPER_CHIPS_AUTO

comment "Audio decoders"

config VIDEO_TVAUDIO
	tristate "Simple audio decoder chips"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for several audio decoder chips found on some bt8xx boards:
	  Philips: tda9840, tda9873h, tda9874h/a, tda9850, tda985x, tea6300,
		   tea6320, tea6420, tda8425, ta8874z.
	  Microchip: pic16c54 based design on ProVideo PV951 board.

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

config VIDEO_TDA7432
	tristate "Philips TDA7432 audio processor"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for tda7432 audio decoder chip found on some bt8xx boards.

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

config VIDEO_TDA9840
	tristate "Philips TDA9840 audio processor"
	depends on I2C
	---help---
	  Support for tda9840 audio decoder chip found on some Zoran boards.

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

config VIDEO_TDA9875
	tristate "Philips TDA9875 audio processor"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for tda9875 audio decoder chip found on some bt8xx boards.

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

config VIDEO_TEA6415C
	tristate "Philips TEA6415C audio processor"
	depends on I2C
	---help---
	  Support for tea6415c audio decoder chip found on some bt8xx boards.

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

config VIDEO_TEA6420
	tristate "Philips TEA6420 audio processor"
	depends on I2C
	---help---
	  Support for tea6420 audio decoder chip found on some bt8xx boards.

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

config VIDEO_MSP3400
	tristate "Micronas MSP34xx audio decoders"
	depends on VIDEO_V4L2 && 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_CS5345
	tristate "Cirrus Logic CS5345 audio ADC"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Cirrus Logic CS5345 24-bit, 192 kHz
	  stereo A/D converter.

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

config VIDEO_CS53L32A
	tristate "Cirrus Logic CS53L32A audio ADC"
	depends on VIDEO_V4L2 && I2C
	---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_M52790
	tristate "Mitsubishi M52790 A/V switch"
	depends on VIDEO_V4L2 && I2C
	---help---
	 Support for the Mitsubishi M52790 A/V switch.

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

config VIDEO_TLV320AIC23B
	tristate "Texas Instruments TLV320AIC23B audio codec"
	depends on VIDEO_V4L2 && 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_V4L2 && I2C
	---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_V4L2 && I2C
	---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_VP27SMPX
	tristate "Panasonic VP27s internal MPX"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the internal MPX of the Panasonic VP27s tuner.

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

comment "RDS decoders"

config VIDEO_SAA6588
	tristate "SAA6588 Radio Chip RDS decoder support"
	depends on VIDEO_V4L2 && I2C

	help
	  Support for this Radio Data System (RDS) decoder. This allows
	  seeing radio station identification transmitted using this
	  standard.

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

comment "Video decoders"

config VIDEO_ADV7180
	tristate "Analog Devices ADV7180 decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Analog Devices ADV7180 video decoder.

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

config VIDEO_BT819
	tristate "BT819A VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for BT819A video decoder.

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

config VIDEO_BT856
	tristate "BT856 VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for BT856 video decoder.

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

config VIDEO_BT866
	tristate "BT866 VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for BT866 video decoder.

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

config VIDEO_KS0127
	tristate "KS0127 video decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for KS0127 video decoder.

	  This chip is used on AverMedia AVS6EYES Zoran-based MJPEG
	  cards.

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

config VIDEO_OV7670
	tristate "OmniVision OV7670 sensor support"
	depends on I2C && VIDEO_V4L2
	---help---
	  This is a Video4Linux2 sensor-level driver for the OmniVision
	  OV7670 VGA camera.  It currently only works with the M88ALP01
	  controller.

config VIDEO_MT9V011
	tristate "Micron mt9v011 sensor support"
	depends on I2C && VIDEO_V4L2
	---help---
	  This is a Video4Linux2 sensor-level driver for the Micron
	  mt0v011 1.3 Mpixel camera.  It currently only works with the
	  em28xx driver.

config VIDEO_TCM825X
	tristate "TCM825x camera sensor support"
	depends on I2C && VIDEO_V4L2
	---help---
	  This is a driver for the Toshiba TCM825x VGA camera sensor.
	  It is used for example in Nokia N800.

config VIDEO_SAA7110
	tristate "Philips SAA7110 video decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Philips SAA7110 video decoders.

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

config VIDEO_SAA711X
	tristate "Philips SAA7111/3/4/5 video decoders"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Philips SAA7111/3/4/5 video decoders.

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

config VIDEO_SAA717X
	tristate "Philips SAA7171/3/4 audio/video decoders"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Philips SAA7171/3/4 audio/video decoders.

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

config VIDEO_SAA7191
	tristate "Philips SAA7191 video decoder"
	depends on VIDEO_V4L1 && I2C
	---help---
	  Support for the Philips SAA7191 video decoder.

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

config VIDEO_TVP514X
	tristate "Texas Instruments TVP514x video decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  This is a Video4Linux2 sensor-level driver for the TI TVP5146/47
	  decoder. It is currently working with the TI OMAP3 camera
	  controller.

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

config VIDEO_TVP5150
	tristate "Texas Instruments TVP5150 video decoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Texas Instruments TVP5150 video decoder.

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

config VIDEO_VPX3220
	tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for VPX322x video decoders.

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

comment "Video and audio decoders"

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

comment "MPEG video encoders"

config VIDEO_CX2341X
	tristate "Conexant CX2341x MPEG encoders"
	depends on VIDEO_V4L2 && VIDEO_V4L2_COMMON
	---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.

comment "Video encoders"

config VIDEO_SAA7127
	tristate "Philips SAA7127/9 digital video encoders"
	depends on VIDEO_V4L2 && I2C
	---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_SAA7185
	tristate "Philips SAA7185 video encoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Philips SAA7185 video encoder.

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

config VIDEO_ADV7170
	tristate "Analog Devices ADV7170 video encoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Analog Devices ADV7170 video encoder driver

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

config VIDEO_ADV7175
	tristate "Analog Devices ADV7175 video encoder"
	depends on VIDEO_V4L2 && I2C
	---help---
	  Support for the Analog Devices ADV7175 video encoder driver

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

config VIDEO_THS7303
	tristate "THS7303 Video Amplifier"
	depends on I2C
	help
	  Support for TI THS7303 video amplifier

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

config VIDEO_ADV7343
	tristate "ADV7343 video encoder"
	depends on I2C
	help
	  Support for Analog Devices I2C bus based ADV7343 encoder.

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

comment "Video improvement chips"

config VIDEO_UPD64031A
	tristate "NEC Electronics uPD64031A Ghost Reduction"
	depends on VIDEO_V4L2 && I2C
	---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
	---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

config DISPLAY_DAVINCI_DM646X_EVM
	tristate "DM646x EVM Video Display"
	depends on VIDEO_DEV && MACH_DAVINCI_DM6467_EVM
	select VIDEOBUF_DMA_CONTIG
	select VIDEO_DAVINCI_VPIF
	select VIDEO_ADV7343
	select VIDEO_THS7303
	help
	  Support for DM6467 based display device.

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

config CAPTURE_DAVINCI_DM646X_EVM
	tristate "DM646x EVM Video Capture"
	depends on VIDEO_DEV && MACH_DAVINCI_DM6467_EVM
	select VIDEOBUF_DMA_CONTIG
	select VIDEO_DAVINCI_VPIF
	help
	  Support for DM6467 based capture device.

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

config VIDEO_DAVINCI_VPIF
	tristate "DaVinci VPIF Driver"
	depends on DISPLAY_DAVINCI_DM646X_EVM
	help
	  Support for DaVinci VPIF Driver.

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

config VIDEO_VIVI
	tristate "Virtual Video Driver"
	depends on VIDEO_DEV && VIDEO_V4L2 && !SPARC32 && !SPARC64
	select VIDEOBUF_VMALLOC
	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.

config VIDEO_VPSS_SYSTEM
	tristate "VPSS System module driver"
	depends on ARCH_DAVINCI
	help
	  Support for vpss system module for video driver
	default y

config VIDEO_VPFE_CAPTURE
	tristate "VPFE Video Capture Driver"
	depends on VIDEO_V4L2 && ARCH_DAVINCI
	select VIDEOBUF_DMA_CONTIG
	help
	  Support for DMXXXX VPFE based frame grabber. This is the
	  common V4L2 module for following DMXXX SoCs from Texas
	  Instruments:- DM6446 & DM355.

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

config VIDEO_DM6446_CCDC
	tristate "DM6446 CCDC HW module"
	depends on ARCH_DAVINCI_DM644x && VIDEO_VPFE_CAPTURE
	select VIDEO_VPSS_SYSTEM
	default y
	help
	   Enables DaVinci CCD hw module. DaVinci CCDC hw interfaces
	   with decoder modules such as TVP5146 over BT656 or
	   sensor module such as MT9T001 over a raw interface. This
	   module configures the interface and CCDC/ISIF to do
	   video frame capture from slave decoders.

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

config VIDEO_DM355_CCDC
	tristate "DM355 CCDC HW module"
	depends on ARCH_DAVINCI_DM355 && VIDEO_VPFE_CAPTURE
	select VIDEO_VPSS_SYSTEM
	default y
	help
	   Enables DM355 CCD hw module. DM355 CCDC hw interfaces
	   with decoder modules such as TVP5146 over BT656 or
	   sensor module such as MT9T001 over a raw interface. This
	   module configures the interface and CCDC/ISIF to do
	   video frame capture from a slave decoders

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

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

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_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_V4L2
	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 I2C && VIDEO_V4L2
	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 VIDEO_VINO
	tristate "SGI Vino Video For Linux (EXPERIMENTAL)"
	depends on I2C && SGI_IP22 && EXPERIMENTAL && VIDEO_V4L2
	select VIDEO_SAA7191 if VIDEO_HELPER_CHIPS_AUTO
	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 && VIRT_TO_BUS
	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/>.

source "drivers/media/video/zoran/Kconfig"

config VIDEO_MEYE
	tristate "Sony Vaio Picturebook Motion Eye Video For Linux"
	depends on PCI && SONY_LAPTOP && 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 Laptop
	  Extras" in the misc 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 && I2C
	select VIDEO_SAA7146_VV
	select VIDEO_TUNER
	select VIDEO_SAA711X if VIDEO_HELPER_CHIPS_AUTO
	select VIDEO_TDA9840 if VIDEO_HELPER_CHIPS_AUTO
	select VIDEO_TEA6415C if VIDEO_HELPER_CHIPS_AUTO
	select VIDEO_TEA6420 if VIDEO_HELPER_CHIPS_AUTO
	---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_HEXIUM_ORION
	tristate "Hexium HV-PCI6 and Orion frame grabber"
	depends on PCI && VIDEO_V4L2 && I2C
	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 PCI && VIDEO_V4L2 && I2C
	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"

source "drivers/media/video/cx23885/Kconfig"

source "drivers/media/video/au0828/Kconfig"

source "drivers/media/video/ivtv/Kconfig"

source "drivers/media/video/cx18/Kconfig"

source "drivers/media/video/saa7164/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 "AR device with color module M64278(VGA)"
	depends on PLAT_M32700UT
	select VIDEO_M32R_AR
	---help---
	  This is a video4linux driver for the Renesas AR (Artificial
	  Retina) with M64278E-800 camera module.
	  This module supports VGA(640x480 pixels) resolutions.

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

config VIDEO_CAFE_CCIC
	tristate "Marvell 88ALP01 (Cafe) CMOS Camera Controller support"
	depends on PCI && I2C && VIDEO_V4L2
	select VIDEO_OV7670
	---help---
	  This is a video4linux2 driver for the Marvell 88ALP01 integrated
	  CMOS camera controller.  This is the controller found on first-
	  generation OLPC systems.

config SOC_CAMERA
	tristate "SoC camera support"
	depends on VIDEO_V4L2 && HAS_DMA && I2C
	select VIDEOBUF_GEN
	help
	  SoC Camera is a common API to several cameras, not connecting
	  over a bus like PCI or USB. For example some i2c camera connected
	  directly to the data bus of an SoC.

config SOC_CAMERA_MT9M001
	tristate "mt9m001 support"
	depends on SOC_CAMERA && I2C
	select GPIO_PCA953X if MT9M001_PCA9536_SWITCH
	help
	  This driver supports MT9M001 cameras from Micron, monochrome
	  and colour models.

config SOC_CAMERA_MT9M111
	tristate "mt9m111 and mt9m112 support"
	depends on SOC_CAMERA && I2C
	help
	  This driver supports MT9M111 and MT9M112 cameras from Micron

config SOC_CAMERA_MT9T031
	tristate "mt9t031 support"
	depends on SOC_CAMERA && I2C
	help
	  This driver supports MT9T031 cameras from Micron.

config SOC_CAMERA_MT9V022
	tristate "mt9v022 support"
	depends on SOC_CAMERA && I2C
	select GPIO_PCA953X if MT9V022_PCA9536_SWITCH
	help
	  This driver supports MT9V022 cameras from Micron

config SOC_CAMERA_TW9910
	tristate "tw9910 support"
	depends on SOC_CAMERA && I2C
	help
	  This is a tw9910 video driver

config SOC_CAMERA_PLATFORM
	tristate "platform camera support"
	depends on SOC_CAMERA
	help
	  This is a generic SoC camera platform driver, useful for testing

config SOC_CAMERA_OV772X
	tristate "ov772x camera support"
	depends on SOC_CAMERA && I2C
	help
	  This is a ov772x camera driver

config MX1_VIDEO
	bool

config VIDEO_MX1
	tristate "i.MX1/i.MXL CMOS Sensor Interface driver"
	depends on VIDEO_DEV && ARCH_MX1 && SOC_CAMERA
	select FIQ
	select VIDEOBUF_DMA_CONTIG
	select MX1_VIDEO
	---help---
	  This is a v4l2 driver for the i.MX1/i.MXL CMOS Sensor Interface

config MX3_VIDEO
	bool

config VIDEO_MX3
	tristate "i.MX3x Camera Sensor Interface driver"
	depends on VIDEO_DEV && MX3_IPU && SOC_CAMERA
	select VIDEOBUF_DMA_CONTIG
	select MX3_VIDEO
	---help---
	  This is a v4l2 driver for the i.MX3x Camera Sensor Interface

config VIDEO_PXA27x
	tristate "PXA27x Quick Capture Interface driver"
	depends on VIDEO_DEV && PXA27x && SOC_CAMERA
	select VIDEOBUF_DMA_SG
	---help---
	  This is a v4l2 driver for the PXA27x Quick Capture Interface

config VIDEO_SH_MOBILE_CEU
	tristate "SuperH Mobile CEU Interface driver"
	depends on VIDEO_DEV && SOC_CAMERA && HAS_DMA && HAVE_CLK
	select VIDEOBUF_DMA_CONTIG
	---help---
	  This is a v4l2 driver for the SuperH Mobile CEU Interface

config VIDEO_OMAP2
	tristate "OMAP2 Camera Capture Interface driver"
	depends on VIDEO_DEV && ARCH_OMAP2
	select VIDEOBUF_DMA_SG
	---help---
	  This is a v4l2 driver for the TI OMAP2 camera capture interface

#
# USB Multimedia device configuration
#

menuconfig V4L_USB_DRIVERS
	bool "V4L USB devices"
	depends on USB
	default y

if V4L_USB_DRIVERS && USB

source "drivers/media/video/uvc/Kconfig"

source "drivers/media/video/gspca/Kconfig"

source "drivers/media/video/pvrusb2/Kconfig"

source "drivers/media/video/hdpvr/Kconfig"

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

source "drivers/media/video/cx231xx/Kconfig"

source "drivers/media/video/usbvision/Kconfig"

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 VIDEO_V4L1 && 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/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 (DEPRECATED)"
	depends on VIDEO_V4L1
	---help---
	  This driver is DEPRECATED please use the gspca ov519 module
	  instead. Note that for the ov511 / ov518 support of the gspca module
	  you need atleast version 0.6.0 of libv4l.

	  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 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 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"

config USB_ZR364XX
	tristate "USB ZR364XX Camera support"
	depends on VIDEO_V4L2
	select VIDEOBUF_GEN
	select VIDEOBUF_VMALLOC
	---help---
	  Say Y here if you want to connect this type of camera to your
	  computer's USB port.
	  See <file:Documentation/video4linux/zr364xx.txt> for more info
	  and list of supported cameras.

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

config USB_STKWEBCAM
	tristate "USB Syntek DC1125 Camera support"
	depends on VIDEO_V4L2 && EXPERIMENTAL
	---help---
	  Say Y here if you want to use this type of camera.
	  Supported devices are typically found in some Asus laptops,
	  with USB id 174f:a311 and 05e1:0501. Other Syntek cameras
	  may be supported by the stk11xx driver, from which this is
	  derived, see http://stk11xx.sourceforge.net

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

config USB_S2255
	tristate "USB Sensoray 2255 video capture device"
	depends on VIDEO_V4L2
	select VIDEOBUF_VMALLOC
	default n
	help
	  Say Y here if you want support for the Sensoray 2255 USB device.
	  This driver can be compiled as a module, called s2255drv.

endif # V4L_USB_DRIVERS
endif # VIDEO_CAPTURE_DRIVERS
