media: Kconfig: better support hybrid TV devices
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 25 Mar 2020 07:36:36 +0000 (08:36 +0100)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Tue, 14 Apr 2020 08:29:05 +0000 (10:29 +0200)
Right now, if one has an hybrid TV card, it has to select
both analog and digital TV support, as otherwise the needed
core support won't be selected.

Change the logic to auto-select the core support for those
drivers, as this is a way more intuitive.

It should be noticed that, as now both DVB_CORE and VIDEO_DEV
defaults depends on selecting a hybrid cards, we had to remove
the explicit dependencies there, in order to avoid circular
dependencies.

That requires some tricks:

1) the prompt should not be not visible when an hybrid card
   is selected, as the user shold not change it.

2) When a media hybrid device is selected, the modular
   option for DVB_CORE and VIDEO_DEV will follow the
   MEDIA_SUPPORT dependency, as we can't have a core
   built with "y" with a driver built as module.

Note: while here, moved two pure V4L2 PCI drivers out of the
"hybrid" part of config and consider pvrusb2 as an hybrid
device.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
14 files changed:
drivers/media/Kconfig
drivers/media/pci/Kconfig
drivers/media/pci/bt8xx/Kconfig
drivers/media/pci/cx18/Kconfig
drivers/media/pci/cx23885/Kconfig
drivers/media/pci/cx88/Kconfig
drivers/media/pci/saa7134/Kconfig
drivers/media/pci/saa7164/Kconfig
drivers/media/platform/Kconfig
drivers/media/usb/Kconfig
drivers/media/usb/au0828/Kconfig
drivers/media/usb/cx231xx/Kconfig
drivers/media/usb/pvrusb2/Kconfig
drivers/media/usb/tm6000/Kconfig

index f6763d02f1bef04125f4d53863a4afc334ca00b0..f400370b29282d48ca8c1d12a1f8186d161d43f0 100644 (file)
@@ -44,20 +44,14 @@ config MEDIA_ANALOG_TV_SUPPORT
        help
          Enable analog TV support.
 
-         Say Y when you have a TV board with analog support or with a
-         hybrid analog/digital TV chipset.
-
-         Note: There are several DVB cards that are based on chips that
-               support both analog and digital TV. Disabling this option
-               will disable support for them.
+         Say Y when you have a board with analog TV support.
 
 config MEDIA_DIGITAL_TV_SUPPORT
        bool "Digital TV support"
        help
          Enable digital TV support.
 
-         Say Y when you have a board with digital support or a board with
-         hybrid digital TV and analog TV.
+         Say Y when you have a board with digital TV support.
 
 config MEDIA_RADIO_SUPPORT
        bool "AM/FM radio receivers/transmitters support"
@@ -69,10 +63,6 @@ config MEDIA_RADIO_SUPPORT
 
          Say Y when you have a board with radio support.
 
-         Note: There are several TV cards that are based on chips that
-               support radio reception. Disabling this option will
-               disable support for them.
-
 config MEDIA_SDR_SUPPORT
        bool "Software defined radio support"
        help
@@ -123,9 +113,13 @@ source "drivers/media/mc/Kconfig"
 #      Only enables if one of the V4L2 types (ATV, webcam, radio) is selected
 #
 
+comment "Video4Linux core enabled to support hybrid TV devices"
+       depends on MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI
+
 config VIDEO_DEV
        tristate
-       default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT
+       prompt "Video4Linux core" if !(MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI)
+       default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT || MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI
 
 config VIDEO_V4L2_SUBDEV_API
        bool "V4L2 sub-device userspace API"
@@ -143,8 +137,12 @@ source "drivers/media/v4l2-core/Kconfig"
 #      Only enables if one of DTV is selected
 #
 
+comment "Digital TV core enabled to support hybrid TV devices"
+       depends on MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI
+
 config DVB_CORE
        tristate
+       prompt "Digital TV core"  if !(MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI)
        depends on MEDIA_DIGITAL_TV_SUPPORT
        depends on (I2C || I2C=n)
        default y
