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