xref: /linux/drivers/media/Kconfig (revision acdce7aa7a4fc1094661feb0b833ae2eec2ad2d0)
1 # SPDX-License-Identifier: GPL-2.0-only
2 #
3 # Multimedia device configuration
4 #
5 
6 #
7 # NOTE: CEC and Remote Controller support should not depend on MEDIA_SUPPORT
8 #
9 source "drivers/media/rc/Kconfig"
10 source "drivers/media/cec/Kconfig"
11 
12 menuconfig MEDIA_SUPPORT
13 	tristate "Multimedia support"
14 	depends on HAS_IOMEM
15 	help
16 	  If you want to use media devices, including Webcams, Video grabber
17 	  devices and/or TV devices, V4L2 codecs, etc, enable this option
18 	  and other options below.
19 
20 	  Additional info and docs are available on the web at
21 	  <https://linuxtv.org>
22 
23 if MEDIA_SUPPORT
24 
25 config MEDIA_SUPPORT_FILTER
26 	bool "Filter media drivers"
27 	default y if !EXPERT
28 	help
29 	   Configuring the media subsystem can be complex, as there are
30 	   hundreds of drivers and other config options.
31 
32 	   This menu offers option that will help the Kernel's config
33 	   system to hide drivers that are out of the scope of the
34 	   user needs, and disabling core support for unused APIs.
35 
36 	   If not selected, all non-optional media core functionality
37 	   needed to support media drivers will be enabled. Also, all
38 	   media device drivers should be shown.
39 
40 config MEDIA_SUBDRV_AUTOSELECT
41 	bool "Autoselect ancillary drivers (tuners, sensors, i2c, spi, frontends)"
42 	depends on HAS_IOMEM
43 	select I2C
44 	select I2C_MUX
45 	default y if MEDIA_SUPPORT_FILTER
46 	help
47 	  By default, a media driver auto-selects all possible ancillary
48 	  devices such as tuners, sensors, video encoders/decoders and
49 	  frontends, that are used by any of the supported devices.
50 
51 	  This is generally the right thing to do, except when there
52 	  are strict constraints with regards to the kernel size,
53 	  like on embedded systems.
54 
55 	  Use this option with care, as deselecting ancillary drivers which
56 	  are, in fact, necessary will result in the lack of the needed
57 	  functionality for your device (it may not tune or may not have
58 	  the needed demodulators).
59 
60 	  If unsure say Y.
61 
62 menu "Media device types"
63 
64 #
65 # Multimedia support - automatically enable V4L2 and DVB core
66 #
67 config MEDIA_CAMERA_SUPPORT
68 	bool
69 	prompt "Cameras and video grabbers" if MEDIA_SUPPORT_FILTER
70 	default y if !MEDIA_SUPPORT_FILTER
71 	help
72 	  Enable support for webcams and video grabbers.
73 
74 	  Say Y when you have a webcam or a video capture grabber board.
75 
76 config MEDIA_ANALOG_TV_SUPPORT
77 	bool
78 	prompt "Analog TV" if MEDIA_SUPPORT_FILTER
79 	default y if !MEDIA_SUPPORT_FILTER
80 	help
81 	  Enable analog TV support.
82 
83 	  Say Y when you have a TV board with analog support or with a
84 	  hybrid analog/digital TV chipset.
85 
86 	  Note: There are several DVB cards that are based on chips that
87 		support both analog and digital TV. Disabling this option
88 		will disable support for them.
89 
90 config MEDIA_DIGITAL_TV_SUPPORT
91 	bool
92 	prompt "Digital TV" if MEDIA_SUPPORT_FILTER
93 	default y if !MEDIA_SUPPORT_FILTER
94 	help
95 	  Enable digital TV support.
96 
97 	  Say Y when you have a board with digital support or a board with
98 	  hybrid digital TV and analog TV.
99 
100 config MEDIA_RADIO_SUPPORT
101 	bool
102 	prompt "AM/FM radio receivers/transmitters" if MEDIA_SUPPORT_FILTER
103 	default y if !MEDIA_SUPPORT_FILTER
104 	help
105 	  Enable AM/FM radio support.
106 
107 	  Additional info and docs are available on the web at
108 	  <https://linuxtv.org>
109 
110 	  Say Y when you have a board with radio support.
111 
112 	  Note: There are several TV cards that are based on chips that
113 		support radio reception. Disabling this option will
114 		disable support for them.
115 
116 config MEDIA_SDR_SUPPORT
117 	bool
118 	prompt "Software defined radio" if MEDIA_SUPPORT_FILTER
119 	default y if !MEDIA_SUPPORT_FILTER
120 	help
121 	  Enable software defined radio support.
122 
123 	  Say Y when you have a software defined radio device.
124 
125 config MEDIA_PLATFORM_SUPPORT
126 	bool
127 	prompt "Platform-specific devices" if MEDIA_SUPPORT_FILTER
128 	default y if !MEDIA_SUPPORT_FILTER
129 	help
130 	  Enable support for complex cameras, codecs, and other hardware
131 	  that are integrated at the CPU, GPU or on Image Signalling Processor
132 	  and don't use PCI, USB or Firewire buses.
133 
134 	  This is found on Embedded hardware (SoC), on V4L2 codecs and
135 	  on some GPU and newer CPU chipsets.
136 
137 	  Say Y when you want to be able to see such devices.
138 
139 config MEDIA_TEST_SUPPORT
140 	bool
141 	prompt "Test drivers" if MEDIA_SUPPORT_FILTER
142 	default y if !MEDIA_SUPPORT_FILTER
143 	help
144 	  These drivers should not be used on production kernels, but
145 	  can be useful on debug ones. This option enables several dummy drivers
146 	  that simulate real hardware. Very useful to test userspace
147 	  applications and to validate if the subsystem core doesn't
148 	  have regressions.
149 
150 	  Say Y if you want to use some virtual test driver.
151 
152 	  In case of doubts, say N.
153 	  Say Y when you have a software defined radio device.
154 endmenu # media device types
155 
156 
157 menu "Media core support"
158 	visible if !MEDIA_SUPPORT_FILTER
159 
160 config VIDEO_DEV
161 	tristate "Video4Linux core"
162 	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT || MEDIA_TEST_SUPPORT
163 	depends on (I2C || I2C=n)
164 	select RATIONAL
165 	select VIDEOBUF2_V4L2 if VIDEOBUF2_CORE
166 	help
167 	  Enables the V4L2 API, used by cameras, analog TV, video grabbers,
168 	  radio devices and by some input devices.
169 
170 config MEDIA_CONTROLLER
171 	bool "Media Controller API"
172 	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_PLATFORM_SUPPORT
173 	help
174 	  Enable the media controller API used to query media devices internal
175 	  topology and configure it dynamically.
176 
177 	  This API is mostly used by camera interfaces in embedded platforms.
178 
179 #
180 # DVB Core
181 #	Only enables if one of DTV is selected
182 #
183 
184 config DVB_CORE
185 	tristate
186 	depends on MEDIA_DIGITAL_TV_SUPPORT
187 	depends on (I2C || I2C=n)
188 	default MEDIA_DIGITAL_TV_SUPPORT
189 	select CRC32
190 	help
191 	  Enables the DVB API, used by Digital TV devices. Supports several
192 	  standards, including DVB, ATSC, ISDB and CMDB.
193 
194 endmenu # Media core support
195 
196 #
197 # Extra per-media API core functionality
198 
199 menu "Video4Linux options"
200 	visible if VIDEO_DEV
201 
202 source "drivers/media/v4l2-core/Kconfig"
203 endmenu
204 
205 menu "Media controller options"
206 	visible if MEDIA_CONTROLLER
207 
208 source "drivers/media/mc/Kconfig"
209 endmenu
210 
211 menu "Digital TV options"
212 	visible if DVB_CORE
213 
214 source "drivers/media/dvb-core/Kconfig"
215 endmenu
216 
217 menu "Media drivers"
218 
219 comment "Drivers filtered as selected at 'Filter media drivers'"
220 	depends on MEDIA_SUPPORT_FILTER
221 
222 comment "Media drivers"
223 
224 source "drivers/media/usb/Kconfig"
225 source "drivers/media/pci/Kconfig"
226 source "drivers/media/radio/Kconfig"
227 
228 if MEDIA_PLATFORM_SUPPORT
229 source "drivers/media/platform/Kconfig"
230 source "drivers/media/mmc/Kconfig"
231 endif
232 
233 if MEDIA_TEST_SUPPORT
234 source "drivers/media/test-drivers/Kconfig"
235 endif
236 
237 source "drivers/media/firewire/Kconfig"
238 
239 # Common driver options
240 source "drivers/media/common/Kconfig"
241 
242 endmenu
243 
244 #
245 # Ancillary drivers (tuners, i2c, spi, frontends)
246 #
247 
248 config MEDIA_HIDE_ANCILLARY_SUBDRV
249 	bool
250 	depends on MEDIA_SUBDRV_AUTOSELECT && !COMPILE_TEST && !EXPERT
251 	default y
252 
253 menu "Media ancillary drivers"
254 
255 config MEDIA_ATTACH
256 	bool
257 	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
258 	depends on MODULES
259 	default MODULES
260 
261 source "drivers/media/i2c/Kconfig"
262 source "drivers/media/spi/Kconfig"
263 source "drivers/media/tuners/Kconfig"
264 source "drivers/media/dvb-frontends/Kconfig"
265 
266 endmenu
267 
268 endif # MEDIA_SUPPORT
269