media: i2c: imx219: make HBLANK r/w to allow longer exposures
[platform/kernel/linux-rpi.git] / drivers / media / Kconfig
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 "DVB Core"
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