if MEDIA_CAMERA_SUPPORT

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

#
# Platform drivers
#	All drivers here are currently for webcam support

menuconfig V4L_PLATFORM_DRIVERS
	bool "V4L platform devices"
	depends on MEDIA_CAMERA_SUPPORT
	default n
	---help---
	  Say Y here to enable support for platform-specific V4L drivers.

if V4L_PLATFORM_DRIVERS

source "drivers/media/video/marvell-ccic/Kconfig"

config VIDEO_VIA_CAMERA
	tristate "VIAFB camera controller support"
	depends on FB_VIA
	select VIDEOBUF_DMA_SG
	select VIDEO_OV7670
	help
	   Driver support for the integrated camera controller in VIA
	   Chrome9 chipsets.  Currently only tested on OLPC xo-1.5 systems
	   with ov7670 sensors.

#
# Platform multimedia device configuration
#

source "drivers/media/video/davinci/Kconfig"

source "drivers/media/video/omap/Kconfig"

source "drivers/media/video/blackfin/Kconfig"

config VIDEO_SH_VOU
	tristate "SuperH VOU video output driver"
	depends on VIDEO_DEV && ARCH_SHMOBILE
	select VIDEOBUF_DMA_CONTIG
	help
	  Support for the Video Output Unit (VOU) on SuperH SoCs.

config VIDEO_VIU
	tristate "Freescale VIU Video Driver"
	depends on VIDEO_V4L2 && PPC_MPC512x
	select VIDEOBUF_DMA_CONTIG
	default y
	---help---
	  Support for Freescale VIU video driver. This device captures
	  video data, or overlays video on DIU frame buffer.

	  Say Y here if you want to enable VIU device on MPC5121e Rev2+.
	  In doubt, say N.

config VIDEO_TIMBERDALE
	tristate "Support for timberdale Video In/LogiWIN"
	depends on VIDEO_V4L2 && I2C && DMADEVICES
	select DMA_ENGINE
	select TIMB_DMA
	select VIDEO_ADV7180
	select VIDEOBUF_DMA_CONTIG
	---help---
	  Add support for the Video In peripherial of the timberdale FPGA.

config VIDEO_VINO
	tristate "SGI Vino Video For Linux"
	depends on I2C && SGI_IP22 && 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_M32R_AR
	tristate "AR devices"
	depends on M32R && VIDEO_V4L2
	---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_OMAP3
	tristate "OMAP 3 Camera support (EXPERIMENTAL)"
	depends on OMAP_IOVMM && VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3 && EXPERIMENTAL
	---help---
	  Driver for an OMAP 3 camera controller.

config VIDEO_OMAP3_DEBUG
	bool "OMAP 3 Camera debug messages"
	depends on VIDEO_OMAP3
	---help---
	  Enable debug messages on OMAP 3 camera controller driver.

config SOC_CAMERA
	tristate "SoC camera support"
	depends on VIDEO_V4L2 && HAS_DMA && I2C
	select VIDEOBUF_GEN
	select VIDEOBUF2_CORE
	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_IMX074
	tristate "imx074 support"
	depends on SOC_CAMERA && I2C
	help
	  This driver supports IMX074 cameras from Sony

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, mt9m112 and mt9m131 support"
	depends on SOC_CAMERA && I2C
	help
	  This driver supports MT9M111, MT9M112 and MT9M131 cameras from
	  Micron/Aptina

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

config SOC_CAMERA_MT9T112
	tristate "mt9t112 support"
	depends on SOC_CAMERA && I2C
	help
	  This driver supports MT9T112 cameras from Aptina.

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_RJ54N1
	tristate "rj54n1cb0c support"
	depends on SOC_CAMERA && I2C
	help
	  This is a rj54n1cb0c video driver

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_OV2640
	tristate "ov2640 camera support"
	depends on SOC_CAMERA && I2C
	help
	  This is a ov2640 camera driver

config SOC_CAMERA_OV5642
	tristate "ov5642 camera support"
	depends on SOC_CAMERA && I2C
	help
	  This is a V4L2 camera driver for the OmniVision OV5642 sensor

config SOC_CAMERA_OV6650
	tristate "ov6650 sensor support"
	depends on SOC_CAMERA && I2C
	---help---
	  This is a V4L2 SoC camera driver for the OmniVision OV6650 sensor

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

config SOC_CAMERA_OV9640
	tristate "ov9640 camera support"
	depends on SOC_CAMERA && I2C
	help
	  This is a ov9640 camera driver

