15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  Video for Linux Two header file
35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  Copyright (C) 1999-2012 the contributors
54e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch *  Copyright (c) 2016, The Linux Foundation. All rights reserved.
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  This program is free software; you can redistribute it and/or modify
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  it under the terms of the GNU General Public License as published by
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  the Free Software Foundation; either version 2 of the License, or
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  (at your option) any later version.
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  This program is distributed in the hope that it will be useful,
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  but WITHOUT ANY WARRANTY; without even the implied warranty of
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  GNU General Public License for more details.
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  Alternatively you can redistribute this file under the terms of the
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  BSD license as stated below:
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  Redistribution and use in source and binary forms, with or without
215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  modification, are permitted provided that the following conditions
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  are met:
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  1. Redistributions of source code must retain the above copyright
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     notice, this list of conditions and the following disclaimer.
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  2. Redistributions in binary form must reproduce the above copyright
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     notice, this list of conditions and the following disclaimer in
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     the documentation and/or other materials provided with the
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     distribution.
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  3. The names of its contributors may not be used to endorse or promote
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     products derived from this software without specific prior written
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *     permission.
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	Header file for v4l or V4L2 drivers and applications
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * with public API.
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * All kernel-specific stuff were moved to media/v4l2-dev.h, so
485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * no #if __KERNEL tests are allowed here
495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	See http://linuxtv.org for more info
515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	Author: Bill Dirks <bill@thedirks.org>
535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		Justin Schoeman
545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *              Hans Verkuil <hverkuil@xs4all.nl>
555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		et al.
565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
57d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef _UAPI__LINUX_VIDEODEV2_H
58d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define _UAPI__LINUX_VIDEODEV2_H
595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
60d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#ifndef __KERNEL__
615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <sys/time.h>
62d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#endif
63d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#include <linux/compiler.h>
645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/ioctl.h>
655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h>
665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/v4l2-common.h>
675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/v4l2-controls.h>
685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Common stuff for both V4L1 and V4L2
715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Moved from videodev.h
725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDEO_MAX_FRAME               32
745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDEO_MAX_PLANES               8
755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	M I S C E L L A N E O U S
785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Four-character-code (FOURCC) */
815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define v4l2_fourcc(a, b, c, d)\
825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define v4l2_fourcc_be(a, b, c, d)	(v4l2_fourcc(a, b, c, d) | (1 << 31))
845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	E N U M S
875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_field {
895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_ANY           = 0, /* driver can choose from none,
905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 top, bottom, interlaced
915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 depending on whatever it thinks
925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 is approximate ... */
935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_NONE          = 1, /* this device has no fields ... */
945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_TOP           = 2, /* top field only */
955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_BOTTOM        = 3, /* bottom field only */
965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_INTERLACED    = 4, /* both fields interlaced */
975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_SEQ_TB        = 5, /* both fields sequential into one
985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 buffer, top-bottom order */
995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_SEQ_BT        = 6, /* same as above + bottom-top order */
1005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_ALTERNATE     = 7, /* both fields alternating into
1015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 separate buffers */
1025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field
1035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 first and the top field is
1045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 transmitted first */
1055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field
1065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 first and the bottom field is
1075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					 transmitted first */
1085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FIELD_HAS_TOP(field)	\
1105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((field) == V4L2_FIELD_TOP 	||\
1115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED ||\
1125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB	||\
1155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FIELD_HAS_BOTTOM(field)	\
1175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((field) == V4L2_FIELD_BOTTOM 	||\
1185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED ||\
1195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB	||\
1225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FIELD_HAS_BOTH(field)	\
1245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((field) == V4L2_FIELD_INTERLACED ||\
1255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_TB ||\
1265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_INTERLACED_BT ||\
1275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_TB ||\
1285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_SEQ_BT)
1295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FIELD_HAS_T_OR_B(field)	\
1305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((field) == V4L2_FIELD_BOTTOM ||\
1315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_TOP ||\
1325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (field) == V4L2_FIELD_ALTERNATE)
1335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_buf_type {
1355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,
1365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT         = 2,
1375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OVERLAY        = 3,
1385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VBI_CAPTURE          = 4,
1395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VBI_OUTPUT           = 5,
1405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_SLICED_VBI_CAPTURE   = 6,
1415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_SLICED_VBI_OUTPUT    = 7,
1425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#if 1
1435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Experimental */
1445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
1455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
1465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
1475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10,
1485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_SDR_CAPTURE          = 11,
1495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Deprecated, do not use */
1505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_BUF_TYPE_PRIVATE              = 0x80,
1515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TYPE_IS_MULTIPLANAR(type)			\
1545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE	\
1555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
1565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TYPE_IS_OUTPUT(type)				\
1585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT			\
1595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE		\
1605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY		\
1615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY	\
1625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_VBI_OUTPUT			\
1635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
1645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_tuner_type {
1665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_TUNER_RADIO	     = 1,
1675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_TUNER_ANALOG_TV	     = 2,
1685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_TUNER_DIGITAL_TV	     = 3,
1695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_TUNER_ADC               = 4,
1705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_TUNER_RF                = 5,
1715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_memory {
1745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_MEMORY_MMAP             = 1,
1755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_MEMORY_USERPTR          = 2,
1765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_MEMORY_OVERLAY          = 3,
1775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_MEMORY_DMABUF           = 4,
1785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
1795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
1815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_colorspace {
1825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* ITU-R 601 -- broadcast NTSC/PAL */
1835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_SMPTE170M     = 1,
1845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 1125-Line (US) HDTV */
1865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_SMPTE240M     = 2,
1875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* HD and modern captures. */
1895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_REC709        = 3,
1905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
1925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_BT878         = 4,
1935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* These should be useful.  Assume 601 extents. */
1955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_470_SYSTEM_M  = 5,
1965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_470_SYSTEM_BG = 6,
1975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* I know there will be cameras that send this.  So, this is
1995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * unspecified chromaticities and full 0-255 on each of the
2005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * Y'CbCr components
2015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
2025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_JPEG          = 7,
2035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* For RGB colourspaces, this is probably a good start. */
2055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_COLORSPACE_SRGB          = 8,
2065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_priority {
2095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_PRIORITY_UNSET       = 0,  /* not initialized */
2105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_PRIORITY_BACKGROUND  = 1,
2115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_PRIORITY_INTERACTIVE = 2,
2125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_PRIORITY_RECORD      = 3,
2135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_PRIORITY_DEFAULT     = V4L2_PRIORITY_INTERACTIVE,
2145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_rect {
2175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32   left;
2185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32   top;
2195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   width;
2205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   height;
2215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_fract {
2245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   numerator;
2255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   denominator;
2265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
2295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * struct v4l2_capability - Describes V4L2 device caps returned by VIDIOC_QUERYCAP
2305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  *
2315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @driver:	   name of the driver module (e.g. "bttv")
2325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @card:	   name of the card (e.g. "Hauppauge WinTV")
2335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @bus_info:	   name of the bus (e.g. "PCI:" + pci_name(pci_dev) )
2345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @version:	   KERNEL_VERSION
2355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @capabilities: capabilities of the physical device as a whole
2365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @device_caps:  capabilities accessed via this particular device (node)
2375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  * @reserved:	   reserved fields for future extensions
2385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin  */
2395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_capability {
2405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	driver[16];
2415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	card[32];
2425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	bus_info[32];
2435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   version;
2445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	capabilities;
2455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	device_caps;
2465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[3];
2475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Values for 'capabilities' field */
2505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE		0x00000001  /* Is a video capture device */
2515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT		0x00000002  /* Is a video output device */
2525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_OVERLAY		0x00000004  /* Can do video overlay */
2535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VBI_CAPTURE		0x00000010  /* Is a raw VBI capture device */
2545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VBI_OUTPUT		0x00000020  /* Is a raw VBI output device */
2555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_SLICED_VBI_CAPTURE	0x00000040  /* Is a sliced VBI capture device */
2565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_SLICED_VBI_OUTPUT	0x00000080  /* Is a sliced VBI output device */
2575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_RDS_CAPTURE		0x00000100  /* RDS data capture */
2585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY	0x00000200  /* Can do video output overlay */
2595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_HW_FREQ_SEEK		0x00000400  /* Can do hardware frequency seek  */
2605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_RDS_OUTPUT		0x00000800  /* Is an RDS encoder */
2615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Is a video capture device that supports multiplanar formats */
2635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_CAPTURE_MPLANE	0x00001000
2645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Is a video output device that supports multiplanar formats */
2655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_OUTPUT_MPLANE	0x00002000
2665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Is a video mem-to-mem device that supports multiplanar formats */
2675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_M2M_MPLANE	0x00004000
2685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Is a video mem-to-mem device */
2695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_VIDEO_M2M		0x00008000
2705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_TUNER			0x00010000  /* has a tuner */
2725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_AUDIO			0x00020000  /* has audio support */
2735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_RADIO			0x00040000  /* is a radio device */
2745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_MODULATOR		0x00080000  /* has a modulator */
2755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_SDR_CAPTURE		0x00100000  /* Is a SDR capture device */
2775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_EXT_PIX_FORMAT		0x00200000  /* Supports the extended pixel format */
2785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */
2805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */
2815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */
2825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_DEVICE_CAPS            0x80000000  /* sets device capabilities field */
2845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
2855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
2865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	V I D E O   I M A G E   F O R M A T
2875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
2885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_pix_format {
2895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32         		width;
2905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			height;
2915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			pixelformat;
2925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			field;		/* enum v4l2_field */
2935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32            	bytesperline;	/* for padding, zero if unused */
2945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32          		sizeimage;
2955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			colorspace;	/* enum v4l2_colorspace */
2965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			priv;		/* private data, depends on pixelformat */
2975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			flags;		/* format flags (V4L2_PIX_FMT_FLAG_*) */
2985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
2995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*      Pixel format         FOURCC                          depth  Description  */
3015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* RGB formats */
3035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */
3045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */
3055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */
3065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */
3075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */
3085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */
3095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */
3105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */
3115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */
3125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16  ARGB-5-5-5 BE */
3135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16  XRGB-5-5-5 BE */
3145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */
3155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_BGR666  v4l2_fourcc('B', 'G', 'R', 'H') /* 18  BGR-6-6-6	  */
3165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */
3175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */
3185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */
3195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */
3205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */
3215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */
3225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */
3235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */
3245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* UBWC 32-bit RGBA8888 */
3265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_RGBA8888_UBWC   v4l2_fourcc('Q', 'R', 'G', 'B')
3275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Grey formats */
3295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */
3305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y4      v4l2_fourcc('Y', '0', '4', ' ') /*  4  Greyscale     */
3315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y6      v4l2_fourcc('Y', '0', '6', ' ') /*  6  Greyscale     */
3325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y10     v4l2_fourcc('Y', '1', '0', ' ') /* 10  Greyscale     */
3335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y12     v4l2_fourcc('Y', '1', '2', ' ') /* 12  Greyscale     */
3345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y16     v4l2_fourcc('Y', '1', '6', ' ') /* 16  Greyscale     */
3355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Grey bit-packed formats */
3375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y10BPACK    v4l2_fourcc('Y', '1', '0', 'B') /* 10  Greyscale bit-packed */
3385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Palette formats */
3405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PAL8    v4l2_fourcc('P', 'A', 'L', '8') /*  8  8-bit palette */
3415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Chrominance formats */
3435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_UV8     v4l2_fourcc('U', 'V', '8', ' ') /*  8  UV 4:4 */
3445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Luminance+Chrominance formats */
3465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YVU410  v4l2_fourcc('Y', 'V', 'U', '9') /*  9  YVU 4:1:0     */
3475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YVU420  v4l2_fourcc('Y', 'V', '1', '2') /* 12  YVU 4:2:0     */
3485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUYV    v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16  YUV 4:2:2     */
3495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YYUV    v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16  YUV 4:2:2     */
3505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YVYU    v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
3515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_UYVY    v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16  YUV 4:2:2     */
3525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_VYUY    v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16  YUV 4:2:2     */
3535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16  YVU422 planar */
3545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P') /* 16  YVU411 planar */
3555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_Y41P    v4l2_fourcc('Y', '4', '1', 'P') /* 12  YUV 4:1:1     */
3565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV444  v4l2_fourcc('Y', '4', '4', '4') /* 16  xxxxyyyy uuuuvvvv */
3575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */
3585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */
3595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */
3605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV410  v4l2_fourcc('Y', 'U', 'V', '9') /*  9  YUV 4:1:0     */
3615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV420  v4l2_fourcc('Y', 'U', '1', '2') /* 12  YUV 4:2:0     */
3625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */
3635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */
3645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */
3655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* two planes -- one Y, one Cr + Cb interleaved  */
3675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12    v4l2_fourcc('N', 'V', '1', '2') /* 12  Y/CbCr 4:2:0  */
3685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV21    v4l2_fourcc('N', 'V', '2', '1') /* 12  Y/CrCb 4:2:0  */
3695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV16    v4l2_fourcc('N', 'V', '1', '6') /* 16  Y/CbCr 4:2:2  */
3705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV61    v4l2_fourcc('N', 'V', '6', '1') /* 16  Y/CrCb 4:2:2  */
3715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV24    v4l2_fourcc('N', 'V', '2', '4') /* 24  Y/CbCr 4:4:4  */
3725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV42    v4l2_fourcc('N', 'V', '4', '2') /* 24  Y/CrCb 4:4:4  */
3735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* UBWC 8-bit Y/CbCr 4:2:0  */
3755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12_UBWC        v4l2_fourcc('Q', '1', '2', '8')
3765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* UBWC 10-bit Y/CbCr 4:2:0 */
3775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12_TP10_UBWC   v4l2_fourcc('Q', '1', '2', 'A')
3785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* two non contiguous planes - one Y, one Cr + Cb interleaved  */
3805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12M   v4l2_fourcc('N', 'M', '1', '2') /* 12  Y/CbCr 4:2:0  */
3815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV21M   v4l2_fourcc('N', 'M', '2', '1') /* 21  Y/CrCb 4:2:0  */
3825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV16M   v4l2_fourcc('N', 'M', '1', '6') /* 16  Y/CbCr 4:2:2  */
3835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV61M   v4l2_fourcc('N', 'M', '6', '1') /* 16  Y/CrCb 4:2:2  */
3845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12MT  v4l2_fourcc('T', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 64x32 macroblocks */
3855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12  Y/CbCr 4:2:0 16x16 macroblocks */
3865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* three non contiguous planes - Y, Cb, Cr */
3885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12  YUV420 planar */
3895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12  YVU420 planar */
3905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
3915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
3925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR8  v4l2_fourcc('B', 'A', '8', '1') /*  8  BGBG.. GRGR.. */
3935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG8  v4l2_fourcc('G', 'B', 'R', 'G') /*  8  GBGB.. RGRG.. */
3945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG8  v4l2_fourcc('G', 'R', 'B', 'G') /*  8  GRGR.. BGBG.. */
3955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB8  v4l2_fourcc('R', 'G', 'G', 'B') /*  8  RGRG.. GBGB.. */
3965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR10 v4l2_fourcc('B', 'G', '1', '0') /* 10  BGBG.. GRGR.. */
3975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG10 v4l2_fourcc('G', 'B', '1', '0') /* 10  GBGB.. RGRG.. */
3985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10  GRGR.. BGBG.. */
3995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB10 v4l2_fourcc('R', 'G', '1', '0') /* 10  RGRG.. GBGB.. */
4005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR12 v4l2_fourcc('B', 'G', '1', '2') /* 12  BGBG.. GRGR.. */
4015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12  GBGB.. RGRG.. */
4025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12  GRGR.. BGBG.. */
4035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12  RGRG.. GBGB.. */
4045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 10bit raw bayer a-law compressed to 8 bits */
4055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR10ALAW8 v4l2_fourcc('a', 'B', 'A', '8')
4065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG10ALAW8 v4l2_fourcc('a', 'G', 'A', '8')
4075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG10ALAW8 v4l2_fourcc('a', 'g', 'A', '8')
4085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB10ALAW8 v4l2_fourcc('a', 'R', 'A', '8')
4095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* 10bit raw bayer DPCM compressed to 8 bits */
4105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR10DPCM8 v4l2_fourcc('b', 'B', 'A', '8')
4115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGBRG10DPCM8 v4l2_fourcc('b', 'G', 'A', '8')
4125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
4135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SRGGB10DPCM8 v4l2_fourcc('b', 'R', 'A', '8')
4144e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch	/* 10bit raw bayer DPCM compressed to 6 bits */
4154e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_PIX_FMT_SBGGR10DPCM6 v4l2_fourcc('b', 'B', 'A', '6')
4164e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_PIX_FMT_SGBRG10DPCM6 v4l2_fourcc('b', 'G', 'A', '6')
4174e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_PIX_FMT_SGRBG10DPCM6 v4l2_fourcc('B', 'D', '1', '6')
4184e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_PIX_FMT_SRGGB10DPCM6 v4l2_fourcc('b', 'R', 'A', '6')
4194e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch
4205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/*
4215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * 10bit raw bayer, expanded to 16 bits
4225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
4235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 */
4245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16  BGBG.. GRGR.. */
4255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* compressed formats */
4275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MJPEG    v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG   */
4285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_JPEG     v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG     */
4295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_DV       v4l2_fourcc('d', 'v', 's', 'd') /* 1394          */
4305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MPEG     v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 Multiplexed */
4315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_H264     v4l2_fourcc('H', '2', '6', '4') /* H264 with start codes */
4325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') /* H264 without start codes */
4335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* H264 MVC */
4345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */
4355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */
4365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */
4375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */
4385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */
4395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
4405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
4415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_VP8      v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
4425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_VP9      v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
4435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_DIVX_311  v4l2_fourcc('D', 'I', 'V', '3') /* DIVX311     */
4445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_DIVX      v4l2_fourcc('D', 'I', 'V', 'X') /* DIVX        */
4455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* for HEVC stream */
4465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_HEVC_HYBRID v4l2_fourcc('H', 'V', 'C', 'H')
4475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Vendor-specific formats   */
4495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_CPIA1    v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
4505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_WNVA     v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
4515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SN9C10X  v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */
4525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SN9C20X_I420 v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */
4535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PWC1     v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */
4545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PWC2     v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */
4555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */
4565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SPCA501  v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */
4575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SPCA505  v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */
4585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SPCA508  v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */
4595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SPCA561  v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */
4605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PAC207   v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */
4615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */
4625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_JL2005BCD v4l2_fourcc('J', 'L', '2', '0') /* compressed RGGB bayer */
4635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SN9C2028 v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
4645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SQ905C   v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
4655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PJPG     v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
4665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_OV511    v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
4675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_OV518    v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
4685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_STV0680  v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */
4695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_TM6000   v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */
4705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_CIT_YYVYUY v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */
4715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_KONICA420  v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */
4725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_JPGL	v4l2_fourcc('J', 'P', 'G', 'L') /* JPEG-Lite */
4735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */
4745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */
4755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* SDR formats - used only for Software Defined Radio devices */
4775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
4785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */
4795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SDR_FMT_CS8          v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */
4805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */
4815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */
4825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* priv field value to indicates that subsequent fields are valid. */
4845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_PRIV_MAGIC		0xfeedcafe
4855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags */
4875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA	0x00000001
4885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
4895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
4905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	F O R M A T   E N U M E R A T I O N
4915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
4925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_fmtdesc {
4935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		    index;             /* Format number      */
4945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		    type;              /* enum v4l2_buf_type */
4955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32               flags;
4965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8		    description[32];   /* Description string */
4975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		    pixelformat;       /* Format fourcc      */
4985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		    reserved[4];
4995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FMT_FLAG_COMPRESSED 0x0001
5025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FMT_FLAG_EMULATED   0x0002
5035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#if 1
5055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Experimental Frame Size and frame rate enumeration */
5065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
5075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	F R A M E   S I Z E   E N U M E R A T I O N
5085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
5095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_frmsizetypes {
5105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMSIZE_TYPE_DISCRETE	= 1,
5115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMSIZE_TYPE_CONTINUOUS	= 2,
5125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMSIZE_TYPE_STEPWISE	= 3,
5135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frmsize_discrete {
5165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			width;		/* Frame width [pixel] */
5175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			height;		/* Frame height [pixel] */
5185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frmsize_stepwise {
5215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			min_width;	/* Minimum frame width [pixel] */
5225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			max_width;	/* Maximum frame width [pixel] */
5235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			step_width;	/* Frame width step size [pixel] */
5245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			min_height;	/* Minimum frame height [pixel] */
5255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			max_height;	/* Maximum frame height [pixel] */
5265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			step_height;	/* Frame height step size [pixel] */
5275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frmsizeenum {
5305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			index;		/* Frame size number */
5315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			pixel_format;	/* Pixel format */
5325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;		/* Frame size type the device supports. */
5335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {					/* Frame size */
5355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_frmsize_discrete	discrete;
5365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_frmsize_stepwise	stepwise;
5375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
5385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   reserved[2];			/* Reserved space for future use */
5405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
5435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	F R A M E   R A T E   E N U M E R A T I O N
5445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
5455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_frmivaltypes {
5465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMIVAL_TYPE_DISCRETE	= 1,
5475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMIVAL_TYPE_CONTINUOUS	= 2,
5485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_FRMIVAL_TYPE_STEPWISE	= 3,
5495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frmival_stepwise {
5525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract	min;		/* Minimum frame interval [s] */
5535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract	max;		/* Maximum frame interval [s] */
5545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract	step;		/* Frame interval step size [s] */
5555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frmivalenum {
5585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			index;		/* Frame format index */
5595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			pixel_format;	/* Pixel format */
5605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			width;		/* Frame width */
5615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			height;		/* Frame height */
5625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;		/* Frame interval type the device supports. */
5635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {					/* Frame interval */
5655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_fract		discrete;
5665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_frmival_stepwise	stepwise;
5675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
5685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[2];			/* Reserved space for future use */
5705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
5725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
5745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	T I M E C O D E
5755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
5765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_timecode {
5775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	type;
5785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	flags;
5795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	frames;
5805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	seconds;
5815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	minutes;
5825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	hours;
5835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	userbits[4];
5845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
5855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Type  */
5875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_TYPE_24FPS		1
5885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_TYPE_25FPS		2
5895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_TYPE_30FPS		3
5905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_TYPE_50FPS		4
5915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_TYPE_60FPS		5
5925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
5935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags  */
5945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_FLAG_DROPFRAME		0x0001 /* "drop-frame" mode */
5955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_FLAG_COLORFRAME		0x0002
5965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_USERBITS_field		0x000C
5975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_USERBITS_USERDEFINED	0x0000
5985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TC_USERBITS_8BITCHARS	0x0008
5995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The above is based on SMPTE timecodes */
6005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_jpegcompression {
6025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int quality;
6035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int  APPn;              /* Number of APP segment to be written,
6055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * must be 0..15 */
6065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int  APP_len;           /* Length of data in JPEG APPn segment */
6075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char APP_data[60];      /* Data in the JPEG APPn segment. */
6085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	int  COM_len;           /* Length of data in JPEG COM segment */
6105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char COM_data[60];      /* Data in JPEG COM segment */
6115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 jpeg_markers;     /* Which markers should go into the JPEG
6135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * output. Unless you exactly know what
6145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * you do, leave them untouched.
6155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * Including less markers will make the
6165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * resulting code smaller, but there will
6175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * be fewer applications which can read it.
6185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * The presence of the APP and COM marker
6195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * is influenced by APP_len and COM_len
6205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 * ONLY, not by this property! */
6215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_JPEG_MARKER_DHT (1<<3)    /* Define Huffman Tables */
6235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_JPEG_MARKER_DQT (1<<4)    /* Define Quantization Tables */
6245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_JPEG_MARKER_DRI (1<<5)    /* Define Restart Interval */
6255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_JPEG_MARKER_COM (1<<6)    /* Comment segment */
6265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_JPEG_MARKER_APP (1<<7)    /* App segment, driver will
6275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin					* always use APP0 */
6285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
6315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	M E M O R Y - M A P P I N G   B U F F E R S
6325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
6335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_requestbuffers {
6345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			count;
6355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;		/* enum v4l2_buf_type */
6365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			memory;		/* enum v4l2_memory */
6375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved[2];
6385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
6415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_plane - plane info for multi-planar buffers
6425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @bytesused:		number of bytes occupied by data in the plane (payload)
6435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @length:		size of this plane (NOT the payload) in bytes
6445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @mem_offset:		when memory in the associated struct v4l2_buffer is
6455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			V4L2_MEMORY_MMAP, equals the offset from the start of
6465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			the device memory for this plane (or is a "cookie" that
6475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			should be passed to mmap() called on the video node)
6485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @userptr:		when memory is V4L2_MEMORY_USERPTR, a userspace pointer
6495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			pointing to this plane
6505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @fd:			when memory is V4L2_MEMORY_DMABUF, a userspace file
6515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			descriptor associated with this plane
6525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @data_offset:	offset in the plane to the start of data; usually 0,
6535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			unless there is a header in front of the data
6545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
6555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
6565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * with two planes can have one plane for Y, and another for interleaved CbCr
6575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * components. Each plane can reside in a separate memory buffer, or even in
6585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * a completely separate memory node (e.g. in embedded devices).
6595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
6605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_plane {
6615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			bytesused;
6625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			length;
6635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
6645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		mem_offset;
6655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		unsigned long	userptr;
6665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s32		fd;
6675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} m;
6685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			data_offset;
6695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved[11];
6705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
6715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
6725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
6735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_buffer - video buffer info
6745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @index:	id number of the buffer
6755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for
6765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		multiplanar buffers);
6775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @bytesused:	number of bytes occupied by data in the buffer (payload);
6785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		unused (set to 0) for multiplanar buffers
6795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:	buffer informational flags
6805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @field:	enum v4l2_field; field order of the image in the buffer
6815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @timestamp:	frame timestamp
6825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @timecode:	frame timecode
6835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @sequence:	sequence count of this frame
6845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @memory:	enum v4l2_memory; the method, in which the actual video data is
6855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		passed
6865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @offset:	for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP;
6875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		offset from the start of the device memory for this plane,
6885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		(or a "cookie" that should be passed to mmap() as offset)
6895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @userptr:	for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
6905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		a userspace pointer pointing to this buffer
6915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @fd:		for non-multiplanar buffers with memory == V4L2_MEMORY_DMABUF;
6925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		a userspace file descriptor associated with this buffer
6935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @planes:	for multiplanar buffers; userspace pointer to the array of plane
6945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		info structs for this buffer
6955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @length:	size in bytes of the buffer (NOT its payload) for single-plane
6965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		buffers (when type != *_MPLANE); number of elements in the
6975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		planes array for multi-plane buffers
6985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
6995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Contains data exchanged by application and driver using one of the Streaming
7005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * I/O methods.
7015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
7025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_buffer {
7035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			index;
7045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;
7055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			bytesused;
7065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			flags;
7075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			field;
7085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct timeval		timestamp;
7095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_timecode	timecode;
7105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			sequence;
7115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* memory location */
7135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			memory;
7145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
7155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32           offset;
7165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		unsigned long   userptr;
7175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_plane *planes;
7185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s32		fd;
7195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} m;
7205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			length;
7215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved2;
7225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved;
7235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for 'flags' field */
7265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Buffer is mapped (flag) */
7275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_MAPPED			0x00000001
7285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Buffer is queued for processing */
7295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_QUEUED			0x00000002
7305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Buffer is ready */
7315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_DONE			0x00000004
7325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Image is a keyframe (I-frame) */
7335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_KEYFRAME			0x00000008
7345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Image is a P-frame */
7355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_PFRAME			0x00000010
7365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Image is a B-frame */
7375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_BFRAME			0x00000020
7385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Buffer is ready, but the data contained within is corrupted. */
7395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_ERROR			0x00000040
7405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* timecode field is valid */
7415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TIMECODE			0x00000100
7425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Buffer is prepared for queuing */
7435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_PREPARED			0x00000400
7445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Cache handling flags */
7455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE	0x00000800
7465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_NO_CACHE_CLEAN		0x00001000
7475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Timestamp type */
7485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MASK		0x0000e000
7495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN		0x00000000
7505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC	0x00002000
7515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TIMESTAMP_COPY		0x00004000
7525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Timestamp sources. */
7535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TSTAMP_SRC_MASK		0x00070000
7545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TSTAMP_SRC_EOF		0x00000000
7555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BUF_FLAG_TSTAMP_SRC_SOE		0x00010000
7565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Vendor extensions */
7575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_CODECCONFIG		0x00020000
7585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOSEQ		0x00040000
7595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_TIMESTAMP_INVALID		0x00080000
7605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_IDRFRAME		0x00100000
7615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_DECODEONLY		0x00200000
7625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_DATA_CORRUPT		0x00400000
7635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_DROP_FRAME		0x00800000
7645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_INPUT_UNSUPPORTED		0x01000000
7655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_EOS			0x02000000
7665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_BUF_FLAG_READONLY		0x04000000
7675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MSM_VIDC_BUF_START_CODE_NOT_FOUND	0x08000000
7685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MSM_BUF_FLAG_YUV_601_709_CLAMP	0x10000000
7695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MSM_BUF_FLAG_MBAFF			0x20000000
7705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MSM_BUF_FLAG_DEFER			0x40000000
7715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
7735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor
7745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
7755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @index:	id number of the buffer
7765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	enum v4l2_buf_type; buffer type (type == *_MPLANE for
7775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		multiplanar buffers);
7785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @plane:	index of the plane to be exported, 0 for single plane queues
7795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:	flags for newly created file, currently only O_CLOEXEC is
7805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		supported, refer to manual of open syscall for more details
7815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @fd:		file descriptor associated with DMABUF (set by driver)
7825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
7835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Contains data used for exporting a video buffer as DMABUF file descriptor.
7845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * The buffer is identified by a 'cookie' returned by VIDIOC_QUERYBUF
7855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * (identical to the cookie used to mmap() the buffer to userspace). All
7865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * reserved fields must be set to zero. The field reserved0 is expected to
7875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * become a structure 'type' allowing an alternative layout of the structure
7885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * content. Therefore this field should not be used for any other extensions.
7895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
7905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_exportbuffer {
7915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		type; /* enum v4l2_buf_type */
7925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		index;
7935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		plane;
7945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		flags;
7955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		fd;
7965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		reserved[11];
7975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
7985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
7995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
8005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	O V E R L A Y   P R E V I E W
8015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
8025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_framebuffer {
8035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			capability;
8045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			flags;
8055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* FIXME: in theory we should pass something like PCI device + memory
8065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * region + offset instead of some physical address */
8075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	void                    *base;
8085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct {
8095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		width;
8105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		height;
8115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		pixelformat;
8125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		field;		/* enum v4l2_field */
8135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		bytesperline;	/* for padding, zero if unused */
8145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		sizeimage;
8155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		colorspace;	/* enum v4l2_colorspace */
8165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32		priv;		/* reserved field, set to 0 */
8175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} fmt;
8185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'capability' field. Read only */
8205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001
8215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_CHROMAKEY		0x0002
8225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_LIST_CLIPPING     0x0004
8235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_BITMAP_CLIPPING	0x0008
8245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_ALPHA	0x0010
8255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_GLOBAL_ALPHA	0x0020
8265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA	0x0040
8275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_CAP_SRC_CHROMAKEY	0x0080
8285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'flags' field. */
8295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_PRIMARY		0x0001
8305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_OVERLAY		0x0002
8315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_CHROMAKEY	0x0004
8325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_ALPHA	0x0008
8335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_GLOBAL_ALPHA	0x0010
8345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA	0x0020
8355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_FBUF_FLAG_SRC_CHROMAKEY	0x0040
8365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_clip {
8385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        c;
839d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	struct v4l2_clip	__user *next;
8405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_window {
8435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        w;
8445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			field;	 /* enum v4l2_field */
8455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			chromakey;
846d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	struct v4l2_clip	__user *clips;
8475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			clipcount;
848d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin	void			__user *bitmap;
8495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8                    global_alpha;
8505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
8535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	C A P T U R E   P A R A M E T E R S
8545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
8555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_captureparm {
8565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   capability;	  /*  Supported modes */
8575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   capturemode;	  /*  Current mode */
8585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract  timeperframe;  /*  Time per frame in seconds */
8595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   extendedmode;  /*  Driver-specific extensions */
8605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32              readbuffers;   /*  # of buffers for read */
8615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   reserved[4];
8625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for 'capability' and 'capturemode' fields */
8655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MODE_HIGHQUALITY	0x0001	/*  High quality imaging mode */
8665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_TIMEPERFRAME	0x1000	/*  timeperframe field is supported */
8675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CAP_QCOM_FRAMESKIP	0x2000	/*  frame skipping is supported */
8685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_qcom_frameskip {
8705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64		   maxframeinterval;
8715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8		   fpsvariance;
8725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_outputparm {
8755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   capability;	 /*  Supported modes */
8765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   outputmode;	 /*  Current mode */
8775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract  timeperframe; /*  Time per frame in seconds */
8785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   extendedmode; /*  Driver-specific extensions */
8795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32              writebuffers; /*  # of buffers for write */
8805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		   reserved[4];
8815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
8845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	I N P U T   I M A G E   C R O P P I N G
8855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
8865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_cropcap {
8875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;	/* enum v4l2_buf_type */
8885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        bounds;
8895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        defrect;
8905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract       pixelaspect;
8915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_crop {
8945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;	/* enum v4l2_buf_type */
8955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        c;
8965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
8975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
8985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
8995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_selection - selection info
9005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	buffer type (do not use *_MPLANE types)
9015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @target:	Selection target, used to choose one of possible rectangles;
9025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		defined in v4l2-common.h; V4L2_SEL_TGT_* .
9035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:	constraints flags, defined in v4l2-common.h; V4L2_SEL_FLAG_*.
9045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @r:		coordinates of selection window
9055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved:	for future use, rounds structure size to 64 bytes, set to zero
9065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
9075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Hardware may use multiple helper windows to process a video stream.
9085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * The structure is used to exchange this selection areas between
9095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * an application and a driver.
9105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
9115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_selection {
9125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;
9135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			target;
9145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                   flags;
9155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_rect        r;
9165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                   reserved[9];
9175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
9185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
9215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *      A N A L O G   V I D E O   S T A N D A R D
9225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
9235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjintypedef __u64 v4l2_std_id;
9255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* one bit for each */
9275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_B          ((v4l2_std_id)0x00000001)
9285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_B1         ((v4l2_std_id)0x00000002)
9295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_G          ((v4l2_std_id)0x00000004)
9305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_H          ((v4l2_std_id)0x00000008)
9315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_I          ((v4l2_std_id)0x00000010)
9325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_D          ((v4l2_std_id)0x00000020)
9335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_D1         ((v4l2_std_id)0x00000040)
9345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_K          ((v4l2_std_id)0x00000080)
9355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_M          ((v4l2_std_id)0x00000100)
9375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_N          ((v4l2_std_id)0x00000200)
9385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)
9395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800)
9405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)	/* BTSC */
9425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)	/* EIA-J */
9435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000)
9445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)	/* FM A2 */
9455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)
9475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000)
9485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_G        ((v4l2_std_id)0x00040000)
9495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_H        ((v4l2_std_id)0x00080000)
9505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_K        ((v4l2_std_id)0x00100000)
9515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_K1       ((v4l2_std_id)0x00200000)
9525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_L        ((v4l2_std_id)0x00400000)
9535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_LC       ((v4l2_std_id)0x00800000)
9545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* ATSC/HDTV */
9565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_ATSC_8_VSB     ((v4l2_std_id)0x01000000)
9575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_ATSC_16_VSB    ((v4l2_std_id)0x02000000)
9585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* FIXME:
9605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   Although std_id is 64 bits, there is an issue on PPC32 architecture that
9615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
9625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   this value to 32 bits.
9635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
9645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   it should work fine. However, if needed to add more than two standards,
9655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   v4l2-common.c should be fixed.
9665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
9675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
9695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Some macros to merge video standards in order to make live easier for the
9705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * drivers and V4L2 applications
9715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
9725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
9735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
9745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is
9755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Missing here.
9765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
9775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_NTSC           (V4L2_STD_NTSC_M	|\
9785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_NTSC_M_JP     |\
9795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_NTSC_M_KR)
9805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Secam macros */
9815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM_DK      	(V4L2_STD_SECAM_D	|\
9825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_K	|\
9835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_K1)
9845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* All Secam Standards */
9855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\
9865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_G	|\
9875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_H	|\
9885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_DK	|\
9895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_L       |\
9905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_LC)
9915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* PAL macros */
9925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\
9935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_B1	|\
9945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_G)
9955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\
9965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_D1	|\
9975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_K)
9985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
9995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * "Common" PAL - This macro is there to be compatible with the old
10005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * V4L1 concept of "PAL": /BGDKHI.
10015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Several PAL standards are missing here: /M, /N and /Nc
10025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
10035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\
10045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_DK	|\
10055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_H		|\
10065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_I)
10075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Chroma "agnostic" standards */
10085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_B		(V4L2_STD_PAL_B		|\
10095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_B1	|\
10105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_B)
10115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_G		(V4L2_STD_PAL_G		|\
10125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_G)
10135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_H		(V4L2_STD_PAL_H		|\
10145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_H)
10155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_L		(V4L2_STD_SECAM_L	|\
10165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_LC)
10175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_GH		(V4L2_STD_G		|\
10185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_H)
10195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_DK		(V4L2_STD_PAL_DK	|\
10205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM_DK)
10215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_BG		(V4L2_STD_B		|\
10225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_G)
10235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_MN		(V4L2_STD_PAL_M		|\
10245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_N		|\
10255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_Nc	|\
10265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_NTSC)
10275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Standards where MTS/BTSC stereo could be found */
10295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_MTS		(V4L2_STD_NTSC_M	|\
10305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_M		|\
10315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_N		|\
10325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_Nc)
10335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Standards for Countries with 60Hz Line frequency */
10355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_525_60		(V4L2_STD_PAL_M		|\
10365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_60	|\
10375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_NTSC		|\
10385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_NTSC_443)
10395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Standards for Countries with 50Hz Line frequency */
10405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_625_50		(V4L2_STD_PAL		|\
10415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_N		|\
10425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_PAL_Nc	|\
10435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_SECAM)
10445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\
10465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_ATSC_16_VSB)
10475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Macros with none and all analog standards */
10485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_UNKNOWN        0
10495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_STD_ALL            (V4L2_STD_525_60	|\
10505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 V4L2_STD_625_50)
10515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_standard {
10535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     index;
10545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	v4l2_std_id          id;
10555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8		     name[24];
10565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_fract    frameperiod; /* Frames, not fields */
10575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     framelines;
10585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     reserved[4];
10595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
10605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
10625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	D V 	B T	T I M I N G S
10635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
10645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
10655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** struct v4l2_bt_timings - BT.656/BT.1120 timing data
10665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @width:	total width of the active video in pixels
10675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @height:	total height of the active video in lines
10685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @interlaced:	Interlaced or progressive
10695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @polarities:	Positive or negative polarities
10705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
10715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @hfrontporch:Horizontal front porch in pixels
10725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @hsync:	Horizontal Sync length in pixels
10735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @hbackporch:	Horizontal back porch in pixels
10745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @vfrontporch:Vertical front porch in lines
10755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @vsync:	Vertical Sync length in lines
10765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @vbackporch:	Vertical back porch in lines
10775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @il_vfrontporch:Vertical front porch for the even field
10785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		(aka field 2) of interlaced field formats
10795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @il_vsync:	Vertical Sync length for the even field
10805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		(aka field 2) of interlaced field formats
10815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @il_vbackporch:Vertical back porch for the even field
10825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		(aka field 2) of interlaced field formats
10835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @standards:	Standards the timing belongs to
10845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:	Flags
10855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved:	Reserved fields, must be zeroed.
10865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
10875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * A note regarding vertical interlaced timings: height refers to the total
10885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * height of the active video frame (= two fields). The blanking timings refer
10895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * to the blanking of each field. So the height of the total frame is
10905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * calculated as follows:
10915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
10925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * tot_height = height + vfrontporch + vsync + vbackporch +
10935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *                       il_vfrontporch + il_vsync + il_vbackporch
10945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
10955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * The active height of each field is height / 2.
10965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
10975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_bt_timings {
10985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	width;
10995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	height;
11005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	interlaced;
11015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	polarities;
11025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64	pixelclock;
11035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	hfrontporch;
11045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	hsync;
11055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	hbackporch;
11065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	vfrontporch;
11075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	vsync;
11085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	vbackporch;
11095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	il_vfrontporch;
11105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	il_vsync;
11115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	il_vbackporch;
11125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	standards;
11135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	flags;
11145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[14];
11155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
11165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Interlaced or progressive format */
11185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	V4L2_DV_PROGRESSIVE	0
11195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	V4L2_DV_INTERLACED	1
11205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Polarities. If bit is not set, it is assumed to be negative polarity */
11225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_VSYNC_POS_POL	0x00000001
11235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_HSYNC_POS_POL	0x00000002
11245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Timings standards */
11265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_STD_CEA861	(1 << 0)  /* CEA-861 Digital TV Profile */
11275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_STD_DMT	(1 << 1)  /* VESA Discrete Monitor Timings */
11285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_STD_CVT	(1 << 2)  /* VESA Coordinated Video Timings */
11295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_STD_GTF	(1 << 3)  /* VESA Generalized Timings Formula */
11305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags */
11325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary
11345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
11355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   intervals are reduced, allowing a higher resolution over the same
11365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   bandwidth. This is a read-only flag. */
11375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_FL_REDUCED_BLANKING		(1 << 0)
11385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple
11395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   of six. These formats can be optionally played at 1 / 1.001 speed.
11405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   This is a read-only flag. */
11415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_FL_CAN_REDUCE_FPS		(1 << 1)
11425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* CEA-861 specific: only valid for video transmitters, the flag is cleared
11435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   by receivers.
11445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   If the framerate of the format is a multiple of six, then the pixelclock
11455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   used to set up the transmitter is divided by 1.001 to make it compatible
11465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
11475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate
11485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   such frequencies, then the flag will also be cleared. */
11495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_FL_REDUCED_FPS			(1 << 2)
11505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Specific to interlaced formats: if set, then field 1 is really one half-line
11515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   longer and field 2 is really one half-line shorter, so each field has
11525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   exactly the same number of half-lines. Whether half-lines can be detected
11535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   or used depends on the hardware. */
11545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_FL_HALF_LINE			(1 << 3)
11555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* A few useful defines to calculate the total blanking and frame sizes */
11575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_BLANKING_WIDTH(bt) \
11585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)
11595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_FRAME_WIDTH(bt) \
11605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))
11615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_BLANKING_HEIGHT(bt) \
11625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \
11635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	 (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)
11645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_FRAME_HEIGHT(bt) \
11655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
11665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** struct v4l2_dv_timings - DV timings
11685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	the type of the timings
11695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @bt:	BT656/1120 timings
11705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
11715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_dv_timings {
11725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 type;
11735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
11745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_bt_timings	bt;
11755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32	reserved[32];
11765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
11775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
11785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Values for the type field */
11805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_656_1120	0	/* BT.656/1120 timing type */
11815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** struct v4l2_enum_dv_timings - DV timings enumeration
11845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @index:	enumeration index
11855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pad:	the pad number for which to enumerate timings (used with
11865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		v4l-subdev nodes only)
11875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved:	must be zeroed
11885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @timings:	the timings for the given index
11895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
11905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_enum_dv_timings {
11915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 index;
11925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 pad;
11935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[2];
11945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_dv_timings timings;
11955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
11965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
11975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** struct v4l2_bt_timings_cap - BT.656/BT.1120 timing capabilities
11985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_width:		width in pixels
11995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_width:		width in pixels
12005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_height:		height in lines
12015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_height:		height in lines
12025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @min_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
12035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @max_pixelclock:	Pixel clock in HZ. Ex. 74.25MHz->74250000
12045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @standards:		Supported standards
12055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @capabilities:	Supported capabilities
12065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved:		Must be zeroed
12075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
12085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_bt_timings_cap {
12095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	min_width;
12105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	max_width;
12115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	min_height;
12125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	max_height;
12135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64	min_pixelclock;
12145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64	max_pixelclock;
12155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	standards;
12165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	capabilities;
12175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[16];
12185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
12195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Supports interlaced formats */
12215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_CAP_INTERLACED	(1 << 0)
12225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Supports progressive formats */
12235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_CAP_PROGRESSIVE	(1 << 1)
12245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Supports CVT/GTF reduced blanking */
12255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_CAP_REDUCED_BLANKING	(1 << 2)
12265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Supports custom formats */
12275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DV_BT_CAP_CUSTOM		(1 << 3)
12285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/** struct v4l2_dv_timings_cap - DV timings capabilities
12305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	the type of the timings (same as in struct v4l2_dv_timings)
12315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pad:	the pad number for which to query capabilities (used with
12325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		v4l-subdev nodes only)
12335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @bt:		the BT656/1120 timings capabilities
12345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
12355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_dv_timings_cap {
12365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 type;
12375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 pad;
12385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[2];
12395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
12405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_bt_timings_cap bt;
12415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32 raw_data[32];
12425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
12435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
12445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
12475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	V I D E O   I N P U T S
12485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
12495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_input {
12505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     index;		/*  Which input */
12515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	     name[32];		/*  Label */
12525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     type;		/*  Type of input */
12535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     audioset;		/*  Associated audios (bitfield) */
12545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32        tuner;             /*  enum v4l2_tuner_type */
12555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	v4l2_std_id  std;
12565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     status;
12575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     capabilities;
12585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     reserved[3];
12595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
12605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Values for the 'type' field */
12625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_INPUT_TYPE_TUNER		1
12635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_INPUT_TYPE_CAMERA		2
12645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* field 'status' - general */
12665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_POWER    0x00000001  /* Attached device is off */
12675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_SIGNAL   0x00000002
12685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_COLOR    0x00000004
12695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* field 'status' - sensor orientation */
12715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* If sensor is mounted upside down set both bits */
12725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_HFLIP       0x00000010 /* Frames are flipped horizontally */
12735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_VFLIP       0x00000020 /* Frames are flipped vertically */
12745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* field 'status' - analog */
12765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_H_LOCK   0x00000100  /* No horizontal sync lock */
12775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_COLOR_KILL  0x00000200  /* Color killer is active */
12785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* field 'status' - digital */
12805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_SYNC     0x00010000  /* No synchronization lock */
12815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_EQU      0x00020000  /* No equalizer lock */
12825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_CARRIER  0x00040000  /* Carrier recovery failed */
12835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* field 'status' - VCR and set-top box */
12855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_MACROVISION 0x01000000  /* Macrovision detected */
12865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_NO_ACCESS   0x02000000  /* Conditional access denied */
12875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_ST_VTR         0x04000000  /* VTR time constant */
12885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* capabilities flags */
12905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */
12915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_CAP_CUSTOM_TIMINGS	V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
12925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_IN_CAP_STD			0x00000004 /* Supports S_STD */
12935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
12945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
12955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	V I D E O   O U T P U T S
12965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
12975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_output {
12985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     index;		/*  Which output */
12995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	     name[32];		/*  Label */
13005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     type;		/*  Type of output */
13015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     audioset;		/*  Associated audios (bitfield) */
13025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     modulator;         /*  Associated modulator */
13035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	v4l2_std_id  std;
13045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     capabilities;
13055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	     reserved[3];
13065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
13075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Values for the 'type' field */
13085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUTPUT_TYPE_MODULATOR		1
13095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOG			2
13105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY	3
13115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* capabilities flags */
13135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUT_CAP_DV_TIMINGS		0x00000002 /* Supports S_DV_TIMINGS */
13145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUT_CAP_CUSTOM_TIMINGS	V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
13155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_OUT_CAP_STD		0x00000004 /* Supports S_STD */
13165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
13185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	C O N T R O L S
13195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
13205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_control {
13215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     id;
13225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		     value;
13235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
13245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_ext_control {
13265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 id;
13275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 size;
13285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved2[1];
13295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
13305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s32 value;
13315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s64 value64;
1332d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		char __user *string;
1333d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		__u8 __user *p_u8;
1334d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		__u16 __user *p_u16;
1335d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		__u32 __user *p_u32;
1336d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		void __user *ptr;
13375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
13385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
13395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_ext_controls {
13415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 ctrl_class;
13425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 count;
13435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 error_idx;
13445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[2];
13455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_ext_control *controls;
13465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
13475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_ID_MASK      	  (0x0fffffff)
13495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)
13505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
13515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_MAX_DIMS	  (4)
13525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinenum v4l2_ctrl_type {
13545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_INTEGER	     = 1,
13555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_BOOLEAN	     = 2,
13565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_MENU	     = 3,
13575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_BUTTON	     = 4,
13585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_INTEGER64     = 5,
13595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_CTRL_CLASS    = 6,
13605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_STRING        = 7,
13615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_BITMASK       = 8,
13625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_INTEGER_MENU  = 9,
13635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Compound types are >= 0x0100 */
13655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_COMPOUND_TYPES     = 0x0100,
13665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_U8	     = 0x0100,
13675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_U16	     = 0x0101,
13685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	V4L2_CTRL_TYPE_U32	     = 0x0102,
13695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
13705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
13725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_queryctrl {
13735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     id;
13745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     type;	/* enum v4l2_ctrl_type */
13755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8		     name[32];	/* Whatever */
13765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		     minimum;	/* Note signedness */
13775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		     maximum;
13785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		     step;
13795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32		     default_value;
13805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                flags;
13815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     reserved[2];
13825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
13835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
13845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */
13855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_query_ext_ctrl {
13865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     id;
13875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     type;
13885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char		     name[32];
13895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s64		     minimum;
13905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s64		     maximum;
13915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64		     step;
13925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s64		     default_value;
13935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                flags;
13945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                elem_size;
13955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                elems;
13965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                nr_of_dims;
13975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                dims[V4L2_CTRL_MAX_DIMS];
13985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		     reserved[32];
13995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
14005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
14025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_querymenu {
14035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		id;
14045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		index;
14055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
14065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u8	name[32];	/* Whatever */
14075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s64	value;
14085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
14095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		reserved;
14105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
14115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Control flags  */
14135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_DISABLED		0x0001
14145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_GRABBED		0x0002
14155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_READ_ONLY 	0x0004
14165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_UPDATE 		0x0008
14175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_INACTIVE 	0x0010
14185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_SLIDER 		0x0020
14195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_WRITE_ONLY 	0x0040
14205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_VOLATILE		0x0080
14215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_HAS_PAYLOAD	0x0100
14225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Query flags, to be ORed with the control ID */
14245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000
14255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CTRL_FLAG_NEXT_COMPOUND	0x40000000
14265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  User-class control IDs defined by V4L2 */
14285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CID_MAX_CTRLS		1024
14295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  IDs reserved for driver specific controls */
14305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CID_PRIVATE_BASE		0x08000000
14315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
14345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	T U N I N G
14355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
14365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_tuner {
14375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32                   index;
14385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8			name[32];
14395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			type;	/* enum v4l2_tuner_type */
14405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			capability;
14415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			rangelow;
14425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			rangehigh;
14435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			rxsubchans;
14445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			audmode;
14455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32			signal;
14465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32			afc;
14475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved[4];
14485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
14495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_modulator {
14515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			index;
14525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8			name[32];
14535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			capability;
14545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			rangelow;
14555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			rangehigh;
14565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			txsubchans;
14575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved[4];
14585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
14595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'capability' field */
14615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_LOW		0x0001
14625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_NORM		0x0002
14635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_BOUNDED	0x0004
14645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_WRAP	0x0008
14655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_STEREO		0x0010
14665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_LANG2		0x0020
14675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_SAP		0x0020
14685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_LANG1		0x0040
14695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_RDS		0x0080
14705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_RDS_BLOCK_IO	0x0100
14715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_RDS_CONTROLS	0x0200
14725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_FREQ_BANDS	0x0400
14735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_HWSEEK_PROG_LIM	0x0800
14745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_CAP_1HZ		0x1000
14755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'rxsubchans' field */
14775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_MONO		0x0001
14785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_STEREO		0x0002
14795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_LANG2		0x0004
14805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_SAP		0x0004
14815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_LANG1		0x0008
14825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_SUB_RDS		0x0010
14835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Values for the 'audmode' field */
14855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_MONO		0x0000
14865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_STEREO		0x0001
14875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_LANG2		0x0002
14885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_SAP		0x0002
14895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_LANG1		0x0003
14905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_TUNER_MODE_LANG1_LANG2	0x0004
14915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frequency {
14935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	tuner;
14945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
14955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	frequency;
14965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[8];
14975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
14985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
14995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BAND_MODULATION_VSB	(1 << 1)
15005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BAND_MODULATION_FM		(1 << 2)
15015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_BAND_MODULATION_AM		(1 << 3)
15025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_frequency_band {
15045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	tuner;
15055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
15065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	index;
15075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	capability;
15085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	rangelow;
15095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	rangehigh;
15105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	modulation;
15115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[9];
15125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_hw_freq_seek {
15155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	tuner;
15165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	type;	/* enum v4l2_tuner_type */
15175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	seek_upward;
15185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	wrap_around;
15195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	spacing;
15205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	rangelow;
15215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	rangehigh;
15225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[5];
15235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
15265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	R D S
15275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
15285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_rds_data {
15305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 	lsb;
15315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 	msb;
15325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 	block;
15335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
15345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_MSK 	 0x7
15365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_A 	 0
15375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_B 	 1
15385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_C 	 2
15395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_D 	 3
15405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_C_ALT 	 4
15415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_INVALID 	 7
15425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_CORRECTED 0x40
15445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_RDS_BLOCK_ERROR 	 0x80
15455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
15475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	A U D I O
15485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
15495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_audio {
15505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	index;
15515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	name[32];
15525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	capability;
15535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	mode;
15545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[2];
15555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'capability' field */
15585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_AUDCAP_STEREO		0x00001
15595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_AUDCAP_AVL			0x00002
15605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  Flags for the 'mode' field */
15625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_AUDMODE_AVL		0x00001
15635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_audioout {
15655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	index;
15665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8	name[32];
15675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	capability;
15685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	mode;
15695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[2];
15705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
15735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	M P E G   S E R V I C E S
15745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
15755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	NOTE: EXPERIMENTAL API
15765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
15775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#if 1
15785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_IDX_FRAME_I    (0)
15795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_IDX_FRAME_P    (1)
15805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_IDX_FRAME_B    (2)
15815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_IDX_FRAME_MASK (0xf)
15825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_enc_idx_entry {
15845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64 offset;
15855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64 pts;
15865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 length;
15875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
15885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[2];
15895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_IDX_ENTRIES (64)
15925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_enc_idx {
15935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 entries;
15945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 entries_cap;
15955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[4];
15965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
15975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
15985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
15995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_CMD_START      (0)
16015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_CMD_STOP       (1)
16025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_CMD_PAUSE      (2)
16035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_CMD_RESUME     (3)
16045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_QCOM_CMD_FLUSH  (4)
16055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags for V4L2_ENC_CMD_STOP */
16075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_ENC_CMD_STOP_AT_GOP_END    (1 << 0)
16085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_encoder_cmd {
16105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 cmd;
16115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
16125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
16135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct {
16145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			__u32 data[8];
16155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		} raw;
16165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
16175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
16185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Decoder commands */
16205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_START       (0)
16215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_STOP        (1)
16225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_PAUSE       (2)
16235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_RESUME      (3)
16245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH  (4)
1625d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_DEC_QCOM_CMD_RECONFIG_HINT  (5)
16265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags for V4L2_DEC_CMD_START */
16285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_START_MUTE_AUDIO	(1 << 0)
16295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags for V4L2_DEC_CMD_PAUSE */
16315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_PAUSE_TO_BLACK	(1 << 0)
16325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags for V4L2_DEC_CMD_STOP */
16345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_STOP_TO_BLACK	(1 << 0)
16355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_CMD_STOP_IMMEDIATELY	(1 << 1)
16365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Flags for V4L2_DEC_QCOM_CMD_FLUSH */
16385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
16395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
16405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_OUTPUT  (1 << 0)
16425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_QCOM_CMD_FLUSH_CAPTURE (1 << 1)
16435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Play format requirements (returned by the driver): */
16455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The decoder has no special format requirements */
16475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_START_FMT_NONE		(0)
16485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The decoder requires full GOPs */
16495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_DEC_START_FMT_GOP		(1)
16505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The structure must be zeroed before use by the application
16525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   This ensures it can be extended safely in the future. */
16535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_decoder_cmd {
16545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 cmd;
16555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
16565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
16575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct {
16585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			__u64 pts;
16595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		} stop;
16605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct {
16625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			/* 0 or 1000 specifies normal speed,
16635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			   1 specifies forward single stepping,
16645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			   -1 specifies backward single stepping,
16655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			   >1: playback at speed/1000 of the normal speed,
16665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			   <-1: reverse playback at (-speed/1000) of the normal speed. */
16675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			__s32 speed;
16685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			__u32 format;
16695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		} start;
16705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct {
16725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin			__u32 data[16];
16735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		} raw;
16745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
16755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
16765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
16775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
16805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	D A T A   S E R V I C E S   ( V B I )
16815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
16825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	Data services API by Michael Schimek
16835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
16845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Raw VBI */
16865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_vbi_format {
16875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	sampling_rate;		/* in 1 Hz */
16885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	offset;
16895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	samples_per_line;
16905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	sample_format;		/* V4L2_PIX_FMT_* */
16915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32	start[2];
16925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	count[2];
16935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	flags;			/* V4L2_VBI_* */
16945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	reserved[2];		/* must be zero */
16955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
16965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
16975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*  VBI flags  */
16985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_UNSYNC		(1 << 0)
16995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_INTERLACED	(1 << 1)
17005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* ITU-R start lines for each field */
17025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_ITU_525_F1_START (1)
17035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_ITU_525_F2_START (264)
17045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_ITU_625_F1_START (1)
17055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_VBI_ITU_625_F2_START (314)
17065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Sliced VBI
17085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
17095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *    This implements is a proposal V4L2 API to allow SLICED VBI
17105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * required for some hardware encoders. It should change without
17115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * notice in the definitive implementation.
17125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
17135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_sliced_vbi_format {
17155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16   service_set;
17165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
17175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
17185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 (equals frame lines 313-336 for 625 line video
17195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				  standards, 263-286 for 525 line standards) */
17205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16   service_lines[2][24];
17215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   io_size;
17225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   reserved[2];            /* must be zero */
17235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
17245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Teletext World System Teletext
17265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   (WST), defined on ITU-R BT.653-2 */
17275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_TELETEXT_B          (0x0001)
17285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Video Program System, defined on ETS 300 231*/
17295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_VPS                 (0x0400)
17305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Closed Caption, defined on EIA-608 */
17315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_CAPTION_525         (0x1000)
17325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Wide Screen System, defined on ITU-R BT1119.1 */
17335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_WSS_625             (0x4000)
17345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_VBI_525             (V4L2_SLICED_CAPTION_525)
17365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_SLICED_VBI_625             (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
17375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_sliced_vbi_cap {
17395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16   service_set;
17405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
17415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	   service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
17425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				 (equals frame lines 313-336 for 625 line video
17435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin				  standards, 263-286 for 525 line standards) */
17445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16   service_lines[2][24];
17455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	type;		/* enum v4l2_buf_type */
17465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   reserved[3];    /* must be 0 */
17475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
17485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_sliced_vbi_data {
17505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   id;
17515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   field;          /* 0: first field, 1: second field */
17525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   line;           /* 1-23 */
17535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32   reserved;       /* must be 0 */
17545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8    data[48];
17555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
17565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
17585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Sliced VBI data inserted into MPEG Streams
17595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
17605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
17625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * V4L2_MPEG_STREAM_VBI_FMT_IVTV:
17635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
17645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an
17655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI
17665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * data
17675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
17685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header
17695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * definitions are not included here.  See the MPEG-2 specifications for details
17705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * on these headers.
17715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
17725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Line type IDs */
17745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_TELETEXT_B     (1)
17755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_CAPTION_525    (4)
17765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_WSS_625        (5)
17775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_VPS            (7)
17785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_mpeg_vbi_itv0_line {
17805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 id;	/* One of V4L2_MPEG_VBI_IVTV_* above */
17815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 data[42];	/* Sliced VBI data for the line */
17825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
17835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_mpeg_vbi_itv0 {
17855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__le32 linemask[2]; /* Bitmasks of VBI service lines present */
17865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_mpeg_vbi_itv0_line line[35];
17875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
17885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_mpeg_vbi_ITV0 {
17905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_mpeg_vbi_itv0_line line[36];
17915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
17925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC0	"itv0"
17945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_MPEG_VBI_IVTV_MAGIC1	"ITV0"
17955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
17965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_mpeg_vbi_fmt_ivtv {
17975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 magic[4];
17985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
17995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_mpeg_vbi_itv0 itv0;
18005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_mpeg_vbi_ITV0 ITV0;
18015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
18025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
18035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
18055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	A G G R E G A T E   S T R U C T U R E S
18065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
18095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_plane_pix_format - additional, per-plane format definition
18105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @sizeimage:		maximum size in bytes required for data, for which
18115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			this plane will be used
18125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @bytesperline:	distance in bytes between the leftmost pixels in two
18135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *			adjacent lines
18145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_plane_pix_format {
18165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32		sizeimage;
18175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16		bytesperline;
18185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u16		reserved[7];
18195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
18205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
18225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_pix_format_mplane - multiplanar format definition
18235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @width:		image width in pixels
18245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @height:		image height in pixels
18255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pixelformat:	little endian four character code (fourcc)
18265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @field:		enum v4l2_field; field order (for interlaced video)
18275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @colorspace:		enum v4l2_colorspace; supplemental to pixelformat
18285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @plane_fmt:		per-plane information
18295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @num_planes:		number of planes for this format
18305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:		format flags (V4L2_PIX_FMT_FLAG_*)
18315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_pix_format_mplane {
18335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				width;
18345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				height;
18355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				pixelformat;
18365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				field;
18375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				colorspace;
18385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_plane_pix_format	plane_fmt[VIDEO_MAX_PLANES];
18405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8				num_planes;
18415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8				flags;
18425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8				reserved[10];
18435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
18445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
18465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_sdr_format - SDR format definition
18475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pixelformat:	little endian four character code (fourcc)
18485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @buffersize:		maximum size in bytes required for data
18495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_sdr_format {
18515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				pixelformat;
18525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				buffersize;
18535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8				reserved[24];
18545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
18555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
18575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_format - stream data format
18585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @type:	enum v4l2_buf_type; type of the data stream
18595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pix:	definition of an image format
18605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @pix_mp:	definition of a multiplanar image format
18615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @win:	definition of an overlaid image
18625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @vbi:	raw VBI capture or output parameters
18635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @sliced:	sliced VBI capture or output parameters
18645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @raw_data:	placeholder for future extensions and custom formats
18655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_format {
18675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	 type;
18685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
18695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_pix_format		pix;     /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
18705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_pix_format_mplane	pix_mp;  /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */
18715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
18725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */
18735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
18745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_sdr_format		sdr;     /* V4L2_BUF_TYPE_SDR_CAPTURE */
18755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u8	raw_data[200];                   /* user-defined */
18765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} fmt;
18775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
18785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*	Stream type-dependent parameters
18805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_streamparm {
18825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32	 type;			/* enum v4l2_buf_type */
18835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
18845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_captureparm	capture;
18855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_outputparm	output;
18865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u8	raw_data[200];  /* user-defined */
18875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} parm;
18885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
18895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
18915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	E V E N T S
18925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
18935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
18945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_ALL				0
18955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_VSYNC			1
18965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_EOS				2
18975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_CTRL				3
18985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_FRAME_SYNC			4
18995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_SOURCE_CHANGE		5
19005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MOTION_DET			6
19015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_PRIVATE_START		0x08000000
19025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19034e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_EVENT_BITDEPTH_FLAG	0x1
19044e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_EVENT_PICSTRUCT_FLAG	0x2
19054e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch
19065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_START	(V4L2_EVENT_PRIVATE_START + 0x00001000)
19075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_FLUSH_DONE	(V4L2_EVENT_MSM_VIDC_START + 1)
19085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_SUFFICIENT	\
19095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 2)
19105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_CHANGED_INSUFFICIENT	\
19115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 3)
19124e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch/*
19134e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch * Bitdepth changed insufficient is deprecated now, however retaining
19144e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch * to prevent changing the values of the other macros after bitdepth
19154e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch */
19165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_PORT_SETTINGS_BITDEPTH_CHANGED_INSUFFICIENT \
19175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 4)
19185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_SYS_ERROR	(V4L2_EVENT_MSM_VIDC_START + 5)
19195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_BUFFER_REFERENCE \
19205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 6)
19215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_RELEASE_UNQUEUED_BUFFER \
19225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		(V4L2_EVENT_MSM_VIDC_START + 7)
19235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_OVERLOAD (V4L2_EVENT_MSM_VIDC_START + 8)
19245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_MAX_CLIENTS (V4L2_EVENT_MSM_VIDC_START + 9)
19255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MSM_VIDC_HW_UNSUPPORTED (V4L2_EVENT_MSM_VIDC_START + 10)
19265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
1927d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_PRIVATE_EVENT_BASE	\
1928d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_PRIVATE_START + 0x00005000)
1929d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_START	V4L2_EVENT_MSM_BA_PRIVATE_EVENT_BASE
1930d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_DEVICE_AVAILABLE	(V4L2_EVENT_MSM_BA_START + 1)
1931d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_DEVICE_UNAVAILABLE	\
1932d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 2)
1933d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_PORT_SETTINGS_CHANGED	\
1934d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 3)
1935d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_SIGNAL_IN_LOCK	\
1936d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 4)
1937d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_SIGNAL_LOST_LOCK	\
1938d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 5)
1939d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_SOURCE_CHANGE	\
1940d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 6)
1941d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_HDMI_HPD	\
1942d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 7)
1943d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_HDMI_CEC_MESSAGE	\
1944d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 8)
1945d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#define V4L2_EVENT_MSM_BA_CP	\
1946d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 9)
19474e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_EVENT_MSM_BA_CABLE_DETECT	\
1948d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin		(V4L2_EVENT_MSM_BA_START + 10)
19494e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define V4L2_EVENT_MSM_BA_ERROR	\
19504e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch		(V4L2_EVENT_MSM_BA_START + 11)
1951d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin
19525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Payload for V4L2_EVENT_VSYNC */
19535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_vsync {
19545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	/* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */
19555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 field;
19565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
19575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Payload for V4L2_EVENT_CTRL */
19595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_CTRL_CH_VALUE		(1 << 0)
19605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_CTRL_CH_FLAGS		(1 << 1)
19615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_CTRL_CH_RANGE		(1 << 2)
19625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_ctrl {
19645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 changes;
19655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 type;
19665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
19675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s32 value;
19685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__s64 value64;
19695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
19705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
19715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32 minimum;
19725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32 maximum;
19735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32 step;
19745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__s32 default_value;
19755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
19765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_frame_sync {
19785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 frame_sequence;
19795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
19805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_SRC_CH_RESOLUTION		(1 << 0)
19825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_src_change {
19845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 changes;
19855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
19865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ	(1 << 0)
19885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
19895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
19905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_event_motion_det - motion detection event
19915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @flags:             if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the
19925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *                     frame_sequence field is valid.
19935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @frame_sequence:    the frame sequence number associated with this event.
19945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @region_mask:       which regions detected motion.
19955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
19965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_motion_det {
19975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
19985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 frame_sequence;
19995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 region_mask;
20005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
20015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event {
20035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				type;
20045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {
20055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_event_vsync		vsync;
20065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_event_ctrl		ctrl;
20075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_event_frame_sync	frame_sync;
20085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_event_src_change	src_change;
20095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		struct v4l2_event_motion_det	motion_det;
20105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u8				data[64];
20115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	} u;
20125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				pending;
20135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				sequence;
20145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct timespec			timestamp;
20155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				id;
20165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				reserved[8];
20175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
20185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_SUB_FL_SEND_INITIAL		(1 << 0)
20205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK	(1 << 1)
20215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_event_subscription {
20235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				type;
20245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				id;
20255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				flags;
20265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32				reserved[5];
20275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
20285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
20305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	A D V A N C E D   D E B U G G I N G
20315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
20325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!
20335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *	FOR DEBUGGING, TESTING AND INTERNAL USE ONLY!
20345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
20355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
20375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_BRIDGE      0  /* Match against chip ID on the bridge (0 for the bridge) */
20395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_SUBDEV      4  /* Match against subdev index */
20405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* The following four defines are no longer in use */
20425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_HOST V4L2_CHIP_MATCH_BRIDGE
20435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_I2C_DRIVER  1  /* Match against I2C driver name */
20445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_I2C_ADDR    2  /* Match against I2C 7-bit address */
20455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_MATCH_AC97        3  /* Match against ancillary AC97 chip */
20465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_dbg_match {
20485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 type; /* Match type */
20495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	union {     /* Match this chip, meaning determined by type */
20505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		__u32 addr;
20515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin		char name[32];
20525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	};
20535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
20545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_dbg_register {
20565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_dbg_match match;
20575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 size;	/* register size in bytes */
20585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64 reg;
20595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u64 val;
20605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
20615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_FL_READABLE (1 << 0)
20635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define V4L2_CHIP_FL_WRITABLE (1 << 1)
20645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* VIDIOC_DBG_G_CHIP_INFO */
20665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_dbg_chip_info {
20675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_dbg_match match;
20685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char name[32];
20695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 flags;
20705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 reserved[32];
20715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin} __attribute__ ((packed));
20725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/**
20745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument
20755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @index:	on return, index of the first created buffer
20765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @count:	entry: number of requested buffers,
20775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *		return: number of created buffers
20785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @memory:	enum v4l2_memory; buffer memory type
20795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @format:	frame format, for which buffers are requested
20805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin * @reserved:	future extensions
20815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
20825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct v4l2_create_buffers {
20835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			index;
20845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			count;
20855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			memory;
20865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	struct v4l2_format	format;
20875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32			reserved[8];
20885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
20895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
20905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/*
20915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick 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
20925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin *
20935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin */
20945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERYCAP		 _IOR('V',  0, struct v4l2_capability)
20955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_RESERVED		  _IO('V',  1)
20965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUM_FMT         _IOWR('V',  2, struct v4l2_fmtdesc)
20975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_FMT		_IOWR('V',  4, struct v4l2_format)
20985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_FMT		_IOWR('V',  5, struct v4l2_format)
20995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_REQBUFS		_IOWR('V',  8, struct v4l2_requestbuffers)
21005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERYBUF		_IOWR('V',  9, struct v4l2_buffer)
21015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_FBUF		 _IOR('V', 10, struct v4l2_framebuffer)
21025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_FBUF		 _IOW('V', 11, struct v4l2_framebuffer)
21035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_OVERLAY		 _IOW('V', 14, int)
21045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QBUF		_IOWR('V', 15, struct v4l2_buffer)
21055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_EXPBUF		_IOWR('V', 16, struct v4l2_exportbuffer)
21065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_DQBUF		_IOWR('V', 17, struct v4l2_buffer)
21075d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_STREAMON		 _IOW('V', 18, int)
21085d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_STREAMOFF	 _IOW('V', 19, int)
21095d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_PARM		_IOWR('V', 21, struct v4l2_streamparm)
21105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_PARM		_IOWR('V', 22, struct v4l2_streamparm)
21115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_STD		 _IOR('V', 23, v4l2_std_id)
21125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_STD		 _IOW('V', 24, v4l2_std_id)
21135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUMSTD		_IOWR('V', 25, struct v4l2_standard)
21145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUMINPUT	_IOWR('V', 26, struct v4l2_input)
21155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_CTRL		_IOWR('V', 27, struct v4l2_control)
21165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_CTRL		_IOWR('V', 28, struct v4l2_control)
21175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_TUNER		_IOWR('V', 29, struct v4l2_tuner)
21185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_TUNER		 _IOW('V', 30, struct v4l2_tuner)
21195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_AUDIO		 _IOR('V', 33, struct v4l2_audio)
21205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_AUDIO		 _IOW('V', 34, struct v4l2_audio)
21215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERYCTRL	_IOWR('V', 36, struct v4l2_queryctrl)
21225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERYMENU	_IOWR('V', 37, struct v4l2_querymenu)
21235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_INPUT		 _IOR('V', 38, int)
21245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_INPUT		_IOWR('V', 39, int)
21255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_EDID		_IOWR('V', 40, struct v4l2_edid)
21265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_EDID		_IOWR('V', 41, struct v4l2_edid)
21275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_OUTPUT		 _IOR('V', 46, int)
21285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_OUTPUT		_IOWR('V', 47, int)
21295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output)
21305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_AUDOUT		 _IOR('V', 49, struct v4l2_audioout)
21315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_AUDOUT		 _IOW('V', 50, struct v4l2_audioout)
21325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_MODULATOR	_IOWR('V', 54, struct v4l2_modulator)
21335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_MODULATOR	 _IOW('V', 55, struct v4l2_modulator)
21345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_FREQUENCY	_IOWR('V', 56, struct v4l2_frequency)
21355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_FREQUENCY	 _IOW('V', 57, struct v4l2_frequency)
21365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_CROPCAP		_IOWR('V', 58, struct v4l2_cropcap)
21375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_CROP		_IOWR('V', 59, struct v4l2_crop)
21385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_CROP		 _IOW('V', 60, struct v4l2_crop)
21395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_JPEGCOMP	 _IOR('V', 61, struct v4l2_jpegcompression)
21405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_JPEGCOMP	 _IOW('V', 62, struct v4l2_jpegcompression)
21415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERYSTD      	 _IOR('V', 63, v4l2_std_id)
21425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_TRY_FMT      	_IOWR('V', 64, struct v4l2_format)
21435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUMAUDIO	_IOWR('V', 65, struct v4l2_audio)
21445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUMAUDOUT	_IOWR('V', 66, struct v4l2_audioout)
21455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_PRIORITY	 _IOR('V', 67, __u32) /* enum v4l2_priority */
21465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_PRIORITY	 _IOW('V', 68, __u32) /* enum v4l2_priority */
21475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
21485d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_LOG_STATUS         _IO('V', 70)
21495d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_EXT_CTRLS	_IOWR('V', 71, struct v4l2_ext_controls)
21505d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_EXT_CTRLS	_IOWR('V', 72, struct v4l2_ext_controls)
21515d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_TRY_EXT_CTRLS	_IOWR('V', 73, struct v4l2_ext_controls)
21525d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUM_FRAMESIZES	_IOWR('V', 74, struct v4l2_frmsizeenum)
21535d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
21545d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_ENC_INDEX       _IOR('V', 76, struct v4l2_enc_idx)
21555d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENCODER_CMD      _IOWR('V', 77, struct v4l2_encoder_cmd)
21565d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_TRY_ENCODER_CMD  _IOWR('V', 78, struct v4l2_encoder_cmd)
21575d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21585d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, meant for debugging, testing and internal use.
21595d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
21605d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   You must be root to use these ioctls. Never use these in applications! */
21615d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_DBG_S_REGISTER 	 _IOW('V', 79, struct v4l2_dbg_register)
21625d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_DBG_G_REGISTER 	_IOWR('V', 80, struct v4l2_dbg_register)
21635d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21645d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_HW_FREQ_SEEK	 _IOW('V', 82, struct v4l2_hw_freq_seek)
21655d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21665d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_S_DV_TIMINGS	_IOWR('V', 87, struct v4l2_dv_timings)
21675d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_G_DV_TIMINGS	_IOWR('V', 88, struct v4l2_dv_timings)
21685d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_DQEVENT		 _IOR('V', 89, struct v4l2_event)
21695d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_SUBSCRIBE_EVENT	 _IOW('V', 90, struct v4l2_event_subscription)
21705d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define	VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
21715d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21725d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, the below two ioctls may change over the next couple of kernel
21735d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   versions */
21745d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_CREATE_BUFS	_IOWR('V', 92, struct v4l2_create_buffers)
21755d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_PREPARE_BUF	_IOWR('V', 93, struct v4l2_buffer)
21765d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21775d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental selection API */
21785d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_G_SELECTION	_IOWR('V', 94, struct v4l2_selection)
21795d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_S_SELECTION	_IOWR('V', 95, struct v4l2_selection)
21805d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21815d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, these two ioctls may change over the next couple of kernel
21825d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   versions. */
21835d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_DECODER_CMD	_IOWR('V', 96, struct v4l2_decoder_cmd)
21845d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_TRY_DECODER_CMD	_IOWR('V', 97, struct v4l2_decoder_cmd)
21855d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21865d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, these three ioctls may change over the next couple of kernel
21875d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   versions. */
21885d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUM_DV_TIMINGS  _IOWR('V', 98, struct v4l2_enum_dv_timings)
21895d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERY_DV_TIMINGS  _IOR('V', 99, struct v4l2_dv_timings)
21905d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_DV_TIMINGS_CAP   _IOWR('V', 100, struct v4l2_dv_timings_cap)
21915d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21925d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, this ioctl may change over the next couple of kernel
21935d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   versions. */
21945d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_ENUM_FREQ_BANDS	_IOWR('V', 101, struct v4l2_frequency_band)
21955d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
21965d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Experimental, meant for debugging, testing and internal use.
21975d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   Never use these in applications! */
21985d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info)
21995d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
22005d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VIDIOC_QUERY_EXT_CTRL	_IOWR('V', 103, struct v4l2_query_ext_ctrl)
22015d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
22025d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin/* Reminder: when adding new ioctls please add support for them to
22035d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin   drivers/media/video/v4l2-compat-ioctl32.c as well! */
22045d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
22055d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define BASE_VIDIOC_PRIVATE	192		/* 192-255 are private */
22065d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
22074e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch/* HDMI rx provide ioctls */
22084e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define VIDIOC_HDMI_RX_CEC_S_LOGICAL _IOW('V', BASE_VIDIOC_PRIVATE + 0, int)
22094e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define VIDIOC_HDMI_RX_CEC_CLEAR_LOGICAL _IO('V', BASE_VIDIOC_PRIVATE + 1)
22104e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define VIDIOC_HDMI_RX_CEC_G_PHYSICAL _IOR('V', BASE_VIDIOC_PRIVATE + 2, int)
22114e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define VIDIOC_HDMI_RX_CEC_G_CONNECTED _IOR('V', BASE_VIDIOC_PRIVATE + 3, int)
22124e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch#define VIDIOC_HDMI_RX_CEC_S_ENABLE _IOR('V', BASE_VIDIOC_PRIVATE + 4, int)
22134e5a1b379f3de5287e3d129e27df9a6b38653b1dSteve Pfetsch
2214d9ec20e66310e5fa84a1de1c3303748f6b690542Patrick Tjin#endif /* _UAPI__LINUX_VIDEODEV2_H */
2215