0001 # SPDX-License-Identifier: GPL-2.0-only
0002 #
0003 # Multimedia device configuration
0004 #
0005
0006 #
0007 # NOTE: CEC and Remote Controller support should not depend on MEDIA_SUPPORT
0008 #
0009 source "drivers/media/rc/Kconfig"
0010 source "drivers/media/cec/Kconfig"
0011
0012 menuconfig MEDIA_SUPPORT
0013 tristate "Multimedia support"
0014 depends on HAS_IOMEM
0015 help
0016 If you want to use media devices, including Webcams, Video grabber
0017 devices and/or TV devices, V4L2 codecs, etc, enable this option
0018 and other options below.
0019
0020 Additional info and docs are available on the web at
0021 <https://linuxtv.org>
0022
0023 if MEDIA_SUPPORT
0024
0025 config MEDIA_SUPPORT_FILTER
0026 bool "Filter media drivers"
0027 default y if !EMBEDDED && !EXPERT
0028 help
0029 Configuring the media subsystem can be complex, as there are
0030 hundreds of drivers and other config options.
0031
0032 This menu offers option that will help the Kernel's config
0033 system to hide drivers that are out of the scope of the
0034 user needs, and disabling core support for unused APIs.
0035
0036 If not selected, all non-optional media core functionality
0037 needed to support media drivers will be enabled. Also, all
0038 media device drivers should be shown.
0039
0040 config MEDIA_SUBDRV_AUTOSELECT
0041 bool "Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)"
0042 depends on HAS_IOMEM
0043 select I2C
0044 select I2C_MUX
0045 default y if MEDIA_SUPPORT_FILTER
0046 help
0047 By default, a media driver auto-selects all possible ancillary
0048 devices such as tuners, sensors, video encoders/decoders and
0049 frontends, that are used by any of the supported devices.
0050
0051 This is generally the right thing to do, except when there
0052 are strict constraints with regards to the kernel size,
0053 like on embedded systems.
0054
0055 Use this option with care, as deselecting ancillary drivers which
0056 are, in fact, necessary will result in the lack of the needed
0057 functionality for your device (it may not tune or may not have
0058 the needed demodulators).
0059
0060 If unsure say Y.
0061
0062 menu "Media device types"
0063
0064 #
0065 # Multimedia support - automatically enable V4L2 and DVB core
0066 #
0067 config MEDIA_CAMERA_SUPPORT
0068 bool
0069 prompt "Cameras and video grabbers" if MEDIA_SUPPORT_FILTER
0070 default y if !MEDIA_SUPPORT_FILTER
0071 help
0072 Enable support for webcams and video grabbers.
0073
0074 Say Y when you have a webcam or a video capture grabber board.
0075
0076 config MEDIA_ANALOG_TV_SUPPORT
0077 bool
0078 prompt "Analog TV" if MEDIA_SUPPORT_FILTER
0079 default y if !MEDIA_SUPPORT_FILTER
0080 help
0081 Enable analog TV support.
0082
0083 Say Y when you have a TV board with analog support or with a
0084 hybrid analog/digital TV chipset.
0085
0086 Note: There are several DVB cards that are based on chips that
0087 support both analog and digital TV. Disabling this option
0088 will disable support for them.
0089
0090 config MEDIA_DIGITAL_TV_SUPPORT
0091 bool
0092 prompt "Digital TV" if MEDIA_SUPPORT_FILTER
0093 default y if !MEDIA_SUPPORT_FILTER
0094 help
0095 Enable digital TV support.
0096
0097 Say Y when you have a board with digital support or a board with
0098 hybrid digital TV and analog TV.
0099
0100 config MEDIA_RADIO_SUPPORT
0101 bool
0102 prompt "AM/FM radio receivers/transmitters" if MEDIA_SUPPORT_FILTER
0103 default y if !MEDIA_SUPPORT_FILTER
0104 help
0105 Enable AM/FM radio support.
0106
0107 Additional info and docs are available on the web at
0108 <https://linuxtv.org>
0109
0110 Say Y when you have a board with radio support.
0111
0112 Note: There are several TV cards that are based on chips that
0113 support radio reception. Disabling this option will
0114 disable support for them.
0115
0116 config MEDIA_SDR_SUPPORT
0117 bool
0118 prompt "Software defined radio" if MEDIA_SUPPORT_FILTER
0119 default y if !MEDIA_SUPPORT_FILTER
0120 help
0121 Enable software defined radio support.
0122
0123 Say Y when you have a software defined radio device.
0124
0125 config MEDIA_PLATFORM_SUPPORT
0126 bool
0127 prompt "Platform-specific devices" if MEDIA_SUPPORT_FILTER
0128 default y if !MEDIA_SUPPORT_FILTER
0129 help
0130 Enable support for complex cameras, codecs, and other hardware
0131 that are integrated at the CPU, GPU or on Image Signalling Processor
0132 and don't use PCI, USB or Firewire buses.
0133
0134 This is found on Embedded hardware (SoC), on V4L2 codecs and
0135 on some GPU and newer CPU chipsets.
0136
0137 Say Y when you want to be able to see such devices.
0138
0139 config MEDIA_TEST_SUPPORT
0140 bool
0141 prompt "Test drivers" if MEDIA_SUPPORT_FILTER
0142 default y if !MEDIA_SUPPORT_FILTER
0143 help
0144 These drivers should not be used on production kernels, but
0145 can be useful on debug ones. This option enables several dummy drivers
0146 that simulate real hardware. Very useful to test userspace
0147 applications and to validate if the subsystem core doesn't
0148 have regressions.
0149
0150 Say Y if you want to use some virtual test driver.
0151
0152 In case of doubts, say N.
0153 Say Y when you have a software defined radio device.
0154 endmenu # media device types
0155
0156
0157 menu "Media core support"
0158 visible if !MEDIA_SUPPORT_FILTER
0159
0160 config VIDEO_DEV
0161 tristate "Video4Linux core"
0162 default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT || MEDIA_TEST_SUPPORT
0163 depends on (I2C || I2C=n)
0164 select RATIONAL
0165 select VIDEOBUF2_V4L2 if VIDEOBUF2_CORE
0166 help
0167 Enables the V4L2 API, used by cameras, analog TV, video grabbers,
0168 radio devices and by some input devices.
0169
0170 config MEDIA_CONTROLLER
0171 bool "Media Controller API"
0172 default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_PLATFORM_SUPPORT
0173 help
0174 Enable the media controller API used to query media devices internal
0175 topology and configure it dynamically.
0176
0177 This API is mostly used by camera interfaces in embedded platforms.
0178
0179 #
0180 # DVB Core
0181 # Only enables if one of DTV is selected
0182 #
0183
0184 config DVB_CORE
0185 tristate
0186 depends on MEDIA_DIGITAL_TV_SUPPORT
0187 depends on (I2C || I2C=n)
0188 default MEDIA_DIGITAL_TV_SUPPORT
0189 select CRC32
0190 help
0191 Enables the DVB API, used by Digital TV devices. Supports several
0192 standards, including DVB, ATSC, ISDB and CMDB.
0193
0194 endmenu # Media core support
0195
0196 #
0197 # Extra per-media API core functionality
0198
0199 menu "Video4Linux options"
0200 visible if VIDEO_DEV
0201
0202 source "drivers/media/v4l2-core/Kconfig"
0203 endmenu
0204
0205 menu "Media controller options"
0206 visible if MEDIA_CONTROLLER
0207
0208 source "drivers/media/mc/Kconfig"
0209 endmenu
0210
0211 menu "Digital TV options"
0212 visible if DVB_CORE
0213
0214 source "drivers/media/dvb-core/Kconfig"
0215 endmenu
0216
0217 menu "Media drivers"
0218
0219 comment "Drivers filtered as selected at 'Filter media drivers'"
0220 depends on MEDIA_SUPPORT_FILTER
0221
0222 comment "Media drivers"
0223
0224 source "drivers/media/usb/Kconfig"
0225 source "drivers/media/pci/Kconfig"
0226 source "drivers/media/radio/Kconfig"
0227
0228 if MEDIA_PLATFORM_SUPPORT
0229 source "drivers/media/platform/Kconfig"
0230 source "drivers/media/mmc/Kconfig"
0231 endif
0232
0233 if MEDIA_TEST_SUPPORT
0234 source "drivers/media/test-drivers/Kconfig"
0235 endif
0236
0237 source "drivers/media/firewire/Kconfig"
0238
0239 # Common driver options
0240 source "drivers/media/common/Kconfig"
0241
0242 endmenu
0243
0244 #
0245 # Ancillary drivers (tuners, i2c, spi, frontends)
0246 #
0247
0248 config MEDIA_HIDE_ANCILLARY_SUBDRV
0249 bool
0250 depends on MEDIA_SUBDRV_AUTOSELECT && !COMPILE_TEST && !EXPERT
0251 default y
0252
0253 menu "Media ancillary drivers"
0254
0255 config MEDIA_ATTACH
0256 bool
0257 depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
0258 depends on MODULES
0259 default MODULES
0260
0261 source "drivers/media/i2c/Kconfig"
0262 source "drivers/media/spi/Kconfig"
0263 source "drivers/media/tuners/Kconfig"
0264 source "drivers/media/dvb-frontends/Kconfig"
0265
0266 endmenu
0267
0268 endif # MEDIA_SUPPORT