• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 !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 "Cameras and video grabbers"
69	default y if !MEDIA_SUPPORT_FILTER
70	help
71	  Enable support for webcams and video grabbers.
72
73	  Say Y when you have a webcam or a video capture grabber board.
74
75config MEDIA_ANALOG_TV_SUPPORT
76	bool "Analog TV"
77	default y if !MEDIA_SUPPORT_FILTER
78	help
79	  Enable analog TV support.
80
81	  Say Y when you have a TV board with analog support or with a
82	  hybrid analog/digital TV chipset.
83
84	  Note: There are several DVB cards that are based on chips that
85		support both analog and digital TV. Disabling this option
86		will disable support for them.
87
88config MEDIA_DIGITAL_TV_SUPPORT
89	bool "Digital TV"
90	default y if !MEDIA_SUPPORT_FILTER
91	help
92	  Enable digital TV support.
93
94	  Say Y when you have a board with digital support or a board with
95	  hybrid digital TV and analog TV.
96
97config MEDIA_RADIO_SUPPORT
98	bool "AM/FM radio receivers/transmitters"
99	default y if !MEDIA_SUPPORT_FILTER
100	help
101	  Enable AM/FM radio support.
102
103	  Additional info and docs are available on the web at
104	  <https://linuxtv.org>
105
106	  Say Y when you have a board with radio support.
107
108	  Note: There are several TV cards that are based on chips that
109		support radio reception. Disabling this option will
110		disable support for them.
111
112config MEDIA_SDR_SUPPORT
113	bool "Software defined radio"
114	default y if !MEDIA_SUPPORT_FILTER
115	help
116	  Enable software defined radio support.
117
118	  Say Y when you have a software defined radio device.
119
120config MEDIA_PLATFORM_SUPPORT
121	bool "Platform-specific devices"
122	default y if !MEDIA_SUPPORT_FILTER
123	help
124	  Enable support for complex cameras, codecs, and other hardware
125	  that are integrated at the CPU, GPU or on Image Signalling Processor
126	  and don't use PCI, USB or Firewire buses.
127
128	  This is found on Embedded hardware (SoC), on V4L2 codecs and
129	  on some GPU and newer CPU chipsets.
130
131	  Say Y when you want to be able to see such devices.
132
133config MEDIA_TEST_SUPPORT
134	bool "Test drivers"
135	default y if !MEDIA_SUPPORT_FILTER
136	help
137	  These drivers should not be used on production kernels, but
138	  can be useful on debug ones. This option enables several dummy drivers
139	  that simulate real hardware. Very useful to test userspace
140	  applications and to validate if the subsystem core doesn't
141	  have regressions.
142
143	  Say Y if you want to use some virtual test driver.
144
145	  In case of doubts, say N.
146	  Say Y when you have a software defined radio device.
147endmenu # media device types
148
149
150menu "Media core support"
151	visible if !MEDIA_SUPPORT_FILTER
152
153config VIDEO_DEV
154	tristate "Video4Linux core"
155	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_RADIO_SUPPORT || MEDIA_SDR_SUPPORT || MEDIA_PLATFORM_SUPPORT || MEDIA_TEST_SUPPORT
156	depends on (I2C || I2C=n)
157	select RATIONAL
158	select VIDEOBUF2_V4L2 if VIDEOBUF2_CORE
159	help
160	  Enables the V4L2 API, used by cameras, analog TV, video grabbers,
161	  radio devices and by some input devices.
162
163config MEDIA_CONTROLLER
164	bool "Media Controller API"
165	default MEDIA_CAMERA_SUPPORT || MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_PLATFORM_SUPPORT
166	help
167	  Enable the media controller API used to query media devices internal
168	  topology and configure it dynamically.
169
170	  This API is mostly used by camera interfaces in embedded platforms.
171
172#
173# DVB Core
174#	Only enables if one of DTV is selected
175#
176
177config DVB_CORE
178	tristate "DVB Core"
179	depends on MEDIA_DIGITAL_TV_SUPPORT
180	depends on (I2C || I2C=n)
181	default MEDIA_DIGITAL_TV_SUPPORT
182	select CRC32
183	help
184	  Enables the DVB API, used by Digital TV devices. Supports several
185	  standards, including DVB, ATSC, ISDB and CMDB.
186
187endmenu # Media core support
188
189#
190# Extra per-media API core functionality
191
192menu "Video4Linux options"
193	visible if VIDEO_DEV
194
195source "drivers/media/v4l2-core/Kconfig"
196endmenu
197
198menu "Media controller options"
199	visible if MEDIA_CONTROLLER
200
201source "drivers/media/mc/Kconfig"
202endmenu
203
204menu "Digital TV options"
205	visible if DVB_CORE
206
207source "drivers/media/dvb-core/Kconfig"
208endmenu
209
210menu "Media drivers"
211
212comment "Drivers filtered as selected at 'Filter media drivers'"
213	depends on MEDIA_SUPPORT_FILTER
214
215comment "Media drivers"
216
217source "drivers/media/usb/Kconfig"
218source "drivers/media/pci/Kconfig"
219source "drivers/media/radio/Kconfig"
220
221if MEDIA_PLATFORM_SUPPORT
222source "drivers/media/platform/Kconfig"
223source "drivers/media/mmc/Kconfig"
224endif
225
226if MEDIA_TEST_SUPPORT
227source "drivers/media/test-drivers/Kconfig"
228endif
229
230source "drivers/media/firewire/Kconfig"
231
232# Common driver options
233source "drivers/media/common/Kconfig"
234
235endmenu
236
237#
238# Ancillary drivers (tuners, i2c, spi, frontends)
239#
240
241config MEDIA_HIDE_ANCILLARY_SUBDRV
242	bool
243	depends on MEDIA_SUBDRV_AUTOSELECT && !COMPILE_TEST && !EXPERT
244	default y
245
246menu "Media ancillary drivers"
247
248config MEDIA_ATTACH
249	bool
250	depends on MEDIA_ANALOG_TV_SUPPORT || MEDIA_DIGITAL_TV_SUPPORT || MEDIA_RADIO_SUPPORT
251	depends on MODULES
252	default MODULES
253
254source "drivers/media/i2c/Kconfig"
255source "drivers/media/spi/Kconfig"
256source "drivers/media/tuners/Kconfig"
257source "drivers/media/dvb-frontends/Kconfig"
258
259endmenu
260
261endif # MEDIA_SUPPORT
262