config MEDIA_ATTACH
	bool "Load and attach frontend and tuner driver modules as needed"
	depends on VIDEO_MEDIA
	depends on MODULES
	help
	  Remove the static dependency of DVB card drivers on all
	  frontend modules for all possible card variants. Instead,
	  allow the card drivers to only load the frontend modules
	  they require.

	  Also, tuner module will automatically load a tuner driver
	  when needed, for analog mode.

	  This saves several KBytes of memory.

	  Note: You will need module-init-tools v3.2 or later for this feature.

	  If unsure say Y.

config MEDIA_TUNER
	tristate
	default VIDEO_MEDIA && I2C
	depends on VIDEO_MEDIA && I2C
	select FW_LOADER if !MEDIA_TUNER_CUSTOMIZE && HOTPLUG
	select MEDIA_TUNER_XC2028 if !MEDIA_TUNER_CUSTOMIZE && HOTPLUG
	select MEDIA_TUNER_XC5000 if !MEDIA_TUNER_CUSTOMIZE && HOTPLUG
	select MEDIA_TUNER_MT20XX if !MEDIA_TUNER_CUSTOMIZE
	select MEDIA_TUNER_TDA8290 if !MEDIA_TUNER_CUSTOMIZE
	select MEDIA_TUNER_TEA5761 if !MEDIA_TUNER_CUSTOMIZE
	select MEDIA_TUNER_TEA5767 if !MEDIA_TUNER_CUSTOMIZE
	select MEDIA_TUNER_SIMPLE if !MEDIA_TUNER_CUSTOMIZE
	select MEDIA_TUNER_TDA9887 if !MEDIA_TUNER_CUSTOMIZE

menuconfig MEDIA_TUNER_CUSTOMIZE
	bool "Customize analog and hybrid tuner modules to build"
	depends on MEDIA_TUNER
	help
	  This allows the user to deselect tuner drivers unnecessary
	  for their hardware from the build. Use this option with care
	  as deselecting tuner drivers which are in fact necessary will
	  result in V4L/DVB devices which cannot be tuned due to lack of
	  driver support

	  If unsure say N.

if MEDIA_TUNER_CUSTOMIZE

config MEDIA_TUNER_SIMPLE
	tristate "Simple tuner support"
	depends on VIDEO_MEDIA && I2C
	select MEDIA_TUNER_TDA9887
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for various simple tuners.

config MEDIA_TUNER_TDA8290
	tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo"
	depends on VIDEO_MEDIA && I2C
	select MEDIA_TUNER_TDA827X
	select MEDIA_TUNER_TDA18271
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for Philips TDA8290+8275(a) tuner.

config MEDIA_TUNER_TDA827X
	tristate "Philips TDA827X silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A DVB-T silicon tuner module. Say Y when you want to support this tuner.

config MEDIA_TUNER_TDA18271
	tristate "NXP TDA18271 silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A silicon tuner module. Say Y when you want to support this tuner.

config MEDIA_TUNER_TDA9887
	tristate "TDA 9885/6/7 analog IF demodulator"
	depends on VIDEO_MEDIA && I2C
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for Philips TDA9885/6/7
	  analog IF demodulator.

config MEDIA_TUNER_TEA5761
	tristate "TEA 5761 radio tuner (EXPERIMENTAL)"
	depends on VIDEO_MEDIA && I2C
	depends on EXPERIMENTAL
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for the Philips TEA5761 radio tuner.

config MEDIA_TUNER_TEA5767
	tristate "TEA 5767 radio tuner"
	depends on VIDEO_MEDIA && I2C
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for the Philips TEA5767 radio tuner.

config MEDIA_TUNER_MT20XX
	tristate "Microtune 2032 / 2050 tuners"
	depends on VIDEO_MEDIA && I2C
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for the MT2032 / MT2050 tuner.

config MEDIA_TUNER_MT2060
	tristate "Microtune MT2060 silicon IF tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon IF tuner MT2060 from Microtune.

config MEDIA_TUNER_MT2266
	tristate "Microtune MT2266 silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon baseband tuner MT2266 from Microtune.

config MEDIA_TUNER_MT2131
	tristate "Microtune MT2131 silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon baseband tuner MT2131 from Microtune.

config MEDIA_TUNER_QT1010
	tristate "Quantek QT1010 silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon tuner QT1010 from Quantek.

config MEDIA_TUNER_XC2028
	tristate "XCeive xc2028/xc3028 tuners"
	depends on VIDEO_MEDIA && I2C
	depends on HOTPLUG
	select FW_LOADER
	default m if MEDIA_TUNER_CUSTOMIZE
	help
	  Say Y here to include support for the xc2028/xc3028 tuners.

config MEDIA_TUNER_XC5000
	tristate "Xceive XC5000 silicon tuner"
	depends on VIDEO_MEDIA && I2C
	depends on HOTPLUG
	select FW_LOADER
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon tuner XC5000 from Xceive.
	  This device is only used inside a SiP called togther with a
	  demodulator for now.

config MEDIA_TUNER_MXL5005S
	tristate "MaxLinear MSL5005S silicon tuner"
	depends on VIDEO_MEDIA && I2C
	default m if DVB_FE_CUSTOMISE
	help
	  A driver for the silicon tuner MXL5005S from MaxLinear.

endif # MEDIA_TUNER_CUSTOMIZE
