History

Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab: - removal of sn9c102. This device driver was replaced a long time ago by gspca - solo6x10 and go7007 webcam drivers moved from staging into mainstream. They were waiting for an API to allow setting the image detection matrix - SDR drivers moved from staging into mainstream: sdr-msi3101 (renamed as msi2500) and rtl2832 - added SDR driver for airspy - added demux driver: si2165 - rework at several RC subsystem, making the code for RC-5 SZ variant to be added at the standard RC5 decoder - added decoder for the XMP IR protocol - tuner driver moved from staging into mainstream: msi3101 (renamed as msi001) - added documentation for some additional SDR pixfmt - some device tree bindings documented - added support for exynos3250 at s5p-jpeg - remove the obsolete, unmaintained and broken mx1_camera driver - added support for remote controllers at au0828 driver - added a RC driver: sunxi-cir - several driver fixes, enhancements and cleanups. * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (455 commits) [media] cx23885: fix UNSET/TUNER_ABSENT confusion [media] coda: fix build error by making reset control optional [media] radio-miropcm20: fix sparse NULL pointer warning [media] MAINTAINERS: Update go7007 pattern [media] MAINTAINERS: Update solo6x10 patterns [media] media: atmel-isi: add primary DT support [media] media: atmel-isi: convert the pdata from pointer to structure [media] media: atmel-isi: add v4l2 async probe support [media] rcar_vin: add devicetree support [media] media: pxa_camera device-tree support [media] media: mt9m111: add device-tree suppport [media] soc_camera: add support for dt binding soc_camera drivers [media] media: soc_camera: pxa_camera documentation device-tree support [media] media: mt9m111: add device-tree documentation [media] s5p-mfc: remove unnecessary calling to function video_devdata() [media] s5p-jpeg: add chroma subsampling adjustment for Exynos3250 [media] s5p-jpeg: Prevent erroneous downscaling for Exynos3250 SoC [media] s5p-jpeg: Assure proper crop rectangle initialization [media] s5p-jpeg: fix g_selection op [media] s5p-jpeg: Adjust jpeg_bound_align_image to Exynos3250 needs ...

Linus Torvalds committed 12 years ago

Commit f4d33332 parents 91c2ff7 0f3bf3d442 files · +16105 −17004Browse files

Showing the changes to include/uapi/linux (2 of 442 files). Show all

Unified · Split

2 files
  1. include/uapi/linux/v4l2-controls.h +32 −0
  2. include/uapi/linux/videodev2.h +96 −5
