# SPDX-License-Identifier: GPL-2.0-only
config VIDEO_PVRUSB2
	tristate "Hauppauge WinTV-PVR USB2 support"
	depends on VIDEO_V4L2 && I2C
	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
	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.
