OSDN Git Service

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 f6763d0..f400370 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 e576283..348da04 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 75d172a..c79c617 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 7074a10..110e072 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 926da88..e8f4edf 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 24e1e7c..ab994b3 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 30c1759..a2af02f 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 6655c3e..8df933a 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 8002833..6b693cd 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 bf08393..036aa43 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 05cc6c4..2f5ee68 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 2fe2b2d..7e3b189 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 e6a4f73..5bf45f2 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 56e977d..ad9cfa8 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.