index e576283ebbf5e6ee987fd4362819c67aa0c4cab4..348da044ec7801cf7ccae386a77518d42b526582 100644 (file)
@@ -1,4 +1,11 @@
 # SPDX-License-Identifier: GPL-2.0-only
+
+# Should match the hybrid card list below
+config MEDIA_HYBRID_PCI
+       bool
+       depends on VIDEO_CX18 || VIDEO_CX23885 || VIDEO_CX88 || VIDEO_BT848 || VIDEO_SAA7134 || VIDEO_SAA7164
+       default y
+
 if PCI && MEDIA_SUPPORT
 
 menuconfig MEDIA_PCI_SUPPORT
@@ -24,18 +31,18 @@ if MEDIA_ANALOG_TV_SUPPORT
 source "drivers/media/pci/ivtv/Kconfig"
 source "drivers/media/pci/saa7146/Kconfig"
 source "drivers/media/pci/dt3155/Kconfig"
+source "drivers/media/pci/cx25821/Kconfig"
+source "drivers/media/pci/cobalt/Kconfig"
 endif
 
 if MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT
        comment "Media capture/analog/hybrid TV support"
 source "drivers/media/pci/cx18/Kconfig"
 source "drivers/media/pci/cx23885/Kconfig"
-source "drivers/media/pci/cx25821/Kconfig"
 source "drivers/media/pci/cx88/Kconfig"
 source "drivers/media/pci/bt8xx/Kconfig"
 source "drivers/media/pci/saa7134/Kconfig"
 source "drivers/media/pci/saa7164/Kconfig"
-source "drivers/media/pci/cobalt/Kconfig"
 
 endif
 
index 75d172a6f54c0eeda07d9461fed09483921a3e18..c79c6175c2627ef1039c02f451e750ca6200a035 100644 (file)
@@ -1,11 +1,10 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_BT848
        tristate "BT848 Video For Linux"
-       depends on VIDEO_DEV && PCI && I2C && VIDEO_V4L2
+       depends on PCI && I2C
        select I2C_ALGOBIT
        select VIDEOBUF_DMA_SG
        depends on RC_CORE
-       depends on MEDIA_RADIO_SUPPORT
        select VIDEO_TUNER
        select VIDEO_TVEEPROM
        select VIDEO_MSP3400 if MEDIA_SUBDRV_AUTOSELECT
@@ -24,7 +23,7 @@ config VIDEO_BT848
 
 config DVB_BT8XX
        tristate "DVB/ATSC Support for bt878 based TV cards"
-       depends on DVB_CORE && PCI && I2C && VIDEO_BT848
+       depends on PCI && I2C && VIDEO_BT848
        select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_SP887X if MEDIA_SUBDRV_AUTOSELECT
        select DVB_NXT6000 if MEDIA_SUBDRV_AUTOSELECT
index 7074a1071302fa520e974491bd4f3164605ea6b4..110e072bd8baa5e9d98747f355d9987f2ee68207 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_CX18
        tristate "Conexant cx23418 MPEG encoder support"
-       depends on VIDEO_V4L2 && DVB_CORE && PCI && I2C
+       depends on PCI && I2C
        select I2C_ALGOBIT
        select VIDEOBUF_VMALLOC
        depends on RC_CORE
index 926da881929d52ad8bc9408ee4be23f4627e7829..e8f4edf270c83c5a3aaf29aff6fdc4eafa727659 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_CX23885
        tristate "Conexant cx23885 (2388x successor) support"
-       depends on DVB_CORE && VIDEO_DEV && PCI && I2C && INPUT && SND
+       depends on PCI && I2C && INPUT && SND
        select SND_PCM
        select I2C_ALGOBIT
        select VIDEO_TUNER
@@ -53,7 +53,7 @@ config VIDEO_CX23885
 
 config MEDIA_ALTERA_CI
        tristate "Altera FPGA based CI module"
