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