config SOC_CAMERA_OV9740
	tristate "ov9740 camera support"
	depends on SOC_CAMERA && I2C
	help
	  This is a ov9740 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 VIDEOBUF2_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_CSI2
	tristate "SuperH Mobile MIPI CSI-2 Interface driver"
	depends on VIDEO_DEV && SOC_CAMERA && HAVE_CLK
	---help---
	  This is a v4l2 driver for the SuperH MIPI CSI-2 Interface

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

config VIDEO_OMAP1
	tristate "OMAP1 Camera Interface driver"
	depends on VIDEO_DEV && ARCH_OMAP1 && SOC_CAMERA
	select VIDEOBUF_DMA_CONTIG
	select VIDEOBUF_DMA_SG
	---help---
	  This is a v4l2 driver for the TI OMAP1 camera 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

config VIDEO_MX2_HOSTSUPPORT
	bool

config VIDEO_MX2
	tristate "i.MX27/i.MX25 Camera Sensor Interface driver"
	depends on VIDEO_DEV && SOC_CAMERA && (MACH_MX27 || (ARCH_MX25 && BROKEN))
	select VIDEOBUF2_DMA_CONTIG
	select VIDEO_MX2_HOSTSUPPORT
	---help---
	  This is a v4l2 driver for the i.MX27 and the i.MX25 Camera Sensor
	  Interface

config VIDEO_ATMEL_ISI
	tristate "ATMEL Image Sensor Interface (ISI) support"
	depends on VIDEO_DEV && SOC_CAMERA && ARCH_AT91
	select VIDEOBUF2_DMA_CONTIG
	---help---
	  This module makes the ATMEL Image Sensor Interface available
	  as a v4l2 device.

source "drivers/media/video/s5p-fimc/Kconfig"
source "drivers/media/video/s5p-tv/Kconfig"

endif # V4L_PLATFORM_DRIVERS

menuconfig V4L_MEM2MEM_DRIVERS
	bool "Memory-to-memory multimedia devices"
	depends on VIDEO_V4L2
	default n
	---help---
	  Say Y here to enable selecting drivers for V4L devices that
	  use system memory for both source and destination buffers, as opposed
	  to capture and output drivers, which use memory buffers for just
	  one of those.

if V4L_MEM2MEM_DRIVERS

config VIDEO_MEM2MEM_TESTDEV
	tristate "Virtual test device for mem2mem framework"
	depends on VIDEO_DEV && VIDEO_V4L2
	select VIDEOBUF2_VMALLOC
	select V4L2_MEM2MEM_DEV
	default n
	---help---
	  This is a virtual test device for the memory-to-memory driver
	  framework.

config VIDEO_CODA
	tristate "Chips&Media Coda multi-standard codec IP"
	depends on VIDEO_DEV && VIDEO_V4L2
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	---help---
	   Coda is a range of video codec IPs that supports
	   H.264, MPEG-4, and other video formats.

config VIDEO_MEM2MEM_DEINTERLACE
	tristate "Deinterlace support"
	depends on VIDEO_DEV && VIDEO_V4L2 && DMA_ENGINE
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	help
	    Generic deinterlacing V4L2 driver.

config VIDEO_SAMSUNG_S5P_G2D
	tristate "Samsung S5P and EXYNOS4 G2D 2d graphics accelerator driver"
	depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	default n
	---help---
	  This is a v4l2 driver for Samsung S5P and EXYNOS4 G2D
	  2d graphics accelerator.

config VIDEO_SAMSUNG_S5P_JPEG
	tristate "Samsung S5P/Exynos4 JPEG codec driver (EXPERIMENTAL)"
	depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P && EXPERIMENTAL
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	---help---
	  This is a v4l2 driver for Samsung S5P and EXYNOS4 JPEG codec

config VIDEO_SAMSUNG_S5P_MFC
	tristate "Samsung S5P MFC 5.1 Video Codec"
	depends on VIDEO_DEV && VIDEO_V4L2 && PLAT_S5P
	select VIDEOBUF2_DMA_CONTIG
	default n
	help
	    MFC 5.1 driver for V4L2.

config VIDEO_MX2_EMMAPRP
	tristate "MX2 eMMa-PrP support"
	depends on VIDEO_DEV && VIDEO_V4L2 && SOC_IMX27
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	help
	    MX2X chips have a PrP that can be used to process buffers from
	    memory to memory. Operations include resizing and format
	    conversion.

endif # V4L_MEM2MEM_DRIVERS

endif # MEDIA_CAMERA_SUPPORT
