18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only
28c2ecf20Sopenharmony_ci#
38c2ecf20Sopenharmony_ci# Multimedia device configuration
48c2ecf20Sopenharmony_ci#
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ci#
78c2ecf20Sopenharmony_ci# NOTE: CEC and Remote Controller support should not depend on MEDIA_SUPPORT
88c2ecf20Sopenharmony_ci#
98c2ecf20Sopenharmony_cisource "drivers/media/rc/Kconfig"
108c2ecf20Sopenharmony_cisource "drivers/media/cec/Kconfig"
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_cimenuconfig MEDIA_SUPPORT
138c2ecf20Sopenharmony_ci	tristate "Multimedia support"
148c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
158c2ecf20Sopenharmony_ci	help
168c2ecf20Sopenharmony_ci	  If you want to use media devices, including Webcams, Video grabber
178c2ecf20Sopenharmony_ci	  devices and/or TV devices, V4L2 codecs, etc, enable this option
188c2ecf20Sopenharmony_ci	  and other options below.
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci	  Additional info and docs are available on the web at
218c2ecf20Sopenharmony_ci	  <https://linuxtv.org>
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ciif MEDIA_SUPPORT
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ciconfig MEDIA_SUPPORT_FILTER
268c2ecf20Sopenharmony_ci	bool "Filter media drivers"
278c2ecf20Sopenharmony_ci	depends on MEDIA_SUPPORT
288c2ecf20Sopenharmony_ci	default y if !EMBEDDED && !EXPERT
298c2ecf20Sopenharmony_ci	help
308c2ecf20Sopenharmony_ci	   Configuring the media subsystem can be complex, as there are
318c2ecf20Sopenharmony_ci	   hundreds of drivers and other config options.
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci	   This menu offers option that will help the Kernel's config
348c2ecf20Sopenharmony_ci	   system to hide drivers that are out of the scope of the
358c2ecf20Sopenharmony_ci	   user needs, and disabling core support for unused APIs.
368c2ecf20Sopenharmony_ci
378c2ecf20Sopenharmony_ci	   If not selected, all non-optional media core functionality
388c2ecf20Sopenharmony_ci	   needed to support media drivers will be enabled. Also, all
398c2ecf20Sopenharmony_ci	   media device drivers should be shown.
408c2ecf20Sopenharmony_ci
418c2ecf20Sopenharmony_ciconfig MEDIA_SUBDRV_AUTOSELECT
428c2ecf20Sopenharmony_ci	bool "Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)"
438c2ecf20Sopenharmony_ci	depends on HAS_IOMEM
448c2ecf20Sopenharmony_ci	select I2C
458c2ecf20Sopenharmony_ci	select I2C_MUX
468c2ecf20Sopenharmony_ci	default y if MEDIA_SUPPORT_FILTER
478c2ecf20Sopenharmony_ci	help
488c2ecf20Sopenharmony_ci	  By default, a media driver auto-selects all possible ancillary
498c2ecf20Sopenharmony_ci	  devices such as tuners, sensors, video encoders/decoders and
508c2ecf20Sopenharmony_ci	  frontends, that are used by any of the supported devices.
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci	  This is generally the right thing to do, except when there
538c2ecf20Sopenharmony_ci	  are strict constraints with regards to the kernel size,
548c2ecf20Sopenharmony_ci	  like on embedded systems.
558c2ecf20Sopenharmony_ci
568c2ecf20Sopenharmony_ci	  Use this option with care, as deselecting ancillary drivers which
578c2ecf20Sopenharmony_ci	  are, in fact, necessary will result in the lack of the needed
588c2ecf20Sopenharmony_ci	  functionality for your device (it may not tune or may not have
598c2ecf20Sopenharmony_ci	  the needed demodulators).
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci	  If unsure say Y.
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_cimenu "Media device types"
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci#
668c2ecf20Sopenharmony_ci# Multimedia support - automatically enable V4L2 and DVB core
678c2ecf20Sopenharmony_ci#
688c2ecf20Sopenharmony_ciconfig MEDIA_CAMERA_SUPPORT
698c2ecf20Sopenharmony_ci	bool
708c2ecf20Sopenharmony_ci	prompt "Cameras and video grabbers" if MEDIA_SUPPORT_FILTER
718c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
728c2ecf20Sopenharmony_ci	help
738c2ecf20Sopenharmony_ci	  Enable support for webcams and video grabbers.
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci	  Say Y when you have a webcam or a video capture grabber board.
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ciconfig MEDIA_ANALOG_TV_SUPPORT
788c2ecf20Sopenharmony_ci	bool
798c2ecf20Sopenharmony_ci	prompt "Analog TV" if MEDIA_SUPPORT_FILTER
808c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
818c2ecf20Sopenharmony_ci	help
828c2ecf20Sopenharmony_ci	  Enable analog TV support.
838c2ecf20Sopenharmony_ci
848c2ecf20Sopenharmony_ci	  Say Y when you have a TV board with analog support or with a
858c2ecf20Sopenharmony_ci	  hybrid analog/digital TV chipset.
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci	  Note: There are several DVB cards that are based on chips that
888c2ecf20Sopenharmony_ci		support both analog and digital TV. Disabling this option
898c2ecf20Sopenharmony_ci		will disable support for them.
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ciconfig MEDIA_DIGITAL_TV_SUPPORT
928c2ecf20Sopenharmony_ci	bool
938c2ecf20Sopenharmony_ci	prompt "Digital TV" if MEDIA_SUPPORT_FILTER
948c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
958c2ecf20Sopenharmony_ci	help
968c2ecf20Sopenharmony_ci	  Enable digital TV support.
978c2ecf20Sopenharmony_ci
988c2ecf20Sopenharmony_ci	  Say Y when you have a board with digital support or a board with
998c2ecf20Sopenharmony_ci	  hybrid digital TV and analog TV.
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_ciconfig MEDIA_RADIO_SUPPORT
1028c2ecf20Sopenharmony_ci	bool
1038c2ecf20Sopenharmony_ci	prompt "AM/FM radio receivers/transmitters" if MEDIA_SUPPORT_FILTER
1048c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
1058c2ecf20Sopenharmony_ci	help
1068c2ecf20Sopenharmony_ci	  Enable AM/FM radio support.
1078c2ecf20Sopenharmony_ci
1088c2ecf20Sopenharmony_ci	  Additional info and docs are available on the web at
1098c2ecf20Sopenharmony_ci	  <https://linuxtv.org>
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci	  Say Y when you have a board with radio support.
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci	  Note: There are several TV cards that are based on chips that
1148c2ecf20Sopenharmony_ci		support radio reception. Disabling this option will
1158c2ecf20Sopenharmony_ci		disable support for them.
1168c2ecf20Sopenharmony_ci
1178c2ecf20Sopenharmony_ciconfig MEDIA_SDR_SUPPORT
1188c2ecf20Sopenharmony_ci	bool
1198c2ecf20Sopenharmony_ci	prompt "Software defined radio" if MEDIA_SUPPORT_FILTER
1208c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
1218c2ecf20Sopenharmony_ci	help
1228c2ecf20Sopenharmony_ci	  Enable software defined radio support.
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ci	  Say Y when you have a software defined radio device.
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciconfig MEDIA_PLATFORM_SUPPORT
1278c2ecf20Sopenharmony_ci	bool
1288c2ecf20Sopenharmony_ci	prompt "Platform-specific devices" if MEDIA_SUPPORT_FILTER
1298c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
1308c2ecf20Sopenharmony_ci	help
1318c2ecf20Sopenharmony_ci	  Enable support for complex cameras, codecs, and other hardware
1328c2ecf20Sopenharmony_ci	  that are integrated at the CPU, GPU or on Image Signalling Processor
1338c2ecf20Sopenharmony_ci	  and don't use PCI, USB or Firewire buses.
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci	  This is found on Embedded hardware (SoC), on V4L2 codecs and
1368c2ecf20Sopenharmony_ci	  on some GPU and newer CPU chipsets.
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ci	  Say Y when you want to be able so see such devices.
1398c2ecf20Sopenharmony_ci
1408c2ecf20Sopenharmony_ciconfig MEDIA_TEST_SUPPORT
1418c2ecf20Sopenharmony_ci	bool
1428c2ecf20Sopenharmony_ci	prompt "Test drivers" if MEDIA_SUPPORT_FILTER
1438c2ecf20Sopenharmony_ci	default y if !MEDIA_SUPPORT_FILTER
1448c2ecf20Sopenharmony_ci	help
1458c2ecf20Sopenharmony_ci	  These drivers should not be used on production kernels, but
1468c2ecf20Sopenharmony_ci	  can be useful on debug ones. This option enables several dummy drivers
1478c2ecf20Sopenharmony_ci	  that simulate real hardware. Very useful to test userspace
1488c2ecf20Sopenharmony_ci	  applications and to validate if the subsystem core doesn't
1498c2ecf20Sopenharmony_ci	  have regressions.
1508c2ecf20Sopenharmony_ci
1518c2ecf20Sopenharmony_ci	  Say Y if you want to use some virtual test driver.
1528c2ecf20Sopenharmony_ci
1538c2ecf20Sopenharmony_ci	  In case of doubts, say N.
1548c2ecf20Sopenharmony_ci	  Say Y when you have a software defined radio device.
1558c2ecf20Sopenharmony_ciendmenu # media device types
1568c2ecf20Sopenharmony_ci
1578c2ecf20Sopenharmony_ci
1588c2ecf20Sopenharmony_cimenu "Media core support"
1598c2ecf20Sopenharmony_ci	visible if !MEDIA_SUPPORT_FILTER
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ciconfig VIDEO_DEV
1628c2ecf20Sopenharmony_ci	tristate "Video4Linux core"
1638c2ecf20Sopenharmony_ci	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT || MEDIA_TEST_SUPPORT
1648c2ecf20Sopenharmony_ci	help
1658c2ecf20Sopenharmony_ci	  Enables the V4L2 API, used by cameras, analog TV, video grabbers,
1668c2ecf20Sopenharmony_ci	  radio devices and by some input devices.
1678c2ecf20Sopenharmony_ci
1688c2ecf20Sopenharmony_ciconfig MEDIA_CONTROLLER
1698c2ecf20Sopenharmony_ci	bool "Media Controller API"
1708c2ecf20Sopenharmony_ci	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_PLATFORM_SUPPORT
1718c2ecf20Sopenharmony_ci	help
1728c2ecf20Sopenharmony_ci	  Enable the media controller API used to query media devices internal
1738c2ecf20Sopenharmony_ci	  topology and configure it dynamically.
1748c2ecf20Sopenharmony_ci
1758c2ecf20Sopenharmony_ci	  This API is mostly used by camera interfaces in embedded platforms.
1768c2ecf20Sopenharmony_ci
1778c2ecf20Sopenharmony_ci#
1788c2ecf20Sopenharmony_ci# DVB Core
1798c2ecf20Sopenharmony_ci#	Only enables if one of DTV is selected
1808c2ecf20Sopenharmony_ci#
1818c2ecf20Sopenharmony_ci
1828c2ecf20Sopenharmony_ciconfig DVB_CORE
1838c2ecf20Sopenharmony_ci	tristate
1848c2ecf20Sopenharmony_ci	depends on MEDIA_DIGITAL_TV_SUPPORT
1858c2ecf20Sopenharmony_ci	depends on (I2C || I2C=n)
1868c2ecf20Sopenharmony_ci	default MEDIA_DIGITAL_TV_SUPPORT
1878c2ecf20Sopenharmony_ci	select CRC32
1888c2ecf20Sopenharmony_ci	help
1898c2ecf20Sopenharmony_ci	  Enables the DVB API, used by Digital TV devices. Supports several
1908c2ecf20Sopenharmony_ci	  standards, including DVB, ATSC, ISDB and CMDB.
1918c2ecf20Sopenharmony_ci
1928c2ecf20Sopenharmony_ciendmenu # Media core support
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci#
1958c2ecf20Sopenharmony_ci# Extra per-media API core functionality
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_cimenu "Video4Linux options"
1988c2ecf20Sopenharmony_ci	visible if VIDEO_DEV
1998c2ecf20Sopenharmony_ci
2008c2ecf20Sopenharmony_cisource "drivers/media/v4l2-core/Kconfig"
2018c2ecf20Sopenharmony_ciendmenu
2028c2ecf20Sopenharmony_ci
2038c2ecf20Sopenharmony_cimenu "Media controller options"
2048c2ecf20Sopenharmony_ci	visible if MEDIA_CONTROLLER
2058c2ecf20Sopenharmony_ci
2068c2ecf20Sopenharmony_cisource "drivers/media/mc/Kconfig"
2078c2ecf20Sopenharmony_ciendmenu
2088c2ecf20Sopenharmony_ci
2098c2ecf20Sopenharmony_cimenu "Digital TV options"
2108c2ecf20Sopenharmony_ci	visible if DVB_CORE
2118c2ecf20Sopenharmony_ci
2128c2ecf20Sopenharmony_cisource "drivers/media/dvb-core/Kconfig"
2138c2ecf20Sopenharmony_ciendmenu
2148c2ecf20Sopenharmony_ci
2158c2ecf20Sopenharmony_cimenu "Media drivers"
2168c2ecf20Sopenharmony_ci
2178c2ecf20Sopenharmony_cicomment "Drivers filtered as selected at 'Filter media drivers'"
2188c2ecf20Sopenharmony_ci	depends on MEDIA_SUPPORT_FILTER
2198c2ecf20Sopenharmony_ci
2208c2ecf20Sopenharmony_cisource "drivers/media/usb/Kconfig"
2218c2ecf20Sopenharmony_cisource "drivers/media/pci/Kconfig"
2228c2ecf20Sopenharmony_cisource "drivers/media/radio/Kconfig"
2238c2ecf20Sopenharmony_ci
2248c2ecf20Sopenharmony_ci# Common driver options
2258c2ecf20Sopenharmony_cisource "drivers/media/common/Kconfig"
2268c2ecf20Sopenharmony_ci
2278c2ecf20Sopenharmony_ciif MEDIA_PLATFORM_SUPPORT
2288c2ecf20Sopenharmony_cisource "drivers/media/platform/Kconfig"
2298c2ecf20Sopenharmony_cisource "drivers/media/mmc/Kconfig"
2308c2ecf20Sopenharmony_ciendif
2318c2ecf20Sopenharmony_ci
2328c2ecf20Sopenharmony_ciif MEDIA_TEST_SUPPORT
2338c2ecf20Sopenharmony_cisource "drivers/media/test-drivers/Kconfig"
2348c2ecf20Sopenharmony_ciendif
2358c2ecf20Sopenharmony_ci
2368c2ecf20Sopenharmony_cisource "drivers/media/firewire/Kconfig"
2378c2ecf20Sopenharmony_ci
2388c2ecf20Sopenharmony_ciendmenu
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci#
2418c2ecf20Sopenharmony_ci# Ancillary drivers (tuners, i2c, spi, frontends)
2428c2ecf20Sopenharmony_ci#
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_ciconfig MEDIA_HIDE_ANCILLARY_SUBDRV
2458c2ecf20Sopenharmony_ci	bool
2468c2ecf20Sopenharmony_ci	depends on MEDIA_SUBDRV_AUTOSELECT && !COMPILE_TEST && !EXPERT
2478c2ecf20Sopenharmony_ci	default y
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_cimenu "Media ancillary drivers"
2508c2ecf20Sopenharmony_ci
2518c2ecf20Sopenharmony_ciconfig MEDIA_ATTACH
2528c2ecf20Sopenharmony_ci	bool
2538c2ecf20Sopenharmony_ci	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
2548c2ecf20Sopenharmony_ci	depends on MODULES
2558c2ecf20Sopenharmony_ci	default MODULES
2568c2ecf20Sopenharmony_ci
2578c2ecf20Sopenharmony_cisource "drivers/media/i2c/Kconfig"
2588c2ecf20Sopenharmony_cisource "drivers/media/spi/Kconfig"
2598c2ecf20Sopenharmony_cisource "drivers/media/tuners/Kconfig"
2608c2ecf20Sopenharmony_cisource "drivers/media/dvb-frontends/Kconfig"
2618c2ecf20Sopenharmony_ci
2628c2ecf20Sopenharmony_ciendmenu
2638c2ecf20Sopenharmony_ci
2648c2ecf20Sopenharmony_ciendif # MEDIA_SUPPORT
265