# 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_RUNTIME
	depends on PLAT_S5P || 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 m
	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 m
	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 m
	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 m
	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 m
	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
