14d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
24d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  Video for Linux Two header file
34d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
44d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  Copyright (C) 1999-2012 the contributors
54d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
64d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  This program is free software; you can redistribute it and/or modify
74d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  it under the terms of the GNU General Public License as published by
84d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  the Free Software Foundation; either version 2 of the License, or
94d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  (at your option) any later version.
104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  This program is distributed in the hope that it will be useful,
124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  but WITHOUT ANY WARRANTY; without even the implied warranty of
134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  GNU General Public License for more details.
154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  Alternatively you can redistribute this file under the terms of the
174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  BSD license as stated below:
184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  Redistribution and use in source and binary forms, with or without
204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  modification, are permitted provided that the following conditions
214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  are met:
224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  1. Redistributions of source code must retain the above copyright
234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     notice, this list of conditions and the following disclaimer.
244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  2. Redistributions in binary form must reproduce the above copyright
254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     notice, this list of conditions and the following disclaimer in
264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     the documentation and/or other materials provided with the
274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     distribution.
284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  3. The names of its contributors may not be used to endorse or promote
294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     products derived from this software without specific prior written
304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *     permission.
314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	Header file for v4l or V4L2 drivers and applications
454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * with public API.
464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * All kernel-specific stuff were moved to media/v4l2-dev.h, so
474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * no #if __KERNEL tests are allowed here
484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	See http://linuxtv.org for more info
504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	Author: Bill Dirks <bill@thedirks.org>
524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		Justin Schoeman
534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *              Hans Verkuil <hverkuil@xs4all.nl>
544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		et al.
554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef _UAPI__LINUX_VIDEODEV2_H
574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define _UAPI__LINUX_VIDEODEV2_H
584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#ifndef __KERNEL__
604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <sys/time.h>
614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif
624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/compiler.h>
634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/ioctl.h>
644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/types.h>
654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/v4l2-common.h>
664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#include <linux/v4l2-controls.h>
674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Common stuff for both V4L1 and V4L2
704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Moved from videodev.h
714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDEO_MAX_FRAME               32
734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDEO_MAX_PLANES               8
744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	M I S C E L L A N E O U S
774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Four-character-code (FOURCC) */
804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define v4l2_fourcc(a, b, c, d)\
814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	E N U M S
854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_field {
874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_ANY           = 0, /* driver can choose from none,
884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 top, bottom, interlaced
894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 depending on whatever it thinks
904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 is approximate ... */
914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_NONE          = 1, /* this device has no fields ... */
924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_TOP           = 2, /* top field only */
934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_BOTTOM        = 3, /* bottom field only */
944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */
954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one
964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 buffer, top-bottom order */
974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */
984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into
994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 separate buffers */
1004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field
1014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 first and the top field is
1024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 transmitted first */
1034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field
1044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 first and the bottom field is
1054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					 transmitted first */
1064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
1074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_TOP(field)	\
1084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((field) == V4L2_FIELD_TOP 	||\
1094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED ||\
1104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB	||\
1134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_BOTTOM(field)	\
1154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((field) == V4L2_FIELD_BOTTOM 	||\
1164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED ||\
1174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB	||\
1204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FIELD_HAS_BOTH(field)	\
1224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((field) == V4L2_FIELD_INTERLACED ||\
1234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB ||\
1264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_buf_type {
1294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,
1304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,
1314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,
1324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VBI_CAPTURE          = 4,
1334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VBI_OUTPUT           = 5,
1344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,
1354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,
1364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1
1374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* Experimental */
1384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
1394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif
1404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
1414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10,
1424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* Deprecated, do not use */
1434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_BUF_TYPE_PRIVATE              = 0x80,
1444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
1454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_MULTIPLANAR(type)			\
1474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE	\
1484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
1494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_OUTPUT(type)				\
1514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT			\
1524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE		\
1534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY		\
1544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY	\
1554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VBI_OUTPUT			\
1564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
1574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TYPE_IS_PRIVATE(type)				\
1594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	((type) == V4L2_BUF_TYPE_PRIVATE)
1604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_tuner_type {
1624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_TUNER_RADIO	     = 1,
1634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_TUNER_ANALOG_TV	     = 2,
1644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_TUNER_DIGITAL_TV	     = 3,
1654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
1664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_memory {
1684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_MEMORY_MMAP             = 1,
1694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_MEMORY_USERPTR          = 2,
1704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_MEMORY_OVERLAY          = 3,
1714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_MEMORY_DMABUF           = 4,
1724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
1734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
1754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_colorspace {
1764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* ITU-R 601 -- broadcast NTSC/PAL */
1774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_SMPTE170M     = 1,
1784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* 1125-Line (US) HDTV */
1804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_SMPTE240M     = 2,
1814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* HD and modern captures. */
1834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_REC709        = 3,
1844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
1864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_BT878         = 4,
1874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* These should be useful.  Assume 601 extents. */
1894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_470_SYSTEM_M  = 5,
1904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
1914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* I know there will be cameras that send this.  So, this is
1934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 * unspecified chromaticities and full 0-255 on each of the
1944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 * Y'CbCr components
1954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 */
1964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_JPEG          = 7,
1974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
1984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* For RGB colourspaces, this is probably a good start. */
1994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_COLORSPACE_SRGB          = 8,
2004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_priority {
2034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_PRIORITY_UNSET       = 0,  /* not initialized */
2044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_PRIORITY_BACKGROUND  = 1,
2054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_PRIORITY_INTERACTIVE = 2,
2064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_PRIORITY_RECORD      = 3,
2074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,
2084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_rect {
2114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32   left;
2124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32   top;
2134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32   width;
2144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32   height;
2154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_fract {
2184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   numerator;
2194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   denominator;
2204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
2234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
2244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  *
2254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @driver:	   name of the driver module (e.g. "bttv")
2264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @card:	   name of the card (e.g. "Hauppauge WinTV")
2274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @bus_info:	   name of the bus (e.g. "PCI:" + pci_name(pci_dev) )
2284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @version:	   KERNEL_VERSION
2294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @capabilities: capabilities of the physical device as a whole
2304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @device_caps:  capabilities accessed via this particular device (node)
2314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  * @reserved:	   reserved fields for future extensions
2324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin  */
2334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_capability {
2344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	driver[16];
2354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	card[32];
2364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	bus_info[32];
2374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   version;
2384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	capabilities;
2394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	device_caps;
2404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[3];
2414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for 'capabilities' field */
2444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE		0x00000001  /* Is a video capture device */
2454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT		0x00000002  /* Is a video output device */
2464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OVERLAY		0x00000004  /* Can do video overlay */
2474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VBI_CAPTURE		0x00000010  /* Is a raw VBI capture device */
2484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VBI_OUTPUT		0x00000020  /* Is a raw VBI output device */
2494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_SLICED_VBI_CAPTURE	0x00000040  /* Is a sliced VBI capture device */
2504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_SLICED_VBI_OUTPUT	0x00000080  /* Is a sliced VBI output device */
2514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RDS_CAPTURE		0x00000100  /* RDS data capture */
2524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY	0x00000200  /* Can do video output overlay */
2534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_HW_FREQ_SEEK		0x00000400  /* Can do hardware frequency seek  */
2544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RDS_OUTPUT		0x00000800  /* Is an RDS encoder */
2554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video capture device that supports multiplanar formats */
2574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE_MPLANE	0x00001000
2584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video output device that supports multiplanar formats */
2594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_MPLANE	0x00002000
2604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video mem-to-mem device that supports multiplanar formats */
2614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_M2M_MPLANE	0x00004000
2624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Is a video mem-to-mem device */
2634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_VIDEO_M2M		0x00008000
2644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_TUNER			0x00010000  /* has a tuner */
2664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_AUDIO			0x00020000  /* has audio support */
2674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_RADIO			0x00040000  /* is a radio device */
2684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_MODULATOR		0x00080000  /* has a modulator */
2694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */
2714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */
2724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */
2734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device capabilities field */
2754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
2774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	V I D E O   I M A G E   F O R M A T
2784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
2794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_pix_format {
2804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32         		width;
2814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			height;
2824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			pixelformat;
2834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			field;		/* enum v4l2_field */
2844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32            	bytesperline;	/* for padding, zero if unused */
2854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32          		sizeimage;
2864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			colorspace;	/* enum v4l2_colorspace */
2874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			priv;		/* private data, depends on pixelformat */
2884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
2894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*      Pixel format         FOURCC                          depth  Description  */
2914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
2924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* RGB formats */
2934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */
2944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */
2954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */
2964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */
2974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */
2984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */
2994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6	  */
3004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */
3014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */
3024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */
3034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */
3044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Grey formats */
3064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */
3074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */
3084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */
3094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */
3104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */
3114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */
3124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Grey bit-packed formats */
3144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  Greyscale bit-packed */
3154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Palette formats */
3174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */
3184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Chrominance formats */
3204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */
3214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Luminance+Chrominance formats */
3234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */
3244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */
3254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */
3264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */
3274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
3284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */
3294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */
3304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */
3314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16  YVU411 planar */
3324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */
3334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */
3344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */
3354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */
3364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */
3374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */
3384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */
3394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */
3404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */
3414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */
3424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* two planes -- one Y, one Cr + Cb interleaved  */
3444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */
3454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */
3464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */
3474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */
3484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
3494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */
3504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* two non contiguous planes - one Y, one Cr + Cb interleaved  */
3524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */
3534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 4:2:0  */
3544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 macroblocks */
3554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 macroblocks */
3564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* three non contiguous planes - Y, Cb, Cr */
3584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */
3594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 planar */
3604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
3624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */
3634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
3644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */
3654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */
3664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. GRGR.. */
3674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. RGRG.. */
3684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. BGBG.. */
3694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. GBGB.. */
3704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */
3714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */
3724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */
3734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */
3744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* 10bit raw bayer a-law compressed to 8 bits */
3754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
3764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
3774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
3784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
3794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* 10bit raw bayer DPCM compressed to 8 bits */
3804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
3814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
3824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
3834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
3844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/*
3854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 * 10bit raw bayer, expanded to 16 bits
3864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
3874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	 */
3884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */
3894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
3904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* compressed formats */
3914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
3924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */
3934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */
3944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
3954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
3964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */
3974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
3984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
3994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
4004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */
4014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 ES     */
4024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
4034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
4044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
4054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DIVX_311  v4l2_fourcc('D', 'I', 'V', '3') /* DIVX311     */
4064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_DIVX      v4l2_fourcc('D', 'I', 'V', 'X') /* DIVX        */
4074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
4084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* for HEVC stream */
4094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_HEVC_HYBRID v4l2_fourcc('H', 'V', 'C', 'H')
4104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Vendor-specific formats   */
4124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
4134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
4144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */
4154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */
4164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */
4174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */
4184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */
4194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */
4204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */
4214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */
4224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */
4234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */
4244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */
4254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */
4264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
4274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
4284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
4294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
4304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
4314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */
4324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */
4334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */
4344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */
4354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_JPGL	v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */
4364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */
4374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */
4384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_COMB v4l2_fourcc('S', 'T', 'C', 'M') /* Composite stats */
4394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AE   v4l2_fourcc('S', 'T', 'A', 'E') /* AEC stats */
4414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AF   v4l2_fourcc('S', 'T', 'A', 'F') /* AF stats */
4424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_AWB  v4l2_fourcc('S', 'T', 'W', 'B') /* AWB stats */
4434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_IHST v4l2_fourcc('I', 'H', 'S', 'T') /* IHIST stats */
4444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_CS   v4l2_fourcc('S', 'T', 'C', 'S') /* Column count stats */
4454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_RS   v4l2_fourcc('S', 'T', 'R', 'S') /* Row count stats */
4464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BG   v4l2_fourcc('S', 'T', 'B', 'G') /* Bayer Grid stats */
4474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BF   v4l2_fourcc('S', 'T', 'B', 'F') /* Bayer focus stats */
4484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_PIX_FMT_STATS_BHST v4l2_fourcc('B', 'H', 'S', 'T') /* Bayer hist stats */
4494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
4514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	F O R M A T   E N U M E R A T I O N
4524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
4534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_fmtdesc {
4544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		    index;             /* Format number      */
4554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		    type;              /* enum v4l2_buf_type */
4564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32               flags;
4574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8		    description[32];   /* Description string */
4584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		    pixelformat;       /* Format fourcc      */
4594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		    reserved[4];
4604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
4614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FMT_FLAG_COMPRESSED 0x0001
4634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FMT_FLAG_EMULATED   0x0002
4644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1
4664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* Experimental Frame Size and frame rate enumeration */
4674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
4684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	F R A M E   S I Z E   E N U M E R A T I O N
4694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
4704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_frmsizetypes {
4714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMSIZE_TYPE_DISCRETE	= 1,
4724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMSIZE_TYPE_CONTINUOUS	= 2,
4734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMSIZE_TYPE_STEPWISE	= 3,
4744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
4754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsize_discrete {
4774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			width;		/* Frame width [pixel] */
4784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			height;		/* Frame height [pixel] */
4794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
4804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsize_stepwise {
4824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			min_width;	/* Minimum frame width [pixel] */
4834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			max_width;	/* Maximum frame width [pixel] */
4844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			step_width;	/* Frame width step size [pixel] */
4854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			min_height;	/* Minimum frame height [pixel] */
4864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			max_height;	/* Maximum frame height [pixel] */
4874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			step_height;	/* Frame height step size [pixel] */
4884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
4894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmsizeenum {
4914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			index;		/* Frame size number */
4924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			pixel_format;	/* Pixel format */
4934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;		/* Frame size type the device supports. */
4944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
4954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {					/* Frame size */
4964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_frmsize_discrete	discrete;
4974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_frmsize_stepwise	stepwise;
4984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
4994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   reserved[2];			/* Reserved space for future use */
5014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
5044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	F R A M E   R A T E   E N U M E R A T I O N
5054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
5064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_frmivaltypes {
5074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMIVAL_TYPE_DISCRETE	= 1,
5084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMIVAL_TYPE_CONTINUOUS	= 2,
5094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_FRMIVAL_TYPE_STEPWISE	= 3,
5104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmival_stepwise {
5134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract	min;		/* Minimum frame interval [s] */
5144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract	max;		/* Maximum frame interval [s] */
5154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract	step;		/* Frame interval step size [s] */
5164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frmivalenum {
5194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			index;		/* Frame format index */
5204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			pixel_format;	/* Pixel format */
5214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			width;		/* Frame width */
5224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			height;		/* Frame height */
5234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;		/* Frame interval type the device supports. */
5244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {					/* Frame interval */
5264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_fract		discrete;
5274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_frmival_stepwise	stepwise;
5284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
5294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[2];			/* Reserved space for future use */
5314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif
5334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
5354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	T I M E C O D E
5364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
5374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_timecode {
5384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	type;
5394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	flags;
5404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	frames;
5414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	seconds;
5424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	minutes;
5434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	hours;
5444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	userbits[4];
5454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Type  */
5484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_24FPS		1
5494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_25FPS		2
5504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_30FPS		3
5514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_50FPS		4
5524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_TYPE_60FPS		5
5534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags  */
5554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_FLAG_DROPFRAME		0x0001 /* "drop-frame" mode */
5564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_FLAG_COLORFRAME		0x0002
5574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_field		0x000C
5584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_USERDEFINED	0x0000
5594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TC_USERBITS_8BITCHARS	0x0008
5604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The above is based on SMPTE timecodes */
5614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_jpegcompression {
5634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int quality;
5644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int  APPn;              /* Number of APP segment to be written,
5664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * must be 0..15 */
5674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int  APP_len;           /* Length of data in JPEG APPn segment */
5684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	char APP_data[60];      /* Data in the JPEG APPn segment. */
5694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	int  COM_len;           /* Length of data in JPEG COM segment */
5714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	char COM_data[60];      /* Data in JPEG COM segment */
5724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 jpeg_markers;     /* Which markers should go into the JPEG
5744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * output. Unless you exactly know what
5754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * you do, leave them untouched.
5764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * Inluding less markers will make the
5774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * resulting code smaller, but there will
5784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * be fewer applications which can read it.
5794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * The presence of the APP and COM marker
5804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * is influenced by APP_len and COM_len
5814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 * ONLY, not by this property! */
5824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
5844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
5854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
5864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
5874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
5884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin					* allways use APP0 */
5894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
5904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
5914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
5924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	M E M O R Y - M A P P I N G   B U F F E R S
5934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
5944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_requestbuffers {
5954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			count;
5964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;		/* enum v4l2_buf_type */
5974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			memory;		/* enum v4l2_memory */
5984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved[2];
5994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
6004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
6014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
6024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_plane - plane info for multi-planar buffers
6034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesused:		number of bytes occupied by data in the plane (payload)
6044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @length:		size of this plane (NOT the payload) in bytes
6054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @mem_offset:		when memory in the associated struct v4l2_buffer is
6064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			V4L2_MEMORY_MMAP, equals the offset from the start of
6074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			the device memory for this plane (or is a "cookie" that
6084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			should be passed to mmap() called on the video node)
6094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @userptr:		when memory is V4L2_MEMORY_USERPTR, a userspace pointer
6104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			pointing to this plane
6114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd:			when memory is V4L2_MEMORY_DMABUF, a userspace file
6124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			descriptor associated with this plane
6134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @data_offset:	offset in the plane to the start of data; usually 0,
6144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			unless there is a header in front of the data
6154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
6164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
6174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * with two planes can have one plane for Y, and another for interleaved CbCr
6184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * components. Each plane can reside in a separate memory buffer, or even in
6194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * a completely separate memory node (e.g. in embedded devices).
6204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
6214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_plane {
6224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			bytesused;
6234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			length;
6244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
6254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u32		mem_offset;
6264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		unsigned long	userptr;
6274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s32		fd;
6284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	} m;
6294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			data_offset;
6304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved[11];
6314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
6324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
6334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
6344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_buffer - video buffer info
6354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index:	id number of the buffer
6364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for
6374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		multiplanar buffers);
6384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesused:	number of bytes occupied by data in the buffer (payload);
6394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		unused (set to 0) for multiplanar buffers
6404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags:	buffer informational flags
6414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @field:	enum v4l2_field; field order of the image in the buffer
6424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timestamp:	frame timestamp
6434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timecode:	frame timecode
6444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sequence:	sequence count of this frame
6454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @memory:	enum v4l2_memory; the method, in which the actual video data is
6464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		passed
6474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @offset:	for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP;
6484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		offset from the start of the device memory for this plane,
6494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		(or a "cookie" that should be passed to mmap() as offset)
6504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @userptr:	for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
6514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		a userspace pointer pointing to this buffer
6524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd:		for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;
6534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		a userspace file descriptor associated with this buffer
6544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @planes:	for multiplanar buffers; userspace pointer to the array of plane
6554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		info structs for this buffer
6564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @length:	size in bytes of the buffer (NOT its payload) for single-plane
6574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		buffers (when type != *_MPLANE); number of elements in the
6584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		planes array for multi-plane buffers
6594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @input:	input number from which the video data has has been captured
6604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
6614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains data exchanged by application and driver using one of the Streaming
6624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * I/O methods.
6634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
6644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_buffer {
6654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			index;
6664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;
6674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			bytesused;
6684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			flags;
6694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			field;
6704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct timeval		timestamp;
6714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_timecode	timecode;
6724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			sequence;
6734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
6744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* memory location */
6754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			memory;
6764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
6774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u32           offset;
6784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		unsigned long   userptr;
6794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_plane *planes;
6804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s32		fd;
6814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	} m;
6824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			length;
6834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved2;
6844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved;
6854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
6864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
6874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for 'flags' field */
6884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_MAPPED	0x0001  /* Buffer is mapped (flag) */
6894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_QUEUED	0x0002	/* Buffer is queued for processing */
6904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_DONE	0x0004	/* Buffer is ready */
6914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_KEYFRAME	0x0008	/* Image is a keyframe (I-frame) */
6924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_PFRAME	0x0010	/* Image is a P-frame */
6934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_BFRAME	0x0020	/* Image is a B-frame */
6944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Buffer is ready, but the data contained within is corrupted. */
6954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_ERROR	0x0040
6964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMECODE	0x0100	/* timecode field is valid */
6974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_PREPARED	0x0400	/* Buffer is prepared for queuing */
6984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Cache handling flags */
6994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE	0x0800
7004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_CLEAN		0x1000
7014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Timestamp type */
7024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MASK		0xe000
7034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN		0x0000
7044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC	0x2000
7054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_COPY		0x4000
7064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Vendor extensions */
7074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_CODECCONFIG		0x10000
7084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOSEQ		0x20000
7094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TIMESTAMP_INVALID		0x40000
7104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_IDRFRAME		0x80000	/*Image is a IDR-frame*/
7114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_DECODEONLY		0x100000
7124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_DATA_CORRUPT		0x200000
7134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_DROP_FRAME		0x400000
7144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_INPUT_UNSUPPORTED		0x800000
7154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOS			0x1000000
7164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TS_DISCONTINUITY		0x2000000
7174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_TS_ERROR			0x4000000
7184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_BUF_FLAG_READONLY		0x8000000
7194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_VIDC_BUF_START_CODE_NOT_FOUND	0x10000000
7204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_BUF_FLAG_YUV_601_709_CLAMP	0x20000000
7214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MSM_BUF_FLAG_MBAFF			0x40000000
7224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
7234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
7244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
7254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
7264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index:	id number of the buffer
7274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for
7284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		multiplanar buffers);
7294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @plane:	index of the plane to be exported, 0 for single plane queues
7304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags:	flags for newly created file, currently only O_CLOEXEC is
7314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		supported, refer to manual of open syscall for more details
7324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @fd:		file descriptor associated with DMABUF (set by driver)
7334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
7344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Contains data used for exporting a video buffer as DMABUF file descriptor.
7354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF
7364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * (identical to the cookie used to mmap() the buffer to userspace). All
7374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * reserved fields must be set to zero. The field reserved0 is expected to
7384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * become a structure 'type' allowing an alternative layout of the structure
7394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * content. Therefore this field should not be used for any other extensions.
7404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
7414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_exportbuffer {
7424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		type; /* enum v4l2_buf_type */
7434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		index;
7444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		plane;
7454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		flags;
7464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		fd;
7474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		reserved[11];
7484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
7494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
7504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
7514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	O V E R L A Y   P R E V I E W
7524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
7534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_framebuffer {
7544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			capability;
7554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			flags;
7564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* FIXME: in theory we should pass something like PCI device + memory
7574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * region + offset instead of some physical address */
7584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	void                    *base;
7594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_pix_format	fmt;
7604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
7614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'capability' field. Read only */
7624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001
7634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_CHROMAKEY		0x0002
7644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004
7654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_BITMAP_CLIPPING	0x0008
7664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_ALPHA	0x0010
7674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_GLOBAL_ALPHA	0x0020
7684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA	0x0040
7694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_CAP_SRC_CHROMAKEY	0x0080
7704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'flags' field. */
7714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_PRIMARY		0x0001
7724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_OVERLAY		0x0002
7734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_CHROMAKEY	0x0004
7744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_ALPHA	0x0008
7754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_GLOBAL_ALPHA	0x0010
7764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA	0x0020
7774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_FBUF_FLAG_SRC_CHROMAKEY	0x0040
7784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
7794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_clip {
7804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        c;
7814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_clip	__user *next;
7824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
7834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
7844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_window {
7854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        w;
7864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			field;	 /* enum v4l2_field */
7874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			chromakey;
7884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_clip	__user *clips;
7894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			clipcount;
7904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	void			__user *bitmap;
7914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8                    global_alpha;
7924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
7934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
7944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
7954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	C A P T U R E   P A R A M E T E R S
7964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
7974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_captureparm {
7984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   capability;	  /*  Supported modes */
7994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   capturemode;	  /*  Current mode */
8004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract  timeperframe;  /*  Time per frame in seconds */
8014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   extendedmode;  /*  Driver-specific extensions */
8024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32              readbuffers;   /*  # of buffers for read */
8034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   reserved[4];
8044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for 'capability' and 'capturemode' fields */
8074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MODE_HIGHQUALITY	0x0001	/*  High quality imaging mode */
8084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_TIMEPERFRAME	0x1000	/*  timeperframe field is supported */
8094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CAP_QCOM_FRAMESKIP	0x2000	/*  frame skipping is supported */
8104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_qcom_frameskip {
8124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64		   maxframeinterval;
8134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8		   fpsvariance;
8144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_outputparm {
8174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   capability;	 /*  Supported modes */
8184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   outputmode;	 /*  Current mode */
8194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract  timeperframe; /*  Time per frame in seconds */
8204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   extendedmode; /*  Driver-specific extensions */
8214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32              writebuffers; /*  # of buffers for write */
8224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		   reserved[4];
8234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
8264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	I N P U T   I M A G E   C R O P P I N G
8274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
8284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_cropcap {
8294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;	/* enum v4l2_buf_type */
8304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        bounds;
8314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        defrect;
8324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract       pixelaspect;
8334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_crop {
8364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;	/* enum v4l2_buf_type */
8374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        c;
8384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
8414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_selection - selection info
8424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	buffer type (do not use *_MPLANE types)
8434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @target:	Selection target, used to choose one of possible rectangles;
8444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		defined in v4l2-common.h; V4L2_SEL_TGT_* .
8454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags:	constraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.
8464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @r:		coordinates of selection window
8474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved:	for future use, rounds structure size to 64 bytes, set to zero
8484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
8494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Hardware may use multiple helper windows to process a video stream.
8504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The structure is used to exchange this selection areas between
8514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * an application and a driver.
8524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
8534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_selection {
8544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;
8554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			target;
8564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32                   flags;
8574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_rect        r;
8584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32                   reserved[9];
8594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
8604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
8634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *      A N A L O G   V I D E O   S T A N D A R D
8644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
8654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjintypedef __u64 v4l2_std_id;
8674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* one bit for each */
8694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
8704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
8714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
8724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
8734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
8744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
8754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
8764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
8774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
8794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
8804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
8814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
8824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)	/* BTSC */
8844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)	/* EIA-J */
8854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)
8864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)	/* FM A2 */
8874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
8894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
8904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
8914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
8924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
8934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
8944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
8954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)
8964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
8974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* ATSC/HDTV */
8984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
8994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
9004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* FIXME:
9024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   Although std_id is 64 bits, there is an issue on PPC32 architecture that
9034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
9044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   this value to 32 bits.
9054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
9064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   it should work fine. However, if needed to add more than two standards,
9074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   v4l2-common.c should be fixed.
9084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
9094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
9114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Some macros to merge video standards in order to make live easier for the
9124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * drivers and V4L2 applications
9134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
9144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
9164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is
9174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Missing here.
9184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
9194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_NTSC           (V4L2_STD_NTSC_M	|\
9204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_NTSC_M_JP     |\
9214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_NTSC_M_KR)
9224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Secam macros */
9234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM_DK      	(V4L2_STD_SECAM_D	|\
9244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_K	|\
9254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_K1)
9264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* All Secam Standards */
9274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\
9284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_G	|\
9294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_H	|\
9304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_DK	|\
9314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_L       |\
9324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_LC)
9334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* PAL macros */
9344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\
9354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_B1	|\
9364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_G)
9374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\
9384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_D1	|\
9394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_K)
9404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
9414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * "Common" PAL - This macro is there to be compatible with the old
9424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V4L1 concept of "PAL": /BGDKHI.
9434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Several PAL standards are mising here: /M, /N and /Nc
9444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
9454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\
9464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_DK	|\
9474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_H		|\
9484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_I)
9494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Chroma "agnostic" standards */
9504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_B		(V4L2_STD_PAL_B		|\
9514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_B1	|\
9524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_B)
9534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_G		(V4L2_STD_PAL_G		|\
9544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_G)
9554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_H		(V4L2_STD_PAL_H		|\
9564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_H)
9574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_L		(V4L2_STD_SECAM_L	|\
9584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_LC)
9594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_GH		(V4L2_STD_G		|\
9604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_H)
9614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_DK		(V4L2_STD_PAL_DK	|\
9624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM_DK)
9634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_BG		(V4L2_STD_B		|\
9644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_G)
9654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_MN		(V4L2_STD_PAL_M		|\
9664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_N		|\
9674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_Nc	|\
9684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_NTSC)
9694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards where MTS/BTSC stereo could be found */
9714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_MTS		(V4L2_STD_NTSC_M	|\
9724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_M		|\
9734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_N		|\
9744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_Nc)
9754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards for Countries with 60Hz Line frequency */
9774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_525_60		(V4L2_STD_PAL_M		|\
9784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_60	|\
9794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_NTSC		|\
9804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_NTSC_443)
9814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Standards for Countries with 50Hz Line frequency */
9824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_625_50		(V4L2_STD_PAL		|\
9834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_N		|\
9844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_PAL_Nc	|\
9854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_SECAM)
9864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
9884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_ATSC_16_VSB)
9894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Macros with none and all analog standards */
9904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_UNKNOWN        0
9914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_STD_ALL            (V4L2_STD_525_60	|\
9924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 V4L2_STD_625_50)
9934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
9944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_standard {
9954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     index;
9964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	v4l2_std_id          id;
9974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8		     name[24];
9984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_fract    frameperiod; /* Frames, not fields */
9994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     framelines;
10004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     reserved[4];
10014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
10024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
10044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	D V 	B T	T I M I N G S
10054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
10064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_bt_timings - BT.656/BT.1120 timing data
10084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @width:	total width of the active video in pixels
10094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @height:	total height of the active video in lines
10104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @interlaced:	Interlaced or progressive
10114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @polarities:	Positive or negative polarities
10124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
10134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hfrontporch:Horizontal front porch in pixels
10144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hsync:	Horizontal Sync length in pixels
10154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @hbackporch:	Horizontal back porch in pixels
10164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vfrontporch:Vertical front porch in lines
10174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vsync:	Vertical Sync length in lines
10184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vbackporch:	Vertical back porch in lines
10194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vfrontporch:Vertical front porch for the even field
10204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		(aka field 2) of interlaced field formats
10214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vsync:	Vertical Sync length for the even field
10224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		(aka field 2) of interlaced field formats
10234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @il_vbackporch:Vertical back porch for the even field
10244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		(aka field 2) of interlaced field formats
10254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @standards:	Standards the timing belongs to
10264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @flags:	Flags
10274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved:	Reserved fields, must be zeroed.
10284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
10294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * A note regarding vertical interlaced timings: height refers to the total
10304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * height of the active video frame (= two fields). The blanking timings refer
10314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * to the blanking of each field. So the height of the total frame is
10324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * calculated as follows:
10334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
10344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * tot_height = height + vfrontporch + vsync + vbackporch +
10354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *                       il_vfrontporch + il_vsync + il_vbackporch
10364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
10374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * The active height of each field is height / 2.
10384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
10394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_bt_timings {
10404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	width;
10414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	height;
10424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	interlaced;
10434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	polarities;
10444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64	pixelclock;
10454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	hfrontporch;
10464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	hsync;
10474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	hbackporch;
10484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	vfrontporch;
10494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	vsync;
10504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	vbackporch;
10514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	il_vfrontporch;
10524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	il_vsync;
10534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	il_vbackporch;
10544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	standards;
10554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	flags;
10564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[14];
10574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
10584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Interlaced or progressive format */
10604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	V4L2_DV_PROGRESSIVE	0
10614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	V4L2_DV_INTERLACED	1
10624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Polarities. If bit is not set, it is assumed to be negative polarity */
10644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_VSYNC_POS_POL	0x00000001
10654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_HSYNC_POS_POL	0x00000002
10664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Timings standards */
10684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_CEA861	(1 << 0)  /* CEA-861 Digital TV Profile */
10694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_DMT	(1 << 1)  /* VESA Discrete Monitor Timings */
10704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_CVT	(1 << 2)  /* VESA Coordinated Video Timings */
10714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_STD_GTF	(1 << 3)  /* VESA Generalized Timings Formula */
10724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags */
10744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary
10764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
10774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   intervals are reduced, allowing a higher resolution over the same
10784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   bandwidth. This is a read-only flag. */
10794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_REDUCED_BLANKING		(1 << 0)
10804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple
10814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   of six. These formats can be optionally played at 1 / 1.001 speed.
10824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   This is a read-only flag. */
10834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_CAN_REDUCE_FPS		(1 << 1)
10844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* CEA-861 specific: only valid for video transmitters, the flag is cleared
10854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   by receivers.
10864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   If the framerate of the format is a multiple of six, then the pixelclock
10874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   used to set up the transmitter is divided by 1.001 to make it compatible
10884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
10894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate
10904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   such frequencies, then the flag will also be cleared. */
10914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_REDUCED_FPS			(1 << 2)
10924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Specific to interlaced formats: if set, then field 1 is really one half-line
10934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   longer and field 2 is really one half-line shorter, so each field has
10944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   exactly the same number of half-lines. Whether half-lines can be detected
10954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   or used depends on the hardware. */
10964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_FL_HALF_LINE			(1 << 3)
10974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
10994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_dv_timings - DV timings
11004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	the type of the timings
11014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bt:	BT656/1120 timings
11024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
11034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dv_timings {
11044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 type;
11054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
11064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_bt_timings	bt;
11074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u32	reserved[32];
11084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
11094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
11104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Values for the type field */
11124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_656_1120	0	/* BT.656/1120 timing type */
11134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_enum_dv_timings - DV timings enumeration
11164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index:	enumeration index
11174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved:	must be zeroed
11184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @timings:	the timings for the given index
11194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
11204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enum_dv_timings {
11214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 index;
11224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[3];
11234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_dv_timings timings;
11244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
11254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities
11274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_width:		width in pixels
11284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_width:		width in pixels
11294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_height:		height in lines
11304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_height:		height in lines
11314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @min_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
11324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @max_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
11334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @standards:		Supported standards
11344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @capabilities:	Supported capabilities
11354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved:		Must be zeroed
11364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
11374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_bt_timings_cap {
11384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	min_width;
11394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	max_width;
11404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	min_height;
11414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	max_height;
11424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64	min_pixelclock;
11434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64	max_pixelclock;
11444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	standards;
11454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	capabilities;
11464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[16];
11474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
11484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports interlaced formats */
11504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_INTERLACED	(1 << 0)
11514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports progressive formats */
11524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_PROGRESSIVE	(1 << 1)
11534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports CVT/GTF reduced blanking */
11544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_REDUCED_BLANKING	(1 << 2)
11554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Supports custom formats */
11564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DV_BT_CAP_CUSTOM		(1 << 3)
11574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/** struct v4l2_dv_timings_cap - DV timings capabilities
11594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	the type of the timings (same as in struct v4l2_dv_timings)
11604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bt:		the BT656/1120 timings capabilities
11614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
11624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dv_timings_cap {
11634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 type;
11644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[3];
11654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
11664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_bt_timings_cap bt;
11674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u32 raw_data[32];
11684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
11694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
11704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
11734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	V I D E O   I N P U T S
11744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
11754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_input {
11764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     index;		/*  Which input */
11774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	     name[32];		/*  Label */
11784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     type;		/*  Type of input */
11794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     audioset;		/*  Associated audios (bitfield) */
11804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32        tuner;             /*  enum v4l2_tuner_type */
11814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	v4l2_std_id  std;
11824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     status;
11834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     capabilities;
11844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     reserved[3];
11854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
11864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Values for the 'type' field */
11884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_INPUT_TYPE_TUNER		1
11894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_INPUT_TYPE_CAMERA		2
11904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - general */
11924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
11934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_SIGNAL   0x00000002
11944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_COLOR    0x00000004
11954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
11964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - sensor orientation */
11974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* If sensor is mounted upside down set both bits */
11984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */
11994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */
12004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - analog */
12024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
12034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */
12044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - digital */
12064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */
12074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */
12084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */
12094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* field 'status' - VCR and set-top box */
12114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */
12124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
12134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
12144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* capabilities flags */
12164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */
12174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_CUSTOM_TIMINGS	V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
12184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_IN_CAP_STD			0x00000004 /* Supports S_STD */
12194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
12214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	V I D E O   O U T P U T S
12224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
12234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_output {
12244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     index;		/*  Which output */
12254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	     name[32];		/*  Label */
12264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     type;		/*  Type of output */
12274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     audioset;		/*  Associated audios (bitfield) */
12284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     modulator;         /*  Associated modulator */
12294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	v4l2_std_id  std;
12304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     capabilities;
12314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	     reserved[3];
12324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
12334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Values for the 'type' field */
12344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_MODULATOR		1
12354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOG			2
12364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY	3
12374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* capabilities flags */
12394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */
12404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_CUSTOM_TIMINGS	V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
12414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_OUT_CAP_STD		0x00000004 /* Supports S_STD */
12424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
12444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	C O N T R O L S
12454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
12464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_control {
12474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     id;
12484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		     value;
12494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
12504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_ext_control {
12524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 id;
12534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 size;
12544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved2[1];
12554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
12564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s32 value;
12574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s64 value64;
12584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		char *string;
12594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
12604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
12614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_ext_controls {
12634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 ctrl_class;
12644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 count;
12654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 error_idx;
12664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[2];
12674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_ext_control *controls;
12684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
12694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_ID_MASK      	  (0x0fffffff)
12714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
12724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
12734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinenum v4l2_ctrl_type {
12754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_INTEGER	     = 1,
12764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_BOOLEAN	     = 2,
12774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_MENU	     = 3,
12784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_BUTTON	     = 4,
12794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_INTEGER64     = 5,
12804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_CTRL_CLASS    = 6,
12814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_STRING        = 7,
12824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_BITMASK       = 8,
12834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	V4L2_CTRL_TYPE_INTEGER_MENU = 9,
12844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
12854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
12874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_queryctrl {
12884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     id;
12894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     type;	/* enum v4l2_ctrl_type */
12904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8		     name[32];	/* Whatever */
12914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		     minimum;	/* Note signedness */
12924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		     maximum;
12934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		     step;
12944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32		     default_value;
12954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32                flags;
12964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		     reserved[2];
12974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
12984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
12994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
13004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_querymenu {
13014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		id;
13024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		index;
13034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
13044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u8	name[32];	/* Whatever */
13054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s64	value;
13064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
13074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		reserved;
13084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
13094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Control flags  */
13114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_DISABLED		0x0001
13124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_GRABBED		0x0002
13134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_READ_ONLY 	0x0004
13144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_UPDATE 		0x0008
13154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_INACTIVE 	0x0010
13164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_SLIDER 		0x0020
13174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_WRITE_ONLY 	0x0040
13184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_VOLATILE		0x0080
13194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Query flag, to be ORed with the control ID */
13214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000
13224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  User-class control IDs defined by V4L2 */
13244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CID_MAX_CTRLS		1024
13254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  IDs reserved for driver specific controls */
13264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CID_PRIVATE_BASE		0x08000000
13274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
13304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	T U N I N G
13314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
13324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_tuner {
13334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32                   index;
13344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8			name[32];
13354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			type;	/* enum v4l2_tuner_type */
13364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			capability;
13374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			rangelow;
13384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			rangehigh;
13394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			rxsubchans;
13404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			audmode;
13414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32			signal;
13424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32			afc;
13434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved[4];
13444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
13454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_modulator {
13474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			index;
13484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8			name[32];
13494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			capability;
13504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			rangelow;
13514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			rangehigh;
13524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			txsubchans;
13534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved[4];
13544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
13554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'capability' field */
13574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LOW		0x0001
13584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_NORM		0x0002
13594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_BOUNDED	0x0004
13604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_WRAP	0x0008
13614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_STEREO		0x0010
13624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LANG2		0x0020
13634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_SAP		0x0020
13644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_LANG1		0x0040
13654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS		0x0080
13664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS_BLOCK_IO	0x0100
13674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_RDS_CONTROLS	0x0200
13684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_FREQ_BANDS	0x0400
13694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_PROG_LIM	0x0800
13704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'rxsubchans' field */
13724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_MONO		0x0001
13734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_STEREO		0x0002
13744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_LANG2		0x0004
13754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_SAP		0x0004
13764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_LANG1		0x0008
13774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_SUB_RDS		0x0010
13784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Values for the 'audmode' field */
13804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_MONO		0x0000
13814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_STEREO		0x0001
13824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG2		0x0002
13834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_SAP		0x0002
13844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG1		0x0003
13854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_TUNER_MODE_LANG1_LANG2	0x0004
13864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frequency {
13884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	tuner;
13894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
13904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	frequency;
13914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[8];
13924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
13934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_VSB	(1 << 1)
13954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_FM		(1 << 2)
13964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_BAND_MODULATION_AM		(1 << 3)
13974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
13984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_frequency_band {
13994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	tuner;
14004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
14014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	index;
14024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	capability;
14034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	rangelow;
14044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	rangehigh;
14054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	modulation;
14064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[9];
14074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_hw_freq_seek {
14104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	tuner;
14114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
14124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	seek_upward;
14134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	wrap_around;
14144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	spacing;
14154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	rangelow;
14164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	rangehigh;
14174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[5];
14184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
14214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	R D S
14224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
14234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_rds_data {
14254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 	lsb;
14264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 	msb;
14274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 	block;
14284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
14294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_MSK 	 0x7
14314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_A 	 0
14324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_B 	 1
14334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_C 	 2
14344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_D 	 3
14354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_C_ALT 	 4
14364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_INVALID 	 7
14374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_CORRECTED 0x40
14394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_RDS_BLOCK_ERROR 	 0x80
14404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
14424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	A U D I O
14434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
14444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_audio {
14454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	index;
14464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	name[32];
14474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	capability;
14484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	mode;
14494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[2];
14504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'capability' field */
14534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDCAP_STEREO		0x00001
14544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDCAP_AVL			0x00002
14554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  Flags for the 'mode' field */
14574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_AUDMODE_AVL		0x00001
14584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_audioout {
14604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	index;
14614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8	name[32];
14624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	capability;
14634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	mode;
14644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[2];
14654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
14684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	M P E G   S E R V I C E S
14694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
14704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	NOTE: EXPERIMENTAL API
14714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
14724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#if 1
14734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_I    (0)
14744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_P    (1)
14754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_B    (2)
14764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_FRAME_MASK (0xf)
14774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enc_idx_entry {
14794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64 offset;
14804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64 pts;
14814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 length;
14824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 flags;
14834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[2];
14844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_IDX_ENTRIES (64)
14874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_enc_idx {
14884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 entries;
14894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 entries_cap;
14904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[4];
14914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
14924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
14934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
14954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_START      (0)
14964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_STOP       (1)
14974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_PAUSE      (2)
14984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_RESUME     (3)
14994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_QCOM_CMD_FLUSH  (4)
15004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_ENC_CMD_STOP */
15024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)
15034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_encoder_cmd {
15054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 cmd;
15064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 flags;
15074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
15084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct {
15094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			__u32 data[8];
15104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		} raw;
15114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
15124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
15134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Decoder commands */
15154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_START       (0)
15164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP        (1)
15174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_PAUSE       (2)
15184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_RESUME      (3)
15194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH  (4)
15204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_START */
15224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_START_MUTE_AUDIO	(1 << 0)
15234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_PAUSE */
15254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_PAUSE_TO_BLACK	(1 << 0)
15264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_CMD_STOP */
15284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP_TO_BLACK	(1 << 0)
15294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_CMD_STOP_IMMEDIATELY	(1 << 1)
15304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Flags for V4L2_DEC_QCOM_CMD_FLUSH */
15324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
15334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
15344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
15364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
15374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Play format requirements (returned by the driver): */
15394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The decoder has no special format requirements */
15414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_START_FMT_NONE		(0)
15424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The decoder requires full GOPs */
15434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_DEC_START_FMT_GOP		(1)
15444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* The structure must be zeroed before use by the application
15464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   This ensures it can be extended safely in the future. */
15474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_decoder_cmd {
15484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 cmd;
15494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 flags;
15504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
15514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct {
15524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			__u64 pts;
15534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		} stop;
15544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct {
15564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			/* 0 or 1000 specifies normal speed,
15574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			   1 specifies forward single stepping,
15584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			   -1 specifies backward single stepping,
15594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			   >1: playback at speed/1000 of the normal speed,
15604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			   <-1: reverse playback at (-speed/1000) of the normal speed. */
15614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			__s32 speed;
15624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			__u32 format;
15634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		} start;
15644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct {
15664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin			__u32 data[16];
15674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		} raw;
15684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
15694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
15704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif
15714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
15744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	D A T A   S E R V I C E S   ( V B I )
15754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
15764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	Data services API by Michael Schimek
15774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
15784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Raw VBI */
15804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_vbi_format {
15814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	sampling_rate;		/* in 1 Hz */
15824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	offset;
15834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	samples_per_line;
15844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	sample_format;		/* V4L2_PIX_FMT_* */
15854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32	start[2];
15864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	count[2];
15874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	flags;			/* V4L2_VBI_* */
15884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	reserved[2];		/* must be zero */
15894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
15904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*  VBI flags  */
15924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_VBI_UNSYNC		(1 << 0)
15934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_VBI_INTERLACED	(1 << 1)
15944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
15954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Sliced VBI
15964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
15974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *    This implements is a proposal V4L2 API to allow SLICED VBI
15984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * required for some hardware encoders. It should change without
15994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * notice in the definitive implementation.
16004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
16014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_format {
16034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16   service_set;
16044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
16054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
16064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 (equals frame lines 313-336 for 625 line video
16074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				  standards, 263-286 for 525 line standards) */
16084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16   service_lines[2][24];
16094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   io_size;
16104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   reserved[2];            /* must be zero */
16114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
16124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Teletext World System Teletext
16144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   (WST), defined on ITU-R BT.653-2 */
16154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_TELETEXT_B          (0x0001)
16164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Video Program System, defined on ETS 300 231*/
16174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VPS                 (0x0400)
16184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Closed Caption, defined on EIA-608 */
16194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_CAPTION_525         (0x1000)
16204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Wide Screen System, defined on ITU-R BT1119.1 */
16214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_WSS_625             (0x4000)
16224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)
16244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
16254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_cap {
16274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16   service_set;
16284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
16294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
16304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				 (equals frame lines 313-336 for 625 line video
16314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin				  standards, 263-286 for 525 line standards) */
16324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16   service_lines[2][24];
16334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	type;		/* enum v4l2_buf_type */
16344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   reserved[3];    /* must be 0 */
16354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
16364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_sliced_vbi_data {
16384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   id;
16394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   field;          /* 0: first field, 1: second field */
16404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   line;           /* 1-23 */
16414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32   reserved;       /* must be 0 */
16424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8    data[48];
16434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
16444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
16464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Sliced VBI data inserted into MPEG Streams
16474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
16484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
16504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * V4L2_MPEG_STREAM_VBI_FMT_IVTV:
16514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
16524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an
16534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI
16544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * data
16554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
16564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header
16574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * definitions are not included here.  See the MPEG-2 specifications for details
16584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * on these headers.
16594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
16604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Line type IDs */
16624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1)
16634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4)
16644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_WSS_625        (5)
16654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_VPS            (7)
16664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_itv0_line {
16684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 id;	/* One of V4L2_MPEG_VBI_IVTV_* above */
16694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 data[42];	/* Sliced VBI data for the line */
16704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
16714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_itv0 {
16734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__le32 linemask[2]; /* Bitmasks of VBI service lines present */
16744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_mpeg_vbi_itv0_line line[35];
16754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
16764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_ITV0 {
16784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_mpeg_vbi_itv0_line line[36];
16794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
16804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC0	"itv0"
16824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC1	"ITV0"
16834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_mpeg_vbi_fmt_ivtv {
16854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 magic[4];
16864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
16874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_mpeg_vbi_itv0 itv0;
16884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_mpeg_vbi_ITV0 ITV0;
16894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
16904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
16914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
16934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	A G G R E G A T E   S T R U C T U R E S
16944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
16954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
16964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
16974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_plane_pix_format - additional, per-plane format definition
16984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sizeimage:		maximum size in bytes required for data, for which
16994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			this plane will be used
17004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @bytesperline:	distance in bytes between the leftmost pixels in two
17014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *			adjacent lines
17024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
17034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_plane_pix_format {
17044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32		sizeimage;
17054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16		bytesperline;
17064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u16		reserved[7];
17074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
17084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
17104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_pix_format_mplane - multiplanar format definition
17114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @width:		image width in pixels
17124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @height:		image height in pixels
17134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pixelformat:	little endian four character code (fourcc)
17144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @field:		enum v4l2_field; field order (for interlaced video)
17154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @colorspace:		enum v4l2_colorspace; supplemental to pixelformat
17164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @plane_fmt:		per-plane information
17174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @num_planes:		number of planes for this format
17184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
17194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_pix_format_mplane {
17204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				width;
17214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				height;
17224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				pixelformat;
17234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				field;
17244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				colorspace;
17254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_plane_pix_format	plane_fmt[VIDEO_MAX_PLANES];
17274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8				num_planes;
17284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8				reserved[11];
17294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
17304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
17324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_format - stream data format
17334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @type:	enum v4l2_buf_type; type of the data stream
17344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pix:	definition of an image format
17354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @pix_mp:	definition of a multiplanar image format
17364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @win:	definition of an overlaid image
17374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @vbi:	raw VBI capture or output parameters
17384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @sliced:	sliced VBI capture or output parameters
17394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @raw_data:	placeholder for future extensions and custom formats
17404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
17414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_format {
17424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	 type;
17434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
17444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_pix_format		pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
17454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_pix_format_mplane	pix_mp;  /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */
17464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
17474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */
17484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
17494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u8	raw_data[200];                   /* user-defined */
17504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	} fmt;
17514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
17524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*	Stream type-dependent parameters
17544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
17554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_streamparm {
17564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32	 type;			/* enum v4l2_buf_type */
17574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
17584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_captureparm	capture;
17594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_outputparm	output;
17604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u8	raw_data[200];  /* user-defined */
17614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	} parm;
17624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
17634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
17654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	E V E N T S
17664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
17674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_ALL				0
17694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_VSYNC			1
17704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_EOS				2
17714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL				3
17724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_FRAME_SYNC			4
17734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_PRIVATE_START		0x08000000
17744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_START	(V4L2_EVENT_PRIVATE_START + 0x00001000)
17764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_FLUSH_DONE	(V4L2_EVENT_MSM_VIDC_START + 1)
17774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT	\
17784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 2)
17794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT	\
17804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 3)
17814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_CLOSE_DONE	(V4L2_EVENT_MSM_VIDC_START + 4)
17824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_SYS_ERROR	(V4L2_EVENT_MSM_VIDC_START + 5)
17834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE \
17844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 6)
17854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER \
17864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 7)
17874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_OVERLOAD (V4L2_EVENT_MSM_VIDC_START + 8)
17884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_MAX_CLIENTS (V4L2_EVENT_MSM_VIDC_START + 9)
17894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED (V4L2_EVENT_MSM_VIDC_START + 10)
17904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Payload for V4L2_EVENT_VSYNC */
17924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_vsync {
17934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	/* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */
17944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u8 field;
17954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
17964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
17974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Payload for V4L2_EVENT_CTRL */
17984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_VALUE		(1 << 0)
17994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_FLAGS		(1 << 1)
18004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_CTRL_CH_RANGE		(1 << 2)
18014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_ctrl {
18034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 changes;
18044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 type;
18054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
18064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s32 value;
18074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__s64 value64;
18084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
18094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 flags;
18104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32 minimum;
18114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32 maximum;
18124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32 step;
18134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__s32 default_value;
18144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
18154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_frame_sync {
18174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 frame_sequence;
18184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
18194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event {
18214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				type;
18224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {
18234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_event_vsync		vsync;
18244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_event_ctrl		ctrl;
18254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		struct v4l2_event_frame_sync	frame_sync;
18264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u8				data[64];
18274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	} u;
18284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				pending;
18294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				sequence;
18304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct timespec			timestamp;
18314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				id;
18324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				reserved[8];
18334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
18344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_SUB_FL_SEND_INITIAL		(1 << 0)
18364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK	(1 << 1)
18374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_event_subscription {
18394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				type;
18404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				id;
18414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				flags;
18424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32				reserved[5];
18434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
18444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
18464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	A D V A N C E D   D E B U G G I N G
18474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
18484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!
18494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	FOR DEBUGGING, TESTING AND INTERNAL USE ONLY!
18504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
18514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
18534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_BRIDGE      0  /* Match against chip ID on the bridge (0 for the bridge) */
18554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
18564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_I2C_DRIVER  1  /* Match against I2C driver name */
18574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_I2C_ADDR    2  /* Match against I2C 7-bit address */
18584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_AC97        3  /* Match against anciliary AC97 chip */
18594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_MATCH_SUBDEV      4  /* Match against subdev index */
18604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_match {
18624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 type; /* Match type */
18634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	union {     /* Match this chip, meaning determined by type */
18644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		__u32 addr;
18654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin		char name[32];
18664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	};
18674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
18684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_register {
18704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_dbg_match match;
18714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 size;	/* register size in bytes */
18724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64 reg;
18734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u64 val;
18744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
18754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_CHIP_IDENT */
18774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_chip_ident {
18784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_dbg_match match;
18794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 ident;       /* chip identifier as specified in <media/v4l2-chip-ident.h> */
18804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 revision;    /* chip revision, chip specific */
18814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
18824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_FL_READABLE (1 << 0)
18844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define V4L2_CHIP_FL_WRITABLE (1 << 1)
18854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* VIDIOC_DBG_G_CHIP_INFO */
18874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_dbg_chip_info {
18884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_dbg_match match;
18894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	char name[32];
18904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 flags;
18914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32 reserved[32];
18924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin} __attribute__ ((packed));
18934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
18944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/**
18954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument
18964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @index:	on return, index of the first created buffer
18974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @count:	entry: number of requested buffers,
18984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *		return: number of created buffers
18994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @memory:	enum v4l2_memory; buffer memory type
19004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @format:	frame format, for which buffers are requested
19014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin * @reserved:	future extensions
19024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
19034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjinstruct v4l2_create_buffers {
19044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			index;
19054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			count;
19064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			memory;
19074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	struct v4l2_format	format;
19084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin	__u32			reserved[8];
19094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin};
19104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/*
19124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *	I O C T L   C O D E S   F O R   V I D E O   D E V I C E S
19134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin *
19144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin */
19154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYCAP		 _IOR('V',  0, struct v4l2_capability)
19164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_RESERVED		  _IO('V',  1)
19174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc)
19184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FMT		_IOWR('V',  4, struct v4l2_format)
19194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FMT		_IOWR('V',  5, struct v4l2_format)
19204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_REQBUFS		_IOWR('V',  8, struct v4l2_requestbuffers)
19214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYBUF		_IOWR('V',  9, struct v4l2_buffer)
19224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FBUF		 _IOR('V', 10, struct v4l2_framebuffer)
19234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FBUF		 _IOW('V', 11, struct v4l2_framebuffer)
19244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_OVERLAY		 _IOW('V', 14, int)
19254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer)
19264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_EXPBUF		_IOWR('V', 16, struct v4l2_exportbuffer)
19274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer)
19284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_STREAMON		 _IOW('V', 18, int)
19294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_STREAMOFF	 _IOW('V', 19, int)
19304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_PARM		_IOWR('V', 21, struct v4l2_streamparm)
19314d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_PARM		_IOWR('V', 22, struct v4l2_streamparm)
19324d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_STD		 _IOR('V', 23, v4l2_std_id)
19334d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_STD		 _IOW('V', 24, v4l2_std_id)
19344d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMSTD		_IOWR('V', 25, struct v4l2_standard)
19354d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMINPUT	_IOWR('V', 26, struct v4l2_input)
19364d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_CTRL		_IOWR('V', 27, struct v4l2_control)
19374d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_CTRL		_IOWR('V', 28, struct v4l2_control)
19384d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_TUNER		_IOWR('V', 29, struct v4l2_tuner)
19394d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_TUNER		 _IOW('V', 30, struct v4l2_tuner)
19404d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_AUDIO		 _IOR('V', 33, struct v4l2_audio)
19414d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_AUDIO		 _IOW('V', 34, struct v4l2_audio)
19424d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYCTRL	_IOWR('V', 36, struct v4l2_queryctrl)
19434d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYMENU	_IOWR('V', 37, struct v4l2_querymenu)
19444d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_INPUT		 _IOR('V', 38, int)
19454d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_INPUT		_IOWR('V', 39, int)
19464d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_OUTPUT		 _IOR('V', 46, int)
19474d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_OUTPUT		_IOWR('V', 47, int)
19484d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output)
19494d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_AUDOUT		 _IOR('V', 49, struct v4l2_audioout)
19504d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_AUDOUT		 _IOW('V', 50, struct v4l2_audioout)
19514d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_MODULATOR	_IOWR('V', 54, struct v4l2_modulator)
19524d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_MODULATOR	 _IOW('V', 55, struct v4l2_modulator)
19534d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_FREQUENCY	_IOWR('V', 56, struct v4l2_frequency)
19544d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_FREQUENCY	 _IOW('V', 57, struct v4l2_frequency)
19554d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_CROPCAP		_IOWR('V', 58, struct v4l2_cropcap)
19564d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_CROP		_IOWR('V', 59, struct v4l2_crop)
19574d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_CROP		 _IOW('V', 60, struct v4l2_crop)
19584d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_JPEGCOMP	 _IOR('V', 61, struct v4l2_jpegcompression)
19594d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_JPEGCOMP	 _IOW('V', 62, struct v4l2_jpegcompression)
19604d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERYSTD      	 _IOR('V', 63, v4l2_std_id)
19614d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_FMT      	_IOWR('V', 64, struct v4l2_format)
19624d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMAUDIO	_IOWR('V', 65, struct v4l2_audio)
19634d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUMAUDOUT	_IOWR('V', 66, struct v4l2_audioout)
19644d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_PRIORITY	 _IOR('V', 67, __u32) /* enum v4l2_priority */
19654d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_PRIORITY	 _IOW('V', 68, __u32) /* enum v4l2_priority */
19664d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
19674d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_LOG_STATUS         _IO('V', 70)
19684d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_EXT_CTRLS	_IOWR('V', 71, struct v4l2_ext_controls)
19694d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_EXT_CTRLS	_IOWR('V', 72, struct v4l2_ext_controls)
19704d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_EXT_CTRLS	_IOWR('V', 73, struct v4l2_ext_controls)
19714d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FRAMESIZES	_IOWR('V', 74, struct v4l2_frmsizeenum)
19724d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
19734d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx)
19744d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd)
19754d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd)
19764d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19774d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use.
19784d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
19794d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   You must be root to use these ioctls. Never use these in applications! */
19804d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_DBG_S_REGISTER 	 _IOW('V', 79, struct v4l2_dbg_register)
19814d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_DBG_G_REGISTER 	_IOWR('V', 80, struct v4l2_dbg_register)
19824d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19834d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use.
19844d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   Never use this ioctl in applications!
19854d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   Note: this ioctl is deprecated in favor of VIDIOC_DBG_G_CHIP_INFO and
19864d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   will go away in the future. */
19874d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident)
19884d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19894d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_HW_FREQ_SEEK	 _IOW('V', 82, struct v4l2_hw_freq_seek)
19904d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19914d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_S_DV_TIMINGS	_IOWR('V', 87, struct v4l2_dv_timings)
19924d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_G_DV_TIMINGS	_IOWR('V', 88, struct v4l2_dv_timings)
19934d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_DQEVENT		 _IOR('V', 89, struct v4l2_event)
19944d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_SUBSCRIBE_EVENT	 _IOW('V', 90, struct v4l2_event_subscription)
19954d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define	VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
19964d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
19974d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, the below two ioctls may change over the next couple of kernel
19984d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   versions */
19994d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_CREATE_BUFS	_IOWR('V', 92, struct v4l2_create_buffers)
20004d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_PREPARE_BUF	_IOWR('V', 93, struct v4l2_buffer)
20014d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20024d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental selection API */
20034d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_G_SELECTION	_IOWR('V', 94, struct v4l2_selection)
20044d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_S_SELECTION	_IOWR('V', 95, struct v4l2_selection)
20054d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20064d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, these two ioctls may change over the next couple of kernel
20074d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   versions. */
20084d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DECODER_CMD	_IOWR('V', 96, struct v4l2_decoder_cmd)
20094d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_TRY_DECODER_CMD	_IOWR('V', 97, struct v4l2_decoder_cmd)
20104d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20114d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, these three ioctls may change over the next couple of kernel
20124d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   versions. */
20134d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_DV_TIMINGS  _IOWR('V', 98, struct v4l2_enum_dv_timings)
20144d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_QUERY_DV_TIMINGS  _IOR('V', 99, struct v4l2_dv_timings)
20154d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DV_TIMINGS_CAP   _IOWR('V', 100, struct v4l2_dv_timings_cap)
20164d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20174d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, this ioctl may change over the next couple of kernel
20184d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   versions. */
20194d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_ENUM_FREQ_BANDS	_IOWR('V', 101, struct v4l2_frequency_band)
20204d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20214d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Experimental, meant for debugging, testing and internal use.
20224d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   Never use these in applications! */
20234d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info)
20244d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20254d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin/* Reminder: when adding new ioctls please add support for them to
20264d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin   drivers/media/video/v4l2-compat-ioctl32.c as well! */
20274d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20284d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#define BASE_VIDIOC_PRIVATE	192		/* 192-255 are private */
20294d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin
20304d667bae0175a66dffc4d241a449e706bdee0a85Patrick Tjin#endif /* _UAPI__LINUX_VIDEODEV2_H */
2031