#
# 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.

#
# 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
	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, with
	  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
