diff options
Diffstat (limited to 'include/linux/videodev2.h')
| -rw-r--r-- | include/linux/videodev2.h | 119 | 
1 files changed, 96 insertions, 23 deletions
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index fca24cc5043..4b752d5ee80 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h @@ -653,6 +653,10 @@ struct v4l2_buffer {  #define V4L2_BUF_FLAG_ERROR	0x0040  #define V4L2_BUF_FLAG_TIMECODE	0x0100	/* timecode field is valid */  #define V4L2_BUF_FLAG_INPUT     0x0200  /* input field is valid */ +#define V4L2_BUF_FLAG_PREPARED	0x0400	/* Buffer is prepared for queuing */ +/* Cache handling flags */ +#define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE	0x0800 +#define V4L2_BUF_FLAG_NO_CACHE_CLEAN		0x1000  /*   *	O V E R L A Y   P R E V I E W @@ -759,10 +763,10 @@ typedef __u64 v4l2_std_id;  #define V4L2_STD_PAL_Nc         ((v4l2_std_id)0x00000400)  #define V4L2_STD_PAL_60         ((v4l2_std_id)0x00000800) -#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000) -#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000) +#define V4L2_STD_NTSC_M         ((v4l2_std_id)0x00001000)	/* BTSC */ +#define V4L2_STD_NTSC_M_JP      ((v4l2_std_id)0x00002000)	/* EIA-J */  #define V4L2_STD_NTSC_443       ((v4l2_std_id)0x00004000) -#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000) +#define V4L2_STD_NTSC_M_KR      ((v4l2_std_id)0x00008000)	/* FM A2 */  #define V4L2_STD_SECAM_B        ((v4l2_std_id)0x00010000)  #define V4L2_STD_SECAM_D        ((v4l2_std_id)0x00020000) @@ -786,47 +790,86 @@ typedef __u64 v4l2_std_id;     v4l2-common.c should be fixed.   */ -/* some merged standards */ -#define V4L2_STD_MN	(V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC) -#define V4L2_STD_B	(V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B) -#define V4L2_STD_GH	(V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H) -#define V4L2_STD_DK	(V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK) +/* + * Some macros to merge video standards in order to make live easier for the + * drivers and V4L2 applications + */ -/* some common needed stuff */ -#define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\ -				 V4L2_STD_PAL_B1	|\ -				 V4L2_STD_PAL_G) -#define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\ -				 V4L2_STD_PAL_D1	|\ -				 V4L2_STD_PAL_K) -#define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\ -				 V4L2_STD_PAL_DK	|\ -				 V4L2_STD_PAL_H		|\ -				 V4L2_STD_PAL_I) +/* + * "Common" NTSC/M - It should be noticed that V4L2_STD_NTSC_443 is + * Missing here. + */  #define V4L2_STD_NTSC           (V4L2_STD_NTSC_M	|\  				 V4L2_STD_NTSC_M_JP     |\  				 V4L2_STD_NTSC_M_KR) +/* Secam macros */  #define V4L2_STD_SECAM_DK      	(V4L2_STD_SECAM_D	|\  				 V4L2_STD_SECAM_K	|\  				 V4L2_STD_SECAM_K1) +/* All Secam Standards */  #define V4L2_STD_SECAM		(V4L2_STD_SECAM_B	|\  				 V4L2_STD_SECAM_G	|\  				 V4L2_STD_SECAM_H	|\  				 V4L2_STD_SECAM_DK	|\  				 V4L2_STD_SECAM_L       |\  				 V4L2_STD_SECAM_LC) +/* PAL macros */ +#define V4L2_STD_PAL_BG		(V4L2_STD_PAL_B		|\ +				 V4L2_STD_PAL_B1	|\ +				 V4L2_STD_PAL_G) +#define V4L2_STD_PAL_DK		(V4L2_STD_PAL_D		|\ +				 V4L2_STD_PAL_D1	|\ +				 V4L2_STD_PAL_K) +/* + * "Common" PAL - This macro is there to be compatible with the old + * V4L1 concept of "PAL": /BGDKHI. + * Several PAL standards are mising here: /M, /N and /Nc + */ +#define V4L2_STD_PAL		(V4L2_STD_PAL_BG	|\ +				 V4L2_STD_PAL_DK	|\ +				 V4L2_STD_PAL_H		|\ +				 V4L2_STD_PAL_I) +/* Chroma "agnostic" standards */ +#define V4L2_STD_B		(V4L2_STD_PAL_B		|\ +				 V4L2_STD_PAL_B1	|\ +				 V4L2_STD_SECAM_B) +#define V4L2_STD_G		(V4L2_STD_PAL_G		|\ +				 V4L2_STD_SECAM_G) +#define V4L2_STD_H		(V4L2_STD_PAL_H		|\ +				 V4L2_STD_SECAM_H) +#define V4L2_STD_L		(V4L2_STD_SECAM_L	|\ +				 V4L2_STD_SECAM_LC) +#define V4L2_STD_GH		(V4L2_STD_G		|\ +				 V4L2_STD_H) +#define V4L2_STD_DK		(V4L2_STD_PAL_DK	|\ +				 V4L2_STD_SECAM_DK) +#define V4L2_STD_BG		(V4L2_STD_B		|\ +				 V4L2_STD_G) +#define V4L2_STD_MN		(V4L2_STD_PAL_M		|\ +				 V4L2_STD_PAL_N		|\ +				 V4L2_STD_PAL_Nc	|\ +				 V4L2_STD_NTSC) +/* Standards where MTS/BTSC stereo could be found */ +#define V4L2_STD_MTS		(V4L2_STD_NTSC_M	|\ +				 V4L2_STD_PAL_M		|\ +				 V4L2_STD_PAL_N		|\ +				 V4L2_STD_PAL_Nc) + +/* Standards for Countries with 60Hz Line frequency */  #define V4L2_STD_525_60		(V4L2_STD_PAL_M		|\  				 V4L2_STD_PAL_60	|\  				 V4L2_STD_NTSC		|\  				 V4L2_STD_NTSC_443) +/* Standards for Countries with 50Hz Line frequency */  #define V4L2_STD_625_50		(V4L2_STD_PAL		|\  				 V4L2_STD_PAL_N		|\  				 V4L2_STD_PAL_Nc	|\  				 V4L2_STD_SECAM) +  #define V4L2_STD_ATSC           (V4L2_STD_ATSC_8_VSB    |\  				 V4L2_STD_ATSC_16_VSB) - +/* Macros with none and all analog standards */  #define V4L2_STD_UNKNOWN        0  #define V4L2_STD_ALL            (V4L2_STD_525_60	|\  				 V4L2_STD_625_50) @@ -1082,6 +1125,7 @@ struct v4l2_querymenu {  #define V4L2_CTRL_FLAG_INACTIVE 	0x0010  #define V4L2_CTRL_FLAG_SLIDER 		0x0020  #define V4L2_CTRL_FLAG_WRITE_ONLY 	0x0040 +#define V4L2_CTRL_FLAG_VOLATILE		0x0080  /*  Query flag, to be ORed with the control ID */  #define V4L2_CTRL_FLAG_NEXT_CTRL	0x80000000 @@ -1125,6 +1169,7 @@ enum v4l2_power_line_frequency {  	V4L2_CID_POWER_LINE_FREQUENCY_DISABLED	= 0,  	V4L2_CID_POWER_LINE_FREQUENCY_50HZ	= 1,  	V4L2_CID_POWER_LINE_FREQUENCY_60HZ	= 2, +	V4L2_CID_POWER_LINE_FREQUENCY_AUTO	= 3,  };  #define V4L2_CID_HUE_AUTO			(V4L2_CID_BASE+25)  #define V4L2_CID_WHITE_BALANCE_TEMPERATURE	(V4L2_CID_BASE+26) @@ -2006,6 +2051,7 @@ struct v4l2_streamparm {  #define V4L2_EVENT_VSYNC			1  #define V4L2_EVENT_EOS				2  #define V4L2_EVENT_CTRL				3 +#define V4L2_EVENT_FRAME_SYNC			4  #define V4L2_EVENT_PRIVATE_START		0x08000000  /* Payload for V4L2_EVENT_VSYNC */ @@ -2032,12 +2078,17 @@ struct v4l2_event_ctrl {  	__s32 default_value;  }; +struct v4l2_event_frame_sync { +	__u32 frame_sequence; +}; +  struct v4l2_event {  	__u32				type;  	union { -		struct v4l2_event_vsync vsync; -		struct v4l2_event_ctrl	ctrl; -		__u8			data[64]; +		struct v4l2_event_vsync		vsync; +		struct v4l2_event_ctrl		ctrl; +		struct v4l2_event_frame_sync	frame_sync; +		__u8				data[64];  	} u;  	__u32				pending;  	__u32				sequence; @@ -2092,6 +2143,23 @@ struct v4l2_dbg_chip_ident {  	__u32 revision;    /* chip revision, chip specific */  } __attribute__ ((packed)); +/** + * struct v4l2_create_buffers - VIDIOC_CREATE_BUFS argument + * @index:	on return, index of the first created buffer + * @count:	entry: number of requested buffers, + *		return: number of created buffers + * @memory:	buffer memory type + * @format:	frame format, for which buffers are requested + * @reserved:	future extensions + */ +struct v4l2_create_buffers { +	__u32			index; +	__u32			count; +	enum v4l2_memory        memory; +	struct v4l2_format	format; +	__u32			reserved[8]; +}; +  /*   *	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   * @@ -2182,6 +2250,11 @@ struct v4l2_dbg_chip_ident {  #define	VIDIOC_SUBSCRIBE_EVENT	 _IOW('V', 90, struct v4l2_event_subscription)  #define	VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription) +/* Experimental, the below two ioctls may change over the next couple of kernel +   versions */ +#define VIDIOC_CREATE_BUFS	_IOWR('V', 92, struct v4l2_create_buffers) +#define VIDIOC_PREPARE_BUF	_IOWR('V', 93, struct v4l2_buffer) +  /* Reminder: when adding new ioctls please add support for them to     drivers/media/video/v4l2-compat-ioctl32.c as well! */  |