Commit a3b91d8b authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: Kconfig: better support hybrid TV devices

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: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent a8328622
...@@ -44,20 +44,14 @@ config MEDIA_ANALOG_TV_SUPPORT ...@@ -44,20 +44,14 @@ config MEDIA_ANALOG_TV_SUPPORT
help help
Enable analog TV support. Enable analog TV support.
Say Y when you have a TV board with analog support or with a Say Y when you have a board with analog TV support.
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.
config MEDIA_DIGITAL_TV_SUPPORT config MEDIA_DIGITAL_TV_SUPPORT
bool "Digital TV support" bool "Digital TV support"
help help
Enable digital TV support. Enable digital TV support.
Say Y when you have a board with digital support or a board with Say Y when you have a board with digital TV support.
hybrid digital TV and analog TV.
config MEDIA_RADIO_SUPPORT config MEDIA_RADIO_SUPPORT
bool "AM/FM radio receivers/transmitters support" bool "AM/FM radio receivers/transmitters support"
...@@ -69,10 +63,6 @@ config MEDIA_RADIO_SUPPORT ...@@ -69,10 +63,6 @@ config MEDIA_RADIO_SUPPORT
Say Y when you have a board with 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 config MEDIA_SDR_SUPPORT
bool "Software defined radio support" bool "Software defined radio support"
help help
...@@ -123,9 +113,13 @@ source "drivers/media/mc/Kconfig" ...@@ -123,9 +113,13 @@ source "drivers/media/mc/Kconfig"
# Only enables if one of the V4L2 types (ATV, webcam, radio) is selected # 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 config VIDEO_DEV
tristate 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 config VIDEO_V4L2_SUBDEV_API
bool "V4L2 sub-device userspace API" bool "V4L2 sub-device userspace API"
...@@ -143,8 +137,12 @@ source "drivers/media/v4l2-core/Kconfig" ...@@ -143,8 +137,12 @@ source "drivers/media/v4l2-core/Kconfig"
# Only enables if one of DTV is selected # 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 config DVB_CORE
tristate tristate
prompt "Digital TV core" if !(MEDIA_HYBRID_USB || MEDIA_HYBRID_PCI)
depends on MEDIA_DIGITAL_TV_SUPPORT depends on MEDIA_DIGITAL_TV_SUPPORT
depends on (I2C || I2C=n) depends on (I2C || I2C=n)
default y default y
......
# SPDX-License-Identifier: GPL-2.0-only # 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 if PCI && MEDIA_SUPPORT
menuconfig MEDIA_PCI_SUPPORT menuconfig MEDIA_PCI_SUPPORT
...@@ -24,18 +31,18 @@ if MEDIA_ANALOG_TV_SUPPORT ...@@ -24,18 +31,18 @@ if MEDIA_ANALOG_TV_SUPPORT
source "drivers/media/pci/ivtv/Kconfig" source "drivers/media/pci/ivtv/Kconfig"
source "drivers/media/pci/saa7146/Kconfig" source "drivers/media/pci/saa7146/Kconfig"
source "drivers/media/pci/dt3155/Kconfig" source "drivers/media/pci/dt3155/Kconfig"
source "drivers/media/pci/cx25821/Kconfig"
source "drivers/media/pci/cobalt/Kconfig"
endif endif
if MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT if MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT
comment "Media capture/analog/hybrid TV support" comment "Media capture/analog/hybrid TV support"
source "drivers/media/pci/cx18/Kconfig" source "drivers/media/pci/cx18/Kconfig"
source "drivers/media/pci/cx23885/Kconfig" source "drivers/media/pci/cx23885/Kconfig"
source "drivers/media/pci/cx25821/Kconfig"
source "drivers/media/pci/cx88/Kconfig" source "drivers/media/pci/cx88/Kconfig"
source "drivers/media/pci/bt8xx/Kconfig" source "drivers/media/pci/bt8xx/Kconfig"
source "drivers/media/pci/saa7134/Kconfig" source "drivers/media/pci/saa7134/Kconfig"
source "drivers/media/pci/saa7164/Kconfig" source "drivers/media/pci/saa7164/Kconfig"
source "drivers/media/pci/cobalt/Kconfig"
endif endif
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_BT848 config VIDEO_BT848
tristate "BT848 Video For Linux" tristate "BT848 Video For Linux"
depends on VIDEO_DEV && PCI && I2C && VIDEO_V4L2 depends on PCI && I2C
select I2C_ALGOBIT select I2C_ALGOBIT
select VIDEOBUF_DMA_SG select VIDEOBUF_DMA_SG
depends on RC_CORE depends on RC_CORE
depends on MEDIA_RADIO_SUPPORT
select VIDEO_TUNER select VIDEO_TUNER
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
select VIDEO_MSP3400 if MEDIA_SUBDRV_AUTOSELECT select VIDEO_MSP3400 if MEDIA_SUBDRV_AUTOSELECT
...@@ -24,7 +23,7 @@ config VIDEO_BT848 ...@@ -24,7 +23,7 @@ config VIDEO_BT848
config DVB_BT8XX config DVB_BT8XX
tristate "DVB/ATSC Support for bt878 based TV cards" 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_MT352 if MEDIA_SUBDRV_AUTOSELECT
select DVB_SP887X if MEDIA_SUBDRV_AUTOSELECT select DVB_SP887X if MEDIA_SUBDRV_AUTOSELECT
select DVB_NXT6000 if MEDIA_SUBDRV_AUTOSELECT select DVB_NXT6000 if MEDIA_SUBDRV_AUTOSELECT
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_CX18 config VIDEO_CX18
tristate "Conexant cx23418 MPEG encoder support" tristate "Conexant cx23418 MPEG encoder support"
depends on VIDEO_V4L2 && DVB_CORE && PCI && I2C depends on PCI && I2C
select I2C_ALGOBIT select I2C_ALGOBIT
select VIDEOBUF_VMALLOC select VIDEOBUF_VMALLOC
depends on RC_CORE depends on RC_CORE
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_CX23885 config VIDEO_CX23885
tristate "Conexant cx23885 (2388x successor) support" 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 SND_PCM
select I2C_ALGOBIT select I2C_ALGOBIT
select VIDEO_TUNER select VIDEO_TUNER
...@@ -53,7 +53,7 @@ config VIDEO_CX23885 ...@@ -53,7 +53,7 @@ config VIDEO_CX23885
config MEDIA_ALTERA_CI config MEDIA_ALTERA_CI
tristate "Altera FPGA based CI module" tristate "Altera FPGA based CI module"
depends on VIDEO_CX23885 && DVB_CORE depends on VIDEO_CX23885
select ALTERA_STAPL select ALTERA_STAPL
help help
An Altera FPGA CI module for NetUP Dual DVB-T/C RF CI card. An Altera FPGA CI module for NetUP Dual DVB-T/C RF CI card.
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_CX88 config VIDEO_CX88
tristate "Conexant 2388x (bt878 successor) support" tristate "Conexant 2388x (bt878 successor) support"
depends on VIDEO_DEV && PCI && I2C && RC_CORE depends on PCI && I2C && RC_CORE
select I2C_ALGOBIT select I2C_ALGOBIT
select VIDEOBUF2_DMA_SG select VIDEOBUF2_DMA_SG
select VIDEO_TUNER select VIDEO_TUNER
...@@ -44,7 +44,7 @@ config VIDEO_CX88_BLACKBIRD ...@@ -44,7 +44,7 @@ config VIDEO_CX88_BLACKBIRD
config VIDEO_CX88_DVB config VIDEO_CX88_DVB
tristate "DVB/ATSC Support for cx2388x based TV cards" tristate "DVB/ATSC Support for cx2388x based TV cards"
depends on VIDEO_CX88 && DVB_CORE depends on VIDEO_CX88
select VIDEOBUF2_DVB select VIDEOBUF2_DVB
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_SAA7134 config VIDEO_SAA7134
tristate "Philips SAA7134 support" tristate "Philips SAA7134 support"
depends on VIDEO_DEV && PCI && I2C depends on PCI && I2C
select VIDEOBUF2_DMA_SG select VIDEOBUF2_DMA_SG
select VIDEO_TUNER select VIDEO_TUNER
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
...@@ -37,7 +37,7 @@ config VIDEO_SAA7134_RC ...@@ -37,7 +37,7 @@ config VIDEO_SAA7134_RC
config VIDEO_SAA7134_DVB config VIDEO_SAA7134_DVB
tristate "DVB/ATSC Support for saa7134 based TV cards" tristate "DVB/ATSC Support for saa7134 based TV cards"
depends on VIDEO_SAA7134 && DVB_CORE depends on VIDEO_SAA7134
select VIDEOBUF2_DVB select VIDEOBUF2_DVB
select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT select DVB_PLL if MEDIA_SUBDRV_AUTOSELECT
select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT select DVB_MT352 if MEDIA_SUBDRV_AUTOSELECT
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_SAA7164 config VIDEO_SAA7164
tristate "NXP SAA7164 support" tristate "NXP SAA7164 support"
depends on DVB_CORE && VIDEO_DEV && PCI && I2C depends on PCI && I2C
select I2C_ALGOBIT select I2C_ALGOBIT
select FW_LOADER select FW_LOADER
select VIDEO_TUNER select VIDEO_TUNER
......
...@@ -531,7 +531,7 @@ config VIDEO_TI_CSC ...@@ -531,7 +531,7 @@ config VIDEO_TI_CSC
menuconfig DVB_PLATFORM_DRIVERS menuconfig DVB_PLATFORM_DRIVERS
bool "DVB platform devices" bool "DVB platform devices"
depends on MEDIA_DIGITAL_TV_SUPPORT select DVB_CORE
help help
Say Y here to enable support for platform-specific Digital TV drivers. Say Y here to enable support for platform-specific Digital TV drivers.
......
...@@ -5,6 +5,12 @@ config TTPCI_EEPROM ...@@ -5,6 +5,12 @@ config TTPCI_EEPROM
tristate tristate
depends on I2C 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 if USB && MEDIA_SUPPORT
menuconfig MEDIA_USB_SUPPORT menuconfig MEDIA_USB_SUPPORT
...@@ -29,7 +35,6 @@ endif ...@@ -29,7 +35,6 @@ endif
if MEDIA_ANALOG_TV_SUPPORT if MEDIA_ANALOG_TV_SUPPORT
comment "Analog TV USB devices" comment "Analog TV USB devices"
source "drivers/media/usb/pvrusb2/Kconfig"
source "drivers/media/usb/hdpvr/Kconfig" source "drivers/media/usb/hdpvr/Kconfig"
source "drivers/media/usb/stk1160/Kconfig" source "drivers/media/usb/stk1160/Kconfig"
source "drivers/media/usb/go7007/Kconfig" source "drivers/media/usb/go7007/Kconfig"
...@@ -39,6 +44,7 @@ if (MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT) ...@@ -39,6 +44,7 @@ if (MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT)
comment "Analog/digital TV USB devices" comment "Analog/digital TV USB devices"
source "drivers/media/usb/au0828/Kconfig" source "drivers/media/usb/au0828/Kconfig"
source "drivers/media/usb/cx231xx/Kconfig" source "drivers/media/usb/cx231xx/Kconfig"
source "drivers/media/usb/pvrusb2/Kconfig"
source "drivers/media/usb/tm6000/Kconfig" source "drivers/media/usb/tm6000/Kconfig"
endif endif
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
config VIDEO_AU0828 config VIDEO_AU0828
tristate "Auvitek AU0828 support" tristate "Auvitek AU0828 support"
depends on I2C && INPUT && DVB_CORE && USB && VIDEO_V4L2 depends on I2C && INPUT && USB
select MEDIA_CONTROLLER select MEDIA_CONTROLLER
select MEDIA_CONTROLLER_DVB select MEDIA_CONTROLLER_DVB
select I2C_ALGOBIT select I2C_ALGOBIT
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
select VIDEOBUF2_VMALLOC if VIDEO_V4L2 select VIDEOBUF2_VMALLOC
select DVB_AU8522_DTV if MEDIA_SUBDRV_AUTOSELECT select DVB_AU8522_DTV if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT select MEDIA_TUNER_XC5000 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_MXL5007T if MEDIA_SUBDRV_AUTOSELECT select MEDIA_TUNER_MXL5007T if MEDIA_SUBDRV_AUTOSELECT
...@@ -22,8 +22,6 @@ config VIDEO_AU0828 ...@@ -22,8 +22,6 @@ config VIDEO_AU0828
config VIDEO_AU0828_V4L2 config VIDEO_AU0828_V4L2
bool "Auvitek AU0828 v4l2 analog video support" bool "Auvitek AU0828 v4l2 analog video support"
depends on VIDEO_AU0828 depends on VIDEO_AU0828
depends on VIDEO_V4L2=y || VIDEO_V4L2=VIDEO_AU0828
select DVB_AU8522_V4L if MEDIA_SUBDRV_AUTOSELECT
select VIDEO_TUNER select VIDEO_TUNER
default y default y
help help
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_CX231XX config VIDEO_CX231XX
tristate "Conexant cx231xx USB video capture support" tristate "Conexant cx231xx USB video capture support"
depends on VIDEO_DEV && I2C && I2C_MUX depends on I2C && I2C_MUX
select VIDEO_TUNER select VIDEO_TUNER
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
select VIDEOBUF2_VMALLOC select VIDEOBUF2_VMALLOC
...@@ -40,7 +40,7 @@ config VIDEO_CX231XX_ALSA ...@@ -40,7 +40,7 @@ config VIDEO_CX231XX_ALSA
config VIDEO_CX231XX_DVB config VIDEO_CX231XX_DVB
tristate "DVB/ATSC Support for Cx231xx based TV cards" 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_XC5000 if MEDIA_SUBDRV_AUTOSELECT
select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT select MEDIA_TUNER_TDA18271 if MEDIA_SUBDRV_AUTOSELECT
select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT select DVB_MB86A20S if MEDIA_SUBDRV_AUTOSELECT
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_PVRUSB2 config VIDEO_PVRUSB2
tristate "Hauppauge WinTV-PVR USB2 support" tristate "Hauppauge WinTV-PVR USB2 support"
depends on VIDEO_V4L2 && I2C depends on I2C
select VIDEO_TUNER select VIDEO_TUNER
select VIDEO_TVEEPROM select VIDEO_TVEEPROM
select VIDEO_CX2341X select VIDEO_CX2341X
...@@ -36,7 +36,7 @@ config VIDEO_PVRUSB2_SYSFS ...@@ -36,7 +36,7 @@ config VIDEO_PVRUSB2_SYSFS
config VIDEO_PVRUSB2_DVB config VIDEO_PVRUSB2_DVB
bool "pvrusb2 ATSC/DVB support" bool "pvrusb2 ATSC/DVB support"
default y default y
depends on VIDEO_PVRUSB2 && DVB_CORE depends on VIDEO_PVRUSB2
select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT select DVB_LGDT330X if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT select DVB_S5H1409 if MEDIA_SUBDRV_AUTOSELECT
select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT select DVB_S5H1411 if MEDIA_SUBDRV_AUTOSELECT
......
# SPDX-License-Identifier: GPL-2.0-only # SPDX-License-Identifier: GPL-2.0-only
config VIDEO_TM6000 config VIDEO_TM6000
tristate "TV Master TM5600/6000/6010 driver" 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 VIDEO_TUNER
select MEDIA_TUNER_XC2028 select MEDIA_TUNER_XC2028
select MEDIA_TUNER_XC5000 select MEDIA_TUNER_XC5000
...@@ -28,7 +28,7 @@ config VIDEO_TM6000_ALSA ...@@ -28,7 +28,7 @@ config VIDEO_TM6000_ALSA
config VIDEO_TM6000_DVB config VIDEO_TM6000_DVB
tristate "DVB Support for tm6000 based TV cards" tristate "DVB Support for tm6000 based TV cards"
depends on VIDEO_TM6000 && DVB_CORE && USB depends on VIDEO_TM6000 && USB
select DVB_ZL10353 select DVB_ZL10353
help help
This adds support for DVB cards based on the tm5600/tm6000 chip. This adds support for DVB cards based on the tm5600/tm6000 chip.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment