# SPDX-License-Identifier: GPL-2.0-only
#
# Multimedia device configuration
#

config CEC_CORE
	tristate

config CEC_NOTIFIER
	bool

config CEC_PIN
	bool

source "drivers/media/rc/Kconfig"

menuconfig MEDIA_SUPPORT
	tristate "Multimedia support"
	depends on HAS_IOMEM
	help
	  If you want to use Webcams, Video grabber devices and/or TV devices
	  enable this option and other options below.
	  Additional info and docs are available on the web at
	  <https://linuxtv.org>

if MEDIA_SUPPORT

comment "Multimedia core support"

#
# Multimedia support - automatically enable V4L2 and DVB core
#
config MEDIA_CAMERA_SUPPORT
	bool "Cameras/video grabbers support"
	help
	  Enable support for webcams and video grabbers.

	  Say Y when you have a webcam or a video capture grabber board.

config MEDIA_ANALOG_TV_SUPPORT
	bool "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.

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.

config MEDIA_RADIO_SUPPORT
	bool "AM/FM radio receivers/transmitters support"
	help
	  Enable AM/FM radio support.

	  Additional info and docs are available on the web at
	  <https://linuxtv.org>

	  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
	  Enable software defined radio support.

	  Say Y when you have a software defined radio device.

config MEDIA_CEC_SUPPORT
	bool "HDMI CEC support"
	help
	  Enable support for HDMI CEC (Consumer Electronics Control),
	  which is an optional HDMI feature.

	  Say Y when you have an HDMI receiver, transmitter or a USB CEC
	  adapter that supports HDMI CEC.

source "drivers/media/cec/Kconfig"

#
# Media controller
#	Selectable only for webcam/grabbers, as other drivers don't use it
#

config MEDIA_CONTROLLER
	bool "Media Controller API"
	depends on MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT
	help
	  Enable the media controller API used to query media devices internal
	  topology and configure it dynamically.

	  This API is mostly used by camera interfaces in embedded platforms.

config MEDIA_CONTROLLER_DVB
	bool "Enable Media controller for DVB (EXPERIMENTAL)"
	depends on MEDIA_CONTROLLER && DVB_CORE
	help
	  Enable the media controller API support for DVB.

	  This is currently experimental.

config MEDIA_CONTROLLER_REQUEST_API
	bool "Enable Media controller Request API (EXPERIMENTAL)"
	depends on MEDIA_CONTROLLER && STAGING_MEDIA
	default n
	help
	  DO NOT ENABLE THIS OPTION UNLESS YOU KNOW WHAT YOU'RE DOING.

	  This option enables the Request API for the Media controller and V4L2
	  interfaces. It is currently needed by a few stateless codec drivers.

	  There is currently no intention to provide API or ABI stability for
	  this new API as of yet.

#
# Video4Linux support
#	Only enables if one of the V4L2 types (ATV, webcam, radio) is selected
#

config VIDEO_DEV
	tristate
	depends on MEDIA_SUPPORT
	depends on MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT
	default y

config VIDEO_V4L2_SUBDEV_API
	bool "V4L2 sub-device userspace API"
	depends on VIDEO_DEV && MEDIA_CONTROLLER
	help
	  Enables the V4L2 sub-device pad-level userspace API used to configure
	  video format, size and frame rate between hardware blocks.

	  This API is mostly used by camera interfaces in embedded platforms.

source "drivers/media/v4l2-core/Kconfig"

#
# DVB Core
#	Only enables if one of DTV is selected
#

config DVB_CORE
	tristate
	depends on MEDIA_SUPPORT
	depends on MEDIA_DIGITAL_TV_SUPPORT
	depends on (I2C || I2C=n)
	default y
	select CRC32

config DVB_MMAP
	bool "Enable DVB memory-mapped API (EXPERIMENTAL)"
	depends on DVB_CORE
	depends on VIDEO_V4L2=y || VIDEO_V4L2=DVB_CORE
	select VIDEOBUF2_VMALLOC
	default n
	help
	  This option enables DVB experimental memory-mapped API, which
	  reduces the number of context switches to read DVB buffers, as
	  the buffers can use mmap() syscalls.

	  Support for it is experimental. Use with care. If unsure,
	  say N.

config DVB_NET
	bool "DVB Network Support"
	default (NET && INET)
	depends on NET && INET && DVB_CORE
	help
	  This option enables DVB Network Support which is a part of the DVB
	  standard. It is used, for example, by automatic firmware updates used
	  on Set-Top-Boxes. It can also be used to access the Internet via the
	  DVB card, if the network provider supports it.

	  You may want to disable the network support on embedded devices. If
	  unsure say Y.

# This Kconfig option is used by both PCI and USB drivers
config TTPCI_EEPROM
	tristate
	depends on I2C
	default n

source "drivers/media/dvb-core/Kconfig"

comment "Media drivers"

#
# V4L platform/mem2mem drivers
#

source "drivers/media/usb/Kconfig"
source "drivers/media/pci/Kconfig"
source "drivers/media/platform/Kconfig"
source "drivers/media/mmc/Kconfig"
source "drivers/media/radio/Kconfig"

comment "Supported FireWire (IEEE 1394) Adapters"
	depends on DVB_CORE && FIREWIRE
source "drivers/media/firewire/Kconfig"

# Common driver options
source "drivers/media/common/Kconfig"

comment "Media ancillary drivers (tuners, sensors, i2c, spi, frontends)"

#
# Ancillary drivers (tuners, i2c, spi, frontends)
#

config MEDIA_SUBDRV_AUTOSELECT
	bool "Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)"
	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_CAMERA_SUPPORT || MEDIA_SDR_SUPPORT
	depends on HAS_IOMEM
	select I2C
	select I2C_MUX
	default y
	help
	  By default, a media driver auto-selects all possible ancillary
	  devices such as tuners, sensors, video encoders/decoders and
	  frontends, that are used by any of the supported devices.

	  This is generally the right thing to do, except when there
	  are strict constraints with regards to the kernel size,
	  like on embedded systems.

	  Use this option with care, as deselecting ancillary drivers which
	  are, in fact, necessary will result in the lack of the needed
	  functionality for your device (it may not tune or may not have
	  the needed demodulators).

	  If unsure say Y.

config MEDIA_ATTACH
	bool
	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
	depends on MODULES
	default MODULES

source "drivers/media/i2c/Kconfig"
source "drivers/media/spi/Kconfig"
source "drivers/media/tuners/Kconfig"
source "drivers/media/dvb-frontends/Kconfig"

endif # MEDIA_SUPPORT