-       depends on VIDEO_CX23885 && DVB_CORE
+       depends on VIDEO_CX23885
        select ALTERA_STAPL
        help
          An Altera FPGA CI module for NetUP Dual DVB-T/C RF CI card.
index 24e1e7c41744a5df7d0741038b05384dffeccf74..ab994b3049f406dd3c8ef67142858eec1d7009f0 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_CX88
        tristate "Conexant 2388x (bt878 successor) support"
-       depends on VIDEO_DEV && PCI && I2C && RC_CORE
+       depends on PCI && I2C && RC_CORE
        select I2C_ALGOBIT
        select VIDEOBUF2_DMA_SG
        select VIDEO_TUNER
@@ -44,7 +44,7 @@ config VIDEO_CX88_BLACKBIRD
 
 config VIDEO_CX88_DVB
        tristate "DVB/ATSC Support for cx2388x based TV cards"
-       depends on VIDEO_CX88 && DVB_CORE
+       depends on VIDEO_CX88
        select VIDEOBUF2_DVB
        select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
        select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
index 30c1759682a9fe5678af3a0c6bc496465f4c8be5..a2af02f6d5938930633500318d56a935882fbe9d 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_SAA7134
        tristate "Philips SAA7134 support"
-       depends on VIDEO_DEV && PCI && I2C
+       depends on PCI && I2C
        select VIDEOBUF2_DMA_SG
        select VIDEO_TUNER
        select VIDEO_TVEEPROM
@@ -37,7 +37,7 @@ config VIDEO_SAA7134_RC
 
 config VIDEO_SAA7134_DVB
        tristate "DVB/ATSC Support for saa7134 based TV cards"
-       depends on VIDEO_SAA7134 && DVB_CORE
+       depends on VIDEO_SAA7134
        select VIDEOBUF2_DVB
        select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
        select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
index 6655c3e504cdf268fb0e7f46540dbf0744c9e5c3..8df933a722a7efba73637c6ef8a8371d047d5d88 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_SAA7164
        tristate "NXP SAA7164 support"
-       depends on DVB_CORE && VIDEO_DEV && PCI && I2C
+       depends on PCI && I2C
        select I2C_ALGOBIT
        select FW_LOADER
        select VIDEO_TUNER
index 80028337bf00c0b2ed718cf4668bbb9c23ef74e2..6b693cd0576ee0dc45da7732cb9425abd250e6b1 100644 (file)
@@ -531,7 +531,7 @@ config VIDEO_TI_CSC
 
 menuconfig DVB_PLATFORM_DRIVERS
        bool "DVB platform devices"
-       depends on MEDIA_DIGITAL_TV_SUPPORT
+       select DVB_CORE
        help
          Say Y here to enable support for platform-specific Digital TV drivers.
 
index bf08393e38d167991c95b4cde49fbca6c7b4f48d..036aa4385fdcc5241f5a08beaa3f5fea427d1dbb 100644 (file)
@@ -5,6 +5,12 @@ config TTPCI_EEPROM
        tristate
        depends on I2C
 
+# Should match the hybrid card list below
+config MEDIA_HYBRID_USB
+       bool
+       depends on VIDEO_AU0828 || VIDEO_CX231XX || VIDEO_TM6000 || VIDEO_PVRUSB2
+       default y
+
 if USB && MEDIA_SUPPORT
 
 menuconfig MEDIA_USB_SUPPORT
@@ -29,7 +35,6 @@ endif
 
 if MEDIA_ANALOG_TV_SUPPORT
        comment "Analog TV USB devices"
-source "drivers/media/usb/pvrusb2/Kconfig"
 source "drivers/media/usb/hdpvr/Kconfig"
 source "drivers/media/usb/stk1160/Kconfig"
 source "drivers/media/usb/go7007/Kconfig"
@@ -39,6 +44,7 @@ if (MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT)
        comment "Analog/digital TV USB devices"
 source "drivers/media/usb/au0828/Kconfig"
 source "drivers/media/usb/cx231xx/Kconfig"
