menu "Multimedia devices"
        depends on HAS_IOMEM
 
+comment "Multimedia core support"
+
+#
+# V4L core and enabled API's
+#
+
 config VIDEO_DEV
        tristate "Video For Linux"
        ---help---
 
          If you are unsure as to whether this is required, answer Y.
 
-config VIDEO_V4L2
-       tristate
-       depends on VIDEO_DEV && VIDEO_V4L2_COMMON
-       default VIDEO_DEV && VIDEO_V4L2_COMMON
-
-config VIDEO_V4L1
-       tristate
-       depends on VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1
-       default VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1
-
-source "drivers/media/video/Kconfig"
-
-source "drivers/media/radio/Kconfig"
-
-source "drivers/media/dvb/Kconfig"
-
-source "drivers/media/common/Kconfig"
+#
+# DVB Core
+#
 
-config VIDEO_TUNER
-       tristate
-       depends on I2C
-       select TUNER_XC2028 if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_MT20XX if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_TDA8290 if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_TEA5761 if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_TEA5767 if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_SIMPLE if !VIDEO_TUNER_CUSTOMIZE
-       select TUNER_TDA9887 if !VIDEO_TUNER_CUSTOMIZE
-
-menuconfig VIDEO_TUNER_CUSTOMIZE
-       bool "Customize analog tuner modules to build"
-       depends on VIDEO_TUNER
+config DVB_CORE
+       tristate "DVB for Linux"
+       depends on NET && INET
+       select CRC32
        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 devices which cannot be tuned due to lack of
-         driver support
+         Support Digital Video Broadcasting hardware.  Enable this if you
+         own a DVB adapter and want to use it or if you compile Linux for
+         a digital SetTopBox.
 
-         If unsure say N.
-
-if VIDEO_TUNER_CUSTOMIZE
+         DVB core utility functions for device handling, software fallbacks etc.
+         Say Y when you have a DVB card and want to use it. Say Y if your want
+         to build your drivers outside the kernel, but need the DVB core. All
+         in-kernel drivers will select this automatically if needed.
 
-config TUNER_XC2028
-       tristate "XCeive xc2028/xc3028 tuners"
-       depends on I2C && FW_LOADER
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for the xc2028/xc3028 tuners.
+         API specs and user tools are available from <http://www.linuxtv.org/>.
 
-config TUNER_MT20XX
-       tristate "Microtune 2032 / 2050 tuners"
-       depends on I2C
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for the MT2032 / MT2050 tuner.
-
-config TUNER_TDA8290
-       tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo"
-       depends on I2C
-       select DVB_TDA827X
-       select DVB_TDA18271
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for Philips TDA8290+8275(a) tuner.
+         Please report problems regarding this driver to the LinuxDVB
+         mailing list.
 
-config TUNER_TEA5761
-       tristate "TEA 5761 radio tuner (EXPERIMENTAL)"
-       depends on I2C && EXPERIMENTAL
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for the Philips TEA5761 radio tuner.
-
-config TUNER_TEA5767
-       tristate "TEA 5767 radio tuner"
-       depends on I2C
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for the Philips TEA5767 radio tuner.
-
-config TUNER_SIMPLE
-       tristate "Simple tuner support"
-       depends on I2C
-       select TUNER_TDA9887
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for various simple tuners.
+         If unsure say N.
 
-config TUNER_TDA9887
-       tristate "TDA 9885/6/7 analog IF demodulator"
-       depends on I2C
-       default m if VIDEO_TUNER_CUSTOMIZE
-       help
-         Say Y here to include support for Philips TDA9885/6/7
-         analog IF demodulator.
+config VIDEO_MEDIA
+       tristate
+       default DVB_CORE || VIDEO_DEV
+       depends on DVB_CORE || VIDEO_DEV
 
-endif # VIDEO_TUNER_CUSTOMIZE
+comment "Multimedia drivers"
 
-config VIDEOBUF_GEN
-       tristate
+source "drivers/media/common/Kconfig"
 
-config VIDEOBUF_DMA_SG
-       depends on HAS_DMA
-       select VIDEOBUF_GEN
-       tristate
+#
+# Tuner drivers for DVB and V4L
+#
 
-config VIDEOBUF_VMALLOC
-       select VIDEOBUF_GEN
-       tristate
+source "drivers/media/common/tuners/Kconfig"
 
-config VIDEOBUF_DVB
-       tristate
-       select VIDEOBUF_GEN
-       select VIDEOBUF_DMA_SG
+#
+# Video/Radio/Hybrid adapters
+#
 
