# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_EM28XX
	tristate "Empia EM28xx USB devices support"
	depends on VIDEO_DEV && I2C
	select VIDEO_TUNER
	select VIDEO_TVEEPROM

config VIDEO_EM28XX_V4L2
	tristate "Empia EM28xx analog TV, video capture and/or webcam support"
	depends on VIDEO_EM28XX
	select VIDEOBUF2_VMALLOC
	select VIDEO_SAA711X if MEDIA_SUBDRV_AUTOSELECT
	select VIDEO_TVP5150 if MEDIA_SUBDRV_AUTOSELECT
	select VIDEO_MSP3400 if MEDIA_SUBDRV_AUTOSELECT
	select VIDEO_MT9V011 if MEDIA_SUBDRV_AUTOSELECT && VIDEO_CAMERA_SENSOR
	select VIDEO_OV2640 if MEDIA_SUBDRV_AUTOSELECT && VIDEO_CAMERA_SENSOR
	help
	  This is a video4linux driver for Empia 28xx based TV cards.

	  To compile this driver as a module, choose M here: the
	  module will be called em28xx

config VIDEO_EM28XX_ALSA
	depends on VIDEO_EM28XX && SND
	select SND_PCM
	tristate "Empia EM28xx ALSA audio module"
	help
	  This is an ALSA driver for some Empia 28xx based TV cards.

	  This is not required for em2800/em2820/em2821 boards. However,
	  newer em28xx devices uses Vendor Class for audio, instead of
	  implementing the USB Audio Class. For those chips, this module
	  will enable digital audio.

	  To compile this driver as a module, choose M here: the
	  module will be called em28xx-alsa

config VIDEO_EM28XX_DVB
	tristate "DVB/ATSC Support for em28xx based TV cards"
	depends on VIDEO_EM28XX && DVB_CORE
	select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LGDT3305 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LGDT3306A if MEDIA_SUBDRV_AUTOSELECT
	select DVB_ZL10353 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10023 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_S921 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_DRXD if MEDIA_SUBDRV_AUTOSELECT
	select DVB_CXD2820R if MEDIA_SUBDRV_AUTOSELECT
	select DVB_DRXK if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA18271C2DD if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10071 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_A8293 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_QT1010 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA18212 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_M88DS3103 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TS2020 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_DRX39XYJ if MEDIA_SUBDRV_AUTOSELECT
	select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_SI2157 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TC90522 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_QM1D1C0042 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_XC2028 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_MT2060 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_MXL692 if MEDIA_SUBDRV_AUTOSELECT
	help
	  This adds support for DVB cards based on the
	  Empiatech em28xx chips.

config VIDEO_EM28XX_RC
	tristate "EM28XX Remote Controller support"
	depends on RC_CORE
	depends on VIDEO_EM28XX
	depends on !(RC_CORE=m && VIDEO_EM28XX=y)
	default VIDEO_EM28XX
	select BITREVERSE
	help
	  Enables Remote Controller support on em28xx driver.
