# SPDX-License-Identifier: GPL-2.0-only
config DVB_BUDGET_CORE
	tristate "SAA7146 DVB cards (aka Budget, Nova-PCI)"
	depends on DVB_CORE && PCI && I2C
	select VIDEO_SAA7146
	select TTPCI_EEPROM
	help
	  Support for simple SAA7146 based DVB cards
	  (so called Budget- or Nova-PCI cards) without onboard
	  MPEG2 decoder.

config DVB_BUDGET
	tristate "Budget cards"
	depends on DVB_BUDGET_CORE && I2C
	select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_VES1X93 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_VES1820 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_L64781 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA8083 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_S5H1420 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10086 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA826X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA1004X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_ISL6423 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STV090x if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STV6110x if MEDIA_SUBDRV_AUTOSELECT
	help
	  Support for simple SAA7146 based DVB cards (so called Budget-
	  or Nova-PCI cards) without onboard MPEG2 decoder, and without
	  analog inputs or an onboard Common Interface connector.

	  Say Y if you own such a card and want to use it.

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

config DVB_BUDGET_CI
	tristate "Budget cards with onboard CI connector"
	depends on DVB_BUDGET_CORE && I2C
	select DVB_STV0297 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA1004X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STB0899 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STB6100 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_LNBP21 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STV0288 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STB6000 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10023 if MEDIA_SUBDRV_AUTOSELECT
	select MEDIA_TUNER_TDA827X if MEDIA_SUBDRV_AUTOSELECT
	depends on RC_CORE
	help
	  Support for simple SAA7146 based DVB cards
	  (so called Budget- or Nova-PCI cards) without onboard
	  MPEG2 decoder, but with onboard Common Interface connector.

	  Note: The Common Interface is not yet supported by this driver
	  due to lack of information from the vendor.

	  Say Y if you own such a card and want to use it.

	  To compile this driver as a module, choose M here: the
	  module will be called budget-ci.

config DVB_BUDGET_AV
	tristate "Budget cards with analog video inputs"
	depends on DVB_BUDGET_CORE && I2C
	select VIDEO_SAA7146_VV
	depends on VIDEO_DEV	# dependencies of VIDEO_SAA7146_VV
	select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STV0299 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA1004X if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10021 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA10023 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_STB0899 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TDA8261 if MEDIA_SUBDRV_AUTOSELECT
	select DVB_TUA6100 if MEDIA_SUBDRV_AUTOSELECT
	help
	  Support for simple SAA7146 based DVB cards
	  (so called Budget- or Nova-PCI cards) without onboard
	  MPEG2 decoder, but with one or more analog video inputs.

	  Say Y if you own such a card and want to use it.

	  To compile this driver as a module, choose M here: the
	  module will be called budget-av.