-config VIDEO_BTCX
-       tristate
+source "drivers/media/video/Kconfig"
 
-config VIDEO_IR_I2C
-       tristate
+source "drivers/media/radio/Kconfig"
 
-config VIDEO_IR
-       tristate
-       depends on INPUT
-       select VIDEO_IR_I2C if I2C
+#
+# DVB adapters
+#
 
-config VIDEO_TVEEPROM
-       tristate
-       depends on I2C
+source "drivers/media/dvb/Kconfig"
 
 config DAB
        boolean "DAB adapters"
 
 # Makefile for the kernel multimedia device drivers.
 #
 
-obj-y := common/
-obj-y += video/
+obj-$(CONFIG_VIDEO_MEDIA) += common/
+
+# Since hybrid devices are here, should be compiled if DVB and/or V4L
+obj-$(CONFIG_VIDEO_MEDIA) += video/
+
 obj-$(CONFIG_VIDEO_DEV) += radio/
 obj-$(CONFIG_DVB_CORE)  += dvb/
-ifeq ($(CONFIG_DVB_CORE),)
-  obj-$(CONFIG_VIDEO_TUNER)  += dvb/frontends/
-endif
 
--- /dev/null
+config DVB_CORE_ATTACH
+       bool "Load and attach frontend driver modules as needed"
+       depends on DVB_CORE
+       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. 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 VIDEO_TUNER
+       tristate
+       default DVB_CORE || VIDEO_DEV
+       depends on DVB_CORE || VIDEO_DEV
+       select TUNER_XC2028 if !VIDEO_TUNER_CUSTOMIZE
+       select DVB_TUNER_XC5000 if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_MT20XX if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_TDA8290 if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_TEA5761 if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_TEA5767 if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_SIMPLE if !VIDEO_TUNER_CUSTOMIZE
+       select TUNER_TDA9887 if !VIDEO_TUNER_CUSTOMIZE
+
+menuconfig VIDEO_TUNER_CUSTOMIZE
+       bool "Customize analog and hybrid tuner modules to build"
+       depends on VIDEO_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 VIDEO_TUNER_CUSTOMIZE
+
+config TUNER_SIMPLE
+       tristate "Simple tuner support"
+       depends on I2C
+       select TUNER_TDA9887
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for various simple tuners.
+
+config TUNER_TDA8290
+       tristate "TDA 8290/8295 + 8275(a)/18271 tuner combo"
+       depends on I2C
+       select DVB_TDA827X
+       select DVB_TDA18271
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for Philips TDA8290+8275(a) tuner.
+
+config DVB_TDA827X
+       tristate "Philips TDA827X silicon tuner"
+       depends on DVB_CORE && I2C
+       default m if DVB_FE_CUSTOMISE
+       help
+         A DVB-T silicon tuner module. Say Y when you want to support this tuner.
+
+config DVB_TDA18271
+       tristate "NXP TDA18271 silicon tuner"
+       depends on I2C
+       default m if DVB_FE_CUSTOMISE
+       help
+         A silicon tuner module. Say Y when you want to support this tuner.
+
+config TUNER_TDA9887
+       tristate "TDA 9885/6/7 analog IF demodulator"
+       depends on I2C
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for Philips TDA9885/6/7
+         analog IF demodulator.
+
+config TUNER_TEA5761
+       tristate "TEA 5761 radio tuner (EXPERIMENTAL)"
+       depends on I2C && EXPERIMENTAL
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for the Philips TEA5761 radio tuner.
+
+config TUNER_TEA5767
+       tristate "TEA 5767 radio tuner"
+       depends on I2C
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for the Philips TEA5767 radio tuner.
+
+config TUNER_MT20XX
+       tristate "Microtune 2032 / 2050 tuners"
+       depends on I2C
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for the MT2032 / MT2050 tuner.
+
+config TUNER_XC2028
+       tristate "XCeive xc2028/xc3028 tuners"
+       depends on I2C && FW_LOADER
+       default m if VIDEO_TUNER_CUSTOMIZE
+       help
+         Say Y here to include support for the xc2028/xc3028 tuners.
+
+config DVB_TUNER_XC5000
+       tristate "Xceive XC5000 silicon tuner"
+       depends on I2C
+       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.
+
+endif # VIDEO_TUNER_CUSTOMIZE
 