+source "drivers/media/usb/pvrusb2/Kconfig"
 source "drivers/media/usb/tm6000/Kconfig"
 endif
 
index 05cc6c48c26fbe870edcf85f0661facf5230b4f3..2f5ee684a27897aee3d11756d1cc5b4aea3c3f79 100644 (file)
@@ -2,12 +2,12 @@
 
 config VIDEO_AU0828
        tristate "Auvitek AU0828 support"
-       depends on I2C && INPUT && DVB_CORE && USB && VIDEO_V4L2
+       depends on I2C && INPUT && USB
        select MEDIA_CONTROLLER
        select MEDIA_CONTROLLER_DVB
        select I2C_ALGOBIT
        select VIDEO_TVEEPROM
-       select VIDEOBUF2_VMALLOC if VIDEO_V4L2
+       select VIDEOBUF2_VMALLOC
        select DVB_AU8522_DTV if MEDIA_SUBDRV_AUTOSELECT
        select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
        select MEDIA_TUNER_MXL5007T if MEDIA_SUBDRV_AUTOSELECT
@@ -22,8 +22,6 @@ config VIDEO_AU0828
 config VIDEO_AU0828_V4L2
        bool "Auvitek AU0828 v4l2 analog video support"
        depends on VIDEO_AU0828
-       depends on VIDEO_V4L2=y || VIDEO_V4L2=VIDEO_AU0828
-       select DVB_AU8522_V4L if MEDIA_SUBDRV_AUTOSELECT
        select VIDEO_TUNER
        default y
        help
index 2fe2b2d335ba19872e1613b52ecfab7102270770..7e3b189f9dca41b2c55546d74cf7fe0050ccac78 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_CX231XX
        tristate "Conexant cx231xx USB video capture support"
-       depends on VIDEO_DEV && I2C && I2C_MUX
+       depends on I2C && I2C_MUX
        select VIDEO_TUNER
        select VIDEO_TVEEPROM
        select VIDEOBUF2_VMALLOC
@@ -40,7 +40,7 @@ config VIDEO_CX231XX_ALSA
 
 config VIDEO_CX231XX_DVB
        tristate "DVB/ATSC Support for Cx231xx based TV cards"
-       depends on VIDEO_CX231XX && DVB_CORE
+       depends on VIDEO_CX231XX
        select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
        select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT
index e6a4f730591b87547fa2271bbfecdd715ff95d29..5bf45f2b2517ac15680f285836f86bf047168b4a 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_PVRUSB2
        tristate "Hauppauge WinTV-PVR USB2 support"
-       depends on VIDEO_V4L2 && I2C
+       depends on I2C
        select VIDEO_TUNER
        select VIDEO_TVEEPROM
        select VIDEO_CX2341X
@@ -36,7 +36,7 @@ config VIDEO_PVRUSB2_SYSFS
 config VIDEO_PVRUSB2_DVB
        bool "pvrusb2 ATSC/DVB support"
        default y
-       depends on VIDEO_PVRUSB2 && DVB_CORE
+       depends on VIDEO_PVRUSB2
        select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
        select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
        select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
index 56e977deba815cd92a073d2e5688131724dc2460..ad9cfa855eac0c96acc4325da724cb7c9301b603 100644 (file)
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 config VIDEO_TM6000
        tristate "TV Master TM5600/6000/6010 driver"
-       depends on VIDEO_DEV && I2C && INPUT && RC_CORE && USB
+       depends on I2C && INPUT && RC_CORE && USB
        select VIDEO_TUNER
        select MEDIA_TUNER_XC2028
        select MEDIA_TUNER_XC5000
@@ -28,7 +28,7 @@ config VIDEO_TM6000_ALSA
 
 config VIDEO_TM6000_DVB
        tristate "DVB Support for tm6000 based TV cards"
-       depends on VIDEO_TM6000 && DVB_CORE && USB
+       depends on VIDEO_TM6000 && USB
        select DVB_ZL10353
        help
          This adds support for DVB cards based on the tm5600/tm6000 chip.