include/uapi/linux/v4l2-controls.h+32−0
@@ -61,6 +61,7 @@ · 60 unmodified lines
6161 #define V4L2_CTRL_CLASS_DV 0x00a00000 /* Digital Video controls */
6262 #define V4L2_CTRL_CLASS_FM_RX 0x00a10000 /* FM Receiver controls */
6363 #define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000 /* RF tuner controls */
64+#define V4L2_CTRL_CLASS_DETECT 0x00a30000 /* Detection controls */
6465
6566 /* User-class control IDs */
6667
@@ -756,6 +757,15 @@ enum v4l2_auto_focus_range { · 689 unmodified lines
756757 #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
757758 #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
758759 #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
760+#define V4L2_CID_RDS_TX_MONO_STEREO (V4L2_CID_FM_TX_CLASS_BASE + 7)
761+#define V4L2_CID_RDS_TX_ARTIFICIAL_HEAD (V4L2_CID_FM_TX_CLASS_BASE + 8)
762+#define V4L2_CID_RDS_TX_COMPRESSED (V4L2_CID_FM_TX_CLASS_BASE + 9)
763+#define V4L2_CID_RDS_TX_DYNAMIC_PTY (V4L2_CID_FM_TX_CLASS_BASE + 10)
764+#define V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_TX_CLASS_BASE + 11)
765+#define V4L2_CID_RDS_TX_TRAFFIC_PROGRAM (V4L2_CID_FM_TX_CLASS_BASE + 12)
766+#define V4L2_CID_RDS_TX_MUSIC_SPEECH (V4L2_CID_FM_TX_CLASS_BASE + 13)
767+#define V4L2_CID_RDS_TX_ALT_FREQS_ENABLE (V4L2_CID_FM_TX_CLASS_BASE + 14)
768+#define V4L2_CID_RDS_TX_ALT_FREQS (V4L2_CID_FM_TX_CLASS_BASE + 15)
759769
760770 #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
761771 #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
@@ -900,6 +910,12 @@ enum v4l2_deemphasis { · 138 unmodified lines
900910 };
901911
902912 #define V4L2_CID_RDS_RECEPTION (V4L2_CID_FM_RX_CLASS_BASE + 2)
913+#define V4L2_CID_RDS_RX_PTY (V4L2_CID_FM_RX_CLASS_BASE + 3)
914+#define V4L2_CID_RDS_RX_PS_NAME (V4L2_CID_FM_RX_CLASS_BASE + 4)
915+#define V4L2_CID_RDS_RX_RADIO_TEXT (V4L2_CID_FM_RX_CLASS_BASE + 5)
916+#define V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT (V4L2_CID_FM_RX_CLASS_BASE + 6)
917+#define V4L2_CID_RDS_RX_TRAFFIC_PROGRAM (V4L2_CID_FM_RX_CLASS_BASE + 7)
918+#define V4L2_CID_RDS_RX_MUSIC_SPEECH (V4L2_CID_FM_RX_CLASS_BASE + 8)
903919
904920 #define V4L2_CID_RF_TUNER_CLASS_BASE (V4L2_CTRL_CLASS_RF_TUNER | 0x900)
905921 #define V4L2_CID_RF_TUNER_CLASS (V4L2_CTRL_CLASS_RF_TUNER | 1)
@@ -914,4 +930,20 @@ enum v4l2_deemphasis { · 8 unmodified lines
914930 #define V4L2_CID_RF_TUNER_IF_GAIN (V4L2_CID_RF_TUNER_CLASS_BASE + 62)
915931 #define V4L2_CID_RF_TUNER_PLL_LOCK (V4L2_CID_RF_TUNER_CLASS_BASE + 91)
916932
933+
934+/* Detection-class control IDs defined by V4L2 */
935+#define V4L2_CID_DETECT_CLASS_BASE (V4L2_CTRL_CLASS_DETECT | 0x900)
936+#define V4L2_CID_DETECT_CLASS (V4L2_CTRL_CLASS_DETECT | 1)
937+
938+#define V4L2_CID_DETECT_MD_MODE (V4L2_CID_DETECT_CLASS_BASE + 1)
939+enum v4l2_detect_md_mode {
940+ V4L2_DETECT_MD_MODE_DISABLED = 0,
941+ V4L2_DETECT_MD_MODE_GLOBAL = 1,
942+ V4L2_DETECT_MD_MODE_THRESHOLD_GRID = 2,
943+ V4L2_DETECT_MD_MODE_REGION_GRID = 3,
944+};
945+#define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
946+#define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
947+#define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
948+
917949 #endif
include/uapi/linux/videodev2.h+96−5
@@ -124,6 +124,10 @@ enum v4l2_field { · 123 unmodified lines
124124 (field) == V4L2_FIELD_INTERLACED_BT ||\
125125 (field) == V4L2_FIELD_SEQ_TB ||\
126126 (field) == V4L2_FIELD_SEQ_BT)
127+#define V4L2_FIELD_HAS_T_OR_B(field) \
128+ ((field) == V4L2_FIELD_BOTTOM ||\
129+ (field) == V4L2_FIELD_TOP ||\
130+ (field) == V4L2_FIELD_ALTERNATE)
127131
128132 enum v4l2_buf_type {
129133 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
@@ -268,6 +272,7 @@ struct v4l2_capability { · 138 unmodified lines
268272 #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */
269273
270274 #define V4L2_CAP_SDR_CAPTURE 0x00100000 /* Is a SDR capture device */
275+#define V4L2_CAP_EXT_PIX_FORMAT 0x00200000 /* Supports the extended pixel format */
271276
272277 #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
273278 #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */
@@ -287,6 +292,7 @@ struct v4l2_pix_format { · 13 unmodified lines
287292 __u32 sizeimage;
288293 __u32 colorspace; /* enum v4l2_colorspace */
289294 __u32 priv; /* private data, depends on pixelformat */
295+ __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */
290296 };
291297
292298 /* Pixel format FOURCC depth Description */
@@ -294,7 +300,11 @@ struct v4l2_pix_format { · 1 unmodified line
294300 /* RGB formats */
295301 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
296302 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
303+#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
304+#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */
297305 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
306+#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */
307+#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */
298308 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
299309 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */
300310 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
@@ -302,7 +312,11 @@ struct v4l2_pix_format { · 1 unmodified line
302312 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
303313 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
304314 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
315+#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */
316+#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */
305317 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
318+#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
319+#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
306320
307321 /* Grey formats */
308322 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
@@ -439,6 +453,15 @@ struct v4l2_pix_format { · 130 unmodified lines
439453 /* SDR formats - used only for Software Defined Radio devices */
440454 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
441455 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */
456+#define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8') /* complex s8 */
457+#define V4L2_SDR_FMT_CS14LE v4l2_fourcc('C', 'S', '1', '4') /* complex s14le */
458+#define V4L2_SDR_FMT_RU12LE v4l2_fourcc('R', 'U', '1', '2') /* real u12le */
459+
460+/* priv field value to indicates that subsequent fields are valid. */
461+#define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
462+
463+/* Flags */
464+#define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
442465
443466 /*
444467 * F O R M A T E N U M E R A T I O N
@@ -744,7 +767,16 @@ struct v4l2_framebuffer { · 299 unmodified lines
744767 /* FIXME: in theory we should pass something like PCI device + memory
745768 * region + offset instead of some physical address */
746769 void *base;
747− struct v4l2_pix_format fmt;
770+ struct {
771+ __u32 width;
772+ __u32 height;
773+ __u32 pixelformat;
774+ __u32 field; /* enum v4l2_field */
775+ __u32 bytesperline; /* for padding, zero if unused */
776+ __u32 sizeimage;
777+ __u32 colorspace; /* enum v4l2_colorspace */
778+ __u32 priv; /* reserved field, set to 0 */
779+ } fmt;
748780 };
749781 /* Flags for the 'capability' field. Read only */
750782 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
@@ -1254,6 +1286,10 @@ struct v4l2_ext_control { · 503 unmodified lines
12541286 __s32 value;
12551287 __s64 value64;
12561288 char *string;
1289+ __u8 *p_u8;
1290+ __u16 *p_u16;
1291+ __u32 *p_u32;
1292+ void *ptr;
12571293 };
12581294 } __attribute__ ((packed));
12591295
@@ -1268,6 +1304,7 @@ struct v4l2_ext_controls { · 8 unmodified lines
12681304 #define V4L2_CTRL_ID_MASK (0x0fffffff)
12691305 #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
12701306 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
1307+#define V4L2_CTRL_MAX_DIMS (4)
12711308
12721309 enum v4l2_ctrl_type {
12731310 V4L2_CTRL_TYPE_INTEGER = 1,
@@ -1278,7 +1315,13 @@ enum v4l2_ctrl_type { · 4 unmodified lines
12781315 V4L2_CTRL_TYPE_CTRL_CLASS = 6,
12791316 V4L2_CTRL_TYPE_STRING = 7,
12801317 V4L2_CTRL_TYPE_BITMASK = 8,
1281− V4L2_CTRL_TYPE_INTEGER_MENU = 9,
1318+ V4L2_CTRL_TYPE_INTEGER_MENU = 9,
1319+
1320+ /* Compound types are >= 0x0100 */
1321+ V4L2_CTRL_COMPOUND_TYPES = 0x0100,
1322+ V4L2_CTRL_TYPE_U8 = 0x0100,
1323+ V4L2_CTRL_TYPE_U16 = 0x0101,
1324+ V4L2_CTRL_TYPE_U32 = 0x0102,
12821325 };
12831326
12841327 /* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
@@ -1294,6 +1337,23 @@ struct v4l2_queryctrl { · 9 unmodified lines
12941337 __u32 reserved[2];
12951338 };
12961339
1340+/* Used in the VIDIOC_QUERY_EXT_CTRL ioctl for querying extended controls */
1341+struct v4l2_query_ext_ctrl {
1342+ __u32 id;
1343+ __u32 type;
1344+ char name[32];
1345+ __s64 minimum;
1346+ __s64 maximum;
1347+ __u64 step;
1348+ __s64 default_value;
1349+ __u32 flags;
1350+ __u32 elem_size;
1351+ __u32 elems;
1352+ __u32 nr_of_dims;
1353+ __u32 dims[V4L2_CTRL_MAX_DIMS];
1354+ __u32 reserved[32];
1355+};
1356+
12971357 /* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
12981358 struct v4l2_querymenu {
12991359 __u32 id;
@@ -1314,9 +1374,11 @@ struct v4l2_querymenu { · 14 unmodified lines
13141374 #define V4L2_CTRL_FLAG_SLIDER 0x0020
13151375 #define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
13161376 #define V4L2_CTRL_FLAG_VOLATILE 0x0080
1377+#define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
13171378
1318−/* Query flag, to be ORed with the control ID */
1379+/* Query flags, to be ORed with the control ID */
13191380 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
1381+#define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
13201382
13211383 /* User-class control IDs defined by V4L2 */
13221384 #define V4L2_CID_MAX_CTRLS 1024
@@ -1582,6 +1644,12 @@ struct v4l2_vbi_format { · 259 unmodified lines
15821644 #define V4L2_VBI_UNSYNC (1 << 0)
15831645 #define V4L2_VBI_INTERLACED (1 << 1)
15841646
1647+/* ITU-R start lines for each field */
1648+#define V4L2_VBI_ITU_525_F1_START (1)
1649+#define V4L2_VBI_ITU_525_F2_START (264)
1650+#define V4L2_VBI_ITU_625_F1_START (1)
1651+#define V4L2_VBI_ITU_625_F2_START (314)
1652+
15851653 /* Sliced VBI
15861654 *
15871655 * This implements is a proposal V4L2 API to allow SLICED VBI
@@ -1705,6 +1773,7 @@ struct v4l2_plane_pix_format { · 117 unmodified lines
17051773 * @colorspace: enum v4l2_colorspace; supplemental to pixelformat
17061774 * @plane_fmt: per-plane information
17071775 * @num_planes: number of planes for this format
1776+ * @flags: format flags (V4L2_PIX_FMT_FLAG_*)
17081777 */
17091778 struct v4l2_pix_format_mplane {
17101779 __u32 width;
@@ -1715,16 +1784,19 @@ struct v4l2_pix_format_mplane { · 4 unmodified lines
17151784
17161785 struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
17171786 __u8 num_planes;
1718− __u8 reserved[11];
1787+ __u8 flags;
1788+ __u8 reserved[10];
17191789 } __attribute__ ((packed));
17201790
17211791 /**
17221792 * struct v4l2_sdr_format - SDR format definition
17231793 * @pixelformat: little endian four character code (fourcc)
1794+ * @buffersize: maximum size in bytes required for data
17241795 */
17251796 struct v4l2_sdr_format {
17261797 __u32 pixelformat;
1727− __u8 reserved[28];
1798+ __u32 buffersize;
1799+ __u8 reserved[24];
17281800 } __attribute__ ((packed));
17291801
17301802 /**
@@ -1771,6 +1843,7 @@ struct v4l2_streamparm { · 40 unmodified lines
17711843 #define V4L2_EVENT_CTRL 3
17721844 #define V4L2_EVENT_FRAME_SYNC 4
17731845 #define V4L2_EVENT_SOURCE_CHANGE 5
1846+#define V4L2_EVENT_MOTION_DET 6
17741847 #define V4L2_EVENT_PRIVATE_START 0x08000000
17751848
17761849 /* Payload for V4L2_EVENT_VSYNC */
@@ -1808,6 +1881,21 @@ struct v4l2_event_src_change { · 31 unmodified lines
18081881 __u32 changes;
18091882 };
18101883
1884+#define V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ (1 << 0)
1885+
1886+/**
1887+ * struct v4l2_event_motion_det - motion detection event
1888+ * @flags: if V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ is set, then the
1889+ * frame_sequence field is valid.
1890+ * @frame_sequence: the frame sequence number associated with this event.
1891+ * @region_mask: which regions detected motion.
1892+ */
1893+struct v4l2_event_motion_det {
1894+ __u32 flags;
1895+ __u32 frame_sequence;
1896+ __u32 region_mask;
1897+};
1898+
18111899 struct v4l2_event {
18121900 __u32 type;
18131901 union {
@@ -1815,6 +1903,7 @@ struct v4l2_event { · 1 unmodified line
18151903 struct v4l2_event_ctrl ctrl;
18161904 struct v4l2_event_frame_sync frame_sync;
18171905 struct v4l2_event_src_change src_change;
1906+ struct v4l2_event_motion_det motion_det;
18181907 __u8 data[64];
18191908 } u;
18201909 __u32 pending;
@@ -2005,6 +2094,8 @@ struct v4l2_create_buffers { · 184 unmodified lines
20052094 Never use these in applications! */
20062095 #define VIDIOC_DBG_G_CHIP_INFO _IOWR('V', 102, struct v4l2_dbg_chip_info)
20072096
2097+#define VIDIOC_QUERY_EXT_CTRL _IOWR('V', 103, struct v4l2_query_ext_ctrl)
2098+
20082099 /* Reminder: when adding new ioctls please add support for them to
20092100 drivers/media/video/v4l2-compat-ioctl32.c as well! */
20102101