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