config DVB_AV7110
	tristate "AV7110 cards"
	depends on DVB_CORE && PCI
	select FW_LOADER
	select VIDEO_DEV
	select VIDEO_SAA7146_VV
	select DVB_VES1820
	select DVB_VES1X93
	select DVB_STV0299
	select DVB_TDA8083
	select DVB_SP8870
	select DVB_STV0297
	select DVB_L64781
	help
	  Support for SAA7146 and AV7110 based DVB cards as produced 
	  by Fujitsu-Siemens, Technotrend, Hauppauge and others.

	  This driver only supports the fullfeatured cards with
	  onboard MPEG2 decoder.

          This driver needs an external firmware. Please use the script
          "<kerneldir>/Documentation/dvb/get_dvb_firmware av7110" to
          download/extract it, and then copy it to /usr/lib/hotplug/firmware.

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

config DVB_AV7110_FIRMWARE
	bool "Compile AV7110 firmware into the driver"
	depends on DVB_AV7110 && !STANDALONE
	default y if DVB_AV7110=y
	help
	  The AV7110 firmware is normally loaded by the firmware hotplug manager.
	  If you want to compile the firmware into the driver you need to say
	  Y here and provide the correct path of the firmware. You need this
	  option if you want to compile the whole driver statically into the
	  kernel. 

	  All other people say N.

config DVB_AV7110_FIRMWARE_FILE
	string "Full pathname of av7110 firmware file"
	depends on DVB_AV7110_FIRMWARE
	default "/usr/lib/hotplug/firmware/dvb-ttpci-01.fw"

config DVB_AV7110_OSD
	bool "AV7110 OSD support"
	depends on DVB_AV7110
	default y if DVB_AV7110=y || DVB_AV7110=m
	help
	  The AV7110 firmware provides some code to generate an OnScreenDisplay
	  on the video output. This is kind of nonstandard and not guaranteed to
	  be maintained.

	  Anyway, some popular DVB software like VDR uses this OSD to render
	  its menus, so say Y if you want to use this software.

	  All other people say N.

config DVB_BUDGET
	tristate "Budget cards"
	depends on DVB_CORE && PCI
	select VIDEO_SAA7146
	select DVB_STV0299
	select DVB_VES1X93
	select DVB_VES1820
	select DVB_L64781
	select DVB_TDA8083
	select DVB_TDA10021
	help
	  Support for simple SAA7146 based DVB cards
	  (so called Budget- or Nova-PCI cards) without onboard
	  MPEG2 decoder.

	  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_CORE && PCI
	select VIDEO_SAA7146
	select DVB_STV0299
	select DVB_TDA1004X
	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_CORE && PCI
	select VIDEO_DEV
	select VIDEO_SAA7146_VV
	select DVB_STV0299
	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.

config DVB_BUDGET_PATCH
	tristate "AV7110 cards with Budget Patch"
	depends on DVB_CORE && DVB_BUDGET
	select DVB_AV7110
	select DVB_STV0299
	select DVB_VES1X93
	select DVB_TDA8083
	help
	  Support for Budget Patch (full TS) modification on 
	  SAA7146+AV7110 based cards (DVB-S cards). This
	  driver doesn't use onboard MPEG2 decoder. The 
	  card is driven in Budget-only mode. Card is
	  required to have loaded firmware to tune properly.
	  Firmware can be loaded by insertion and removal of
	  standard AV7110 driver prior to loading this
	  driver.

	  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-patch.
