# drivers/media/platform/s5p-tv/Kconfig
#
# Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
#	http://www.samsung.com/
# Tomasz Stanislawski <t.stanislaws@samsung.com>
#
# Licensed under GPL

config VIDEO_SAMSUNG_S5P_TV
	bool "Samsung TV driver for S5P platform"
	depends on PM
	depends on ARCH_S5PV210 || ARCH_EXYNOS || COMPILE_TEST
	default n
	---help---
	  Say Y here to enable selecting the TV output devices for
	  Samsung S5P platform.

if VIDEO_SAMSUNG_S5P_TV

config VIDEO_SAMSUNG_S5P_HDMI
	tristate "Samsung HDMI Driver"
	depends on VIDEO_V4L2
	depends on VIDEO_SAMSUNG_S5P_TV
	select VIDEO_SAMSUNG_S5P_HDMIPHY
	help
	  Say Y here if you want support for the HDMI output
	  interface in S5P Samsung SoC. The driver can be compiled
	  as module. It is an auxiliary driver, that exposes a V4L2
	  subdev for use by other drivers. This driver requires
	  hdmiphy driver to work correctly.

config VIDEO_SAMSUNG_S5P_HDMI_DEBUG
	bool "Enable debug for HDMI Driver"
	depends on VIDEO_SAMSUNG_S5P_HDMI
	default n
	help
	  Enables debugging for HDMI driver.

config VIDEO_SAMSUNG_S5P_HDMIPHY
	tristate "Samsung HDMIPHY Driver"
	depends on VIDEO_DEV && VIDEO_V4L2 && I2C
	depends on VIDEO_SAMSUNG_S5P_TV
	help
	  Say Y here if you want support for the physical HDMI
	  interface in S5P Samsung SoC. The driver can be compiled
	  as module. It is an I2C driver, that exposes a V4L2
	  subdev for use by other drivers.

config VIDEO_SAMSUNG_S5P_SII9234
	tristate "Samsung SII9234 Driver"
	depends on VIDEO_DEV && VIDEO_V4L2 && I2C
	depends on VIDEO_SAMSUNG_S5P_TV
	help
	  Say Y here if you want support for the MHL interface
	  in S5P Samsung SoC. The driver can be compiled
	  as module. It is an I2C driver, that exposes a V4L2
	  subdev for use by other drivers.

config VIDEO_SAMSUNG_S5P_SDO
	tristate "Samsung Analog TV Driver"
	depends on VIDEO_DEV && VIDEO_V4L2
	depends on VIDEO_SAMSUNG_S5P_TV
	help
	  Say Y here if you want support for the analog TV output
	  interface in S5P Samsung SoC. The driver can be compiled
	  as module. It is an auxiliary driver, that exposes a V4L2
	  subdev for use by other drivers. This driver requires
	  hdmiphy driver to work correctly.

config VIDEO_SAMSUNG_S5P_MIXER
	tristate "Samsung Mixer and Video Processor Driver"
	depends on VIDEO_DEV && VIDEO_V4L2
	depends on VIDEO_SAMSUNG_S5P_TV
	depends on HAS_DMA
	select VIDEOBUF2_DMA_CONTIG
	help
	  Say Y here if you want support for the Mixer in Samsung S5P SoCs.
	  This device produce image data to one of output interfaces.

config VIDEO_SAMSUNG_S5P_MIXER_DEBUG
	bool "Enable debug for Mixer Driver"
	depends on VIDEO_SAMSUNG_S5P_MIXER
	default n
	help
	  Enables debugging for Mixer driver.

endif # VIDEO_SAMSUNG_S5P_TV
