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#
9source "drivers/media/rc/Kconfig"
10source "drivers/media/cec/Kconfig"
11
12menuconfig 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
23if MEDIA_SUPPORT
24
25config MEDIA_SUPPORT_FILTER
26	bool "Filter media drivers"
27	default y if !EMBEDDED && !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
40config 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
62menu "Media device types"
63
64#
65# Multimedia support - automatically enable V4L2 and DVB core
66#
67config 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
76config 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
90config 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
100config 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
116config 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
125config 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
139config MEDIA_TEST_SUPPORT
140	bool
141	prompt "Test drivers" if MEDIA_SUPPORT_FILTER
142	default y if !MEDIA_SUPPORT_FILTER
143	help
144	  Those drivers should not be used on production Kernels, but
145	  can be useful on debug ones. It enables several dummy drivers
146	  that simulate a real hardware. Very useful to test userspace
147	  applications and to validate if the subsystem core is 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.
154endmenu # media device types
155
156
157menu "Media core support"
158	visible if !MEDIA_SUPPORT_FILTER
159
160config 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	help
164	  Enables the V4L2 API, used by cameras, analog TV, video grabbers,
165	  radio devices and by some input devices.
166
167config MEDIA_CONTROLLER
168	bool "Media Controller API"
169	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_PLATFORM_SUPPORT
170	help
171	  Enable the media controller API used to query media devices internal
172	  topology and configure it dynamically.
173
174	  This API is mostly used by camera interfaces in embedded platforms.
175
176#
177# DVB Core
178#	Only enables if one of DTV is selected
179#
180
181config DVB_CORE
182	tristate
183	depends on MEDIA_DIGITAL_TV_SUPPORT
184	depends on (I2C || I2C=n)
185	default MEDIA_DIGITAL_TV_SUPPORT
186	select CRC32
187	help
188	  Enables the DVB API, used by Digital TV devices. Supports several
189	  standards, including DVB, ATSC, ISDB and CMDB.
190
191endmenu # Media core support
192
193#
194# Extra per-media API core functionality
195
196menu "Video4Linux options"
197	visible if VIDEO_DEV
198
199source "drivers/media/v4l2-core/Kconfig"
200endmenu
201
202menu "Media controller options"
203	visible if MEDIA_CONTROLLER
204
205source "drivers/media/mc/Kconfig"
206endmenu
207
208menu "Digital TV options"
209	visible if DVB_CORE
210
211source "drivers/media/dvb-core/Kconfig"
212endmenu
213
214menu "Media drivers"
215
216comment "Drivers filtered as selected at 'Filter media drivers'"
217	depends on MEDIA_SUPPORT_FILTER
218
219source "drivers/media/usb/Kconfig"
220source "drivers/media/pci/Kconfig"
221source "drivers/media/radio/Kconfig"
222
223# Common driver options
224source "drivers/media/common/Kconfig"
225
226if MEDIA_PLATFORM_SUPPORT
227source "drivers/media/platform/Kconfig"
228source "drivers/media/mmc/Kconfig"
229endif
230
231if MEDIA_TEST_SUPPORT
232source "drivers/media/test-drivers/Kconfig"
233endif
234
235source "drivers/media/firewire/Kconfig"
236
237endmenu
238
239#
240# Ancillary drivers (tuners, i2c, spi, frontends)
241#
242
243config MEDIA_HIDE_ANCILLARY_SUBDRV
244	bool
245	depends on MEDIA_SUBDRV_AUTOSELECT && !COMPILE_TEST && !EXPERT
246	default y
247
248menu "Media ancillary drivers"
249
250config MEDIA_ATTACH
251	bool
252	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
253	depends on MODULES
254	default MODULES
255
256source "drivers/media/i2c/Kconfig"
257source "drivers/media/spi/Kconfig"
258source "drivers/media/tuners/Kconfig"
259source "drivers/media/dvb-frontends/Kconfig"
260
261endmenu
262
263endif # MEDIA_SUPPORT
264