# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_PVRUSB2
	tristate "Hauppauge WinTV-PVR USB2 support"
	depends on VIDEO_DEV && I2C && DVB_CORE
	select VIDEO_TUNER
	select VIDEO_TVEEPROM
	select VIDEO_CX2341X
	select VIDEO_SAA711X
	select VIDEO_CX25840
	select VIDEO_MSP3400
	select VIDEO_WM8775
	select VIDEO_CS53L32A
	help
	  This is a video4linux driver for Conexant 23416 based
	  usb2 personal video recorder devices.

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

config VIDEO_PVRUSB2_SYSFS
	bool "pvrusb2 sysfs support"
	default y
	depends on VIDEO_PVRUSB2 && SYSFS
	help
	  This option enables the operation of a sysfs based
	  interface for query and control of the pvrusb2 driver.

	  This is not generally needed for v4l applications,
	  although certain applications are optimized to take
	  advantage of this feature.

	  If you are in doubt, say Y.

	  Note: This feature is experimental and subject to change.

config VIDEO_PVRUSB2_DVB
	bool "pvrusb2 ATSC/DVB support"
	default y
	depends on VIDEO_PVRUSB2 && DVB_CORE
	depends on VIDEO_PVRUSB2=m || DVB_CORE=y
	select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10048 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LGDT3306A if MEDIA_SUBDRV_AUTOSELECT
	select DVB_SI2168 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_SIMPLE if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA8290 if MEDIA_SUBDRV_AUTOSELECT
	help
	  This option enables a DVB interface for the pvrusb2 driver.
	  If your device does not support digital television, this
	  feature will have no affect on the driver's operation.

	  If you are in doubt, say Y.

config VIDEO_PVRUSB2_DEBUGIFC
	bool "pvrusb2 debug interface"
	depends on VIDEO_PVRUSB2_SYSFS
	help
	  This option enables the inclusion of a debug interface
	  in the pvrusb2 driver, hosted through sysfs.

	  You do not need to select this option unless you plan
	  on debugging the driver or performing a manual firmware
	  extraction.

	  If you are in doubt, say N.