--- /dev/null
+#
+# Makefile for common V4L/DVB tuners
+#
+
+tda18271-objs := tda18271-maps.o tda18271-common.o tda18271-fe.o
+
+obj-$(CONFIG_TUNER_XC2028) += tuner-xc2028.o
+obj-$(CONFIG_TUNER_SIMPLE) += tuner-simple.o
+# tuner-types will be merged into tuner-simple, in the future
+obj-$(CONFIG_TUNER_SIMPLE) += tuner-types.o
+obj-$(CONFIG_TUNER_MT20XX) += mt20xx.o
+obj-$(CONFIG_TUNER_TDA8290) += tda8290.o
+obj-$(CONFIG_TUNER_TEA5767) += tea5767.o
+obj-$(CONFIG_TUNER_TEA5761) += tea5761.o
+obj-$(CONFIG_TUNER_TDA9887) += tda9887.o
+obj-$(CONFIG_DVB_TDA827X) += tda827x.o
+obj-$(CONFIG_DVB_TDA18271) += tda18271.o
+obj-$(CONFIG_DVB_TUNER_XC5000) += xc5000.o
+
+EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
+EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 #
-# Multimedia device configuration
+# DVB device configuration
 #
 
-source "drivers/media/dvb/dvb-core/Kconfig"
-
 menuconfig DVB_CAPTURE_DRIVERS
        bool "DVB/ATSC adapters"
        depends on DVB_CORE
 
 obj-$(CONFIG_DVB_B2C2_FLEXCOP_USB) += b2c2-flexcop-usb.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
-EXTRA_CFLAGS += -Idrivers/media/video/
+EXTRA_CFLAGS += -Idrivers/media/common/tuners/
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 EXTRA_CFLAGS += -Idrivers/media/video/bt8xx
-EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 
+++ /dev/null
-config DVB_CORE
-       tristate "DVB for Linux"
-       depends on NET && INET
-       select CRC32
-       help
-         Support Digital Video Broadcasting hardware.  Enable this if you
-         own a DVB adapter and want to use it or if you compile Linux for
-         a digital SetTopBox.
-
-         DVB core utility functions for device handling, software fallbacks etc.
-         Say Y when you have a DVB card and want to use it. Say Y if your want
-         to build your drivers outside the kernel, but need the DVB core. All
-         in-kernel drivers will select this automatically if needed.
-
-         API specs and user tools are available from <http://www.linuxtv.org/>.
-
-         Please report problems regarding this driver to the LinuxDVB
-         mailing list.
-
-         If unsure say N.
-
-config DVB_CORE_ATTACH
-       bool "Load and attach frontend modules as needed"
-       depends on DVB_CORE
-       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. This saves several KBytes of memory.
-
-         Note: You will need module-init-tools v3.2 or later for this feature.
-
-         If unsure say Y.
 
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/ -Idrivers/media/dvb/frontends/
 # due to tuner-xc3028
-EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 
 
        help
          A DVB-S silicon tuner module. Say Y when you want to support this tuner.
 
-config DVB_TDA827X
-       tristate "Philips TDA827X silicon tuner"
-       depends on DVB_CORE && I2C
-       default m if DVB_FE_CUSTOMISE
-       help
-         A DVB-T silicon tuner module. Say Y when you want to support this tuner.
-
-config DVB_TDA18271
-       tristate "NXP TDA18271 silicon tuner"
-       depends on I2C
-       default m if DVB_FE_CUSTOMISE
-       help
-         A silicon tuner module. Say Y when you want to support this tuner.
-
 config DVB_TUNER_QT1010
        tristate "Quantek QT1010 silicon tuner"
        depends on DVB_CORE && I2C
          This device is only used inside a SiP called togther with a
          demodulator for now.
 
-config DVB_TUNER_XC5000
-       tristate "Xceive XC5000 silicon tuner"
-       depends on I2C
-       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 DVB_TUNER_ITD1000
        tristate "Integrant ITD1000 Zero IF tuner for DVB-S/DSS"
        depends on DVB_CORE && I2C
 
 #
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core/
-EXTRA_CFLAGS += -Idrivers/media/video/
-
-tda18271-objs := tda18271-tables.o tda18271-common.o tda18271-fe.o
+EXTRA_CFLAGS += -Idrivers/media/common/tuners/
 
 obj-$(CONFIG_DVB_PLL) += dvb-pll.o
 obj-$(CONFIG_DVB_STV0299) += stv0299.o
 obj-$(CONFIG_DVB_ISL6421) += isl6421.o
 obj-$(CONFIG_DVB_TDA10086) += tda10086.o
 obj-$(CONFIG_DVB_TDA826X) += tda826x.o
