aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-07 04:49:05 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-07 04:49:05 -0400
commit0b8e74c6f44094189dbe78baf4101acc7570c6af (patch)
tree6440561d09fb71ba5928664604ec92f29940be6b /include
parent7f60ba388f5b9dd8b0da463b394412dace3ab814 (diff)
parentbd0d10498826ed150da5e4c45baf8b9c7088fb71 (diff)
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: "The first part of the media updates for Kernel 3.7. This series contain: - A major tree renaming patch series: now, drivers are organized internally by their used bus, instead of by V4L2 and/or DVB API, providing a cleaner driver location for hybrid drivers that implement both APIs, and allowing to cleanup the Kconfig items and make them more intuitive for the end user; - Media Kernel developers are typically very lazy with their duties of keeping the MAINTAINERS entries for their drivers updated. As now the tree is more organized, we're doing an effort to add/update those entries for the drivers that aren't currently orphan; - Several DVB USB drivers got moved to a new DVB USB v2 core; the new core fixes several bugs (as the existing one that got bitroted). Now, suspend/resume finally started to work fine (at least with some devices - we should expect more work with regards to it); - added multistream support for DVB-T2, and unified the API for DVB-S2 and ISDB-S. Backward binary support is preserved; - as usual, a few new drivers, some V4L2 core improvements and lots of drivers improvements and fixes. There are some points to notice on this series: 1) you should expect a trivial merge conflict on your tree, with the removal of Documentation/feature-removal-schedule.txt: this series would be adding two additional entries there. I opted to not rebase it due to this recent change; 2) With regards to the PCTV 520e udev-related breakage, I opted to fix it in a way that the patches can be backported to 3.5 even without your firmware fix patch. This way, Greg doesn't need to rush backporting your patch (as there are still the firmware cache and firmware path customization issues to be addressed there). I'll send later a patch (likely after the end of the merge window) reverting the rest of the DRX-K async firmware request, fully restoring its original behaviour to allow media drivers to initialize everything serialized as before for 3.7 and upper. 3) I'm planning to work on this weekend to test the DMABUF patches for V4L2. The patches are on my queue for several Kernel cycles, but, up to now, there is/was no way to test the series locally. I have some concerns about this particular changeset with regards to security issues, and with regards to the replacement of the old VIDIOC_OVERLAY ioctl's that is broken on modern systems, due to GPU drivers change. The Overlay API allows direct PCI2PCI transfers from a media capture card into the GPU framebuffer, but its API is crappy. Also, the only existing X11 driver that implements it requires a XV extension that is not available anymore on modern drivers. The DMABUF can do the same thing, but with it is promising to be a properly-designed API. If I can successfully test this series and be happy with it, I should be asking you to pull them next week." * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (717 commits) em28xx: regression fix: use DRX-K sync firmware requests on em28xx drxk: allow loading firmware synchrousnously em28xx: Make all em28xx extensions to be initialized asynchronously [media] tda18271: properly report read errors in tda18271_get_id [media] tda18271: delay IR & RF calibration until init() if delay_cal is set [media] MAINTAINERS: add Michael Krufky as tda827x maintainer [media] MAINTAINERS: add Michael Krufky as tda8290 maintainer [media] MAINTAINERS: add Michael Krufky as cxusb maintainer [media] MAINTAINERS: add Michael Krufky as lg2160 maintainer [media] MAINTAINERS: add Michael Krufky as lgdt3305 maintainer [media] MAINTAINERS: add Michael Krufky as mxl111sf maintainer [media] MAINTAINERS: add Michael Krufky as mxl5007t maintainer [media] MAINTAINERS: add Michael Krufky as tda18271 maintainer [media] s5p-tv: Report only multi-plane capabilities in vidioc_querycap [media] s5p-mfc: Fix misplaced return statement in s5p_mfc_suspend() [media] exynos-gsc: Add missing static storage class specifiers [media] exynos-gsc: Remove <linux/version.h> header file inclusion [media] s5p-fimc: Fix incorrect condition in fimc_lite_reqbufs() [media] s5p-tv: Fix potential NULL pointer dereference error [media] s5k6aa: Fix possible NULL pointer dereference ...
Diffstat (limited to 'include')
-rw-r--r--include/linux/Kbuild1
-rw-r--r--include/linux/dvb/frontend.h61
-rw-r--r--include/linux/dvb/version.h2
-rw-r--r--include/linux/omap3isp.h6
-rw-r--r--include/linux/v4l2-common.h8
-rw-r--r--include/linux/v4l2-controls.h761
-rw-r--r--include/linux/v4l2-subdev.h10
-rw-r--r--include/linux/videodev2.h726
-rw-r--r--include/media/ad9389b.h49
-rw-r--r--include/media/adv7604.h153
-rw-r--r--include/media/ir-rx51.h10
-rw-r--r--include/media/mt9v032.h3
-rw-r--r--include/media/omap3isp.h14
-rw-r--r--include/media/s5k4ecgx.h37
-rw-r--r--include/media/s5p_fimc.h18
-rw-r--r--include/media/saa7146.h4
-rw-r--r--include/media/soc_camera.h16
-rw-r--r--include/media/v4l2-chip-ident.h6
-rw-r--r--include/media/v4l2-common.h17
-rw-r--r--include/media/v4l2-ctrls.h43
-rw-r--r--include/media/v4l2-dev.h12
-rw-r--r--include/media/v4l2-event.h4
-rw-r--r--include/media/v4l2-ioctl.h26
-rw-r--r--include/media/v4l2-mem2mem.h4
-rw-r--r--include/media/v4l2-subdev.h8
-rw-r--r--include/media/videobuf-dvb.h4
-rw-r--r--include/media/videobuf2-core.h2
-rw-r--r--include/sound/tea575x-tuner.h4
28 files changed, 1237 insertions, 772 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index aab5c85879b2..d114db9477f4 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -382,6 +382,7 @@ header-y += utsname.h
382header-y += uuid.h 382header-y += uuid.h
383header-y += uvcvideo.h 383header-y += uvcvideo.h
384header-y += v4l2-common.h 384header-y += v4l2-common.h
385header-y += v4l2-controls.h
385header-y += v4l2-dv-timings.h 386header-y += v4l2-dv-timings.h
386header-y += v4l2-mediabus.h 387header-y += v4l2-mediabus.h
387header-y += v4l2-subdev.h 388header-y += v4l2-subdev.h
diff --git a/include/linux/dvb/frontend.h b/include/linux/dvb/frontend.h
index f50d4058c5fb..c12d452cb40d 100644
--- a/include/linux/dvb/frontend.h
+++ b/include/linux/dvb/frontend.h
@@ -62,6 +62,7 @@ typedef enum fe_caps {
62 FE_CAN_8VSB = 0x200000, 62 FE_CAN_8VSB = 0x200000,
63 FE_CAN_16VSB = 0x400000, 63 FE_CAN_16VSB = 0x400000,
64 FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */ 64 FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
65 FE_CAN_MULTISTREAM = 0x4000000, /* frontend supports multistream filtering */
65 FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */ 66 FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
66 FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */ 67 FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
67 FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */ 68 FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
@@ -121,16 +122,27 @@ typedef enum fe_sec_mini_cmd {
121} fe_sec_mini_cmd_t; 122} fe_sec_mini_cmd_t;
122 123
123 124
125/**
126 * enum fe_status - enumerates the possible frontend status
127 * @FE_HAS_SIGNAL: found something above the noise level
128 * @FE_HAS_CARRIER: found a DVB signal
129 * @FE_HAS_VITERBI: FEC is stable
130 * @FE_HAS_SYNC: found sync bytes
131 * @FE_HAS_LOCK: everything's working
132 * @FE_TIMEDOUT: no lock within the last ~2 seconds
133 * @FE_REINIT: frontend was reinitialized, application is recommended
134 * to reset DiSEqC, tone and parameters
135 */
136
124typedef enum fe_status { 137typedef enum fe_status {
125 FE_HAS_SIGNAL = 0x01, /* found something above the noise level */ 138 FE_HAS_SIGNAL = 0x01,
126 FE_HAS_CARRIER = 0x02, /* found a DVB signal */ 139 FE_HAS_CARRIER = 0x02,
127 FE_HAS_VITERBI = 0x04, /* FEC is stable */ 140 FE_HAS_VITERBI = 0x04,
128 FE_HAS_SYNC = 0x08, /* found sync bytes */ 141 FE_HAS_SYNC = 0x08,
129 FE_HAS_LOCK = 0x10, /* everything's working... */ 142 FE_HAS_LOCK = 0x10,
130 FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */ 143 FE_TIMEDOUT = 0x20,
131 FE_REINIT = 0x40 /* frontend was reinitialized, */ 144 FE_REINIT = 0x40,
132} fe_status_t; /* application is recommended to reset */ 145} fe_status_t;
133 /* DiSEqC, tone and parameters */
134 146
135typedef enum fe_spectral_inversion { 147typedef enum fe_spectral_inversion {
136 INVERSION_OFF, 148 INVERSION_OFF,
@@ -152,6 +164,7 @@ typedef enum fe_code_rate {
152 FEC_AUTO, 164 FEC_AUTO,
153 FEC_3_5, 165 FEC_3_5,
154 FEC_9_10, 166 FEC_9_10,
167 FEC_2_5,
155} fe_code_rate_t; 168} fe_code_rate_t;
156 169
157 170
@@ -169,6 +182,7 @@ typedef enum fe_modulation {
169 APSK_16, 182 APSK_16,
170 APSK_32, 183 APSK_32,
171 DQPSK, 184 DQPSK,
185 QAM_4_NR,
172} fe_modulation_t; 186} fe_modulation_t;
173 187
174typedef enum fe_transmit_mode { 188typedef enum fe_transmit_mode {
@@ -179,6 +193,8 @@ typedef enum fe_transmit_mode {
179 TRANSMISSION_MODE_1K, 193 TRANSMISSION_MODE_1K,
180 TRANSMISSION_MODE_16K, 194 TRANSMISSION_MODE_16K,
181 TRANSMISSION_MODE_32K, 195 TRANSMISSION_MODE_32K,
196 TRANSMISSION_MODE_C1,
197 TRANSMISSION_MODE_C3780,
182} fe_transmit_mode_t; 198} fe_transmit_mode_t;
183 199
184#if defined(__DVB_CORE__) || !defined (__KERNEL__) 200#if defined(__DVB_CORE__) || !defined (__KERNEL__)
@@ -202,6 +218,9 @@ typedef enum fe_guard_interval {
202 GUARD_INTERVAL_1_128, 218 GUARD_INTERVAL_1_128,
203 GUARD_INTERVAL_19_128, 219 GUARD_INTERVAL_19_128,
204 GUARD_INTERVAL_19_256, 220 GUARD_INTERVAL_19_256,
221 GUARD_INTERVAL_PN420,
222 GUARD_INTERVAL_PN595,
223 GUARD_INTERVAL_PN945,
205} fe_guard_interval_t; 224} fe_guard_interval_t;
206 225
207 226
@@ -213,6 +232,12 @@ typedef enum fe_hierarchy {
213 HIERARCHY_AUTO 232 HIERARCHY_AUTO
214} fe_hierarchy_t; 233} fe_hierarchy_t;
215 234
235enum fe_interleaving {
236 INTERLEAVING_NONE,
237 INTERLEAVING_AUTO,
238 INTERLEAVING_240,
239 INTERLEAVING_720,
240};
216 241
217#if defined(__DVB_CORE__) || !defined (__KERNEL__) 242#if defined(__DVB_CORE__) || !defined (__KERNEL__)
218struct dvb_qpsk_parameters { 243struct dvb_qpsk_parameters {
@@ -314,9 +339,9 @@ struct dvb_frontend_event {
314 339
315#define DTV_ISDBT_LAYER_ENABLED 41 340#define DTV_ISDBT_LAYER_ENABLED 41
316 341
317#define DTV_ISDBS_TS_ID 42 342#define DTV_STREAM_ID 42
318 343#define DTV_ISDBS_TS_ID_LEGACY DTV_STREAM_ID
319#define DTV_DVBT2_PLP_ID 43 344#define DTV_DVBT2_PLP_ID_LEGACY 43
320 345
321#define DTV_ENUM_DELSYS 44 346#define DTV_ENUM_DELSYS 44
322 347
@@ -337,7 +362,10 @@ struct dvb_frontend_event {
337#define DTV_ATSCMH_SCCC_CODE_MODE_C 58 362#define DTV_ATSCMH_SCCC_CODE_MODE_C 58
338#define DTV_ATSCMH_SCCC_CODE_MODE_D 59 363#define DTV_ATSCMH_SCCC_CODE_MODE_D 59
339 364
340#define DTV_MAX_COMMAND DTV_ATSCMH_SCCC_CODE_MODE_D 365#define DTV_INTERLEAVING 60
366#define DTV_LNA 61
367
368#define DTV_MAX_COMMAND DTV_LNA
341 369
342typedef enum fe_pilot { 370typedef enum fe_pilot {
343 PILOT_ON, 371 PILOT_ON,
@@ -366,7 +394,7 @@ typedef enum fe_delivery_system {
366 SYS_ISDBC, 394 SYS_ISDBC,
367 SYS_ATSC, 395 SYS_ATSC,
368 SYS_ATSCMH, 396 SYS_ATSCMH,
369 SYS_DMBTH, 397 SYS_DTMB,
370 SYS_CMMB, 398 SYS_CMMB,
371 SYS_DAB, 399 SYS_DAB,
372 SYS_DVBT2, 400 SYS_DVBT2,
@@ -374,8 +402,9 @@ typedef enum fe_delivery_system {
374 SYS_DVBC_ANNEX_C, 402 SYS_DVBC_ANNEX_C,
375} fe_delivery_system_t; 403} fe_delivery_system_t;
376 404
377 405/* backward compatibility */
378#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A 406#define SYS_DVBC_ANNEX_AC SYS_DVBC_ANNEX_A
407#define SYS_DMBTH SYS_DTMB /* DMB-TH is legacy name, use DTMB instead */
379 408
380/* ATSC-MH */ 409/* ATSC-MH */
381 410
@@ -409,6 +438,8 @@ enum atscmh_rs_code_mode {
409 ATSCMH_RSCODE_RES = 3, 438 ATSCMH_RSCODE_RES = 3,
410}; 439};
411 440
441#define NO_STREAM_ID_FILTER (~0U)
442#define LNA_AUTO (~0U)
412 443
413struct dtv_cmds_h { 444struct dtv_cmds_h {
414 char *name; /* A display name for debugging purposes */ 445 char *name; /* A display name for debugging purposes */
diff --git a/include/linux/dvb/version.h b/include/linux/dvb/version.h
index 43d9e8d462d4..20e5eac2ffd3 100644
--- a/include/linux/dvb/version.h
+++ b/include/linux/dvb/version.h
@@ -24,6 +24,6 @@
24#define _DVBVERSION_H_ 24#define _DVBVERSION_H_
25 25
26#define DVB_API_VERSION 5 26#define DVB_API_VERSION 5
27#define DVB_API_VERSION_MINOR 6 27#define DVB_API_VERSION_MINOR 8
28 28
29#endif /*_DVBVERSION_H_*/ 29#endif /*_DVBVERSION_H_*/
diff --git a/include/linux/omap3isp.h b/include/linux/omap3isp.h
index c73a34c3434d..c090cf9249bb 100644
--- a/include/linux/omap3isp.h
+++ b/include/linux/omap3isp.h
@@ -28,6 +28,7 @@
28#define OMAP3_ISP_USER_H 28#define OMAP3_ISP_USER_H
29 29
30#include <linux/types.h> 30#include <linux/types.h>
31#include <linux/videodev2.h>
31 32
32/* 33/*
33 * Private IOCTLs 34 * Private IOCTLs
@@ -427,7 +428,7 @@ struct omap3isp_ccdc_update_config {
427#define OMAP3ISP_PREV_COLOR_CONV (1 << 8) 428#define OMAP3ISP_PREV_COLOR_CONV (1 << 8)
428#define OMAP3ISP_PREV_YC_LIMIT (1 << 9) 429#define OMAP3ISP_PREV_YC_LIMIT (1 << 9)
429#define OMAP3ISP_PREV_DEFECT_COR (1 << 10) 430#define OMAP3ISP_PREV_DEFECT_COR (1 << 10)
430#define OMAP3ISP_PREV_GAMMABYPASS (1 << 11) 431/* Bit 11 was OMAP3ISP_PREV_GAMMABYPASS, now merged with OMAP3ISP_PREV_GAMMA */
431#define OMAP3ISP_PREV_DRK_FRM_CAPTURE (1 << 12) 432#define OMAP3ISP_PREV_DRK_FRM_CAPTURE (1 << 12)
432#define OMAP3ISP_PREV_DRK_FRM_SUBTRACT (1 << 13) 433#define OMAP3ISP_PREV_DRK_FRM_SUBTRACT (1 << 13)
433#define OMAP3ISP_PREV_LENS_SHADING (1 << 14) 434#define OMAP3ISP_PREV_LENS_SHADING (1 << 14)
@@ -436,6 +437,7 @@ struct omap3isp_ccdc_update_config {
436 437
437#define OMAP3ISP_PREV_NF_TBL_SIZE 64 438#define OMAP3ISP_PREV_NF_TBL_SIZE 64
438#define OMAP3ISP_PREV_CFA_TBL_SIZE 576 439#define OMAP3ISP_PREV_CFA_TBL_SIZE 576
440#define OMAP3ISP_PREV_CFA_BLK_SIZE (OMAP3ISP_PREV_CFA_TBL_SIZE / 4)
439#define OMAP3ISP_PREV_GAMMA_TBL_SIZE 1024 441#define OMAP3ISP_PREV_GAMMA_TBL_SIZE 1024
440#define OMAP3ISP_PREV_YENH_TBL_SIZE 128 442#define OMAP3ISP_PREV_YENH_TBL_SIZE 128
441 443
@@ -477,7 +479,7 @@ struct omap3isp_prev_cfa {
477 enum omap3isp_cfa_fmt format; 479 enum omap3isp_cfa_fmt format;
478 __u8 gradthrs_vert; 480 __u8 gradthrs_vert;
479 __u8 gradthrs_horz; 481 __u8 gradthrs_horz;
480 __u32 table[OMAP3ISP_PREV_CFA_TBL_SIZE]; 482 __u32 table[4][OMAP3ISP_PREV_CFA_BLK_SIZE];
481}; 483};
482 484
483/** 485/**
diff --git a/include/linux/v4l2-common.h b/include/linux/v4l2-common.h
index 0fa8b64c3cdb..4f0667e010dd 100644
--- a/include/linux/v4l2-common.h
+++ b/include/linux/v4l2-common.h
@@ -53,10 +53,10 @@
53/* Backward compatibility target definitions --- to be removed. */ 53/* Backward compatibility target definitions --- to be removed. */
54#define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP 54#define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP
55#define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE 55#define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE
56#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL \ 56#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
57 V4L2_SEL_TGT_CROP 57#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
58#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL \ 58#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
59 V4L2_SEL_TGT_COMPOSE 59#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
60 60
61/* Selection flags */ 61/* Selection flags */
62#define V4L2_SEL_FLAG_GE (1 << 0) 62#define V4L2_SEL_FLAG_GE (1 << 0)
diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
new file mode 100644
index 000000000000..421d24c7f686
--- /dev/null
+++ b/include/linux/v4l2-controls.h
@@ -0,0 +1,761 @@
1/*
2 * Video for Linux Two controls header file
3 *
4 * Copyright (C) 1999-2012 the contributors
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * Alternatively you can redistribute this file under the terms of the
17 * BSD license as stated below:
18 *
19 * Redistribution and use in source and binary forms, with or without
20 * modification, are permitted provided that the following conditions
21 * are met:
22 * 1. Redistributions of source code must retain the above copyright
23 * notice, this list of conditions and the following disclaimer.
24 * 2. Redistributions in binary form must reproduce the above copyright
25 * notice, this list of conditions and the following disclaimer in
26 * the documentation and/or other materials provided with the
27 * distribution.
28 * 3. The names of its contributors may not be used to endorse or promote
29 * products derived from this software without specific prior written
30 * permission.
31 *
32 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
35 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
38 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
39 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
40 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
41 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
42 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43 *
44 * The contents of this header was split off from videodev2.h. All control
45 * definitions should be added to this header, which is included by
46 * videodev2.h.
47 */
48
49#ifndef __LINUX_V4L2_CONTROLS_H
50#define __LINUX_V4L2_CONTROLS_H
51
52/* Control classes */
53#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
54#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
55#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
56#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */
57#define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */
58#define V4L2_CTRL_CLASS_JPEG 0x009d0000 /* JPEG-compression controls */
59#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000 /* Image source controls */
60#define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000 /* Image processing controls */
61#define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */
62
63/* User-class control IDs */
64
65#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
66#define V4L2_CID_USER_BASE V4L2_CID_BASE
67#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
68#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
69#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
70#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
71#define V4L2_CID_HUE (V4L2_CID_BASE+3)
72#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
73#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
74#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
75#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
76#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
77#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
78#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */
79#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
80#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
81#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
82#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
83#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
84#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */
85#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
86#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
87#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
88#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
89#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
90
91/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */
92#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
93#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
94
95#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
96enum v4l2_power_line_frequency {
97 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
98 V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
99 V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
100 V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
101};
102#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
103#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
104#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
105#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
106#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
107#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
108#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
109enum v4l2_colorfx {
110 V4L2_COLORFX_NONE = 0,
111 V4L2_COLORFX_BW = 1,
112 V4L2_COLORFX_SEPIA = 2,
113 V4L2_COLORFX_NEGATIVE = 3,
114 V4L2_COLORFX_EMBOSS = 4,
115 V4L2_COLORFX_SKETCH = 5,
116 V4L2_COLORFX_SKY_BLUE = 6,
117 V4L2_COLORFX_GRASS_GREEN = 7,
118 V4L2_COLORFX_SKIN_WHITEN = 8,
119 V4L2_COLORFX_VIVID = 9,
120 V4L2_COLORFX_AQUA = 10,
121 V4L2_COLORFX_ART_FREEZE = 11,
122 V4L2_COLORFX_SILHOUETTE = 12,
123 V4L2_COLORFX_SOLARIZATION = 13,
124 V4L2_COLORFX_ANTIQUE = 14,
125 V4L2_COLORFX_SET_CBCR = 15,
126};
127#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
128#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
129
130#define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
131#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
132
133#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
134
135#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
136#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
137
138#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE+39)
139#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
140
141#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
142#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
143
144/* last CID + 1 */
145#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
146
147
148/* MPEG-class control IDs */
149
150#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
151#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
152
153/* MPEG streams, specific to multiplexed streams */
154#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
155enum v4l2_mpeg_stream_type {
156 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
157 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
158 V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */
159 V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */
160 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
161 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
162};
163#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
164#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
165#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
166#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
167#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
168#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
169#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
170enum v4l2_mpeg_stream_vbi_fmt {
171 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
172 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
173};
174
175/* MPEG audio controls specific to multiplexed streams */
176#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
177enum v4l2_mpeg_audio_sampling_freq {
178 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
179 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
180 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
181};
182#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
183enum v4l2_mpeg_audio_encoding {
184 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
185 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
186 V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
187 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
188 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
189};
190#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
191enum v4l2_mpeg_audio_l1_bitrate {
192 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
193 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
194 V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
195 V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
196 V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
197 V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
198 V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
199 V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
200 V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
201 V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
202 V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
203 V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
204 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
205 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
206};
207#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
208enum v4l2_mpeg_audio_l2_bitrate {
209 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
210 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
211 V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
212 V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
213 V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
214 V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
215 V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
216 V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
217 V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
218 V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
219 V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
220 V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
221 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
222 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
223};
224#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
225enum v4l2_mpeg_audio_l3_bitrate {
226 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
227 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
228 V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
229 V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
230 V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
231 V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
232 V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
233 V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
234 V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
235 V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
236 V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
237 V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
238 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
239 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
240};
241#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
242enum v4l2_mpeg_audio_mode {
243 V4L2_MPEG_AUDIO_MODE_STEREO = 0,
244 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
245 V4L2_MPEG_AUDIO_MODE_DUAL = 2,
246 V4L2_MPEG_AUDIO_MODE_MONO = 3,
247};
248#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
249enum v4l2_mpeg_audio_mode_extension {
250 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
251 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
252 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
253 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
254};
255#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
256enum v4l2_mpeg_audio_emphasis {
257 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
258 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
259 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
260};
261#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
262enum v4l2_mpeg_audio_crc {
263 V4L2_MPEG_AUDIO_CRC_NONE = 0,
264 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
265};
266#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
267#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
268#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
269enum v4l2_mpeg_audio_ac3_bitrate {
270 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
271 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
272 V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
273 V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
274 V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
275 V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
276 V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
277 V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
278 V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
279 V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
280 V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
281 V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
282 V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
283 V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
284 V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
285 V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
286 V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
287 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
288 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
289};
290#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE+112)
291enum v4l2_mpeg_audio_dec_playback {
292 V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
293 V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
294 V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
295 V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
296 V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
297 V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
298};
299#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
300
301/* MPEG video controls specific to multiplexed streams */
302#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
303enum v4l2_mpeg_video_encoding {
304 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
305 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
306 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
307};
308#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
309enum v4l2_mpeg_video_aspect {
310 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
311 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
312 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
313 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
314};
315#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
316#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
317#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
318#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
319#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
320enum v4l2_mpeg_video_bitrate_mode {
321 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
322 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
323};
324#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
325#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
326#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
327#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
328#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
329#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)
330#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)
331#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)
332#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)
333#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)
334enum v4l2_mpeg_video_header_mode {
335 V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
336 V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
337
338};
339#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)
340#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)
341#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)
342#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)
343#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)
344enum v4l2_mpeg_video_multi_slice_mode {
345 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
346 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
347 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
348};
349#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
350#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
351#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)
352
353#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
354#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
355#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
356#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)
357#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)
358#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)
359#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)
360#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)
361#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)
362#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)
363#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)
364#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)
365#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)
366enum v4l2_mpeg_video_h264_entropy_mode {
367 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
368 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
369};
370#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)
371#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)
372enum v4l2_mpeg_video_h264_level {
373 V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
374 V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
375 V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
376 V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
377 V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
378 V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
379 V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
380 V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
381 V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
382 V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
383 V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
384 V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
385 V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
386 V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
387 V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
388 V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
389};
390#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)
391#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)
392#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)
393enum v4l2_mpeg_video_h264_loop_filter_mode {
394 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
395 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
396 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
397};
398#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE+363)
399enum v4l2_mpeg_video_h264_profile {
400 V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
401 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
402 V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
403 V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
404 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
405 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
406 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
407 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
408 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
409 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
410 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
411 V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
412 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
413 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
414 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
415 V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
416 V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
417};
418#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)
419#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)
420#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)
421#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)
422enum v4l2_mpeg_video_h264_vui_sar_idc {
423 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
424 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
425 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
426 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
427 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
428 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
429 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
430 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
431 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
432 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
433 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
434 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
435 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
436 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
437 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
438 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
439 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
440 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
441};
442#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
443#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
444#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
445#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)
446#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)
447#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)
448enum v4l2_mpeg_video_mpeg4_level {
449 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
450 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
451 V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
452 V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
453 V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
454 V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
455 V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
456 V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
457};
458#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+406)
459enum v4l2_mpeg_video_mpeg4_profile {
460 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
461 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
462 V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
463 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
464 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
465};
466#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+407)
467
468/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
469#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
470#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
471enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
472 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
473 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
474};
475#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
476#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
477enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
478 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
479 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
480 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
481 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
482 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
483};
484#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
485enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
486 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
487 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
488};
489#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
490enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
491 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
492 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
493};
494#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
495#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
496enum v4l2_mpeg_cx2341x_video_median_filter_type {
497 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
498 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
499 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
500 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
501 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
502};
503#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
504#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
505#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
506#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
507#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
508
509/* MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */
510#define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
511
512#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)
513#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)
514#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)
515enum v4l2_mpeg_mfc51_video_frame_skip_mode {
516 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
517 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
518 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
519};
520#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE+3)
521enum v4l2_mpeg_mfc51_video_force_frame_type {
522 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
523 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
524 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
525};
526#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)
527#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)
528#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)
529#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)
530#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)
531#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)
532#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)
533#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
534#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
535
536
537/* Camera class control IDs */
538
539#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
540#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
541
542#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
543enum v4l2_exposure_auto_type {
544 V4L2_EXPOSURE_AUTO = 0,
545 V4L2_EXPOSURE_MANUAL = 1,
546 V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
547 V4L2_EXPOSURE_APERTURE_PRIORITY = 3
548};
549#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
550#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
551
552#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
553#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
554#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
555#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
556
557#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
558#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
559
560#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
561#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
562#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
563
564#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
565#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
566#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
567
568#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
569
570#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
571#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
572
573#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE+19)
574
575#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE+20)
576enum v4l2_auto_n_preset_white_balance {
577 V4L2_WHITE_BALANCE_MANUAL = 0,
578 V4L2_WHITE_BALANCE_AUTO = 1,
579 V4L2_WHITE_BALANCE_INCANDESCENT = 2,
580 V4L2_WHITE_BALANCE_FLUORESCENT = 3,
581 V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
582 V4L2_WHITE_BALANCE_HORIZON = 5,
583 V4L2_WHITE_BALANCE_DAYLIGHT = 6,
584 V4L2_WHITE_BALANCE_FLASH = 7,
585 V4L2_WHITE_BALANCE_CLOUDY = 8,
586 V4L2_WHITE_BALANCE_SHADE = 9,
587};
588
589#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
590#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
591
592#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
593#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
594enum v4l2_iso_sensitivity_auto_type {
595 V4L2_ISO_SENSITIVITY_MANUAL = 0,
596 V4L2_ISO_SENSITIVITY_AUTO = 1,
597};
598
599#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE+25)
600enum v4l2_exposure_metering {
601 V4L2_EXPOSURE_METERING_AVERAGE = 0,
602 V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
603 V4L2_EXPOSURE_METERING_SPOT = 2,
604};
605
606#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26)
607enum v4l2_scene_mode {
608 V4L2_SCENE_MODE_NONE = 0,
609 V4L2_SCENE_MODE_BACKLIGHT = 1,
610 V4L2_SCENE_MODE_BEACH_SNOW = 2,
611 V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
612 V4L2_SCENE_MODE_DAWN_DUSK = 4,
613 V4L2_SCENE_MODE_FALL_COLORS = 5,
614 V4L2_SCENE_MODE_FIREWORKS = 6,
615 V4L2_SCENE_MODE_LANDSCAPE = 7,
616 V4L2_SCENE_MODE_NIGHT = 8,
617 V4L2_SCENE_MODE_PARTY_INDOOR = 9,
618 V4L2_SCENE_MODE_PORTRAIT = 10,
619 V4L2_SCENE_MODE_SPORTS = 11,
620 V4L2_SCENE_MODE_SUNSET = 12,
621 V4L2_SCENE_MODE_TEXT = 13,
622};
623
624#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE+27)
625#define V4L2_LOCK_EXPOSURE (1 << 0)
626#define V4L2_LOCK_WHITE_BALANCE (1 << 1)
627#define V4L2_LOCK_FOCUS (1 << 2)
628
629#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE+28)
630#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE+29)
631#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE+30)
632#define V4L2_AUTO_FOCUS_STATUS_IDLE (0 << 0)
633#define V4L2_AUTO_FOCUS_STATUS_BUSY (1 << 0)
634#define V4L2_AUTO_FOCUS_STATUS_REACHED (1 << 1)
635#define V4L2_AUTO_FOCUS_STATUS_FAILED (1 << 2)
636
637#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE+31)
638enum v4l2_auto_focus_range {
639 V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
640 V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
641 V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
642 V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
643};
644
645
646/* FM Modulator class control IDs */
647
648#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
649#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
650
651#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
652#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
653#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
654#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
655#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
656
657#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
658#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
659#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
660
661#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
662#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
663#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
664#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
665#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
666
667#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
668#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
669#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
670
671#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
672enum v4l2_preemphasis {
673 V4L2_PREEMPHASIS_DISABLED = 0,
674 V4L2_PREEMPHASIS_50_uS = 1,
675 V4L2_PREEMPHASIS_75_uS = 2,
676};
677#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
678#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
679
680
681/* Flash and privacy (indicator) light controls */
682
683#define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
684#define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
685
686#define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
687enum v4l2_flash_led_mode {
688 V4L2_FLASH_LED_MODE_NONE,
689 V4L2_FLASH_LED_MODE_FLASH,
690 V4L2_FLASH_LED_MODE_TORCH,
691};
692
693#define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
694enum v4l2_flash_strobe_source {
695 V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
696 V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
697};
698
699#define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
700#define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
701#define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
702
703#define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
704#define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
705#define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
706#define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
707
708#define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
709#define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
710#define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
711#define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
712#define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
713#define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4)
714#define V4L2_FLASH_FAULT_INDICATOR (1 << 5)
715
716#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
717#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
718
719
720/* JPEG-class control IDs */
721
722#define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
723#define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
724
725#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
726enum v4l2_jpeg_chroma_subsampling {
727 V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
728 V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
729 V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
730 V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
731 V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
732 V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
733};
734#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
735#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
736
737#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
738#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
739#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
740#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
741#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
742#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
743
744/* Image source controls */
745#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
746#define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
747
748#define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
749#define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
750#define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
751
752
753/* Image processing controls */
754
755#define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
756#define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
757
758#define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
759#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
760
761#endif
diff --git a/include/linux/v4l2-subdev.h b/include/linux/v4l2-subdev.h
index 8c57ee9872bb..a33c4daadce3 100644
--- a/include/linux/v4l2-subdev.h
+++ b/include/linux/v4l2-subdev.h
@@ -148,6 +148,14 @@ struct v4l2_subdev_selection {
148 __u32 reserved[8]; 148 __u32 reserved[8];
149}; 149};
150 150
151struct v4l2_subdev_edid {
152 __u32 pad;
153 __u32 start_block;
154 __u32 blocks;
155 __u32 reserved[5];
156 __u8 __user *edid;
157};
158
151#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format) 159#define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
152#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format) 160#define VIDIOC_SUBDEV_S_FMT _IOWR('V', 5, struct v4l2_subdev_format)
153#define VIDIOC_SUBDEV_G_FRAME_INTERVAL \ 161#define VIDIOC_SUBDEV_G_FRAME_INTERVAL \
@@ -166,5 +174,7 @@ struct v4l2_subdev_selection {
166 _IOWR('V', 61, struct v4l2_subdev_selection) 174 _IOWR('V', 61, struct v4l2_subdev_selection)
167#define VIDIOC_SUBDEV_S_SELECTION \ 175#define VIDIOC_SUBDEV_S_SELECTION \
168 _IOWR('V', 62, struct v4l2_subdev_selection) 176 _IOWR('V', 62, struct v4l2_subdev_selection)
177#define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_subdev_edid)
178#define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_subdev_edid)
169 179
170#endif 180#endif
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 7a147c8299ab..61395ef85a00 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -1,7 +1,7 @@
1/* 1/*
2 * Video for Linux Two header file 2 * Video for Linux Two header file
3 * 3 *
4 * Copyright (C) 1999-2007 the contributors 4 * Copyright (C) 1999-2012 the contributors
5 * 5 *
6 * This program is free software; you can redistribute it and/or modify 6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by 7 * it under the terms of the GNU General Public License as published by
@@ -65,6 +65,7 @@
65#include <linux/ioctl.h> 65#include <linux/ioctl.h>
66#include <linux/types.h> 66#include <linux/types.h>
67#include <linux/v4l2-common.h> 67#include <linux/v4l2-common.h>
68#include <linux/v4l2-controls.h>
68 69
69/* 70/*
70 * Common stuff for both V4L1 and V4L2 71 * Common stuff for both V4L1 and V4L2
@@ -161,6 +162,7 @@ enum v4l2_buf_type {
161#endif 162#endif
162 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9, 163 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
163 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10, 164 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
165 /* Deprecated, do not use */
164 V4L2_BUF_TYPE_PRIVATE = 0x80, 166 V4L2_BUF_TYPE_PRIVATE = 0x80,
165}; 167};
166 168
@@ -368,6 +370,7 @@ struct v4l2_pix_format {
368 370
369/* three non contiguous planes - Y, Cb, Cr */ 371/* three non contiguous planes - Y, Cb, Cr */
370#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */ 372#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */
373#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */
371 374
372/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ 375/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
373#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ 376#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
@@ -1188,7 +1191,8 @@ struct v4l2_input {
1188 1191
1189/* capabilities flags */ 1192/* capabilities flags */
1190#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ 1193#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
1191#define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 1194#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
1195#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
1192#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ 1196#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
1193 1197
1194/* 1198/*
@@ -1211,7 +1215,8 @@ struct v4l2_output {
1211 1215
1212/* capabilities flags */ 1216/* capabilities flags */
1213#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */ 1217#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
1214#define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 1218#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
1219#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
1215#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ 1220#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
1216 1221
1217/* 1222/*
@@ -1241,16 +1246,6 @@ struct v4l2_ext_controls {
1241 struct v4l2_ext_control *controls; 1246 struct v4l2_ext_control *controls;
1242}; 1247};
1243 1248
1244/* Values for ctrl_class field */
1245#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
1246#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
1247#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
1248#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */
1249#define V4L2_CTRL_CLASS_FLASH 0x009c0000 /* Camera flash controls */
1250#define V4L2_CTRL_CLASS_JPEG 0x009d0000 /* JPEG-compression controls */
1251#define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000 /* Image source controls */
1252#define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000 /* Image processing controls */
1253
1254#define V4L2_CTRL_ID_MASK (0x0fffffff) 1249#define V4L2_CTRL_ID_MASK (0x0fffffff)
1255#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) 1250#define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
1256#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) 1251#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
@@ -1306,692 +1301,31 @@ struct v4l2_querymenu {
1306 1301
1307/* User-class control IDs defined by V4L2 */ 1302/* User-class control IDs defined by V4L2 */
1308#define V4L2_CID_MAX_CTRLS 1024 1303#define V4L2_CID_MAX_CTRLS 1024
1309#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
1310#define V4L2_CID_USER_BASE V4L2_CID_BASE
1311/* IDs reserved for driver specific controls */ 1304/* IDs reserved for driver specific controls */
1312#define V4L2_CID_PRIVATE_BASE 0x08000000 1305#define V4L2_CID_PRIVATE_BASE 0x08000000
1313 1306
1314#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1) 1307
1315#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0) 1308/* DV-class control IDs defined by V4L2 */
1316#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1) 1309#define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
1317#define V4L2_CID_SATURATION (V4L2_CID_BASE+2) 1310#define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
1318#define V4L2_CID_HUE (V4L2_CID_BASE+3) 1311
1319#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5) 1312#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
1320#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6) 1313#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
1321#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7) 1314#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
1322#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8) 1315#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
1323#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9) 1316enum v4l2_dv_tx_mode {
1324#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10) 1317 V4L2_DV_TX_MODE_DVI_D = 0,
1325#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */ 1318 V4L2_DV_TX_MODE_HDMI = 1,
1326#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12) 1319};
1327#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13) 1320#define V4L2_CID_DV_TX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 5)
1328#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14) 1321enum v4l2_dv_rgb_range {
1329#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15) 1322 V4L2_DV_RGB_RANGE_AUTO = 0,
1330#define V4L2_CID_GAMMA (V4L2_CID_BASE+16) 1323 V4L2_DV_RGB_RANGE_LIMITED = 1,
1331#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */ 1324 V4L2_DV_RGB_RANGE_FULL = 2,
1332#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17) 1325};
1333#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18) 1326
1334#define V4L2_CID_GAIN (V4L2_CID_BASE+19) 1327#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
1335#define V4L2_CID_HFLIP (V4L2_CID_BASE+20) 1328#define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
1336#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
1337
1338/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */
1339#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
1340#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
1341
1342#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
1343enum v4l2_power_line_frequency {
1344 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
1345 V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
1346 V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
1347 V4L2_CID_POWER_LINE_FREQUENCY_AUTO = 3,
1348};
1349#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
1350#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
1351#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
1352#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
1353#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
1354#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
1355#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
1356enum v4l2_colorfx {
1357 V4L2_COLORFX_NONE = 0,
1358 V4L2_COLORFX_BW = 1,
1359 V4L2_COLORFX_SEPIA = 2,
1360 V4L2_COLORFX_NEGATIVE = 3,
1361 V4L2_COLORFX_EMBOSS = 4,
1362 V4L2_COLORFX_SKETCH = 5,
1363 V4L2_COLORFX_SKY_BLUE = 6,
1364 V4L2_COLORFX_GRASS_GREEN = 7,
1365 V4L2_COLORFX_SKIN_WHITEN = 8,
1366 V4L2_COLORFX_VIVID = 9,
1367 V4L2_COLORFX_AQUA = 10,
1368 V4L2_COLORFX_ART_FREEZE = 11,
1369 V4L2_COLORFX_SILHOUETTE = 12,
1370 V4L2_COLORFX_SOLARIZATION = 13,
1371 V4L2_COLORFX_ANTIQUE = 14,
1372 V4L2_COLORFX_SET_CBCR = 15,
1373};
1374#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
1375#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
1376
1377#define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
1378#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
1379
1380#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
1381
1382#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
1383#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
1384
1385#define V4L2_CID_MIN_BUFFERS_FOR_CAPTURE (V4L2_CID_BASE+39)
1386#define V4L2_CID_MIN_BUFFERS_FOR_OUTPUT (V4L2_CID_BASE+40)
1387
1388#define V4L2_CID_ALPHA_COMPONENT (V4L2_CID_BASE+41)
1389#define V4L2_CID_COLORFX_CBCR (V4L2_CID_BASE+42)
1390
1391/* last CID + 1 */
1392#define V4L2_CID_LASTP1 (V4L2_CID_BASE+43)
1393
1394/* MPEG-class control IDs defined by V4L2 */
1395#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
1396#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
1397
1398/* MPEG streams, specific to multiplexed streams */
1399#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
1400enum v4l2_mpeg_stream_type {
1401 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
1402 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
1403 V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */
1404 V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */
1405 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
1406 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
1407};
1408#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
1409#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
1410#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
1411#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
1412#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
1413#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
1414#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
1415enum v4l2_mpeg_stream_vbi_fmt {
1416 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
1417 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
1418};
1419
1420/* MPEG audio controls specific to multiplexed streams */
1421#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
1422enum v4l2_mpeg_audio_sampling_freq {
1423 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
1424 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
1425 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
1426};
1427#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
1428enum v4l2_mpeg_audio_encoding {
1429 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
1430 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
1431 V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
1432 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
1433 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
1434};
1435#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
1436enum v4l2_mpeg_audio_l1_bitrate {
1437 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
1438 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
1439 V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
1440 V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
1441 V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
1442 V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
1443 V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
1444 V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
1445 V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
1446 V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
1447 V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
1448 V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
1449 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
1450 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
1451};
1452#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
1453enum v4l2_mpeg_audio_l2_bitrate {
1454 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
1455 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
1456 V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
1457 V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
1458 V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
1459 V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
1460 V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
1461 V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
1462 V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
1463 V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
1464 V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
1465 V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
1466 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
1467 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
1468};
1469#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
1470enum v4l2_mpeg_audio_l3_bitrate {
1471 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
1472 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
1473 V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
1474 V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
1475 V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
1476 V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
1477 V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
1478 V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
1479 V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
1480 V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
1481 V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
1482 V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
1483 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
1484 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
1485};
1486#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
1487enum v4l2_mpeg_audio_mode {
1488 V4L2_MPEG_AUDIO_MODE_STEREO = 0,
1489 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
1490 V4L2_MPEG_AUDIO_MODE_DUAL = 2,
1491 V4L2_MPEG_AUDIO_MODE_MONO = 3,
1492};
1493#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
1494enum v4l2_mpeg_audio_mode_extension {
1495 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
1496 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
1497 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
1498 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
1499};
1500#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
1501enum v4l2_mpeg_audio_emphasis {
1502 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
1503 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
1504 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
1505};
1506#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
1507enum v4l2_mpeg_audio_crc {
1508 V4L2_MPEG_AUDIO_CRC_NONE = 0,
1509 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
1510};
1511#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
1512#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
1513#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
1514enum v4l2_mpeg_audio_ac3_bitrate {
1515 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
1516 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
1517 V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
1518 V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
1519 V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
1520 V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
1521 V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
1522 V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
1523 V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
1524 V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
1525 V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
1526 V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
1527 V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
1528 V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
1529 V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
1530 V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
1531 V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
1532 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
1533 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
1534};
1535#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE+112)
1536enum v4l2_mpeg_audio_dec_playback {
1537 V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
1538 V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
1539 V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT = 2,
1540 V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT = 3,
1541 V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
1542 V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
1543};
1544#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE+113)
1545
1546/* MPEG video controls specific to multiplexed streams */
1547#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
1548enum v4l2_mpeg_video_encoding {
1549 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
1550 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
1551 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
1552};
1553#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
1554enum v4l2_mpeg_video_aspect {
1555 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
1556 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
1557 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
1558 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
1559};
1560#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
1561#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
1562#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
1563#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
1564#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
1565enum v4l2_mpeg_video_bitrate_mode {
1566 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
1567 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
1568};
1569#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
1570#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
1571#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
1572#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
1573#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
1574#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE+212)
1575#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE+213)
1576#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE+214)
1577#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE+215)
1578#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE+216)
1579enum v4l2_mpeg_video_header_mode {
1580 V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
1581 V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
1582
1583};
1584#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE+217)
1585#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE+218)
1586#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE+219)
1587#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE+220)
1588#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE+221)
1589enum v4l2_mpeg_video_multi_slice_mode {
1590 V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
1591 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
1592 V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
1593};
1594#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE+222)
1595#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE+223)
1596#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE+224)
1597
1598#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
1599#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
1600#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
1601#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE+303)
1602#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE+304)
1603#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE+350)
1604#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE+351)
1605#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE+352)
1606#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE+353)
1607#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE+354)
1608#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE+355)
1609#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE+356)
1610#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE+357)
1611enum v4l2_mpeg_video_h264_entropy_mode {
1612 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
1613 V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
1614};
1615#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE+358)
1616#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE+359)
1617enum v4l2_mpeg_video_h264_level {
1618 V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
1619 V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
1620 V4L2_MPEG_VIDEO_H264_LEVEL_1_1 = 2,
1621 V4L2_MPEG_VIDEO_H264_LEVEL_1_2 = 3,
1622 V4L2_MPEG_VIDEO_H264_LEVEL_1_3 = 4,
1623 V4L2_MPEG_VIDEO_H264_LEVEL_2_0 = 5,
1624 V4L2_MPEG_VIDEO_H264_LEVEL_2_1 = 6,
1625 V4L2_MPEG_VIDEO_H264_LEVEL_2_2 = 7,
1626 V4L2_MPEG_VIDEO_H264_LEVEL_3_0 = 8,
1627 V4L2_MPEG_VIDEO_H264_LEVEL_3_1 = 9,
1628 V4L2_MPEG_VIDEO_H264_LEVEL_3_2 = 10,
1629 V4L2_MPEG_VIDEO_H264_LEVEL_4_0 = 11,
1630 V4L2_MPEG_VIDEO_H264_LEVEL_4_1 = 12,
1631 V4L2_MPEG_VIDEO_H264_LEVEL_4_2 = 13,
1632 V4L2_MPEG_VIDEO_H264_LEVEL_5_0 = 14,
1633 V4L2_MPEG_VIDEO_H264_LEVEL_5_1 = 15,
1634};
1635#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE+360)
1636#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE+361)
1637#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE+362)
1638enum v4l2_mpeg_video_h264_loop_filter_mode {
1639 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
1640 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
1641 V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
1642};
1643#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE+363)
1644enum v4l2_mpeg_video_h264_profile {
1645 V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
1646 V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
1647 V4L2_MPEG_VIDEO_H264_PROFILE_MAIN = 2,
1648 V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED = 3,
1649 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH = 4,
1650 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10 = 5,
1651 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422 = 6,
1652 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE = 7,
1653 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA = 8,
1654 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA = 9,
1655 V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA = 10,
1656 V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA = 11,
1657 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE = 12,
1658 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH = 13,
1659 V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA = 14,
1660 V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH = 15,
1661 V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
1662};
1663#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE+364)
1664#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE+365)
1665#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE+366)
1666#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE+367)
1667enum v4l2_mpeg_video_h264_vui_sar_idc {
1668 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
1669 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
1670 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11 = 2,
1671 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11 = 3,
1672 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11 = 4,
1673 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33 = 5,
1674 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11 = 6,
1675 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11 = 7,
1676 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11 = 8,
1677 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33 = 9,
1678 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11 = 10,
1679 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11 = 11,
1680 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33 = 12,
1681 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99 = 13,
1682 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3 = 14,
1683 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2 = 15,
1684 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
1685 V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
1686};
1687#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
1688#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
1689#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
1690#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE+403)
1691#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE+404)
1692#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE+405)
1693enum v4l2_mpeg_video_mpeg4_level {
1694 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
1695 V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
1696 V4L2_MPEG_VIDEO_MPEG4_LEVEL_1 = 2,
1697 V4L2_MPEG_VIDEO_MPEG4_LEVEL_2 = 3,
1698 V4L2_MPEG_VIDEO_MPEG4_LEVEL_3 = 4,
1699 V4L2_MPEG_VIDEO_MPEG4_LEVEL_3B = 5,
1700 V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
1701 V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
1702};
1703#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE+406)
1704enum v4l2_mpeg_video_mpeg4_profile {
1705 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
1706 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
1707 V4L2_MPEG_VIDEO_MPEG4_PROFILE_CORE = 2,
1708 V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
1709 V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
1710};
1711#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE+407)
1712
1713/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
1714#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
1715#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
1716enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
1717 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
1718 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
1719};
1720#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
1721#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
1722enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
1723 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
1724 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1725 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
1726 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
1727 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
1728};
1729#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
1730enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
1731 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
1732 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1733};
1734#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
1735enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
1736 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
1737 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
1738};
1739#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
1740#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
1741enum v4l2_mpeg_cx2341x_video_median_filter_type {
1742 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
1743 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
1744 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
1745 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
1746 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
1747};
1748#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
1749#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
1750#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
1751#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
1752#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
1753
1754/* MPEG-class control IDs specific to the Samsung MFC 5.1 driver as defined by V4L2 */
1755#define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
1756
1757#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE+0)
1758#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE+1)
1759#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE+2)
1760enum v4l2_mpeg_mfc51_video_frame_skip_mode {
1761 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
1762 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
1763 V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
1764};
1765#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE+3)
1766enum v4l2_mpeg_mfc51_video_force_frame_type {
1767 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
1768 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
1769 V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
1770};
1771#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE+4)
1772#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE+5)
1773#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE+6)
1774#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE+7)
1775#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE+50)
1776#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE+51)
1777#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE+52)
1778#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE+53)
1779#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE+54)
1780
1781/* Camera class control IDs */
1782#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
1783#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
1784
1785#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
1786enum v4l2_exposure_auto_type {
1787 V4L2_EXPOSURE_AUTO = 0,
1788 V4L2_EXPOSURE_MANUAL = 1,
1789 V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
1790 V4L2_EXPOSURE_APERTURE_PRIORITY = 3
1791};
1792#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
1793#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
1794
1795#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
1796#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
1797#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
1798#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
1799
1800#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
1801#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
1802
1803#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
1804#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
1805#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
1806
1807#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
1808#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
1809#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
1810
1811#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
1812
1813#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
1814#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
1815
1816#define V4L2_CID_AUTO_EXPOSURE_BIAS (V4L2_CID_CAMERA_CLASS_BASE+19)
1817
1818#define V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE (V4L2_CID_CAMERA_CLASS_BASE+20)
1819enum v4l2_auto_n_preset_white_balance {
1820 V4L2_WHITE_BALANCE_MANUAL = 0,
1821 V4L2_WHITE_BALANCE_AUTO = 1,
1822 V4L2_WHITE_BALANCE_INCANDESCENT = 2,
1823 V4L2_WHITE_BALANCE_FLUORESCENT = 3,
1824 V4L2_WHITE_BALANCE_FLUORESCENT_H = 4,
1825 V4L2_WHITE_BALANCE_HORIZON = 5,
1826 V4L2_WHITE_BALANCE_DAYLIGHT = 6,
1827 V4L2_WHITE_BALANCE_FLASH = 7,
1828 V4L2_WHITE_BALANCE_CLOUDY = 8,
1829 V4L2_WHITE_BALANCE_SHADE = 9,
1830};
1831
1832#define V4L2_CID_WIDE_DYNAMIC_RANGE (V4L2_CID_CAMERA_CLASS_BASE+21)
1833#define V4L2_CID_IMAGE_STABILIZATION (V4L2_CID_CAMERA_CLASS_BASE+22)
1834
1835#define V4L2_CID_ISO_SENSITIVITY (V4L2_CID_CAMERA_CLASS_BASE+23)
1836#define V4L2_CID_ISO_SENSITIVITY_AUTO (V4L2_CID_CAMERA_CLASS_BASE+24)
1837enum v4l2_iso_sensitivity_auto_type {
1838 V4L2_ISO_SENSITIVITY_MANUAL = 0,
1839 V4L2_ISO_SENSITIVITY_AUTO = 1,
1840};
1841
1842#define V4L2_CID_EXPOSURE_METERING (V4L2_CID_CAMERA_CLASS_BASE+25)
1843enum v4l2_exposure_metering {
1844 V4L2_EXPOSURE_METERING_AVERAGE = 0,
1845 V4L2_EXPOSURE_METERING_CENTER_WEIGHTED = 1,
1846 V4L2_EXPOSURE_METERING_SPOT = 2,
1847};
1848
1849#define V4L2_CID_SCENE_MODE (V4L2_CID_CAMERA_CLASS_BASE+26)
1850enum v4l2_scene_mode {
1851 V4L2_SCENE_MODE_NONE = 0,
1852 V4L2_SCENE_MODE_BACKLIGHT = 1,
1853 V4L2_SCENE_MODE_BEACH_SNOW = 2,
1854 V4L2_SCENE_MODE_CANDLE_LIGHT = 3,
1855 V4L2_SCENE_MODE_DAWN_DUSK = 4,
1856 V4L2_SCENE_MODE_FALL_COLORS = 5,
1857 V4L2_SCENE_MODE_FIREWORKS = 6,
1858 V4L2_SCENE_MODE_LANDSCAPE = 7,
1859 V4L2_SCENE_MODE_NIGHT = 8,
1860 V4L2_SCENE_MODE_PARTY_INDOOR = 9,
1861 V4L2_SCENE_MODE_PORTRAIT = 10,
1862 V4L2_SCENE_MODE_SPORTS = 11,
1863 V4L2_SCENE_MODE_SUNSET = 12,
1864 V4L2_SCENE_MODE_TEXT = 13,
1865};
1866
1867#define V4L2_CID_3A_LOCK (V4L2_CID_CAMERA_CLASS_BASE+27)
1868#define V4L2_LOCK_EXPOSURE (1 << 0)
1869#define V4L2_LOCK_WHITE_BALANCE (1 << 1)
1870#define V4L2_LOCK_FOCUS (1 << 2)
1871
1872#define V4L2_CID_AUTO_FOCUS_START (V4L2_CID_CAMERA_CLASS_BASE+28)
1873#define V4L2_CID_AUTO_FOCUS_STOP (V4L2_CID_CAMERA_CLASS_BASE+29)
1874#define V4L2_CID_AUTO_FOCUS_STATUS (V4L2_CID_CAMERA_CLASS_BASE+30)
1875#define V4L2_AUTO_FOCUS_STATUS_IDLE (0 << 0)
1876#define V4L2_AUTO_FOCUS_STATUS_BUSY (1 << 0)
1877#define V4L2_AUTO_FOCUS_STATUS_REACHED (1 << 1)
1878#define V4L2_AUTO_FOCUS_STATUS_FAILED (1 << 2)
1879
1880#define V4L2_CID_AUTO_FOCUS_RANGE (V4L2_CID_CAMERA_CLASS_BASE+31)
1881enum v4l2_auto_focus_range {
1882 V4L2_AUTO_FOCUS_RANGE_AUTO = 0,
1883 V4L2_AUTO_FOCUS_RANGE_NORMAL = 1,
1884 V4L2_AUTO_FOCUS_RANGE_MACRO = 2,
1885 V4L2_AUTO_FOCUS_RANGE_INFINITY = 3,
1886};
1887
1888/* FM Modulator class control IDs */
1889#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
1890#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
1891
1892#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
1893#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
1894#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
1895#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
1896#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
1897
1898#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
1899#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
1900#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
1901
1902#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
1903#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
1904#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
1905#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
1906#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
1907
1908#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
1909#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
1910#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
1911
1912#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
1913enum v4l2_preemphasis {
1914 V4L2_PREEMPHASIS_DISABLED = 0,
1915 V4L2_PREEMPHASIS_50_uS = 1,
1916 V4L2_PREEMPHASIS_75_uS = 2,
1917};
1918#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
1919#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
1920
1921/* Flash and privacy (indicator) light controls */
1922#define V4L2_CID_FLASH_CLASS_BASE (V4L2_CTRL_CLASS_FLASH | 0x900)
1923#define V4L2_CID_FLASH_CLASS (V4L2_CTRL_CLASS_FLASH | 1)
1924
1925#define V4L2_CID_FLASH_LED_MODE (V4L2_CID_FLASH_CLASS_BASE + 1)
1926enum v4l2_flash_led_mode {
1927 V4L2_FLASH_LED_MODE_NONE,
1928 V4L2_FLASH_LED_MODE_FLASH,
1929 V4L2_FLASH_LED_MODE_TORCH,
1930};
1931
1932#define V4L2_CID_FLASH_STROBE_SOURCE (V4L2_CID_FLASH_CLASS_BASE + 2)
1933enum v4l2_flash_strobe_source {
1934 V4L2_FLASH_STROBE_SOURCE_SOFTWARE,
1935 V4L2_FLASH_STROBE_SOURCE_EXTERNAL,
1936};
1937
1938#define V4L2_CID_FLASH_STROBE (V4L2_CID_FLASH_CLASS_BASE + 3)
1939#define V4L2_CID_FLASH_STROBE_STOP (V4L2_CID_FLASH_CLASS_BASE + 4)
1940#define V4L2_CID_FLASH_STROBE_STATUS (V4L2_CID_FLASH_CLASS_BASE + 5)
1941
1942#define V4L2_CID_FLASH_TIMEOUT (V4L2_CID_FLASH_CLASS_BASE + 6)
1943#define V4L2_CID_FLASH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 7)
1944#define V4L2_CID_FLASH_TORCH_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 8)
1945#define V4L2_CID_FLASH_INDICATOR_INTENSITY (V4L2_CID_FLASH_CLASS_BASE + 9)
1946
1947#define V4L2_CID_FLASH_FAULT (V4L2_CID_FLASH_CLASS_BASE + 10)
1948#define V4L2_FLASH_FAULT_OVER_VOLTAGE (1 << 0)
1949#define V4L2_FLASH_FAULT_TIMEOUT (1 << 1)
1950#define V4L2_FLASH_FAULT_OVER_TEMPERATURE (1 << 2)
1951#define V4L2_FLASH_FAULT_SHORT_CIRCUIT (1 << 3)
1952#define V4L2_FLASH_FAULT_OVER_CURRENT (1 << 4)
1953#define V4L2_FLASH_FAULT_INDICATOR (1 << 5)
1954
1955#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
1956#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
1957
1958/* JPEG-class control IDs defined by V4L2 */
1959#define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
1960#define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
1961
1962#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
1963enum v4l2_jpeg_chroma_subsampling {
1964 V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
1965 V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
1966 V4L2_JPEG_CHROMA_SUBSAMPLING_420 = 2,
1967 V4L2_JPEG_CHROMA_SUBSAMPLING_411 = 3,
1968 V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
1969 V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
1970};
1971#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
1972#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
1973
1974#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
1975#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
1976#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
1977#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
1978#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
1979#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
1980
1981/* Image source controls */
1982#define V4L2_CID_IMAGE_SOURCE_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_SOURCE | 0x900)
1983#define V4L2_CID_IMAGE_SOURCE_CLASS (V4L2_CTRL_CLASS_IMAGE_SOURCE | 1)
1984
1985#define V4L2_CID_VBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 1)
1986#define V4L2_CID_HBLANK (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 2)
1987#define V4L2_CID_ANALOGUE_GAIN (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 3)
1988
1989/* Image processing controls */
1990#define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
1991#define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
1992
1993#define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
1994#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
1995 1329
1996/* 1330/*
1997 * T U N I N G 1331 * T U N I N G
diff --git a/include/media/ad9389b.h b/include/media/ad9389b.h
new file mode 100644
index 000000000000..5ba9af869b8b
--- /dev/null
+++ b/include/media/ad9389b.h
@@ -0,0 +1,49 @@
1/*
2 * Analog Devices AD9389B/AD9889B video encoder driver header
3 *
4 * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
5 *
6 * This program is free software; you may redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
11 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
13 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
14 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
15 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17 * SOFTWARE.
18 */
19
20#ifndef AD9389B_H
21#define AD9389B_H
22
23enum ad9389b_tmds_pll_gear {
24 AD9389B_TMDS_PLL_GEAR_AUTOMATIC,
25 AD9389B_TMDS_PLL_GEAR_SEMI_AUTOMATIC,
26};
27
28/* Platform dependent definitions */
29struct ad9389b_platform_data {
30 enum ad9389b_tmds_pll_gear tmds_pll_gear ;
31 /* Differential Data/Clock Output Drive Strength (reg. 0xa2/0xa3) */
32 u8 diff_data_drive_strength;
33 u8 diff_clk_drive_strength;
34};
35
36/* notify events */
37#define AD9389B_MONITOR_DETECT 0
38#define AD9389B_EDID_DETECT 1
39
40struct ad9389b_monitor_detect {
41 int present;
42};
43
44struct ad9389b_edid_detect {
45 int present;
46 int segment;
47};
48
49#endif
diff --git a/include/media/adv7604.h b/include/media/adv7604.h
new file mode 100644
index 000000000000..171b957db743
--- /dev/null
+++ b/include/media/adv7604.h
@@ -0,0 +1,153 @@
1/*
2 * adv7604 - Analog Devices ADV7604 video decoder driver
3 *
4 * Copyright 2012 Cisco Systems, Inc. and/or its affiliates. All rights reserved.
5 *
6 * This program is free software; you may redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
11 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
12 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
13 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
14 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
15 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
16 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
17 * SOFTWARE.
18 *
19 */
20
21#ifndef _ADV7604_
22#define _ADV7604_
23
24/* Analog input muxing modes (AFE register 0x02, [2:0]) */
25enum adv7604_ain_sel {
26 ADV7604_AIN1_2_3_NC_SYNC_1_2 = 0,
27 ADV7604_AIN4_5_6_NC_SYNC_2_1 = 1,
28 ADV7604_AIN7_8_9_NC_SYNC_3_1 = 2,
29 ADV7604_AIN10_11_12_NC_SYNC_4_1 = 3,
30 ADV7604_AIN9_4_5_6_SYNC_2_1 = 4,
31};
32
33/* Bus rotation and reordering (IO register 0x04, [7:5]) */
34enum adv7604_op_ch_sel {
35 ADV7604_OP_CH_SEL_GBR = 0,
36 ADV7604_OP_CH_SEL_GRB = 1,
37 ADV7604_OP_CH_SEL_BGR = 2,
38 ADV7604_OP_CH_SEL_RGB = 3,
39 ADV7604_OP_CH_SEL_BRG = 4,
40 ADV7604_OP_CH_SEL_RBG = 5,
41};
42
43/* Primary mode (IO register 0x01, [3:0]) */
44enum adv7604_prim_mode {
45 ADV7604_PRIM_MODE_COMP = 1,
46 ADV7604_PRIM_MODE_RGB = 2,
47 ADV7604_PRIM_MODE_HDMI_COMP = 5,
48 ADV7604_PRIM_MODE_HDMI_GR = 6,
49};
50
51/* Input Color Space (IO register 0x02, [7:4]) */
52enum adv7604_inp_color_space {
53 ADV7604_INP_COLOR_SPACE_LIM_RGB = 0,
54 ADV7604_INP_COLOR_SPACE_FULL_RGB = 1,
55 ADV7604_INP_COLOR_SPACE_LIM_YCbCr_601 = 2,
56 ADV7604_INP_COLOR_SPACE_LIM_YCbCr_709 = 3,
57 ADV7604_INP_COLOR_SPACE_XVYCC_601 = 4,
58 ADV7604_INP_COLOR_SPACE_XVYCC_709 = 5,
59 ADV7604_INP_COLOR_SPACE_FULL_YCbCr_601 = 6,
60 ADV7604_INP_COLOR_SPACE_FULL_YCbCr_709 = 7,
61 ADV7604_INP_COLOR_SPACE_AUTO = 0xf,
62};
63
64/* Select output format (IO register 0x03, [7:0]) */
65enum adv7604_op_format_sel {
66 ADV7604_OP_FORMAT_SEL_SDR_ITU656_8 = 0x00,
67 ADV7604_OP_FORMAT_SEL_SDR_ITU656_10 = 0x01,
68 ADV7604_OP_FORMAT_SEL_SDR_ITU656_12_MODE0 = 0x02,
69 ADV7604_OP_FORMAT_SEL_SDR_ITU656_12_MODE1 = 0x06,
70 ADV7604_OP_FORMAT_SEL_SDR_ITU656_12_MODE2 = 0x0a,
71 ADV7604_OP_FORMAT_SEL_DDR_422_8 = 0x20,
72 ADV7604_OP_FORMAT_SEL_DDR_422_10 = 0x21,
73 ADV7604_OP_FORMAT_SEL_DDR_422_12_MODE0 = 0x22,
74 ADV7604_OP_FORMAT_SEL_DDR_422_12_MODE1 = 0x23,
75 ADV7604_OP_FORMAT_SEL_DDR_422_12_MODE2 = 0x24,
76 ADV7604_OP_FORMAT_SEL_SDR_444_24 = 0x40,
77 ADV7604_OP_FORMAT_SEL_SDR_444_30 = 0x41,
78 ADV7604_OP_FORMAT_SEL_SDR_444_36_MODE0 = 0x42,
79 ADV7604_OP_FORMAT_SEL_DDR_444_24 = 0x60,
80 ADV7604_OP_FORMAT_SEL_DDR_444_30 = 0x61,
81 ADV7604_OP_FORMAT_SEL_DDR_444_36 = 0x62,
82 ADV7604_OP_FORMAT_SEL_SDR_ITU656_16 = 0x80,
83 ADV7604_OP_FORMAT_SEL_SDR_ITU656_20 = 0x81,
84 ADV7604_OP_FORMAT_SEL_SDR_ITU656_24_MODE0 = 0x82,
85 ADV7604_OP_FORMAT_SEL_SDR_ITU656_24_MODE1 = 0x86,
86 ADV7604_OP_FORMAT_SEL_SDR_ITU656_24_MODE2 = 0x8a,
87};
88
89/* Platform dependent definition */
90struct adv7604_platform_data {
91 /* connector - HDMI or DVI? */
92 unsigned connector_hdmi:1;
93
94 /* DIS_PWRDNB: 1 if the PWRDNB pin is unused and unconnected */
95 unsigned disable_pwrdnb:1;
96
97 /* DIS_CABLE_DET_RST: 1 if the 5V pins are unused and unconnected */
98 unsigned disable_cable_det_rst:1;
99
100 /* Analog input muxing mode */
101 enum adv7604_ain_sel ain_sel;
102
103 /* Bus rotation and reordering */
104 enum adv7604_op_ch_sel op_ch_sel;
105
106 /* Primary mode */
107 enum adv7604_prim_mode prim_mode;
108
109 /* Select output format */
110 enum adv7604_op_format_sel op_format_sel;
111
112 /* IO register 0x02 */
113 unsigned alt_gamma:1;
114 unsigned op_656_range:1;
115 unsigned rgb_out:1;
116 unsigned alt_data_sat:1;
117
118 /* IO register 0x05 */
119 unsigned blank_data:1;
120 unsigned insert_av_codes:1;
121 unsigned replicate_av_codes:1;
122 unsigned invert_cbcr:1;
123
124 /* IO register 0x30 */
125 unsigned output_bus_lsb_to_msb:1;
126
127 /* Free run */
128 unsigned hdmi_free_run_mode;
129
130 /* i2c addresses: 0 == use default */
131 u8 i2c_avlink;
132 u8 i2c_cec;
133 u8 i2c_infoframe;
134 u8 i2c_esdp;
135 u8 i2c_dpp;
136 u8 i2c_afe;
137 u8 i2c_repeater;
138 u8 i2c_edid;
139 u8 i2c_hdmi;
140 u8 i2c_test;
141 u8 i2c_cp;
142 u8 i2c_vdp;
143};
144
145#define V4L2_CID_ADV_RX_ANALOG_SAMPLING_PHASE (V4L2_CID_DV_CLASS_BASE + 0x1000)
146#define V4L2_CID_ADV_RX_FREE_RUN_COLOR_MANUAL (V4L2_CID_DV_CLASS_BASE + 0x1001)
147#define V4L2_CID_ADV_RX_FREE_RUN_COLOR (V4L2_CID_DV_CLASS_BASE + 0x1002)
148
149/* notify events */
150#define ADV7604_HOTPLUG 1
151#define ADV7604_FMT_CHANGE 2
152
153#endif
diff --git a/include/media/ir-rx51.h b/include/media/ir-rx51.h
new file mode 100644
index 000000000000..104aa892f31b
--- /dev/null
+++ b/include/media/ir-rx51.h
@@ -0,0 +1,10 @@
1#ifndef _LIRC_RX51_H
2#define _LIRC_RX51_H
3
4struct lirc_rx51_platform_data {
5 int pwm_timer;
6
7 int(*set_max_mpu_wakeup_lat)(struct device *dev, long t);
8};
9
10#endif
diff --git a/include/media/mt9v032.h b/include/media/mt9v032.h
index 5e27f9be6b95..78fd39eac219 100644
--- a/include/media/mt9v032.h
+++ b/include/media/mt9v032.h
@@ -7,6 +7,9 @@ struct mt9v032_platform_data {
7 unsigned int clk_pol:1; 7 unsigned int clk_pol:1;
8 8
9 void (*set_clock)(struct v4l2_subdev *subdev, unsigned int rate); 9 void (*set_clock)(struct v4l2_subdev *subdev, unsigned int rate);
10
11 const s64 *link_freqs;
12 s64 link_def_freq;
10}; 13};
11 14
12#endif 15#endif
diff --git a/include/media/omap3isp.h b/include/media/omap3isp.h
index 4d94be5226af..95842696857f 100644
--- a/include/media/omap3isp.h
+++ b/include/media/omap3isp.h
@@ -42,12 +42,6 @@ enum isp_interface_type {
42}; 42};
43 43
44enum { 44enum {
45 ISP_BRIDGE_DISABLE = 0,
46 ISP_BRIDGE_LITTLE_ENDIAN = 2,
47 ISP_BRIDGE_BIG_ENDIAN = 3,
48};
49
50enum {
51 ISP_LANE_SHIFT_0 = 0, 45 ISP_LANE_SHIFT_0 = 0,
52 ISP_LANE_SHIFT_2 = 1, 46 ISP_LANE_SHIFT_2 = 1,
53 ISP_LANE_SHIFT_4 = 2, 47 ISP_LANE_SHIFT_4 = 2,
@@ -67,17 +61,15 @@ enum {
67 * 0 - Active high, 1 - Active low 61 * 0 - Active high, 1 - Active low
68 * @vs_pol: Vertical synchronization polarity 62 * @vs_pol: Vertical synchronization polarity
69 * 0 - Active high, 1 - Active low 63 * 0 - Active high, 1 - Active low
70 * @bridge: CCDC Bridge input control 64 * @data_pol: Data polarity
71 * ISP_BRIDGE_DISABLE - Disable 65 * 0 - Normal, 1 - One's complement
72 * ISP_BRIDGE_LITTLE_ENDIAN - Little endian
73 * ISP_BRIDGE_BIG_ENDIAN - Big endian
74 */ 66 */
75struct isp_parallel_platform_data { 67struct isp_parallel_platform_data {
76 unsigned int data_lane_shift:2; 68 unsigned int data_lane_shift:2;
77 unsigned int clk_pol:1; 69 unsigned int clk_pol:1;
78 unsigned int hs_pol:1; 70 unsigned int hs_pol:1;
79 unsigned int vs_pol:1; 71 unsigned int vs_pol:1;
80 unsigned int bridge:2; 72 unsigned int data_pol:1;
81}; 73};
82 74
83enum { 75enum {
diff --git a/include/media/s5k4ecgx.h b/include/media/s5k4ecgx.h
new file mode 100644
index 000000000000..90c1be792ffe
--- /dev/null
+++ b/include/media/s5k4ecgx.h
@@ -0,0 +1,37 @@
1/*
2 * S5K4ECGX image sensor header file
3 *
4 * Copyright (C) 2012, Linaro
5 * Copyright (C) 2012, Samsung Electronics Co., Ltd.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 */
12
13#ifndef S5K4ECGX_H
14#define S5K4ECGX_H
15
16/**
17 * struct s5k4ecgx_gpio - data structure describing a GPIO
18 * @gpio : GPIO number
19 * @level: indicates active state of the @gpio
20 */
21struct s5k4ecgx_gpio {
22 int gpio;
23 int level;
24};
25
26/**
27 * struct ss5k4ecgx_platform_data- s5k4ecgx driver platform data
28 * @gpio_reset: GPIO driving RESET pin
29 * @gpio_stby : GPIO driving STBY pin
30 */
31
32struct s5k4ecgx_platform_data {
33 struct s5k4ecgx_gpio gpio_reset;
34 struct s5k4ecgx_gpio gpio_stby;
35};
36
37#endif /* S5K4ECGX_H */
diff --git a/include/media/s5p_fimc.h b/include/media/s5p_fimc.h
index 8587aaf73646..09421a611d73 100644
--- a/include/media/s5p_fimc.h
+++ b/include/media/s5p_fimc.h
@@ -12,6 +12,8 @@
12#ifndef S5P_FIMC_H_ 12#ifndef S5P_FIMC_H_
13#define S5P_FIMC_H_ 13#define S5P_FIMC_H_
14 14
15#include <media/media-entity.h>
16
15enum cam_bus_type { 17enum cam_bus_type {
16 FIMC_ITU_601 = 1, 18 FIMC_ITU_601 = 1,
17 FIMC_ITU_656, 19 FIMC_ITU_656,
@@ -80,4 +82,20 @@ struct fimc_pipeline {
80 struct media_pipeline *m_pipeline; 82 struct media_pipeline *m_pipeline;
81}; 83};
82 84
85/*
86 * Media pipeline operations to be called from within the fimc(-lite)
87 * video node when it is the last entity of the pipeline. Implemented
88 * by corresponding media device driver.
89 */
90struct fimc_pipeline_ops {
91 int (*open)(struct fimc_pipeline *p, struct media_entity *me,
92 bool resume);
93 int (*close)(struct fimc_pipeline *p);
94 int (*set_stream)(struct fimc_pipeline *p, bool state);
95};
96
97#define fimc_pipeline_call(f, op, p, args...) \
98 (!(f) ? -ENODEV : (((f)->pipeline_ops && (f)->pipeline_ops->op) ? \
99 (f)->pipeline_ops->op((p), ##args) : -ENOIOCTLCMD))
100
83#endif /* S5P_FIMC_H_ */ 101#endif /* S5P_FIMC_H_ */
diff --git a/include/media/saa7146.h b/include/media/saa7146.h
index 773e527deabe..96058a5a4acc 100644
--- a/include/media/saa7146.h
+++ b/include/media/saa7146.h
@@ -117,8 +117,6 @@ struct saa7146_dev
117{ 117{
118 struct module *module; 118 struct module *module;
119 119
120 struct list_head item;
121
122 struct v4l2_device v4l2_dev; 120 struct v4l2_device v4l2_dev;
123 struct v4l2_ctrl_handler ctrl_handler; 121 struct v4l2_ctrl_handler ctrl_handler;
124 122
@@ -166,8 +164,6 @@ static inline struct saa7146_dev *to_saa7146_dev(struct v4l2_device *v4l2_dev)
166int saa7146_i2c_adapter_prepare(struct saa7146_dev *dev, struct i2c_adapter *i2c_adapter, u32 bitrate); 164int saa7146_i2c_adapter_prepare(struct saa7146_dev *dev, struct i2c_adapter *i2c_adapter, u32 bitrate);
167 165
168/* from saa7146_core.c */ 166/* from saa7146_core.c */
169extern struct list_head saa7146_devices;
170extern struct mutex saa7146_devices_lock;
171int saa7146_register_extension(struct saa7146_extension*); 167int saa7146_register_extension(struct saa7146_extension*);
172int saa7146_unregister_extension(struct saa7146_extension*); 168int saa7146_unregister_extension(struct saa7146_extension*);
173struct saa7146_format* saa7146_format_by_fourcc(struct saa7146_dev *dev, int fourcc); 169struct saa7146_format* saa7146_format_by_fourcc(struct saa7146_dev *dev, int fourcc);
diff --git a/include/media/soc_camera.h b/include/media/soc_camera.h
index d865dcf9879f..6442edc2a151 100644
--- a/include/media/soc_camera.h
+++ b/include/media/soc_camera.h
@@ -85,12 +85,14 @@ struct soc_camera_host_ops {
85 void (*put_formats)(struct soc_camera_device *); 85 void (*put_formats)(struct soc_camera_device *);
86 int (*cropcap)(struct soc_camera_device *, struct v4l2_cropcap *); 86 int (*cropcap)(struct soc_camera_device *, struct v4l2_cropcap *);
87 int (*get_crop)(struct soc_camera_device *, struct v4l2_crop *); 87 int (*get_crop)(struct soc_camera_device *, struct v4l2_crop *);
88 int (*set_crop)(struct soc_camera_device *, struct v4l2_crop *); 88 int (*set_crop)(struct soc_camera_device *, const struct v4l2_crop *);
89 int (*get_selection)(struct soc_camera_device *, struct v4l2_selection *);
90 int (*set_selection)(struct soc_camera_device *, struct v4l2_selection *);
89 /* 91 /*
90 * The difference to .set_crop() is, that .set_livecrop is not allowed 92 * The difference to .set_crop() is, that .set_livecrop is not allowed
91 * to change the output sizes 93 * to change the output sizes
92 */ 94 */
93 int (*set_livecrop)(struct soc_camera_device *, struct v4l2_crop *); 95 int (*set_livecrop)(struct soc_camera_device *, const struct v4l2_crop *);
94 int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *); 96 int (*set_fmt)(struct soc_camera_device *, struct v4l2_format *);
95 int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *); 97 int (*try_fmt)(struct soc_camera_device *, struct v4l2_format *);
96 void (*init_videobuf)(struct videobuf_queue *, 98 void (*init_videobuf)(struct videobuf_queue *,
@@ -254,6 +256,16 @@ unsigned long soc_camera_apply_sensor_flags(struct soc_camera_link *icl,
254unsigned long soc_camera_apply_board_flags(struct soc_camera_link *icl, 256unsigned long soc_camera_apply_board_flags(struct soc_camera_link *icl,
255 const struct v4l2_mbus_config *cfg); 257 const struct v4l2_mbus_config *cfg);
256 258
259int soc_camera_power_on(struct device *dev, struct soc_camera_link *icl);
260int soc_camera_power_off(struct device *dev, struct soc_camera_link *icl);
261
262static inline int soc_camera_set_power(struct device *dev,
263 struct soc_camera_link *icl, bool on)
264{
265 return on ? soc_camera_power_on(dev, icl)
266 : soc_camera_power_off(dev, icl);
267}
268
257/* This is only temporary here - until v4l2-subdev begins to link to video_device */ 269/* This is only temporary here - until v4l2-subdev begins to link to video_device */
258#include <linux/i2c.h> 270#include <linux/i2c.h>
259static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client) 271static inline struct video_device *soc_camera_i2c_to_vdev(const struct i2c_client *client)
diff --git a/include/media/v4l2-chip-ident.h b/include/media/v4l2-chip-ident.h
index 58f914a40b20..4ee125bae719 100644
--- a/include/media/v4l2-chip-ident.h
+++ b/include/media/v4l2-chip-ident.h
@@ -183,6 +183,9 @@ enum {
183 /* module adv7393: just ident 7393 */ 183 /* module adv7393: just ident 7393 */
184 V4L2_IDENT_ADV7393 = 7393, 184 V4L2_IDENT_ADV7393 = 7393,
185 185
186 /* module adv7604: just ident 7604 */
187 V4L2_IDENT_ADV7604 = 7604,
188
186 /* module saa7706h: just ident 7706 */ 189 /* module saa7706h: just ident 7706 */
187 V4L2_IDENT_SAA7706H = 7706, 190 V4L2_IDENT_SAA7706H = 7706,
188 191
@@ -212,6 +215,9 @@ enum {
212 V4L2_IDENT_CX23888_AV = 8881, /* Integrated A/V decoder */ 215 V4L2_IDENT_CX23888_AV = 8881, /* Integrated A/V decoder */
213 V4L2_IDENT_CX23888_IR = 8882, /* Integrated infrared controller */ 216 V4L2_IDENT_CX23888_IR = 8882, /* Integrated infrared controller */
214 217
218 /* module ad9389b: just ident 9389 */
219 V4L2_IDENT_AD9389B = 9389,
220
215 /* module tda9840: just ident 9840 */ 221 /* module tda9840: just ident 9840 */
216 V4L2_IDENT_TDA9840 = 9840, 222 V4L2_IDENT_TDA9840 = 9840,
217 223
diff --git a/include/media/v4l2-common.h b/include/media/v4l2-common.h
index a298ec49ddc4..1a0b2db4c5d3 100644
--- a/include/media/v4l2-common.h
+++ b/include/media/v4l2-common.h
@@ -133,7 +133,7 @@ struct v4l2_subdev *v4l2_i2c_new_subdev_board(struct v4l2_device *v4l2_dev,
133 struct i2c_adapter *adapter, struct i2c_board_info *info, 133 struct i2c_adapter *adapter, struct i2c_board_info *info,
134 const unsigned short *probe_addrs); 134 const unsigned short *probe_addrs);
135 135
136/* Initialize an v4l2_subdev with data from an i2c_client struct */ 136/* Initialize a v4l2_subdev with data from an i2c_client struct */
137void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client, 137void v4l2_i2c_subdev_init(struct v4l2_subdev *sd, struct i2c_client *client,
138 const struct v4l2_subdev_ops *ops); 138 const struct v4l2_subdev_ops *ops);
139/* Return i2c client address of v4l2_subdev. */ 139/* Return i2c client address of v4l2_subdev. */
@@ -166,7 +166,7 @@ struct spi_device;
166struct v4l2_subdev *v4l2_spi_new_subdev(struct v4l2_device *v4l2_dev, 166struct v4l2_subdev *v4l2_spi_new_subdev(struct v4l2_device *v4l2_dev,
167 struct spi_master *master, struct spi_board_info *info); 167 struct spi_master *master, struct spi_board_info *info);
168 168
169/* Initialize an v4l2_subdev with data from an spi_device struct */ 169/* Initialize a v4l2_subdev with data from an spi_device struct */
170void v4l2_spi_subdev_init(struct v4l2_subdev *sd, struct spi_device *spi, 170void v4l2_spi_subdev_init(struct v4l2_subdev *sd, struct spi_device *spi,
171 const struct v4l2_subdev_ops *ops); 171 const struct v4l2_subdev_ops *ops);
172#endif 172#endif
@@ -212,4 +212,17 @@ const struct v4l2_frmsize_discrete *v4l2_find_nearest_format(
212 const struct v4l2_discrete_probe *probe, 212 const struct v4l2_discrete_probe *probe,
213 s32 width, s32 height); 213 s32 width, s32 height);
214 214
215bool v4l_match_dv_timings(const struct v4l2_dv_timings *t1,
216 const struct v4l2_dv_timings *t2,
217 unsigned pclock_delta);
218
219bool v4l2_detect_cvt(unsigned frame_height, unsigned hfreq, unsigned vsync,
220 u32 polarities, struct v4l2_dv_timings *fmt);
221
222bool v4l2_detect_gtf(unsigned frame_height, unsigned hfreq, unsigned vsync,
223 u32 polarities, struct v4l2_fract aspect,
224 struct v4l2_dv_timings *fmt);
225
226struct v4l2_fract v4l2_calc_aspect_ratio(u8 hor_landscape, u8 vert_portrait);
227
215#endif /* V4L2_COMMON_H_ */ 228#endif /* V4L2_COMMON_H_ */
diff --git a/include/media/v4l2-ctrls.h b/include/media/v4l2-ctrls.h
index 776605f1cbe2..801adb466bd2 100644
--- a/include/media/v4l2-ctrls.h
+++ b/include/media/v4l2-ctrls.h
@@ -384,14 +384,28 @@ struct v4l2_ctrl *v4l2_ctrl_add_ctrl(struct v4l2_ctrl_handler *hdl,
384 * @hdl: The control handler. 384 * @hdl: The control handler.
385 * @add: The control handler whose controls you want to add to 385 * @add: The control handler whose controls you want to add to
386 * the @hdl control handler. 386 * the @hdl control handler.
387 * @filter: This function will filter which controls should be added.
387 * 388 *
388 * Does nothing if either of the two is a NULL pointer. 389 * Does nothing if either of the two handlers is a NULL pointer.
390 * If @filter is NULL, then all controls are added. Otherwise only those
391 * controls for which @filter returns true will be added.
389 * In case of an error @hdl->error will be set to the error code (if it 392 * In case of an error @hdl->error will be set to the error code (if it
390 * wasn't set already). 393 * wasn't set already).
391 */ 394 */
392int v4l2_ctrl_add_handler(struct v4l2_ctrl_handler *hdl, 395int v4l2_ctrl_add_handler(struct v4l2_ctrl_handler *hdl,
393 struct v4l2_ctrl_handler *add); 396 struct v4l2_ctrl_handler *add,
397 bool (*filter)(const struct v4l2_ctrl *ctrl));
394 398
399/** v4l2_ctrl_radio_filter() - Standard filter for radio controls.
400 * @ctrl: The control that is filtered.
401 *
402 * This will return true for any controls that are valid for radio device
403 * nodes. Those are all of the V4L2_CID_AUDIO_* user controls and all FM
404 * transmitter class controls.
405 *
406 * This function is to be used with v4l2_ctrl_add_handler().
407 */
408bool v4l2_ctrl_radio_filter(const struct v4l2_ctrl *ctrl);
395 409
396/** v4l2_ctrl_cluster() - Mark all controls in the cluster as belonging to that cluster. 410/** v4l2_ctrl_cluster() - Mark all controls in the cluster as belonging to that cluster.
397 * @ncontrols: The number of controls in this cluster. 411 * @ncontrols: The number of controls in this cluster.
@@ -511,6 +525,29 @@ s32 v4l2_ctrl_g_ctrl(struct v4l2_ctrl *ctrl);
511 */ 525 */
512int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val); 526int v4l2_ctrl_s_ctrl(struct v4l2_ctrl *ctrl, s32 val);
513 527
528/** v4l2_ctrl_g_ctrl_int64() - Helper function to get a 64-bit control's value from within a driver.
529 * @ctrl: The control.
530 *
531 * This returns the control's value safely by going through the control
532 * framework. This function will lock the control's handler, so it cannot be
533 * used from within the &v4l2_ctrl_ops functions.
534 *
535 * This function is for 64-bit integer type controls only.
536 */
537s64 v4l2_ctrl_g_ctrl_int64(struct v4l2_ctrl *ctrl);
538
539/** v4l2_ctrl_s_ctrl_int64() - Helper function to set a 64-bit control's value from within a driver.
540 * @ctrl: The control.
541 * @val: The new value.
542 *
543 * This set the control's new value safely by going through the control
544 * framework. This function will lock the control's handler, so it cannot be
545 * used from within the &v4l2_ctrl_ops functions.
546 *
547 * This function is for 64-bit integer type controls only.
548 */
549int v4l2_ctrl_s_ctrl_int64(struct v4l2_ctrl *ctrl, s64 val);
550
514/* Internal helper functions that deal with control events. */ 551/* Internal helper functions that deal with control events. */
515extern const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops; 552extern const struct v4l2_subscribed_event_ops v4l2_ctrl_sub_ev_ops;
516void v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new); 553void v4l2_ctrl_replace(struct v4l2_event *old, const struct v4l2_event *new);
@@ -523,7 +560,7 @@ int v4l2_ctrl_log_status(struct file *file, void *fh);
523/* Can be used as a vidioc_subscribe_event function that just subscribes 560/* Can be used as a vidioc_subscribe_event function that just subscribes
524 control events. */ 561 control events. */
525int v4l2_ctrl_subscribe_event(struct v4l2_fh *fh, 562int v4l2_ctrl_subscribe_event(struct v4l2_fh *fh,
526 struct v4l2_event_subscription *sub); 563 const struct v4l2_event_subscription *sub);
527 564
528/* Can be used as a poll function that just polls for control events. */ 565/* Can be used as a poll function that just polls for control events. */
529unsigned int v4l2_ctrl_poll(struct file *file, struct poll_table_struct *wait); 566unsigned int v4l2_ctrl_poll(struct file *file, struct poll_table_struct *wait);
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 5c416cdc88d5..95d1c91770f4 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -26,6 +26,12 @@
26#define VFL_TYPE_SUBDEV 3 26#define VFL_TYPE_SUBDEV 3
27#define VFL_TYPE_MAX 4 27#define VFL_TYPE_MAX 4
28 28
29/* Is this a receiver, transmitter or mem-to-mem? */
30/* Ignored for VFL_TYPE_SUBDEV. */
31#define VFL_DIR_RX 0
32#define VFL_DIR_TX 1
33#define VFL_DIR_M2M 2
34
29struct v4l2_ioctl_callbacks; 35struct v4l2_ioctl_callbacks;
30struct video_device; 36struct video_device;
31struct v4l2_device; 37struct v4l2_device;
@@ -39,9 +45,6 @@ struct v4l2_ctrl_handler;
39#define V4L2_FL_USES_V4L2_FH (1) 45#define V4L2_FL_USES_V4L2_FH (1)
40/* Use the prio field of v4l2_fh for core priority checking */ 46/* Use the prio field of v4l2_fh for core priority checking */
41#define V4L2_FL_USE_FH_PRIO (2) 47#define V4L2_FL_USE_FH_PRIO (2)
42/* If ioctl core locking is in use, then apply that also to all
43 file operations. Don't use this flag in new drivers! */
44#define V4L2_FL_LOCK_ALL_FOPS (3)
45 48
46/* Priority helper functions */ 49/* Priority helper functions */
47 50
@@ -108,7 +111,8 @@ struct video_device
108 111
109 /* device info */ 112 /* device info */
110 char name[32]; 113 char name[32];
111 int vfl_type; 114 int vfl_type; /* device type */
115 int vfl_dir; /* receiver, transmitter or m2m */
112 /* 'minor' is set to -1 if the registration failed */ 116 /* 'minor' is set to -1 if the registration failed */
113 int minor; 117 int minor;
114 u16 num; 118 u16 num;
diff --git a/include/media/v4l2-event.h b/include/media/v4l2-event.h
index 2885a810a128..e7c5d170a9cd 100644
--- a/include/media/v4l2-event.h
+++ b/include/media/v4l2-event.h
@@ -124,10 +124,10 @@ void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev);
124void v4l2_event_queue_fh(struct v4l2_fh *fh, const struct v4l2_event *ev); 124void v4l2_event_queue_fh(struct v4l2_fh *fh, const struct v4l2_event *ev);
125int v4l2_event_pending(struct v4l2_fh *fh); 125int v4l2_event_pending(struct v4l2_fh *fh);
126int v4l2_event_subscribe(struct v4l2_fh *fh, 126int v4l2_event_subscribe(struct v4l2_fh *fh,
127 struct v4l2_event_subscription *sub, unsigned elems, 127 const struct v4l2_event_subscription *sub, unsigned elems,
128 const struct v4l2_subscribed_event_ops *ops); 128 const struct v4l2_subscribed_event_ops *ops);
129int v4l2_event_unsubscribe(struct v4l2_fh *fh, 129int v4l2_event_unsubscribe(struct v4l2_fh *fh,
130 struct v4l2_event_subscription *sub); 130 const struct v4l2_event_subscription *sub);
131void v4l2_event_unsubscribe_all(struct v4l2_fh *fh); 131void v4l2_event_unsubscribe_all(struct v4l2_fh *fh);
132 132
133#endif /* V4L2_EVENT_H */ 133#endif /* V4L2_EVENT_H */
diff --git a/include/media/v4l2-ioctl.h b/include/media/v4l2-ioctl.h
index e614c9c15e56..e48b571ca37d 100644
--- a/include/media/v4l2-ioctl.h
+++ b/include/media/v4l2-ioctl.h
@@ -40,8 +40,6 @@ struct v4l2_ioctl_ops {
40 struct v4l2_fmtdesc *f); 40 struct v4l2_fmtdesc *f);
41 int (*vidioc_enum_fmt_vid_out_mplane)(struct file *file, void *fh, 41 int (*vidioc_enum_fmt_vid_out_mplane)(struct file *file, void *fh,
42 struct v4l2_fmtdesc *f); 42 struct v4l2_fmtdesc *f);
43 int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh,
44 struct v4l2_fmtdesc *f);
45 43
46 /* VIDIOC_G_FMT handlers */ 44 /* VIDIOC_G_FMT handlers */
47 int (*vidioc_g_fmt_vid_cap) (struct file *file, void *fh, 45 int (*vidioc_g_fmt_vid_cap) (struct file *file, void *fh,
@@ -64,8 +62,6 @@ struct v4l2_ioctl_ops {
64 struct v4l2_format *f); 62 struct v4l2_format *f);
65 int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh, 63 int (*vidioc_g_fmt_vid_out_mplane)(struct file *file, void *fh,
66 struct v4l2_format *f); 64 struct v4l2_format *f);
67 int (*vidioc_g_fmt_type_private)(struct file *file, void *fh,
68 struct v4l2_format *f);
69 65
70 /* VIDIOC_S_FMT handlers */ 66 /* VIDIOC_S_FMT handlers */
71 int (*vidioc_s_fmt_vid_cap) (struct file *file, void *fh, 67 int (*vidioc_s_fmt_vid_cap) (struct file *file, void *fh,
@@ -88,8 +84,6 @@ struct v4l2_ioctl_ops {
88 struct v4l2_format *f); 84 struct v4l2_format *f);
89 int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh, 85 int (*vidioc_s_fmt_vid_out_mplane)(struct file *file, void *fh,
90 struct v4l2_format *f); 86 struct v4l2_format *f);
91 int (*vidioc_s_fmt_type_private)(struct file *file, void *fh,
92 struct v4l2_format *f);
93 87
94 /* VIDIOC_TRY_FMT handlers */ 88 /* VIDIOC_TRY_FMT handlers */
95 int (*vidioc_try_fmt_vid_cap) (struct file *file, void *fh, 89 int (*vidioc_try_fmt_vid_cap) (struct file *file, void *fh,
@@ -112,8 +106,6 @@ struct v4l2_ioctl_ops {
112 struct v4l2_format *f); 106 struct v4l2_format *f);
113 int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh, 107 int (*vidioc_try_fmt_vid_out_mplane)(struct file *file, void *fh,
114 struct v4l2_format *f); 108 struct v4l2_format *f);
115 int (*vidioc_try_fmt_type_private)(struct file *file, void *fh,
116 struct v4l2_format *f);
117 109
118 /* Buffer handlers */ 110 /* Buffer handlers */
119 int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b); 111 int (*vidioc_reqbufs) (struct file *file, void *fh, struct v4l2_requestbuffers *b);
@@ -128,7 +120,7 @@ struct v4l2_ioctl_ops {
128 int (*vidioc_g_fbuf) (struct file *file, void *fh, 120 int (*vidioc_g_fbuf) (struct file *file, void *fh,
129 struct v4l2_framebuffer *a); 121 struct v4l2_framebuffer *a);
130 int (*vidioc_s_fbuf) (struct file *file, void *fh, 122 int (*vidioc_s_fbuf) (struct file *file, void *fh,
131 struct v4l2_framebuffer *a); 123 const struct v4l2_framebuffer *a);
132 124
133 /* Stream on/off */ 125 /* Stream on/off */
134 int (*vidioc_streamon) (struct file *file, void *fh, enum v4l2_buf_type i); 126 int (*vidioc_streamon) (struct file *file, void *fh, enum v4l2_buf_type i);
@@ -175,7 +167,7 @@ struct v4l2_ioctl_ops {
175 int (*vidioc_g_audio) (struct file *file, void *fh, 167 int (*vidioc_g_audio) (struct file *file, void *fh,
176 struct v4l2_audio *a); 168 struct v4l2_audio *a);
177 int (*vidioc_s_audio) (struct file *file, void *fh, 169 int (*vidioc_s_audio) (struct file *file, void *fh,
178 struct v4l2_audio *a); 170 const struct v4l2_audio *a);
179 171
180 /* Audio out ioctls */ 172 /* Audio out ioctls */
181 int (*vidioc_enumaudout) (struct file *file, void *fh, 173 int (*vidioc_enumaudout) (struct file *file, void *fh,
@@ -183,18 +175,18 @@ struct v4l2_ioctl_ops {
183 int (*vidioc_g_audout) (struct file *file, void *fh, 175 int (*vidioc_g_audout) (struct file *file, void *fh,
184 struct v4l2_audioout *a); 176 struct v4l2_audioout *a);
185 int (*vidioc_s_audout) (struct file *file, void *fh, 177 int (*vidioc_s_audout) (struct file *file, void *fh,
186 struct v4l2_audioout *a); 178 const struct v4l2_audioout *a);
187 int (*vidioc_g_modulator) (struct file *file, void *fh, 179 int (*vidioc_g_modulator) (struct file *file, void *fh,
188 struct v4l2_modulator *a); 180 struct v4l2_modulator *a);
189 int (*vidioc_s_modulator) (struct file *file, void *fh, 181 int (*vidioc_s_modulator) (struct file *file, void *fh,
190 struct v4l2_modulator *a); 182 const struct v4l2_modulator *a);
191 /* Crop ioctls */ 183 /* Crop ioctls */
192 int (*vidioc_cropcap) (struct file *file, void *fh, 184 int (*vidioc_cropcap) (struct file *file, void *fh,
193 struct v4l2_cropcap *a); 185 struct v4l2_cropcap *a);
194 int (*vidioc_g_crop) (struct file *file, void *fh, 186 int (*vidioc_g_crop) (struct file *file, void *fh,
195 struct v4l2_crop *a); 187 struct v4l2_crop *a);
196 int (*vidioc_s_crop) (struct file *file, void *fh, 188 int (*vidioc_s_crop) (struct file *file, void *fh,
197 struct v4l2_crop *a); 189 const struct v4l2_crop *a);
198 int (*vidioc_g_selection) (struct file *file, void *fh, 190 int (*vidioc_g_selection) (struct file *file, void *fh,
199 struct v4l2_selection *s); 191 struct v4l2_selection *s);
200 int (*vidioc_s_selection) (struct file *file, void *fh, 192 int (*vidioc_s_selection) (struct file *file, void *fh,
@@ -203,7 +195,7 @@ struct v4l2_ioctl_ops {
203 int (*vidioc_g_jpegcomp) (struct file *file, void *fh, 195 int (*vidioc_g_jpegcomp) (struct file *file, void *fh,
204 struct v4l2_jpegcompression *a); 196 struct v4l2_jpegcompression *a);
205 int (*vidioc_s_jpegcomp) (struct file *file, void *fh, 197 int (*vidioc_s_jpegcomp) (struct file *file, void *fh,
206 struct v4l2_jpegcompression *a); 198 const struct v4l2_jpegcompression *a);
207 int (*vidioc_g_enc_index) (struct file *file, void *fh, 199 int (*vidioc_g_enc_index) (struct file *file, void *fh,
208 struct v4l2_enc_idx *a); 200 struct v4l2_enc_idx *a);
209 int (*vidioc_encoder_cmd) (struct file *file, void *fh, 201 int (*vidioc_encoder_cmd) (struct file *file, void *fh,
@@ -241,7 +233,7 @@ struct v4l2_ioctl_ops {
241 int (*vidioc_log_status) (struct file *file, void *fh); 233 int (*vidioc_log_status) (struct file *file, void *fh);
242 234
243 int (*vidioc_s_hw_freq_seek) (struct file *file, void *fh, 235 int (*vidioc_s_hw_freq_seek) (struct file *file, void *fh,
244 struct v4l2_hw_freq_seek *a); 236 const struct v4l2_hw_freq_seek *a);
245 237
246 /* Debugging ioctls */ 238 /* Debugging ioctls */
247#ifdef CONFIG_VIDEO_ADV_DEBUG 239#ifdef CONFIG_VIDEO_ADV_DEBUG
@@ -281,9 +273,9 @@ struct v4l2_ioctl_ops {
281 struct v4l2_dv_timings_cap *cap); 273 struct v4l2_dv_timings_cap *cap);
282 274
283 int (*vidioc_subscribe_event) (struct v4l2_fh *fh, 275 int (*vidioc_subscribe_event) (struct v4l2_fh *fh,
284 struct v4l2_event_subscription *sub); 276 const struct v4l2_event_subscription *sub);
285 int (*vidioc_unsubscribe_event)(struct v4l2_fh *fh, 277 int (*vidioc_unsubscribe_event)(struct v4l2_fh *fh,
286 struct v4l2_event_subscription *sub); 278 const struct v4l2_event_subscription *sub);
287 279
288 /* For other private ioctls */ 280 /* For other private ioctls */
289 long (*vidioc_default) (struct file *file, void *fh, 281 long (*vidioc_default) (struct file *file, void *fh,
diff --git a/include/media/v4l2-mem2mem.h b/include/media/v4l2-mem2mem.h
index 16ac4733e80d..131cc4a53675 100644
--- a/include/media/v4l2-mem2mem.h
+++ b/include/media/v4l2-mem2mem.h
@@ -140,7 +140,7 @@ void v4l2_m2m_buf_queue(struct v4l2_m2m_ctx *m2m_ctx, struct vb2_buffer *vb);
140static inline 140static inline
141unsigned int v4l2_m2m_num_src_bufs_ready(struct v4l2_m2m_ctx *m2m_ctx) 141unsigned int v4l2_m2m_num_src_bufs_ready(struct v4l2_m2m_ctx *m2m_ctx)
142{ 142{
143 return m2m_ctx->cap_q_ctx.num_rdy; 143 return m2m_ctx->out_q_ctx.num_rdy;
144} 144}
145 145
146/** 146/**
@@ -150,7 +150,7 @@ unsigned int v4l2_m2m_num_src_bufs_ready(struct v4l2_m2m_ctx *m2m_ctx)
150static inline 150static inline
151unsigned int v4l2_m2m_num_dst_bufs_ready(struct v4l2_m2m_ctx *m2m_ctx) 151unsigned int v4l2_m2m_num_dst_bufs_ready(struct v4l2_m2m_ctx *m2m_ctx)
152{ 152{
153 return m2m_ctx->out_q_ctx.num_rdy; 153 return m2m_ctx->cap_q_ctx.num_rdy;
154} 154}
155 155
156void *v4l2_m2m_next_buf(struct v4l2_m2m_queue_ctx *q_ctx); 156void *v4l2_m2m_next_buf(struct v4l2_m2m_queue_ctx *q_ctx);
diff --git a/include/media/v4l2-subdev.h b/include/media/v4l2-subdev.h
index c35a3545e273..2ecd7377153b 100644
--- a/include/media/v4l2-subdev.h
+++ b/include/media/v4l2-subdev.h
@@ -120,7 +120,7 @@ struct v4l2_subdev_io_pin_config {
120 each pin being configured. This function could be called at times 120 each pin being configured. This function could be called at times
121 other than just subdevice initialization. 121 other than just subdevice initialization.
122 122
123 init: initialize the sensor registors to some sort of reasonable default 123 init: initialize the sensor registers to some sort of reasonable default
124 values. Do not use for new drivers and should be removed in existing 124 values. Do not use for new drivers and should be removed in existing
125 drivers. 125 drivers.
126 126
@@ -194,7 +194,7 @@ struct v4l2_subdev_tuner_ops {
194 int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); 194 int (*g_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt);
195 int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt); 195 int (*s_tuner)(struct v4l2_subdev *sd, struct v4l2_tuner *vt);
196 int (*g_modulator)(struct v4l2_subdev *sd, struct v4l2_modulator *vm); 196 int (*g_modulator)(struct v4l2_subdev *sd, struct v4l2_modulator *vm);
197 int (*s_modulator)(struct v4l2_subdev *sd, struct v4l2_modulator *vm); 197 int (*s_modulator)(struct v4l2_subdev *sd, const struct v4l2_modulator *vm);
198 int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type); 198 int (*s_type_addr)(struct v4l2_subdev *sd, struct tuner_setup *type);
199 int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config); 199 int (*s_config)(struct v4l2_subdev *sd, const struct v4l2_priv_tun_config *config);
200}; 200};
@@ -286,7 +286,7 @@ struct v4l2_subdev_video_ops {
286 int (*s_stream)(struct v4l2_subdev *sd, int enable); 286 int (*s_stream)(struct v4l2_subdev *sd, int enable);
287 int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc); 287 int (*cropcap)(struct v4l2_subdev *sd, struct v4l2_cropcap *cc);
288 int (*g_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop); 288 int (*g_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop);
289 int (*s_crop)(struct v4l2_subdev *sd, struct v4l2_crop *crop); 289 int (*s_crop)(struct v4l2_subdev *sd, const struct v4l2_crop *crop);
290 int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); 290 int (*g_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
291 int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param); 291 int (*s_parm)(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
292 int (*g_frame_interval)(struct v4l2_subdev *sd, 292 int (*g_frame_interval)(struct v4l2_subdev *sd,
@@ -476,6 +476,8 @@ struct v4l2_subdev_pad_ops {
476 struct v4l2_subdev_selection *sel); 476 struct v4l2_subdev_selection *sel);
477 int (*set_selection)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh, 477 int (*set_selection)(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh,
478 struct v4l2_subdev_selection *sel); 478 struct v4l2_subdev_selection *sel);
479 int (*get_edid)(struct v4l2_subdev *sd, struct v4l2_subdev_edid *edid);
480 int (*set_edid)(struct v4l2_subdev *sd, struct v4l2_subdev_edid *edid);
479#ifdef CONFIG_MEDIA_CONTROLLER 481#ifdef CONFIG_MEDIA_CONTROLLER
480 int (*link_validate)(struct v4l2_subdev *sd, struct media_link *link, 482 int (*link_validate)(struct v4l2_subdev *sd, struct media_link *link,
481 struct v4l2_subdev_format *source_fmt, 483 struct v4l2_subdev_format *source_fmt,
diff --git a/include/media/videobuf-dvb.h b/include/media/videobuf-dvb.h
index bf365721d6b0..d63965a1faaf 100644
--- a/include/media/videobuf-dvb.h
+++ b/include/media/videobuf-dvb.h
@@ -45,9 +45,7 @@ int videobuf_dvb_register_bus(struct videobuf_dvb_frontends *f,
45 void *adapter_priv, 45 void *adapter_priv,
46 struct device *device, 46 struct device *device,
47 short *adapter_nr, 47 short *adapter_nr,
48 int mfe_shared, 48 int mfe_shared);
49 int (*fe_ioctl_override)(struct dvb_frontend *,
50 unsigned int, void *, unsigned int));
51 49
52void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f); 50void videobuf_dvb_unregister_bus(struct videobuf_dvb_frontends *f);
53 51
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 8dd9b6cc296b..e04252a9fea6 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -324,7 +324,7 @@ int vb2_reqbufs(struct vb2_queue *q, struct v4l2_requestbuffers *req);
324int vb2_create_bufs(struct vb2_queue *q, struct v4l2_create_buffers *create); 324int vb2_create_bufs(struct vb2_queue *q, struct v4l2_create_buffers *create);
325int vb2_prepare_buf(struct vb2_queue *q, struct v4l2_buffer *b); 325int vb2_prepare_buf(struct vb2_queue *q, struct v4l2_buffer *b);
326 326
327int vb2_queue_init(struct vb2_queue *q); 327int __must_check vb2_queue_init(struct vb2_queue *q);
328 328
329void vb2_queue_release(struct vb2_queue *q); 329void vb2_queue_release(struct vb2_queue *q);
330 330
diff --git a/include/sound/tea575x-tuner.h b/include/sound/tea575x-tuner.h
index fe8590cac5c2..098c4de44945 100644
--- a/include/sound/tea575x-tuner.h
+++ b/include/sound/tea575x-tuner.h
@@ -28,6 +28,7 @@
28#include <media/v4l2-device.h> 28#include <media/v4l2-device.h>
29 29
30#define TEA575X_FMIF 10700 30#define TEA575X_FMIF 10700
31#define TEA575X_AMIF 450
31 32
32#define TEA575X_DATA (1 << 0) 33#define TEA575X_DATA (1 << 0)
33#define TEA575X_CLK (1 << 1) 34#define TEA575X_CLK (1 << 1)
@@ -52,12 +53,14 @@ struct snd_tea575x {
52 struct video_device vd; /* video device */ 53 struct video_device vd; /* video device */
53 int radio_nr; /* radio_nr */ 54 int radio_nr; /* radio_nr */
54 bool tea5759; /* 5759 chip is present */ 55 bool tea5759; /* 5759 chip is present */
56 bool has_am; /* Device can tune to AM freqs */
55 bool cannot_read_data; /* Device cannot read the data pin */ 57 bool cannot_read_data; /* Device cannot read the data pin */
56 bool cannot_mute; /* Device cannot mute */ 58 bool cannot_mute; /* Device cannot mute */
57 bool mute; /* Device is muted? */ 59 bool mute; /* Device is muted? */
58 bool stereo; /* receiving stereo */ 60 bool stereo; /* receiving stereo */
59 bool tuned; /* tuned to a station */ 61 bool tuned; /* tuned to a station */
60 unsigned int val; /* hw value */ 62 unsigned int val; /* hw value */
63 u32 band; /* 0: FM, 1: FM-Japan, 2: AM */
61 u32 freq; /* frequency */ 64 u32 freq; /* frequency */
62 struct mutex mutex; 65 struct mutex mutex;
63 struct snd_tea575x_ops *ops; 66 struct snd_tea575x_ops *ops;
@@ -70,5 +73,6 @@ struct snd_tea575x {
70 73
71int snd_tea575x_init(struct snd_tea575x *tea, struct module *owner); 74int snd_tea575x_init(struct snd_tea575x *tea, struct module *owner);
72void snd_tea575x_exit(struct snd_tea575x *tea); 75void snd_tea575x_exit(struct snd_tea575x *tea);
76void snd_tea575x_set_freq(struct snd_tea575x *tea);
73 77
74#endif /* __SOUND_TEA575X_TUNER_H */ 78#endif /* __SOUND_TEA575X_TUNER_H */