diff options
| -rw-r--r-- | include/linux/v4l2-common.h | 10 | ||||
| -rw-r--r-- | include/linux/v4l2-controls.h | 51 | ||||
| -rw-r--r-- | include/linux/videodev2.h | 150 | 
3 files changed, 199 insertions, 12 deletions
| diff --git a/include/linux/v4l2-common.h b/include/linux/v4l2-common.h index 4f0667e..2f6f8ca 100644 --- a/include/linux/v4l2-common.h +++ b/include/linux/v4l2-common.h @@ -29,6 +29,8 @@  #ifndef __V4L2_COMMON__  #define __V4L2_COMMON__ +#include <linux/types.h> +  /*   *   * Selection interface definitions @@ -68,4 +70,12 @@  #define V4L2_SUBDEV_SEL_FLAG_SIZE_LE	V4L2_SEL_FLAG_LE  #define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG +struct v4l2_edid { +	__u32 pad; +	__u32 start_block; +	__u32 blocks; +	__u32 reserved[5]; +	__u8  *edid; +}; +  #endif /* __V4L2_COMMON__ */ diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h index 2cbe605..e946e43 100644 --- a/include/linux/v4l2-controls.h +++ b/include/linux/v4l2-controls.h @@ -60,6 +60,8 @@  #define V4L2_CTRL_CLASS_IMAGE_PROC	0x009f0000	/* Image processing controls */  #define V4L2_CTRL_CLASS_DV		0x00a00000	/* Digital Video controls */  #define V4L2_CTRL_CLASS_FM_RX		0x00a10000	/* FM Receiver controls */ +#define V4L2_CTRL_CLASS_RF_TUNER	0x00a20000	/* RF tuner controls */ +#define V4L2_CTRL_CLASS_DETECT		0x00a30000	/* Detection controls */  /* User-class control IDs */ @@ -376,6 +378,8 @@ enum v4l2_mpeg_video_multi_slice_mode {  #define V4L2_CID_MPEG_VIDEO_DEC_FRAME			(V4L2_CID_MPEG_BASE+224)  #define V4L2_CID_MPEG_VIDEO_VBV_DELAY			(V4L2_CID_MPEG_BASE+225)  #define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER		(V4L2_CID_MPEG_BASE+226) +#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE		(V4L2_CID_MPEG_BASE+227) +#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE		(V4L2_CID_MPEG_BASE+228)  #define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP		(V4L2_CID_MPEG_BASE+300)  #define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP		(V4L2_CID_MPEG_BASE+301) @@ -753,6 +757,15 @@ enum v4l2_auto_focus_range {  #define V4L2_CID_RDS_TX_PTY			(V4L2_CID_FM_TX_CLASS_BASE + 3)  #define V4L2_CID_RDS_TX_PS_NAME			(V4L2_CID_FM_TX_CLASS_BASE + 5)  #define V4L2_CID_RDS_TX_RADIO_TEXT		(V4L2_CID_FM_TX_CLASS_BASE + 6) +#define V4L2_CID_RDS_TX_MONO_STEREO		(V4L2_CID_FM_TX_CLASS_BASE + 7) +#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD		(V4L2_CID_FM_TX_CLASS_BASE + 8) +#define V4L2_CID_RDS_TX_COMPRESSED		(V4L2_CID_FM_TX_CLASS_BASE + 9) +#define V4L2_CID_RDS_TX_DYNAMIC_PTY		(V4L2_CID_FM_TX_CLASS_BASE + 10) +#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT	(V4L2_CID_FM_TX_CLASS_BASE + 11) +#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM		(V4L2_CID_FM_TX_CLASS_BASE + 12) +#define V4L2_CID_RDS_TX_MUSIC_SPEECH		(V4L2_CID_FM_TX_CLASS_BASE + 13) +#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE	(V4L2_CID_FM_TX_CLASS_BASE + 14) +#define V4L2_CID_RDS_TX_ALT_FREQS		(V4L2_CID_FM_TX_CLASS_BASE + 15)  #define V4L2_CID_AUDIO_LIMITER_ENABLED		(V4L2_CID_FM_TX_CLASS_BASE + 64)  #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME	(V4L2_CID_FM_TX_CLASS_BASE + 65) @@ -812,6 +825,9 @@ enum v4l2_flash_strobe_source {  #define V4L2_FLASH_FAULT_SHORT_CIRCUIT		(1 << 3)  #define V4L2_FLASH_FAULT_OVER_CURRENT		(1 << 4)  #define V4L2_FLASH_FAULT_INDICATOR		(1 << 5) +#define V4L2_FLASH_FAULT_UNDER_VOLTAGE		(1 << 6) +#define V4L2_FLASH_FAULT_INPUT_VOLTAGE		(1 << 7) +#define V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE	(1 << 8)  #define V4L2_CID_FLASH_CHARGE			(V4L2_CID_FLASH_CLASS_BASE + 11)  #define V4L2_CID_FLASH_READY			(V4L2_CID_FLASH_CLASS_BASE + 12) @@ -894,5 +910,40 @@ enum v4l2_deemphasis {  };  #define V4L2_CID_RDS_RECEPTION			(V4L2_CID_FM_RX_CLASS_BASE + 2) +#define V4L2_CID_RDS_RX_PTY			(V4L2_CID_FM_RX_CLASS_BASE + 3) +#define V4L2_CID_RDS_RX_PS_NAME			(V4L2_CID_FM_RX_CLASS_BASE + 4) +#define V4L2_CID_RDS_RX_RADIO_TEXT		(V4L2_CID_FM_RX_CLASS_BASE + 5) +#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT	(V4L2_CID_FM_RX_CLASS_BASE + 6) +#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM		(V4L2_CID_FM_RX_CLASS_BASE + 7) +#define V4L2_CID_RDS_RX_MUSIC_SPEECH		(V4L2_CID_FM_RX_CLASS_BASE + 8) + +#define V4L2_CID_RF_TUNER_CLASS_BASE		(V4L2_CTRL_CLASS_RF_TUNER | 0x900) +#define V4L2_CID_RF_TUNER_CLASS			(V4L2_CTRL_CLASS_RF_TUNER | 1) + +#define V4L2_CID_RF_TUNER_BANDWIDTH_AUTO	(V4L2_CID_RF_TUNER_CLASS_BASE + 11) +#define V4L2_CID_RF_TUNER_BANDWIDTH		(V4L2_CID_RF_TUNER_CLASS_BASE + 12) +#define V4L2_CID_RF_TUNER_LNA_GAIN_AUTO		(V4L2_CID_RF_TUNER_CLASS_BASE + 41) +#define V4L2_CID_RF_TUNER_LNA_GAIN		(V4L2_CID_RF_TUNER_CLASS_BASE + 42) +#define V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO	(V4L2_CID_RF_TUNER_CLASS_BASE + 51) +#define V4L2_CID_RF_TUNER_MIXER_GAIN		(V4L2_CID_RF_TUNER_CLASS_BASE + 52) +#define V4L2_CID_RF_TUNER_IF_GAIN_AUTO		(V4L2_CID_RF_TUNER_CLASS_BASE + 61) +#define V4L2_CID_RF_TUNER_IF_GAIN		(V4L2_CID_RF_TUNER_CLASS_BASE + 62) +#define V4L2_CID_RF_TUNER_PLL_LOCK			(V4L2_CID_RF_TUNER_CLASS_BASE + 91) + + +/*  Detection-class control IDs defined by V4L2 */ +#define V4L2_CID_DETECT_CLASS_BASE		(V4L2_CTRL_CLASS_DETECT | 0x900) +#define V4L2_CID_DETECT_CLASS			(V4L2_CTRL_CLASS_DETECT | 1) + +#define V4L2_CID_DETECT_MD_MODE			(V4L2_CID_DETECT_CLASS_BASE + 1) +enum v4l2_detect_md_mode { +	V4L2_DETECT_MD_MODE_DISABLED		= 0, +	V4L2_DETECT_MD_MODE_GLOBAL		= 1, +	V4L2_DETECT_MD_MODE_THRESHOLD_GRID	= 2, +	V4L2_DETECT_MD_MODE_REGION_GRID		= 3, +}; +#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD	(V4L2_CID_DETECT_CLASS_BASE + 2) +#define V4L2_CID_DETECT_MD_THRESHOLD_GRID	(V4L2_CID_DETECT_CLASS_BASE + 3) +#define V4L2_CID_DETECT_MD_REGION_GRID		(V4L2_CID_DETECT_CLASS_BASE + 4)  #endif diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index ecda04f..87b83c3 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -122,6 +122,10 @@ enum v4l2_field {  	 (field) == V4L2_FIELD_INTERLACED_BT ||\  	 (field) == V4L2_FIELD_SEQ_TB ||\  	 (field) == V4L2_FIELD_SEQ_BT) +#define V4L2_FIELD_HAS_T_OR_B(field)	\ +	((field) == V4L2_FIELD_BOTTOM ||\ +	 (field) == V4L2_FIELD_TOP ||\ +	 (field) == V4L2_FIELD_ALTERNATE)  enum v4l2_buf_type {  	V4L2_BUF_TYPE_VIDEO_CAPTURE        = 1, @@ -137,6 +141,7 @@ enum v4l2_buf_type {  #endif  	V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,  	V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE  = 10, +	V4L2_BUF_TYPE_SDR_CAPTURE          = 11,  	/* Deprecated, do not use */  	V4L2_BUF_TYPE_PRIVATE              = 0x80,  }; @@ -157,6 +162,8 @@ enum v4l2_tuner_type {  	V4L2_TUNER_RADIO	     = 1,  	V4L2_TUNER_ANALOG_TV	     = 2,  	V4L2_TUNER_DIGITAL_TV	     = 3, +	V4L2_TUNER_ADC               = 4, +	V4L2_TUNER_RF                = 5,  };  enum v4l2_memory { @@ -262,6 +269,9 @@ struct v4l2_capability {  #define V4L2_CAP_RADIO			0x00040000  /* is a radio device */  #define V4L2_CAP_MODULATOR		0x00080000  /* has a modulator */ +#define V4L2_CAP_SDR_CAPTURE		0x00100000  /* Is a SDR capture device */ +#define V4L2_CAP_EXT_PIX_FORMAT		0x00200000  /* Supports the extended pixel format */ +  #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */  #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */  #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */ @@ -280,6 +290,7 @@ struct v4l2_pix_format {  	__u32          		sizeimage;  	__u32			colorspace;	/* enum v4l2_colorspace */  	__u32			priv;		/* private data, depends on pixelformat */ +	__u32			flags;		/* format flags (V4L2_PIX_FMT_FLAG_*) */  };  /*      Pixel format         FOURCC                          depth  Description  */ @@ -287,7 +298,11 @@ struct v4l2_pix_format {  /* RGB formats */  #define V4L2_PIX_FMT_RGB332  v4l2_fourcc('R', 'G', 'B', '1') /*  8  RGB-3-3-2     */  #define V4L2_PIX_FMT_RGB444  v4l2_fourcc('R', '4', '4', '4') /* 16  xxxxrrrr ggggbbbb */ +#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16  aaaarrrr ggggbbbb */ +#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16  xxxxrrrr ggggbbbb */  #define V4L2_PIX_FMT_RGB555  v4l2_fourcc('R', 'G', 'B', 'O') /* 16  RGB-5-5-5     */ +#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16  ARGB-1-5-5-5  */ +#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16  XRGB-1-5-5-5  */  #define V4L2_PIX_FMT_RGB565  v4l2_fourcc('R', 'G', 'B', 'P') /* 16  RGB-5-6-5     */  #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16  RGB-5-5-5 BE  */  #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16  RGB-5-6-5 BE  */ @@ -295,7 +310,11 @@ struct v4l2_pix_format {  #define V4L2_PIX_FMT_BGR24   v4l2_fourcc('B', 'G', 'R', '3') /* 24  BGR-8-8-8     */  #define V4L2_PIX_FMT_RGB24   v4l2_fourcc('R', 'G', 'B', '3') /* 24  RGB-8-8-8     */  #define V4L2_PIX_FMT_BGR32   v4l2_fourcc('B', 'G', 'R', '4') /* 32  BGR-8-8-8-8   */ +#define V4L2_PIX_FMT_ABGR32  v4l2_fourcc('A', 'R', '2', '4') /* 32  BGRA-8-8-8-8  */ +#define V4L2_PIX_FMT_XBGR32  v4l2_fourcc('X', 'R', '2', '4') /* 32  BGRX-8-8-8-8  */  #define V4L2_PIX_FMT_RGB32   v4l2_fourcc('R', 'G', 'B', '4') /* 32  RGB-8-8-8-8   */ +#define V4L2_PIX_FMT_ARGB32  v4l2_fourcc('B', 'A', '2', '4') /* 32  ARGB-8-8-8-8  */ +#define V4L2_PIX_FMT_XRGB32  v4l2_fourcc('B', 'X', '2', '4') /* 32  XRGB-8-8-8-8  */  /* Grey formats */  #define V4L2_PIX_FMT_GREY    v4l2_fourcc('G', 'R', 'E', 'Y') /*  8  Greyscale     */ @@ -429,6 +448,19 @@ struct v4l2_pix_format {  #define V4L2_PIX_FMT_SE401      v4l2_fourcc('S', '4', '0', '1') /* se401 janggu compressed rgb */  #define V4L2_PIX_FMT_S5C_UYVY_JPG v4l2_fourcc('S', '5', 'C', 'I') /* S5C73M3 interleaved UYVY/JPEG */ +/* SDR formats - used only for Software Defined Radio devices */ +#define V4L2_SDR_FMT_CU8          v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ +#define V4L2_SDR_FMT_CU16LE       v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ +#define V4L2_SDR_FMT_CS8          v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */ +#define V4L2_SDR_FMT_CS14LE       v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */ +#define V4L2_SDR_FMT_RU12LE       v4l2_fourcc('R', 'U', '1', '2') /* real u12le */ + +/* priv field value to indicates that subsequent fields are valid. */ +#define V4L2_PIX_FMT_PRIV_MAGIC		0xfeedcafe + +/* Flags */ +#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA	0x00000001 +  /*   *	F O R M A T   E N U M E R A T I O N   */ @@ -638,7 +670,6 @@ struct v4l2_plane {   * @length:	size in bytes of the buffer (NOT its payload) for single-plane   *		buffers (when type != *_MPLANE); number of elements in the   *		planes array for multi-plane buffers - * @input:	input number from which the video data has has been captured   *   * Contains data exchanged by application and driver using one of the Streaming   * I/O methods. @@ -734,7 +765,16 @@ struct v4l2_framebuffer {  /* FIXME: in theory we should pass something like PCI device + memory   * region + offset instead of some physical address */  	void                    *base; -	struct v4l2_pix_format	fmt; +	struct { +		__u32		width; +		__u32		height; +		__u32		pixelformat; +		__u32		field;		/* enum v4l2_field */ +		__u32		bytesperline;	/* for padding, zero if unused */ +		__u32		sizeimage; +		__u32		colorspace;	/* enum v4l2_colorspace */ +		__u32		priv;		/* reserved field, set to 0 */ +	} fmt;  };  /*  Flags for the 'capability' field. Read only */  #define V4L2_FBUF_CAP_EXTERNOVERLAY	0x0001 @@ -1069,14 +1109,14 @@ struct v4l2_bt_timings {  /* A few useful defines to calculate the total blanking and frame sizes */  #define V4L2_DV_BT_BLANKING_WIDTH(bt) \ -	(bt->hfrontporch + bt->hsync + bt->hbackporch) +	((bt)->hfrontporch + (bt)->hsync + (bt)->hbackporch)  #define V4L2_DV_BT_FRAME_WIDTH(bt) \ -	(bt->width + V4L2_DV_BT_BLANKING_WIDTH(bt)) +	((bt)->width + V4L2_DV_BT_BLANKING_WIDTH(bt))  #define V4L2_DV_BT_BLANKING_HEIGHT(bt) \ -	(bt->vfrontporch + bt->vsync + bt->vbackporch + \ -	 bt->il_vfrontporch + bt->il_vsync + bt->il_vbackporch) +	((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + \ +	 (bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch)  #define V4L2_DV_BT_FRAME_HEIGHT(bt) \ -	(bt->height + V4L2_DV_BT_BLANKING_HEIGHT(bt)) +	((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))  /** struct v4l2_dv_timings - DV timings   * @type:	the type of the timings @@ -1096,12 +1136,15 @@ struct v4l2_dv_timings {  /** struct v4l2_enum_dv_timings - DV timings enumeration   * @index:	enumeration index + * @pad:	the pad number for which to enumerate timings (used with + *		v4l-subdev nodes only)   * @reserved:	must be zeroed   * @timings:	the timings for the given index   */  struct v4l2_enum_dv_timings {  	__u32 index; -	__u32 reserved[3]; +	__u32 pad; +	__u32 reserved[2];  	struct v4l2_dv_timings timings;  }; @@ -1139,11 +1182,14 @@ struct v4l2_bt_timings_cap {  /** struct v4l2_dv_timings_cap - DV timings capabilities   * @type:	the type of the timings (same as in struct v4l2_dv_timings) + * @pad:	the pad number for which to query capabilities (used with + *		v4l-subdev nodes only)   * @bt:		the BT656/1120 timings capabilities   */  struct v4l2_dv_timings_cap {  	__u32 type; -	__u32 reserved[3]; +	__u32 pad; +	__u32 reserved[2];  	union {  		struct v4l2_bt_timings_cap bt;  		__u32 raw_data[32]; @@ -1238,6 +1284,10 @@ struct v4l2_ext_control {  		__s32 value;  		__s64 value64;  		char *string; +		__u8 *p_u8; +		__u16 *p_u16; +		__u32 *p_u32; +		void *ptr;  	};  } __attribute__ ((packed)); @@ -1252,6 +1302,7 @@ struct v4l2_ext_controls {  #define V4L2_CTRL_ID_MASK      	  (0x0fffffff)  #define V4L2_CTRL_ID2CLASS(id)    ((id) & 0x0fff0000UL)  #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000) +#define V4L2_CTRL_MAX_DIMS	  (4)  enum v4l2_ctrl_type {  	V4L2_CTRL_TYPE_INTEGER	     = 1, @@ -1262,7 +1313,13 @@ enum v4l2_ctrl_type {  	V4L2_CTRL_TYPE_CTRL_CLASS    = 6,  	V4L2_CTRL_TYPE_STRING        = 7,  	V4L2_CTRL_TYPE_BITMASK       = 8, -	V4L2_CTRL_TYPE_INTEGER_MENU = 9, +	V4L2_CTRL_TYPE_INTEGER_MENU  = 9, + +	/* Compound types are >= 0x0100 */ +	V4L2_CTRL_COMPOUND_TYPES     = 0x0100, +	V4L2_CTRL_TYPE_U8	     = 0x0100, +	V4L2_CTRL_TYPE_U16	     = 0x0101, +	V4L2_CTRL_TYPE_U32	     = 0x0102,  };  /*  Used in the VIDIOC_QUERYCTRL ioctl for querying controls */ @@ -1278,6 +1335,23 @@ struct v4l2_queryctrl {  	__u32		     reserved[2];  }; +/*  Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */ +struct v4l2_query_ext_ctrl { +	__u32		     id; +	__u32		     type; +	char		     name[32]; +	__s64		     minimum; +	__s64		     maximum; +	__u64		     step; +	__s64		     default_value; +	__u32                flags; +	__u32                elem_size; +	__u32                elems; +	__u32                nr_of_dims; +	__u32                dims[V4L2_CTRL_MAX_DIMS]; +	__u32		     reserved[32]; +}; +  /*  Used in the VIDIOC_QUERYMENU ioctl for querying menu items */  struct v4l2_querymenu {  	__u32		id; @@ -1298,9 +1372,11 @@ struct v4l2_querymenu {  #define V4L2_CTRL_FLAG_SLIDER 		0x0020  #define V4L2_CTRL_FLAG_WRITE_ONLY 	0x0040  #define V4L2_CTRL_FLAG_VOLATILE		0x0080 +#define V4L2_CTRL_FLAG_HAS_PAYLOAD	0x0100 -/*  Query flag, to be ORed with the control ID */ +/*  Query flags, to be ORed with the control ID */  #define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000 +#define V4L2_CTRL_FLAG_NEXT_COMPOUND	0x40000000  /*  User-class control IDs defined by V4L2 */  #define V4L2_CID_MAX_CTRLS		1024 @@ -1349,6 +1425,7 @@ struct v4l2_modulator {  #define V4L2_TUNER_CAP_RDS_CONTROLS	0x0200  #define V4L2_TUNER_CAP_FREQ_BANDS	0x0400  #define V4L2_TUNER_CAP_HWSEEK_PROG_LIM	0x0800 +#define V4L2_TUNER_CAP_1HZ		0x1000  /*  Flags for the 'rxsubchans' field */  #define V4L2_TUNER_SUB_MONO		0x0001 @@ -1565,6 +1642,12 @@ struct v4l2_vbi_format {  #define V4L2_VBI_UNSYNC		(1 << 0)  #define V4L2_VBI_INTERLACED	(1 << 1) +/* ITU-R start lines for each field */ +#define V4L2_VBI_ITU_525_F1_START (1) +#define V4L2_VBI_ITU_525_F2_START (264) +#define V4L2_VBI_ITU_625_F1_START (1) +#define V4L2_VBI_ITU_625_F2_START (314) +  /* Sliced VBI   *   *    This implements is a proposal V4L2 API to allow SLICED VBI @@ -1688,6 +1771,7 @@ struct v4l2_plane_pix_format {   * @colorspace:		enum v4l2_colorspace; supplemental to pixelformat   * @plane_fmt:		per-plane information   * @num_planes:		number of planes for this format + * @flags:		format flags (V4L2_PIX_FMT_FLAG_*)   */  struct v4l2_pix_format_mplane {  	__u32				width; @@ -1698,7 +1782,19 @@ struct v4l2_pix_format_mplane {  	struct v4l2_plane_pix_format	plane_fmt[VIDEO_MAX_PLANES];  	__u8				num_planes; -	__u8				reserved[11]; +	__u8				flags; +	__u8				reserved[10]; +} __attribute__ ((packed)); + +/** + * struct v4l2_sdr_format - SDR format definition + * @pixelformat:	little endian four character code (fourcc) + * @buffersize:		maximum size in bytes required for data + */ +struct v4l2_sdr_format { +	__u32				pixelformat; +	__u32				buffersize; +	__u8				reserved[24];  } __attribute__ ((packed));  /** @@ -1719,6 +1815,7 @@ struct v4l2_format {  		struct v4l2_window		win;     /* V4L2_BUF_TYPE_VIDEO_OVERLAY */  		struct v4l2_vbi_format		vbi;     /* V4L2_BUF_TYPE_VBI_CAPTURE */  		struct v4l2_sliced_vbi_format	sliced;  /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ +		struct v4l2_sdr_format		sdr;     /* V4L2_BUF_TYPE_SDR_CAPTURE */  		__u8	raw_data[200];                   /* user-defined */  	} fmt;  }; @@ -1743,6 +1840,8 @@ struct v4l2_streamparm {  #define V4L2_EVENT_EOS				2  #define V4L2_EVENT_CTRL				3  #define V4L2_EVENT_FRAME_SYNC			4 +#define V4L2_EVENT_SOURCE_CHANGE		5 +#define V4L2_EVENT_MOTION_DET			6  #define V4L2_EVENT_PRIVATE_START		0x08000000  /* Payload for V4L2_EVENT_VSYNC */ @@ -1774,12 +1873,35 @@ struct v4l2_event_frame_sync {  	__u32 frame_sequence;  }; +#define V4L2_EVENT_SRC_CH_RESOLUTION		(1 << 0) + +struct v4l2_event_src_change { +	__u32 changes; +}; + +#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ	(1 << 0) + +/** + * struct v4l2_event_motion_det - motion detection event + * @flags:             if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the + *                     frame_sequence field is valid. + * @frame_sequence:    the frame sequence number associated with this event. + * @region_mask:       which regions detected motion. + */ +struct v4l2_event_motion_det { +	__u32 flags; +	__u32 frame_sequence; +	__u32 region_mask; +}; +  struct v4l2_event {  	__u32				type;  	union {  		struct v4l2_event_vsync		vsync;  		struct v4l2_event_ctrl		ctrl;  		struct v4l2_event_frame_sync	frame_sync; +		struct v4l2_event_src_change	src_change; +		struct v4l2_event_motion_det	motion_det;  		__u8				data[64];  	} u;  	__u32				pending; @@ -1895,6 +2017,8 @@ struct v4l2_create_buffers {  #define VIDIOC_QUERYMENU	_IOWR('V', 37, struct v4l2_querymenu)  #define VIDIOC_G_INPUT		 _IOR('V', 38, int)  #define VIDIOC_S_INPUT		_IOWR('V', 39, int) +#define VIDIOC_G_EDID		_IOWR('V', 40, struct v4l2_edid) +#define VIDIOC_S_EDID		_IOWR('V', 41, struct v4l2_edid)  #define VIDIOC_G_OUTPUT		 _IOR('V', 46, int)  #define VIDIOC_S_OUTPUT		_IOWR('V', 47, int)  #define VIDIOC_ENUMOUTPUT	_IOWR('V', 48, struct v4l2_output) @@ -1968,6 +2092,8 @@ struct v4l2_create_buffers {     Never use these in applications! */  #define VIDIOC_DBG_G_CHIP_INFO  _IOWR('V', 102, struct v4l2_dbg_chip_info) +#define VIDIOC_QUERY_EXT_CTRL	_IOWR('V', 103, struct v4l2_query_ext_ctrl) +  /* Reminder: when adding new ioctls please add support for them to     drivers/media/video/v4l2-compat-ioctl32.c as well! */ | 