-obj-$(CONFIG_DVB_TDA827X) += tda827x.o
-obj-$(CONFIG_DVB_TDA18271) += tda18271.o
 obj-$(CONFIG_DVB_TUNER_MT2060) += mt2060.o
 obj-$(CONFIG_DVB_TUNER_MT2266) += mt2266.o
 obj-$(CONFIG_DVB_TUNER_DIB0070) += dib0070.o
 obj-$(CONFIG_DVB_TUA6100) += tua6100.o
 obj-$(CONFIG_DVB_TUNER_MT2131) += mt2131.o
 obj-$(CONFIG_DVB_S5H1409) += s5h1409.o
-obj-$(CONFIG_DVB_TUNER_XC5000) += xc5000.o
 obj-$(CONFIG_DVB_TUNER_ITD1000) += itd1000.o
 obj-$(CONFIG_DVB_AU8522) += au8522.o
 obj-$(CONFIG_DVB_TDA10048) += tda10048.o
 
+#
+# Generic video config states
+#
+
+config VIDEO_V4L2
+       tristate
+       depends on VIDEO_DEV && VIDEO_V4L2_COMMON
+       default VIDEO_DEV && VIDEO_V4L2_COMMON
+
+config VIDEO_V4L1
+       tristate
+       depends on VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1
+       default VIDEO_DEV && VIDEO_V4L2_COMMON && VIDEO_ALLOW_V4L1
+
+config VIDEOBUF_GEN
+       tristate
+
+config VIDEOBUF_DMA_SG
+       depends on HAS_DMA
+       select VIDEOBUF_GEN
+       tristate
+
+config VIDEOBUF_VMALLOC
+       select VIDEOBUF_GEN
+       tristate
+
+config VIDEOBUF_DVB
+       tristate
+       select VIDEOBUF_GEN
+       select VIDEOBUF_DMA_SG
+
+config VIDEO_BTCX
+       tristate
+
+config VIDEO_IR_I2C
+       tristate
+
+config VIDEO_IR
+       tristate
+       depends on INPUT
+       select VIDEO_IR_I2C if I2C
+
+config VIDEO_TVEEPROM
+       tristate
+       depends on I2C
+
 #
 # Multimedia Video device configuration
 #
 
 
 obj-$(CONFIG_VIDEO_TUNER) += tuner.o
 
-obj-$(CONFIG_TUNER_XC2028) += tuner-xc2028.o
-obj-$(CONFIG_TUNER_SIMPLE) += tuner-simple.o
-# tuner-types will be merged into tuner-simple, in the future
-obj-$(CONFIG_TUNER_SIMPLE) += tuner-types.o
-obj-$(CONFIG_TUNER_MT20XX) += mt20xx.o
-obj-$(CONFIG_TUNER_TDA8290) += tda8290.o
-obj-$(CONFIG_TUNER_TEA5767) += tea5767.o
-obj-$(CONFIG_TUNER_TEA5761) += tea5761.o
-obj-$(CONFIG_TUNER_TDA9887) += tda9887.o
-
 obj-$(CONFIG_VIDEOBUF_GEN) += videobuf-core.o
 obj-$(CONFIG_VIDEOBUF_DMA_SG) += videobuf-dma-sg.o
 obj-$(CONFIG_VIDEOBUF_VMALLOC) += videobuf-vmalloc.o
 
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 
 
 obj-$(CONFIG_VIDEO_AU0828) += au0828.o
 
-EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 
 obj-$(CONFIG_VIDEO_BT848) += bttv.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 
 obj-$(CONFIG_VIDEO_CX23885) += cx23885.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 
 obj-$(CONFIG_VIDEO_CX88_VP3054) += cx88-vp3054-i2c.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 obj-$(CONFIG_VIDEO_EM28XX_DVB) += em28xx-dvb.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 
 obj-$(CONFIG_VIDEO_FB_IVTV) += ivtvfb.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 
 obj-$(CONFIG_VIDEO_PVRUSB2) += pvrusb2.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 obj-$(CONFIG_VIDEO_SAA7134_DVB) += saa7134-dvb.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners
 EXTRA_CFLAGS += -Idrivers/media/dvb/dvb-core
 EXTRA_CFLAGS += -Idrivers/media/dvb/frontends
 
 obj-$(CONFIG_VIDEO_USBVISION) += usbvision.o
 
 EXTRA_CFLAGS += -Idrivers/media/video
+EXTRA_CFLAGS += -Idrivers/media/common/tuners