#
# Generic video config states
#

# Enable the V4L2 core and API
config VIDEO_V4L2
	tristate
	depends on m
	depends on (I2C || I2C=n) && VIDEO_DEV
	default (I2C || I2C=n) && VIDEO_DEV

config VIDEO_ADV_DEBUG
	bool "Enable advanced debug functionality on V4L2 drivers"
	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 on drivers/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_PCI_SKELETON
	tristate "Skeleton PCI V4L2 driver"
	depends on m
	depends on PCI && BUILD_DOCSRC
	depends on VIDEO_V4L2 && VIDEOBUF2_CORE
	depends on VIDEOBUF2_MEMOPS && VIDEOBUF2_DMA_CONTIG
	---help---
	  Enable build of the skeleton PCI driver, used as a reference
	  when developing new drivers.

# Used by drivers that need tuner.ko
config VIDEO_TUNER
	tristate
	depends on m
	depends on MEDIA_TUNER

# Used by drivers that need v4l2-mem2mem.ko
config V4L2_MEM2MEM_DEV
        tristate
        depends on m
        depends on VIDEOBUF2_CORE

# Used by LED subsystem flash drivers
config V4L2_FLASH_LED_CLASS
	tristate "V4L2 flash API for LED flash class devices"
	depends on m
	depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
	depends on LEDS_CLASS_FLASH
	---help---
	  Say Y here to enable V4L2 flash API support for LED flash
	  class drivers.

	  When in doubt, say N.

# Used by drivers that need Videobuf modules
config VIDEOBUF_GEN
	tristate
	depends on m

config VIDEOBUF_DMA_SG
	tristate
	depends on m
	depends on HAS_DMA
	select VIDEOBUF_GEN

config VIDEOBUF_VMALLOC
	tristate
	depends on m
	select VIDEOBUF_GEN

config VIDEOBUF_DMA_CONTIG
	tristate
	depends on m
	depends on HAS_DMA
	select VIDEOBUF_GEN

config VIDEOBUF_DVB
	tristate
	depends on m
	select VIDEOBUF_GEN

# Used by drivers that need Videobuf2 modules
config VIDEOBUF2_CORE
	select DMA_SHARED_BUFFER if !KERNEL_3_5
	tristate
	depends on m

config VIDEOBUF2_MEMOPS
	tristate
	depends on m
	select BPAUTO_FRAME_VECTOR

config VIDEOBUF2_DMA_CONTIG
	tristate
	depends on m
	depends on HAS_DMA
	select VIDEOBUF2_CORE
	select VIDEOBUF2_MEMOPS
	select DMA_SHARED_BUFFER if !KERNEL_3_5

config VIDEOBUF2_VMALLOC
	tristate
	depends on m
	select VIDEOBUF2_CORE
	select VIDEOBUF2_MEMOPS
	select DMA_SHARED_BUFFER if !KERNEL_3_5

config VIDEOBUF2_DMA_SG
	tristate
	depends on m
	depends on HAS_DMA
	select VIDEOBUF2_CORE
	select VIDEOBUF2_MEMOPS

config VIDEOBUF2_DVB
	tristate
	depends on m
	select VIDEOBUF2_CORE
