if VIDEO_MXC_CAPTURE

config VIDEO_V4L2_MXC_INT_DEVICE
       tristate

config VIDEO_MXC_CSI_CAMERA
	tristate "CSI camera support"
	depends on VIDEO_MXC_CAPTURE && VIDEO_V4L2
	select VIDEOBUF2_DMA_CONTIG
	---help---
		This is the video4linux2 capture driver based on CSI module.

config MXC_VADC
	tristate "mxc VADC support"
	depends on VIDEO_MXC_CAPTURE && VIDEO_V4L2
	---help---
		If you plan to use the VADC with your MXC system, say Y here.

config MXC_MIPI_CSI
	tristate "mxc mipi csi driver"
	depends on VIDEO_MXC_CAPTURE && VIDEO_V4L2
	---help---
		This is a V4L2 driver for i.MX7D SoC MIPI-CSI2 receiver devices.

menu "MXC Camera/V4L2 PRP Features support"
config VIDEO_MXC_IPU_CAMERA
	bool
	select VIDEO_V4L2_MXC_INT_DEVICE
	depends on VIDEO_MXC_CAPTURE && MXC_IPU
	default y

config MXC_CAMERA_OV5640
        tristate "OmniVision ov5640 camera support"
        depends on !VIDEO_MXC_EMMA_CAMERA && I2C
	depends on VIDEO_V4L2_MXC_INT_DEVICE
        ---help---
          If you plan to use the ov5640 Camera with your MXC system, say Y here.

config MXC_CAMERA_OV5640_V2
	tristate "OmniVision ov5640 camera support"
	depends on VIDEO_MXC_CAPTURE && I2C
	---help---
	  If you plan to use the ov5640 Camera with your MXC system, say Y here.

config MXC_CAMERA_OV5642
	tristate "OmniVision ov5642 camera support"
	depends on !VIDEO_MXC_EMMA_CAMERA && I2C
	depends on VIDEO_V4L2_MXC_INT_DEVICE
	---help---
	  If you plan to use the ov5642 Camera with your MXC system, say Y here.

config MXC_CAMERA_OV5645_MIPI_V2
        tristate "OmniVision ov5645 camera support using mipi"
        depends on MXC_MIPI_CSI && I2C
        ---help---
          If you plan to use the ov5645 Camera with mipi interface in your MXC system, say Y here.

config MXC_CAMERA_OV5640_MIPI
	tristate "OmniVision ov5640 camera support using mipi"
	depends on !VIDEO_MXC_EMMA_CAMERA && I2C && MXC_MIPI_CSI2
	depends on VIDEO_V4L2_MXC_INT_DEVICE
	---help---
	  If you plan to use the ov5640 Camera with mipi interface in your MXC system, say Y here.

config MXC_CAMERA_OV5640_MIPI_V2
	tristate "OmniVision ov5640 camera support using mipi"
	depends on MXC_MIPI_CSI && I2C
	---help---
	  If you plan to use the ov5640 Camera with mipi interface in your MXC system, say Y here.

config MXC_CAMERA_OV5647_MIPI
	tristate "OmniVision ov5647 camera support using mipi"
	depends on MXC_MIPI_CSI && I2C
	---help---
	  If you plan to use the ov5647 Camera with mipi interface in your MXC system, say Y here.

config MXC_TVIN_ADV7180
	tristate "Analog Device adv7180 TV Decoder Input support"
	depends on !VIDEO_MXC_EMMA_CAMERA && I2C
	depends on VIDEO_V4L2_MXC_INT_DEVICE
	---help---
	  If you plan to use the adv7180 video decoder with your MXC system, say Y here.

choice
	prompt "Select Overlay Rounting"
	default MXC_IPU_DEVICE_QUEUE_SDC
	depends on VIDEO_MXC_IPU_CAMERA && FB_MXC_SYNC_PANEL

config MXC_IPU_DEVICE_QUEUE_SDC
	tristate "Queue ipu device for overlay library"
	depends on VIDEO_MXC_IPU_CAMERA
	---help---
	  Use case CSI->MEM->IPU DEVICE->SDC:
		Images from sensor will be frist recieved in memory,then
		queue to ipu device for processing if needed, and displaying
		it on synchronous display with SDC use case.

config MXC_IPU_PRP_VF_SDC
	bool "Pre-Processor VF SDC library"
	depends on VIDEO_MXC_IPU_CAMERA
	---help---
	  Use case PRP_VF_SDC:
		Preprocessing image from smart sensor for viewfinder and
		displaying it on synchronous display with SDC use case.
		If SDC BG is selected, Rotation will not be supported.
		CSI -> IC (PRP VF) -> MEM
		MEM -> IC (ROT) -> MEM
		MEM -> SDC (FG/BG)

endchoice

config MXC_IPU_PRP_ENC
	tristate "Pre-processor Encoder library"
	depends on VIDEO_MXC_IPU_CAMERA
	default y
	---help---
	  Use case PRP_ENC:
		Preprocessing image from smart sensor for encoder.
		CSI -> IC (PRP ENC) -> MEM

config MXC_IPU_CSI_ENC
	tristate "IPU CSI Encoder library"
	depends on VIDEO_MXC_IPU_CAMERA
	default y
	---help---
	  Use case IPU_CSI_ENC:
		Get raw image with CSI from smart sensor for encoder.
		CSI -> MEM
endmenu

endif
