[{"id":1748,"web_url":"https://patchwork.libcamera.org/comment/1748/","msgid":"<7681fab7-b2e6-bef7-21cd-d32b80b675c9@ideasonboard.com>","date":"2019-06-04T08:39:59","subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 27/05/2019 10:05, Jacopo Mondi wrote:\n> Update kernel headers to v5.1\n> \n> The most notable introduction for libcamera is support for\n> V4L2_BUF_TYPE_META_OUTPUT.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  include/linux/media.h         |  8 ++++\n>  include/linux/v4l2-common.h   | 26 +++++------\n>  include/linux/v4l2-controls.h |  4 ++\n>  include/linux/videodev2.h     | 88 ++++++++++++++++++++++++++++++-----\n\nIs this a full import of our 5.1 headers?\n\nWere there no changes in the following?:\n\nmedia-bus-format.h\nv4l2-dv-timings.h\nv4l2-mediabus.h\nv4l2-subdev.h\n\nI think we should do a full import when we do so ...\n\n--\nKieran\n\n\n>  4 files changed, 102 insertions(+), 24 deletions(-)\n> \n> diff --git a/include/linux/media.h b/include/linux/media.h\n> index c75664617760..29cc82b89ff2 100644\n> --- a/include/linux/media.h\n> +++ b/include/linux/media.h\n> @@ -350,6 +350,14 @@ struct media_v2_topology {\n>  #define MEDIA_IOC_ENUM_LINKS\t_IOWR('|', 0x02, struct media_links_enum)\n>  #define MEDIA_IOC_SETUP_LINK\t_IOWR('|', 0x03, struct media_link_desc)\n>  #define MEDIA_IOC_G_TOPOLOGY\t_IOWR('|', 0x04, struct media_v2_topology)\n> +#define MEDIA_IOC_REQUEST_ALLOC\t_IOR ('|', 0x05, int)\n> +\n> +/*\n> + * These ioctls are called on the request file descriptor as returned\n> + * by MEDIA_IOC_REQUEST_ALLOC.\n> + */\n> +#define MEDIA_REQUEST_IOC_QUEUE\t\t_IO('|',  0x80)\n> +#define MEDIA_REQUEST_IOC_REINIT\t_IO('|',  0x81)\n>  \n>  \n>  /*\n> diff --git a/include/linux/v4l2-common.h b/include/linux/v4l2-common.h\n> index 4f7b892377cd..14de1731b39c 100644\n> --- a/include/linux/v4l2-common.h\n> +++ b/include/linux/v4l2-common.h\n> @@ -79,24 +79,11 @@\n>  /* Current composing area plus all padding pixels */\n>  #define V4L2_SEL_TGT_COMPOSE_PADDED\t0x0103\n>  \n> -/* Backward compatibility target definitions --- to be removed. */\n> -#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n> -#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n> -#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n> -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n> -#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n> -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n> -\n>  /* Selection flags */\n>  #define V4L2_SEL_FLAG_GE\t\t(1 << 0)\n>  #define V4L2_SEL_FLAG_LE\t\t(1 << 1)\n>  #define V4L2_SEL_FLAG_KEEP_CONFIG\t(1 << 2)\n>  \n> -/* Backward compatibility flag definitions --- to be removed. */\n> -#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n> -#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n> -#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n> -\n>  struct v4l2_edid {\n>  \t__u32 pad;\n>  \t__u32 start_block;\n> @@ -105,4 +92,17 @@ struct v4l2_edid {\n>  \t__u8  *edid;\n>  };\n>  \n> +/* Backward compatibility target definitions --- to be removed. */\n> +#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n> +#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n> +#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n> +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n> +#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n> +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n> +\n> +/* Backward compatibility flag definitions --- to be removed. */\n> +#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n> +#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n> +#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n> +\n>  #endif /* __V4L2_COMMON__ */\n> diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h\n> index e4ee10ee917d..06479f2fb3ae 100644\n> --- a/include/linux/v4l2-controls.h\n> +++ b/include/linux/v4l2-controls.h\n> @@ -50,6 +50,8 @@\n>  #ifndef __LINUX_V4L2_CONTROLS_H\n>  #define __LINUX_V4L2_CONTROLS_H\n>  \n> +#include <linux/types.h>\n> +\n>  /* Control classes */\n>  #define V4L2_CTRL_CLASS_USER\t\t0x00980000\t/* Old-style 'user' controls */\n>  #define V4L2_CTRL_CLASS_MPEG\t\t0x00990000\t/* MPEG-compression controls */\n> @@ -531,6 +533,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type {\n>  };\n>  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER\t(V4L2_CID_MPEG_BASE+381)\n>  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP\t(V4L2_CID_MPEG_BASE+382)\n> +#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION\t(V4L2_CID_MPEG_BASE+383)\n> +#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET\t\t(V4L2_CID_MPEG_BASE+384)\n>  #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP\t(V4L2_CID_MPEG_BASE+400)\n>  #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP\t(V4L2_CID_MPEG_BASE+401)\n>  #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP\t(V4L2_CID_MPEG_BASE+402)\n> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\n> index 1a95662f5ad0..5e739270116d 100644\n> --- a/include/linux/videodev2.h\n> +++ b/include/linux/videodev2.h\n> @@ -128,6 +128,13 @@ enum v4l2_field {\n>  \t((field) == V4L2_FIELD_BOTTOM ||\\\n>  \t (field) == V4L2_FIELD_TOP ||\\\n>  \t (field) == V4L2_FIELD_ALTERNATE)\n> +#define V4L2_FIELD_IS_INTERLACED(field) \\\n> +\t((field) == V4L2_FIELD_INTERLACED ||\\\n> +\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n> +\t (field) == V4L2_FIELD_INTERLACED_BT)\n> +#define V4L2_FIELD_IS_SEQUENTIAL(field) \\\n> +\t((field) == V4L2_FIELD_SEQ_TB ||\\\n> +\t (field) == V4L2_FIELD_SEQ_BT)\n>  \n>  enum v4l2_buf_type {\n>  \tV4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,\n> @@ -143,6 +150,7 @@ enum v4l2_buf_type {\n>  \tV4L2_BUF_TYPE_SDR_CAPTURE          = 11,\n>  \tV4L2_BUF_TYPE_SDR_OUTPUT           = 12,\n>  \tV4L2_BUF_TYPE_META_CAPTURE         = 13,\n> +\tV4L2_BUF_TYPE_META_OUTPUT\t   = 14,\n>  \t/* Deprecated, do not use */\n>  \tV4L2_BUF_TYPE_PRIVATE              = 0x80,\n>  };\n> @@ -158,7 +166,8 @@ enum v4l2_buf_type {\n>  \t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY\t\\\n>  \t || (type) == V4L2_BUF_TYPE_VBI_OUTPUT\t\t\t\\\n>  \t || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT\t\t\\\n> -\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)\n> +\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT\t\t\t\\\n> +\t || (type) == V4L2_BUF_TYPE_META_OUTPUT)\n>  \n>  enum v4l2_tuner_type {\n>  \tV4L2_TUNER_RADIO\t     = 1,\n> @@ -223,8 +232,8 @@ enum v4l2_colorspace {\n>  \t/* For RGB colorspaces such as produces by most webcams. */\n>  \tV4L2_COLORSPACE_SRGB          = 8,\n>  \n> -\t/* AdobeRGB colorspace */\n> -\tV4L2_COLORSPACE_ADOBERGB      = 9,\n> +\t/* opRGB colorspace */\n> +\tV4L2_COLORSPACE_OPRGB         = 9,\n>  \n>  \t/* BT.2020 colorspace, used for UHDTV. */\n>  \tV4L2_COLORSPACE_BT2020        = 10,\n> @@ -256,7 +265,7 @@ enum v4l2_xfer_func {\n>  \t *\n>  \t * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB\n>  \t *\n> -\t * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB\n> +\t * V4L2_COLORSPACE_OPRGB: V4L2_XFER_FUNC_OPRGB\n>  \t *\n>  \t * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M\n>  \t *\n> @@ -267,7 +276,7 @@ enum v4l2_xfer_func {\n>  \tV4L2_XFER_FUNC_DEFAULT     = 0,\n>  \tV4L2_XFER_FUNC_709         = 1,\n>  \tV4L2_XFER_FUNC_SRGB        = 2,\n> -\tV4L2_XFER_FUNC_ADOBERGB    = 3,\n> +\tV4L2_XFER_FUNC_OPRGB       = 3,\n>  \tV4L2_XFER_FUNC_SMPTE240M   = 4,\n>  \tV4L2_XFER_FUNC_NONE        = 5,\n>  \tV4L2_XFER_FUNC_DCI_P3      = 6,\n> @@ -279,7 +288,7 @@ enum v4l2_xfer_func {\n>   * This depends on the colorspace.\n>   */\n>  #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \\\n> -\t((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \\\n> +\t((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \\\n>  \t ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \\\n>  \t  ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \\\n>  \t   ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \\\n> @@ -293,7 +302,7 @@ enum v4l2_ycbcr_encoding {\n>  \t *\n>  \t * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,\n>  \t * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB,\n> -\t * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n> +\t * V4L2_COLORSPACE_OPRGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n>  \t *\n>  \t * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709\n>  \t *\n> @@ -378,6 +387,15 @@ enum v4l2_quantization {\n>  \t (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \\\n>  \t V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))\n>  \n> +/*\n> + * Deprecated names for opRGB colorspace (IEC 61966-2-5)\n> + *\n> + * WARNING: Please don't use these deprecated defines in your code, as\n> + * there is a chance we have to remove them in the future.\n> + */\n> +#define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB\n> +#define V4L2_XFER_FUNC_ADOBERGB  V4L2_XFER_FUNC_OPRGB\n> +\n>  enum v4l2_priority {\n>  \tV4L2_PRIORITY_UNSET       = 0,  /* not initialized */\n>  \tV4L2_PRIORITY_BACKGROUND  = 1,\n> @@ -454,6 +472,7 @@ struct v4l2_capability {\n>  #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */\n>  #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */\n>  #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */\n> +#define V4L2_CAP_META_OUTPUT\t\t0x08000000  /* Is a metadata output device */\n>  \n>  #define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */\n>  \n> @@ -537,6 +556,10 @@ struct v4l2_pix_format {\n>  #define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */\n>  #define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */\n>  #define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */\n> +#define V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */\n> +#define V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */\n> +#define V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */\n> +#define V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */\n>  #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */\n>  #define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */\n>  #define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */\n> @@ -631,6 +654,7 @@ struct v4l2_pix_format {\n>  #define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */\n>  #define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */\n>  #define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */\n> +#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */\n>  #define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */\n>  #define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */\n>  #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */\n> @@ -672,6 +696,8 @@ struct v4l2_pix_format {\n>  #define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */\n>  #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */\n>  #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */\n> +#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */\n> +#define V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */\n>  \n>  /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */\n>  #define V4L2_PIX_FMT_IPU3_SBGGR10\tv4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */\n> @@ -699,6 +725,7 @@ struct v4l2_pix_format {\n>  #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */\n>  #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */\n>  #define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */\n> +#define V4L2_META_FMT_D4XX        v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */\n>  \n>  /* priv field value to indicates that subsequent fields are valid. */\n>  #define V4L2_PIX_FMT_PRIV_MAGIC\t\t0xfeedcafe\n> @@ -852,9 +879,17 @@ struct v4l2_requestbuffers {\n>  \t__u32\t\t\tcount;\n>  \t__u32\t\t\ttype;\t\t/* enum v4l2_buf_type */\n>  \t__u32\t\t\tmemory;\t\t/* enum v4l2_memory */\n> -\t__u32\t\t\treserved[2];\n> +\t__u32\t\t\tcapabilities;\n> +\t__u32\t\t\treserved[1];\n>  };\n>  \n> +/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */\n> +#define V4L2_BUF_CAP_SUPPORTS_MMAP\t(1 << 0)\n> +#define V4L2_BUF_CAP_SUPPORTS_USERPTR\t(1 << 1)\n> +#define V4L2_BUF_CAP_SUPPORTS_DMABUF\t(1 << 2)\n> +#define V4L2_BUF_CAP_SUPPORTS_REQUESTS\t(1 << 3)\n> +#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)\n> +\n>  /**\n>   * struct v4l2_plane - plane info for multi-planar buffers\n>   * @bytesused:\t\tnumber of bytes occupied by data in the plane (payload)\n> @@ -913,6 +948,7 @@ struct v4l2_plane {\n>   * @length:\tsize in bytes of the buffer (NOT its payload) for single-plane\n>   *\t\tbuffers (when type != *_MPLANE); number of elements in the\n>   *\t\tplanes array for multi-plane buffers\n> + * @request_fd: fd of the request that this buffer should use\n>   *\n>   * Contains data exchanged by application and driver using one of the Streaming\n>   * I/O methods.\n> @@ -937,9 +973,24 @@ struct v4l2_buffer {\n>  \t} m;\n>  \t__u32\t\t\tlength;\n>  \t__u32\t\t\treserved2;\n> -\t__u32\t\t\treserved;\n> +\tunion {\n> +\t\t__s32\t\trequest_fd;\n> +\t\t__u32\t\treserved;\n> +\t};\n>  };\n>  \n> +/**\n> + * v4l2_timeval_to_ns - Convert timeval to nanoseconds\n> + * @ts:\t\tpointer to the timeval variable to be converted\n> + *\n> + * Returns the scalar nanosecond representation of the timeval\n> + * parameter.\n> + */\n> +static __inline__ __u64 v4l2_timeval_to_ns(const struct timeval *tv)\n> +{\n> +\treturn (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000;\n> +}\n> +\n>  /*  Flags for 'flags' field */\n>  /* Buffer is mapped (flag) */\n>  #define V4L2_BUF_FLAG_MAPPED\t\t\t0x00000001\n> @@ -955,6 +1006,8 @@ struct v4l2_buffer {\n>  #define V4L2_BUF_FLAG_BFRAME\t\t\t0x00000020\n>  /* Buffer is ready, but the data contained within is corrupted. */\n>  #define V4L2_BUF_FLAG_ERROR\t\t\t0x00000040\n> +/* Buffer is added to an unqueued request */\n> +#define V4L2_BUF_FLAG_IN_REQUEST\t\t0x00000080\n>  /* timecode field is valid */\n>  #define V4L2_BUF_FLAG_TIMECODE\t\t\t0x00000100\n>  /* Buffer is prepared for queuing */\n> @@ -973,6 +1026,8 @@ struct v4l2_buffer {\n>  #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE\t\t0x00010000\n>  /* mem2mem encoder/decoder */\n>  #define V4L2_BUF_FLAG_LAST\t\t\t0x00100000\n> +/* request_fd is valid */\n> +#define V4L2_BUF_FLAG_REQUEST_FD\t\t0x00800000\n>  \n>  /**\n>   * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor\n> @@ -1396,6 +1451,13 @@ struct v4l2_bt_timings {\n>   * InfoFrame).\n>   */\n>  #define V4L2_DV_FL_HAS_HDMI_VIC\t\t\t(1 << 8)\n> +/*\n> + * CEA-861 specific: only valid for video receivers.\n> + * If set, then HW can detect the difference between regular FPS and\n> + * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with\n> + * the V4L2_DV_FL_CAN_REDUCE_FPS flag set.\n> + */\n> +#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS\t(1 << 9)\n>  \n>  /* A few useful defines to calculate the total blanking and frame sizes */\n>  #define V4L2_DV_BT_BLANKING_WIDTH(bt) \\\n> @@ -1593,7 +1655,8 @@ struct v4l2_ext_controls {\n>  \t};\n>  \t__u32 count;\n>  \t__u32 error_idx;\n> -\t__u32 reserved[2];\n> +\t__s32 request_fd;\n> +\t__u32 reserved[1];\n>  \tstruct v4l2_ext_control *controls;\n>  };\n>  \n> @@ -1604,6 +1667,7 @@ struct v4l2_ext_controls {\n>  #define V4L2_CTRL_MAX_DIMS\t  (4)\n>  #define V4L2_CTRL_WHICH_CUR_VAL   0\n>  #define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000\n> +#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000\n>  \n>  enum v4l2_ctrl_type {\n>  \tV4L2_CTRL_TYPE_INTEGER\t     = 1,\n> @@ -2294,6 +2358,7 @@ struct v4l2_dbg_chip_info {\n>   *\t\treturn: number of created buffers\n>   * @memory:\tenum v4l2_memory; buffer memory type\n>   * @format:\tframe format, for which buffers are requested\n> + * @capabilities: capabilities of this buffer type.\n>   * @reserved:\tfuture extensions\n>   */\n>  struct v4l2_create_buffers {\n> @@ -2301,7 +2366,8 @@ struct v4l2_create_buffers {\n>  \t__u32\t\t\tcount;\n>  \t__u32\t\t\tmemory;\n>  \tstruct v4l2_format\tformat;\n> -\t__u32\t\t\treserved[8];\n> +\t__u32\t\t\tcapabilities;\n> +\t__u32\t\t\treserved[7];\n>  };\n>  \n>  /*\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 64A1C619A3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Jun 2019 10:40:02 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id BB69C51C;\n\tTue,  4 Jun 2019 10:40:01 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1559637601;\n\tbh=NmnzcDQ3xbwav3arpOE5t6yOlQMyE1sjYbZmJoD0Ypg=;\n\th=Reply-To:Subject:To:References:From:Date:In-Reply-To:From;\n\tb=QI7MLwjh3j+uO73npCHPkaSnttgFBnYur44GaEWJLYLcGXQDFefp018mWnbTqps52\n\tgKrOACPB4DG4ShPhIPdUASeCrzW+/lh+7e68afUB4MQNb89kOfbtRM0b9HtfV3+/AC\n\tjmm53QL/kzfrqBOEoXIXgTu5CM4HGzWKvD857HsU=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>, libcamera-devel@lists.libcamera.org","References":"<20190527090559.26549-1-jacopo@jmondi.org>\n\t<20190527090559.26549-2-jacopo@jmondi.org>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<7681fab7-b2e6-bef7-21cd-d32b80b675c9@ideasonboard.com>","Date":"Tue, 4 Jun 2019 09:39:59 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.7.0","MIME-Version":"1.0","In-Reply-To":"<20190527090559.26549-2-jacopo@jmondi.org>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 04 Jun 2019 08:40:02 -0000"}},{"id":1761,"web_url":"https://patchwork.libcamera.org/comment/1761/","msgid":"<20190604133028.ekost7n56dtn2sti@uno.localdomain>","date":"2019-06-04T13:30:28","subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Kieran,\n\nOn Tue, Jun 04, 2019 at 09:39:59AM +0100, Kieran Bingham wrote:\n> Hi Jacopo,\n>\n> On 27/05/2019 10:05, Jacopo Mondi wrote:\n> > Update kernel headers to v5.1\n> >\n> > The most notable introduction for libcamera is support for\n> > V4L2_BUF_TYPE_META_OUTPUT.\n> >\n> > Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> > Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  include/linux/media.h         |  8 ++++\n> >  include/linux/v4l2-common.h   | 26 +++++------\n> >  include/linux/v4l2-controls.h |  4 ++\n> >  include/linux/videodev2.h     | 88 ++++++++++++++++++++++++++++++-----\n>\n> Is this a full import of our 5.1 headers?\n>\n\nYes, at least this was my intention\n\n> Were there no changes in the following?:\n>\n> media-bus-format.h\n> v4l2-dv-timings.h\n> v4l2-mediabus.h\n> v4l2-subdev.h\n>\n> I think we should do a full import when we do so ...\n\n$ export HDR=.../linux-headers/v5.1/include/\n$ cd include/linux/\n$ for h in $(ls *.h); do H=$(find $HDR -name $h); diff  $h $H; done\n$\n\nThat's the same line I have used to copy the files when I made this\npatch iirc.\n\nDo you see any difference not reported here?\n\nThanks\n   j\n\n>\n> --\n> Kieran\n>\n>\n> >  4 files changed, 102 insertions(+), 24 deletions(-)\n> >\n> > diff --git a/include/linux/media.h b/include/linux/media.h\n> > index c75664617760..29cc82b89ff2 100644\n> > --- a/include/linux/media.h\n> > +++ b/include/linux/media.h\n> > @@ -350,6 +350,14 @@ struct media_v2_topology {\n> >  #define MEDIA_IOC_ENUM_LINKS\t_IOWR('|', 0x02, struct media_links_enum)\n> >  #define MEDIA_IOC_SETUP_LINK\t_IOWR('|', 0x03, struct media_link_desc)\n> >  #define MEDIA_IOC_G_TOPOLOGY\t_IOWR('|', 0x04, struct media_v2_topology)\n> > +#define MEDIA_IOC_REQUEST_ALLOC\t_IOR ('|', 0x05, int)\n> > +\n> > +/*\n> > + * These ioctls are called on the request file descriptor as returned\n> > + * by MEDIA_IOC_REQUEST_ALLOC.\n> > + */\n> > +#define MEDIA_REQUEST_IOC_QUEUE\t\t_IO('|',  0x80)\n> > +#define MEDIA_REQUEST_IOC_REINIT\t_IO('|',  0x81)\n> >\n> >\n> >  /*\n> > diff --git a/include/linux/v4l2-common.h b/include/linux/v4l2-common.h\n> > index 4f7b892377cd..14de1731b39c 100644\n> > --- a/include/linux/v4l2-common.h\n> > +++ b/include/linux/v4l2-common.h\n> > @@ -79,24 +79,11 @@\n> >  /* Current composing area plus all padding pixels */\n> >  #define V4L2_SEL_TGT_COMPOSE_PADDED\t0x0103\n> >\n> > -/* Backward compatibility target definitions --- to be removed. */\n> > -#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n> > -#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n> > -#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n> > -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n> > -#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n> > -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n> > -\n> >  /* Selection flags */\n> >  #define V4L2_SEL_FLAG_GE\t\t(1 << 0)\n> >  #define V4L2_SEL_FLAG_LE\t\t(1 << 1)\n> >  #define V4L2_SEL_FLAG_KEEP_CONFIG\t(1 << 2)\n> >\n> > -/* Backward compatibility flag definitions --- to be removed. */\n> > -#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n> > -#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n> > -#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n> > -\n> >  struct v4l2_edid {\n> >  \t__u32 pad;\n> >  \t__u32 start_block;\n> > @@ -105,4 +92,17 @@ struct v4l2_edid {\n> >  \t__u8  *edid;\n> >  };\n> >\n> > +/* Backward compatibility target definitions --- to be removed. */\n> > +#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n> > +#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n> > +#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n> > +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n> > +#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n> > +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n> > +\n> > +/* Backward compatibility flag definitions --- to be removed. */\n> > +#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n> > +#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n> > +#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n> > +\n> >  #endif /* __V4L2_COMMON__ */\n> > diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h\n> > index e4ee10ee917d..06479f2fb3ae 100644\n> > --- a/include/linux/v4l2-controls.h\n> > +++ b/include/linux/v4l2-controls.h\n> > @@ -50,6 +50,8 @@\n> >  #ifndef __LINUX_V4L2_CONTROLS_H\n> >  #define __LINUX_V4L2_CONTROLS_H\n> >\n> > +#include <linux/types.h>\n> > +\n> >  /* Control classes */\n> >  #define V4L2_CTRL_CLASS_USER\t\t0x00980000\t/* Old-style 'user' controls */\n> >  #define V4L2_CTRL_CLASS_MPEG\t\t0x00990000\t/* MPEG-compression controls */\n> > @@ -531,6 +533,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type {\n> >  };\n> >  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER\t(V4L2_CID_MPEG_BASE+381)\n> >  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP\t(V4L2_CID_MPEG_BASE+382)\n> > +#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION\t(V4L2_CID_MPEG_BASE+383)\n> > +#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET\t\t(V4L2_CID_MPEG_BASE+384)\n> >  #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP\t(V4L2_CID_MPEG_BASE+400)\n> >  #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP\t(V4L2_CID_MPEG_BASE+401)\n> >  #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP\t(V4L2_CID_MPEG_BASE+402)\n> > diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\n> > index 1a95662f5ad0..5e739270116d 100644\n> > --- a/include/linux/videodev2.h\n> > +++ b/include/linux/videodev2.h\n> > @@ -128,6 +128,13 @@ enum v4l2_field {\n> >  \t((field) == V4L2_FIELD_BOTTOM ||\\\n> >  \t (field) == V4L2_FIELD_TOP ||\\\n> >  \t (field) == V4L2_FIELD_ALTERNATE)\n> > +#define V4L2_FIELD_IS_INTERLACED(field) \\\n> > +\t((field) == V4L2_FIELD_INTERLACED ||\\\n> > +\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n> > +\t (field) == V4L2_FIELD_INTERLACED_BT)\n> > +#define V4L2_FIELD_IS_SEQUENTIAL(field) \\\n> > +\t((field) == V4L2_FIELD_SEQ_TB ||\\\n> > +\t (field) == V4L2_FIELD_SEQ_BT)\n> >\n> >  enum v4l2_buf_type {\n> >  \tV4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,\n> > @@ -143,6 +150,7 @@ enum v4l2_buf_type {\n> >  \tV4L2_BUF_TYPE_SDR_CAPTURE          = 11,\n> >  \tV4L2_BUF_TYPE_SDR_OUTPUT           = 12,\n> >  \tV4L2_BUF_TYPE_META_CAPTURE         = 13,\n> > +\tV4L2_BUF_TYPE_META_OUTPUT\t   = 14,\n> >  \t/* Deprecated, do not use */\n> >  \tV4L2_BUF_TYPE_PRIVATE              = 0x80,\n> >  };\n> > @@ -158,7 +166,8 @@ enum v4l2_buf_type {\n> >  \t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY\t\\\n> >  \t || (type) == V4L2_BUF_TYPE_VBI_OUTPUT\t\t\t\\\n> >  \t || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT\t\t\\\n> > -\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)\n> > +\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT\t\t\t\\\n> > +\t || (type) == V4L2_BUF_TYPE_META_OUTPUT)\n> >\n> >  enum v4l2_tuner_type {\n> >  \tV4L2_TUNER_RADIO\t     = 1,\n> > @@ -223,8 +232,8 @@ enum v4l2_colorspace {\n> >  \t/* For RGB colorspaces such as produces by most webcams. */\n> >  \tV4L2_COLORSPACE_SRGB          = 8,\n> >\n> > -\t/* AdobeRGB colorspace */\n> > -\tV4L2_COLORSPACE_ADOBERGB      = 9,\n> > +\t/* opRGB colorspace */\n> > +\tV4L2_COLORSPACE_OPRGB         = 9,\n> >\n> >  \t/* BT.2020 colorspace, used for UHDTV. */\n> >  \tV4L2_COLORSPACE_BT2020        = 10,\n> > @@ -256,7 +265,7 @@ enum v4l2_xfer_func {\n> >  \t *\n> >  \t * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB\n> >  \t *\n> > -\t * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB\n> > +\t * V4L2_COLORSPACE_OPRGB: V4L2_XFER_FUNC_OPRGB\n> >  \t *\n> >  \t * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M\n> >  \t *\n> > @@ -267,7 +276,7 @@ enum v4l2_xfer_func {\n> >  \tV4L2_XFER_FUNC_DEFAULT     = 0,\n> >  \tV4L2_XFER_FUNC_709         = 1,\n> >  \tV4L2_XFER_FUNC_SRGB        = 2,\n> > -\tV4L2_XFER_FUNC_ADOBERGB    = 3,\n> > +\tV4L2_XFER_FUNC_OPRGB       = 3,\n> >  \tV4L2_XFER_FUNC_SMPTE240M   = 4,\n> >  \tV4L2_XFER_FUNC_NONE        = 5,\n> >  \tV4L2_XFER_FUNC_DCI_P3      = 6,\n> > @@ -279,7 +288,7 @@ enum v4l2_xfer_func {\n> >   * This depends on the colorspace.\n> >   */\n> >  #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \\\n> > -\t((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \\\n> > +\t((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \\\n> >  \t ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \\\n> >  \t  ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \\\n> >  \t   ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \\\n> > @@ -293,7 +302,7 @@ enum v4l2_ycbcr_encoding {\n> >  \t *\n> >  \t * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,\n> >  \t * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB,\n> > -\t * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n> > +\t * V4L2_COLORSPACE_OPRGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n> >  \t *\n> >  \t * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709\n> >  \t *\n> > @@ -378,6 +387,15 @@ enum v4l2_quantization {\n> >  \t (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \\\n> >  \t V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))\n> >\n> > +/*\n> > + * Deprecated names for opRGB colorspace (IEC 61966-2-5)\n> > + *\n> > + * WARNING: Please don't use these deprecated defines in your code, as\n> > + * there is a chance we have to remove them in the future.\n> > + */\n> > +#define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB\n> > +#define V4L2_XFER_FUNC_ADOBERGB  V4L2_XFER_FUNC_OPRGB\n> > +\n> >  enum v4l2_priority {\n> >  \tV4L2_PRIORITY_UNSET       = 0,  /* not initialized */\n> >  \tV4L2_PRIORITY_BACKGROUND  = 1,\n> > @@ -454,6 +472,7 @@ struct v4l2_capability {\n> >  #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */\n> >  #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */\n> >  #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */\n> > +#define V4L2_CAP_META_OUTPUT\t\t0x08000000  /* Is a metadata output device */\n> >\n> >  #define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */\n> >\n> > @@ -537,6 +556,10 @@ struct v4l2_pix_format {\n> >  #define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */\n> >  #define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */\n> >  #define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */\n> > +#define V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */\n> > +#define V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */\n> > +#define V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */\n> > +#define V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */\n> >  #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */\n> >  #define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */\n> >  #define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */\n> > @@ -631,6 +654,7 @@ struct v4l2_pix_format {\n> >  #define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */\n> >  #define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */\n> >  #define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */\n> > +#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */\n> >  #define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */\n> >  #define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */\n> >  #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */\n> > @@ -672,6 +696,8 @@ struct v4l2_pix_format {\n> >  #define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */\n> >  #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */\n> >  #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */\n> > +#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */\n> > +#define V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */\n> >\n> >  /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */\n> >  #define V4L2_PIX_FMT_IPU3_SBGGR10\tv4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */\n> > @@ -699,6 +725,7 @@ struct v4l2_pix_format {\n> >  #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */\n> >  #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */\n> >  #define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */\n> > +#define V4L2_META_FMT_D4XX        v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */\n> >\n> >  /* priv field value to indicates that subsequent fields are valid. */\n> >  #define V4L2_PIX_FMT_PRIV_MAGIC\t\t0xfeedcafe\n> > @@ -852,9 +879,17 @@ struct v4l2_requestbuffers {\n> >  \t__u32\t\t\tcount;\n> >  \t__u32\t\t\ttype;\t\t/* enum v4l2_buf_type */\n> >  \t__u32\t\t\tmemory;\t\t/* enum v4l2_memory */\n> > -\t__u32\t\t\treserved[2];\n> > +\t__u32\t\t\tcapabilities;\n> > +\t__u32\t\t\treserved[1];\n> >  };\n> >\n> > +/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */\n> > +#define V4L2_BUF_CAP_SUPPORTS_MMAP\t(1 << 0)\n> > +#define V4L2_BUF_CAP_SUPPORTS_USERPTR\t(1 << 1)\n> > +#define V4L2_BUF_CAP_SUPPORTS_DMABUF\t(1 << 2)\n> > +#define V4L2_BUF_CAP_SUPPORTS_REQUESTS\t(1 << 3)\n> > +#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)\n> > +\n> >  /**\n> >   * struct v4l2_plane - plane info for multi-planar buffers\n> >   * @bytesused:\t\tnumber of bytes occupied by data in the plane (payload)\n> > @@ -913,6 +948,7 @@ struct v4l2_plane {\n> >   * @length:\tsize in bytes of the buffer (NOT its payload) for single-plane\n> >   *\t\tbuffers (when type != *_MPLANE); number of elements in the\n> >   *\t\tplanes array for multi-plane buffers\n> > + * @request_fd: fd of the request that this buffer should use\n> >   *\n> >   * Contains data exchanged by application and driver using one of the Streaming\n> >   * I/O methods.\n> > @@ -937,9 +973,24 @@ struct v4l2_buffer {\n> >  \t} m;\n> >  \t__u32\t\t\tlength;\n> >  \t__u32\t\t\treserved2;\n> > -\t__u32\t\t\treserved;\n> > +\tunion {\n> > +\t\t__s32\t\trequest_fd;\n> > +\t\t__u32\t\treserved;\n> > +\t};\n> >  };\n> >\n> > +/**\n> > + * v4l2_timeval_to_ns - Convert timeval to nanoseconds\n> > + * @ts:\t\tpointer to the timeval variable to be converted\n> > + *\n> > + * Returns the scalar nanosecond representation of the timeval\n> > + * parameter.\n> > + */\n> > +static __inline__ __u64 v4l2_timeval_to_ns(const struct timeval *tv)\n> > +{\n> > +\treturn (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000;\n> > +}\n> > +\n> >  /*  Flags for 'flags' field */\n> >  /* Buffer is mapped (flag) */\n> >  #define V4L2_BUF_FLAG_MAPPED\t\t\t0x00000001\n> > @@ -955,6 +1006,8 @@ struct v4l2_buffer {\n> >  #define V4L2_BUF_FLAG_BFRAME\t\t\t0x00000020\n> >  /* Buffer is ready, but the data contained within is corrupted. */\n> >  #define V4L2_BUF_FLAG_ERROR\t\t\t0x00000040\n> > +/* Buffer is added to an unqueued request */\n> > +#define V4L2_BUF_FLAG_IN_REQUEST\t\t0x00000080\n> >  /* timecode field is valid */\n> >  #define V4L2_BUF_FLAG_TIMECODE\t\t\t0x00000100\n> >  /* Buffer is prepared for queuing */\n> > @@ -973,6 +1026,8 @@ struct v4l2_buffer {\n> >  #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE\t\t0x00010000\n> >  /* mem2mem encoder/decoder */\n> >  #define V4L2_BUF_FLAG_LAST\t\t\t0x00100000\n> > +/* request_fd is valid */\n> > +#define V4L2_BUF_FLAG_REQUEST_FD\t\t0x00800000\n> >\n> >  /**\n> >   * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor\n> > @@ -1396,6 +1451,13 @@ struct v4l2_bt_timings {\n> >   * InfoFrame).\n> >   */\n> >  #define V4L2_DV_FL_HAS_HDMI_VIC\t\t\t(1 << 8)\n> > +/*\n> > + * CEA-861 specific: only valid for video receivers.\n> > + * If set, then HW can detect the difference between regular FPS and\n> > + * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with\n> > + * the V4L2_DV_FL_CAN_REDUCE_FPS flag set.\n> > + */\n> > +#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS\t(1 << 9)\n> >\n> >  /* A few useful defines to calculate the total blanking and frame sizes */\n> >  #define V4L2_DV_BT_BLANKING_WIDTH(bt) \\\n> > @@ -1593,7 +1655,8 @@ struct v4l2_ext_controls {\n> >  \t};\n> >  \t__u32 count;\n> >  \t__u32 error_idx;\n> > -\t__u32 reserved[2];\n> > +\t__s32 request_fd;\n> > +\t__u32 reserved[1];\n> >  \tstruct v4l2_ext_control *controls;\n> >  };\n> >\n> > @@ -1604,6 +1667,7 @@ struct v4l2_ext_controls {\n> >  #define V4L2_CTRL_MAX_DIMS\t  (4)\n> >  #define V4L2_CTRL_WHICH_CUR_VAL   0\n> >  #define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000\n> > +#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000\n> >\n> >  enum v4l2_ctrl_type {\n> >  \tV4L2_CTRL_TYPE_INTEGER\t     = 1,\n> > @@ -2294,6 +2358,7 @@ struct v4l2_dbg_chip_info {\n> >   *\t\treturn: number of created buffers\n> >   * @memory:\tenum v4l2_memory; buffer memory type\n> >   * @format:\tframe format, for which buffers are requested\n> > + * @capabilities: capabilities of this buffer type.\n> >   * @reserved:\tfuture extensions\n> >   */\n> >  struct v4l2_create_buffers {\n> > @@ -2301,7 +2366,8 @@ struct v4l2_create_buffers {\n> >  \t__u32\t\t\tcount;\n> >  \t__u32\t\t\tmemory;\n> >  \tstruct v4l2_format\tformat;\n> > -\t__u32\t\t\treserved[8];\n> > +\t__u32\t\t\tcapabilities;\n> > +\t__u32\t\t\treserved[7];\n> >  };\n> >\n> >  /*\n> >\n>\n> --\n> Regards\n> --\n> Kieran","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net\n\t[217.70.183.200])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 34E3063387\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Jun 2019 15:29:19 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay7-d.mail.gandi.net (Postfix) with ESMTPSA id AF12920014;\n\tTue,  4 Jun 2019 13:29:16 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","Date":"Tue, 4 Jun 2019 15:30:28 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190604133028.ekost7n56dtn2sti@uno.localdomain>","References":"<20190527090559.26549-1-jacopo@jmondi.org>\n\t<20190527090559.26549-2-jacopo@jmondi.org>\n\t<7681fab7-b2e6-bef7-21cd-d32b80b675c9@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"ekgklbotkowkep4j\"","Content-Disposition":"inline","In-Reply-To":"<7681fab7-b2e6-bef7-21cd-d32b80b675c9@ideasonboard.com>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 04 Jun 2019 13:29:19 -0000"}},{"id":1766,"web_url":"https://patchwork.libcamera.org/comment/1766/","msgid":"<1656484d-fb52-b9ab-f427-60c5b2b7bec1@ideasonboard.com>","date":"2019-06-04T16:56:05","subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 04/06/2019 14:30, Jacopo Mondi wrote:\n> Hi Kieran,\n> \n> On Tue, Jun 04, 2019 at 09:39:59AM +0100, Kieran Bingham wrote:\n>> Hi Jacopo,\n>>\n>> On 27/05/2019 10:05, Jacopo Mondi wrote:\n>>> Update kernel headers to v5.1\n>>>\n>>> The most notable introduction for libcamera is support for\n>>> V4L2_BUF_TYPE_META_OUTPUT.\n>>>\n>>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n>>> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>>> ---\n>>>  include/linux/media.h         |  8 ++++\n>>>  include/linux/v4l2-common.h   | 26 +++++------\n>>>  include/linux/v4l2-controls.h |  4 ++\n>>>  include/linux/videodev2.h     | 88 ++++++++++++++++++++++++++++++-----\n>>\n>> Is this a full import of our 5.1 headers?\n>>\n> \n> Yes, at least this was my intention\n> \n>> Were there no changes in the following?:\n>>\n>> media-bus-format.h\n>> v4l2-dv-timings.h\n>> v4l2-mediabus.h\n>> v4l2-subdev.h\n>>\n>> I think we should do a full import when we do so ...\n> \n> $ export HDR=.../linux-headers/v5.1/include/\n> $ cd include/linux/\n> $ for h in $(ls *.h); do H=$(find $HDR -name $h); diff  $h $H; done\n> $\n> \n> That's the same line I have used to copy the files when I made this\n> patch iirc.\n> \n> Do you see any difference not reported here?\n\n\nAha sorry - I incorrectly compared the kernel api headers, not the uapi\nheaders :)\n\nsources/linux/include/uapi/linux$ git diff --stat v4.19..v5.1\nmedia-bus-format.h media.h v4l2-common.h v4l2-controls.h\nv4l2-dv-timings.h v4l2-mediabus.h v4l2-subdev.h videodev2.h\n include/uapi/linux/media.h         |  8 ++++++++\n include/uapi/linux/v4l2-common.h   | 28 +++++++++++++------------\n include/uapi/linux/v4l2-controls.h |  4 ++++\n include/uapi/linux/videodev2.h     | 90\n++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------\n 4 files changed, 106 insertions(+), 24 deletions(-)\n\n(I believe the small diff is likely because I've diffed un-exported\nheaders as they are stored in git...).\n\nSo this looks good to me.\n\nAcked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n\n\n\n\n> \n> Thanks\n>    j\n> \n>>\n>> --\n>> Kieran\n>>\n>>\n>>>  4 files changed, 102 insertions(+), 24 deletions(-)\n>>>\n>>> diff --git a/include/linux/media.h b/include/linux/media.h\n>>> index c75664617760..29cc82b89ff2 100644\n>>> --- a/include/linux/media.h\n>>> +++ b/include/linux/media.h\n>>> @@ -350,6 +350,14 @@ struct media_v2_topology {\n>>>  #define MEDIA_IOC_ENUM_LINKS\t_IOWR('|', 0x02, struct media_links_enum)\n>>>  #define MEDIA_IOC_SETUP_LINK\t_IOWR('|', 0x03, struct media_link_desc)\n>>>  #define MEDIA_IOC_G_TOPOLOGY\t_IOWR('|', 0x04, struct media_v2_topology)\n>>> +#define MEDIA_IOC_REQUEST_ALLOC\t_IOR ('|', 0x05, int)\n>>> +\n>>> +/*\n>>> + * These ioctls are called on the request file descriptor as returned\n>>> + * by MEDIA_IOC_REQUEST_ALLOC.\n>>> + */\n>>> +#define MEDIA_REQUEST_IOC_QUEUE\t\t_IO('|',  0x80)\n>>> +#define MEDIA_REQUEST_IOC_REINIT\t_IO('|',  0x81)\n>>>\n>>>\n>>>  /*\n>>> diff --git a/include/linux/v4l2-common.h b/include/linux/v4l2-common.h\n>>> index 4f7b892377cd..14de1731b39c 100644\n>>> --- a/include/linux/v4l2-common.h\n>>> +++ b/include/linux/v4l2-common.h\n>>> @@ -79,24 +79,11 @@\n>>>  /* Current composing area plus all padding pixels */\n>>>  #define V4L2_SEL_TGT_COMPOSE_PADDED\t0x0103\n>>>\n>>> -/* Backward compatibility target definitions --- to be removed. */\n>>> -#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n>>> -#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n>>> -#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n>>> -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n>>> -#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n>>> -#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n>>> -\n>>>  /* Selection flags */\n>>>  #define V4L2_SEL_FLAG_GE\t\t(1 << 0)\n>>>  #define V4L2_SEL_FLAG_LE\t\t(1 << 1)\n>>>  #define V4L2_SEL_FLAG_KEEP_CONFIG\t(1 << 2)\n>>>\n>>> -/* Backward compatibility flag definitions --- to be removed. */\n>>> -#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n>>> -#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n>>> -#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n>>> -\n>>>  struct v4l2_edid {\n>>>  \t__u32 pad;\n>>>  \t__u32 start_block;\n>>> @@ -105,4 +92,17 @@ struct v4l2_edid {\n>>>  \t__u8  *edid;\n>>>  };\n>>>\n>>> +/* Backward compatibility target definitions --- to be removed. */\n>>> +#define V4L2_SEL_TGT_CROP_ACTIVE\tV4L2_SEL_TGT_CROP\n>>> +#define V4L2_SEL_TGT_COMPOSE_ACTIVE\tV4L2_SEL_TGT_COMPOSE\n>>> +#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL\tV4L2_SEL_TGT_CROP\n>>> +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE\n>>> +#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS\tV4L2_SEL_TGT_CROP_BOUNDS\n>>> +#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS\n>>> +\n>>> +/* Backward compatibility flag definitions --- to be removed. */\n>>> +#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE\tV4L2_SEL_FLAG_GE\n>>> +#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE\tV4L2_SEL_FLAG_LE\n>>> +#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG\n>>> +\n>>>  #endif /* __V4L2_COMMON__ */\n>>> diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h\n>>> index e4ee10ee917d..06479f2fb3ae 100644\n>>> --- a/include/linux/v4l2-controls.h\n>>> +++ b/include/linux/v4l2-controls.h\n>>> @@ -50,6 +50,8 @@\n>>>  #ifndef __LINUX_V4L2_CONTROLS_H\n>>>  #define __LINUX_V4L2_CONTROLS_H\n>>>\n>>> +#include <linux/types.h>\n>>> +\n>>>  /* Control classes */\n>>>  #define V4L2_CTRL_CLASS_USER\t\t0x00980000\t/* Old-style 'user' controls */\n>>>  #define V4L2_CTRL_CLASS_MPEG\t\t0x00990000\t/* MPEG-compression controls */\n>>> @@ -531,6 +533,8 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type {\n>>>  };\n>>>  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER\t(V4L2_CID_MPEG_BASE+381)\n>>>  #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP\t(V4L2_CID_MPEG_BASE+382)\n>>> +#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION\t(V4L2_CID_MPEG_BASE+383)\n>>> +#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET\t\t(V4L2_CID_MPEG_BASE+384)\n>>>  #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP\t(V4L2_CID_MPEG_BASE+400)\n>>>  #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP\t(V4L2_CID_MPEG_BASE+401)\n>>>  #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP\t(V4L2_CID_MPEG_BASE+402)\n>>> diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h\n>>> index 1a95662f5ad0..5e739270116d 100644\n>>> --- a/include/linux/videodev2.h\n>>> +++ b/include/linux/videodev2.h\n>>> @@ -128,6 +128,13 @@ enum v4l2_field {\n>>>  \t((field) == V4L2_FIELD_BOTTOM ||\\\n>>>  \t (field) == V4L2_FIELD_TOP ||\\\n>>>  \t (field) == V4L2_FIELD_ALTERNATE)\n>>> +#define V4L2_FIELD_IS_INTERLACED(field) \\\n>>> +\t((field) == V4L2_FIELD_INTERLACED ||\\\n>>> +\t (field) == V4L2_FIELD_INTERLACED_TB ||\\\n>>> +\t (field) == V4L2_FIELD_INTERLACED_BT)\n>>> +#define V4L2_FIELD_IS_SEQUENTIAL(field) \\\n>>> +\t((field) == V4L2_FIELD_SEQ_TB ||\\\n>>> +\t (field) == V4L2_FIELD_SEQ_BT)\n>>>\n>>>  enum v4l2_buf_type {\n>>>  \tV4L2_BUF_TYPE_VIDEO_CAPTURE        = 1,\n>>> @@ -143,6 +150,7 @@ enum v4l2_buf_type {\n>>>  \tV4L2_BUF_TYPE_SDR_CAPTURE          = 11,\n>>>  \tV4L2_BUF_TYPE_SDR_OUTPUT           = 12,\n>>>  \tV4L2_BUF_TYPE_META_CAPTURE         = 13,\n>>> +\tV4L2_BUF_TYPE_META_OUTPUT\t   = 14,\n>>>  \t/* Deprecated, do not use */\n>>>  \tV4L2_BUF_TYPE_PRIVATE              = 0x80,\n>>>  };\n>>> @@ -158,7 +166,8 @@ enum v4l2_buf_type {\n>>>  \t || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY\t\\\n>>>  \t || (type) == V4L2_BUF_TYPE_VBI_OUTPUT\t\t\t\\\n>>>  \t || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT\t\t\\\n>>> -\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)\n>>> +\t || (type) == V4L2_BUF_TYPE_SDR_OUTPUT\t\t\t\\\n>>> +\t || (type) == V4L2_BUF_TYPE_META_OUTPUT)\n>>>\n>>>  enum v4l2_tuner_type {\n>>>  \tV4L2_TUNER_RADIO\t     = 1,\n>>> @@ -223,8 +232,8 @@ enum v4l2_colorspace {\n>>>  \t/* For RGB colorspaces such as produces by most webcams. */\n>>>  \tV4L2_COLORSPACE_SRGB          = 8,\n>>>\n>>> -\t/* AdobeRGB colorspace */\n>>> -\tV4L2_COLORSPACE_ADOBERGB      = 9,\n>>> +\t/* opRGB colorspace */\n>>> +\tV4L2_COLORSPACE_OPRGB         = 9,\n>>>\n>>>  \t/* BT.2020 colorspace, used for UHDTV. */\n>>>  \tV4L2_COLORSPACE_BT2020        = 10,\n>>> @@ -256,7 +265,7 @@ enum v4l2_xfer_func {\n>>>  \t *\n>>>  \t * V4L2_COLORSPACE_SRGB, V4L2_COLORSPACE_JPEG: V4L2_XFER_FUNC_SRGB\n>>>  \t *\n>>> -\t * V4L2_COLORSPACE_ADOBERGB: V4L2_XFER_FUNC_ADOBERGB\n>>> +\t * V4L2_COLORSPACE_OPRGB: V4L2_XFER_FUNC_OPRGB\n>>>  \t *\n>>>  \t * V4L2_COLORSPACE_SMPTE240M: V4L2_XFER_FUNC_SMPTE240M\n>>>  \t *\n>>> @@ -267,7 +276,7 @@ enum v4l2_xfer_func {\n>>>  \tV4L2_XFER_FUNC_DEFAULT     = 0,\n>>>  \tV4L2_XFER_FUNC_709         = 1,\n>>>  \tV4L2_XFER_FUNC_SRGB        = 2,\n>>> -\tV4L2_XFER_FUNC_ADOBERGB    = 3,\n>>> +\tV4L2_XFER_FUNC_OPRGB       = 3,\n>>>  \tV4L2_XFER_FUNC_SMPTE240M   = 4,\n>>>  \tV4L2_XFER_FUNC_NONE        = 5,\n>>>  \tV4L2_XFER_FUNC_DCI_P3      = 6,\n>>> @@ -279,7 +288,7 @@ enum v4l2_xfer_func {\n>>>   * This depends on the colorspace.\n>>>   */\n>>>  #define V4L2_MAP_XFER_FUNC_DEFAULT(colsp) \\\n>>> -\t((colsp) == V4L2_COLORSPACE_ADOBERGB ? V4L2_XFER_FUNC_ADOBERGB : \\\n>>> +\t((colsp) == V4L2_COLORSPACE_OPRGB ? V4L2_XFER_FUNC_OPRGB : \\\n>>>  \t ((colsp) == V4L2_COLORSPACE_SMPTE240M ? V4L2_XFER_FUNC_SMPTE240M : \\\n>>>  \t  ((colsp) == V4L2_COLORSPACE_DCI_P3 ? V4L2_XFER_FUNC_DCI_P3 : \\\n>>>  \t   ((colsp) == V4L2_COLORSPACE_RAW ? V4L2_XFER_FUNC_NONE : \\\n>>> @@ -293,7 +302,7 @@ enum v4l2_ycbcr_encoding {\n>>>  \t *\n>>>  \t * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,\n>>>  \t * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_SRGB,\n>>> -\t * V4L2_COLORSPACE_ADOBERGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n>>> +\t * V4L2_COLORSPACE_OPRGB and V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601\n>>>  \t *\n>>>  \t * V4L2_COLORSPACE_REC709 and V4L2_COLORSPACE_DCI_P3: V4L2_YCBCR_ENC_709\n>>>  \t *\n>>> @@ -378,6 +387,15 @@ enum v4l2_quantization {\n>>>  \t (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? \\\n>>>  \t V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))\n>>>\n>>> +/*\n>>> + * Deprecated names for opRGB colorspace (IEC 61966-2-5)\n>>> + *\n>>> + * WARNING: Please don't use these deprecated defines in your code, as\n>>> + * there is a chance we have to remove them in the future.\n>>> + */\n>>> +#define V4L2_COLORSPACE_ADOBERGB V4L2_COLORSPACE_OPRGB\n>>> +#define V4L2_XFER_FUNC_ADOBERGB  V4L2_XFER_FUNC_OPRGB\n>>> +\n>>>  enum v4l2_priority {\n>>>  \tV4L2_PRIORITY_UNSET       = 0,  /* not initialized */\n>>>  \tV4L2_PRIORITY_BACKGROUND  = 1,\n>>> @@ -454,6 +472,7 @@ struct v4l2_capability {\n>>>  #define V4L2_CAP_READWRITE              0x01000000  /* read/write systemcalls */\n>>>  #define V4L2_CAP_ASYNCIO                0x02000000  /* async I/O */\n>>>  #define V4L2_CAP_STREAMING              0x04000000  /* streaming I/O ioctls */\n>>> +#define V4L2_CAP_META_OUTPUT\t\t0x08000000  /* Is a metadata output device */\n>>>\n>>>  #define V4L2_CAP_TOUCH                  0x10000000  /* Is a touch device */\n>>>\n>>> @@ -537,6 +556,10 @@ struct v4l2_pix_format {\n>>>  #define V4L2_PIX_FMT_YUV555  v4l2_fourcc('Y', 'U', 'V', 'O') /* 16  YUV-5-5-5     */\n>>>  #define V4L2_PIX_FMT_YUV565  v4l2_fourcc('Y', 'U', 'V', 'P') /* 16  YUV-5-6-5     */\n>>>  #define V4L2_PIX_FMT_YUV32   v4l2_fourcc('Y', 'U', 'V', '4') /* 32  YUV-8-8-8-8   */\n>>> +#define V4L2_PIX_FMT_AYUV32  v4l2_fourcc('A', 'Y', 'U', 'V') /* 32  AYUV-8-8-8-8  */\n>>> +#define V4L2_PIX_FMT_XYUV32  v4l2_fourcc('X', 'Y', 'U', 'V') /* 32  XYUV-8-8-8-8  */\n>>> +#define V4L2_PIX_FMT_VUYA32  v4l2_fourcc('V', 'U', 'Y', 'A') /* 32  VUYA-8-8-8-8  */\n>>> +#define V4L2_PIX_FMT_VUYX32  v4l2_fourcc('V', 'U', 'Y', 'X') /* 32  VUYX-8-8-8-8  */\n>>>  #define V4L2_PIX_FMT_HI240   v4l2_fourcc('H', 'I', '2', '4') /*  8  8-bit color   */\n>>>  #define V4L2_PIX_FMT_HM12    v4l2_fourcc('H', 'M', '1', '2') /*  8  YUV 4:2:0 16x16 macroblocks */\n>>>  #define V4L2_PIX_FMT_M420    v4l2_fourcc('M', '4', '2', '0') /* 12  YUV 4:2:0 2 lines y, 1 line uv interleaved */\n>>> @@ -631,6 +654,7 @@ struct v4l2_pix_format {\n>>>  #define V4L2_PIX_FMT_H263     v4l2_fourcc('H', '2', '6', '3') /* H263          */\n>>>  #define V4L2_PIX_FMT_MPEG1    v4l2_fourcc('M', 'P', 'G', '1') /* MPEG-1 ES     */\n>>>  #define V4L2_PIX_FMT_MPEG2    v4l2_fourcc('M', 'P', 'G', '2') /* MPEG-2 ES     */\n>>> +#define V4L2_PIX_FMT_MPEG2_SLICE v4l2_fourcc('M', 'G', '2', 'S') /* MPEG-2 parsed slice data */\n>>>  #define V4L2_PIX_FMT_MPEG4    v4l2_fourcc('M', 'P', 'G', '4') /* MPEG-4 part 2 ES */\n>>>  #define V4L2_PIX_FMT_XVID     v4l2_fourcc('X', 'V', 'I', 'D') /* Xvid           */\n>>>  #define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */\n>>> @@ -672,6 +696,8 @@ struct v4l2_pix_format {\n>>>  #define V4L2_PIX_FMT_Z16      v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */\n>>>  #define V4L2_PIX_FMT_MT21C    v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode  */\n>>>  #define V4L2_PIX_FMT_INZI     v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */\n>>> +#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */\n>>> +#define V4L2_PIX_FMT_CNF4     v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */\n>>>\n>>>  /* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */\n>>>  #define V4L2_PIX_FMT_IPU3_SBGGR10\tv4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */\n>>> @@ -699,6 +725,7 @@ struct v4l2_pix_format {\n>>>  #define V4L2_META_FMT_VSP1_HGO    v4l2_fourcc('V', 'S', 'P', 'H') /* R-Car VSP1 1-D Histogram */\n>>>  #define V4L2_META_FMT_VSP1_HGT    v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */\n>>>  #define V4L2_META_FMT_UVC         v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */\n>>> +#define V4L2_META_FMT_D4XX        v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */\n>>>\n>>>  /* priv field value to indicates that subsequent fields are valid. */\n>>>  #define V4L2_PIX_FMT_PRIV_MAGIC\t\t0xfeedcafe\n>>> @@ -852,9 +879,17 @@ struct v4l2_requestbuffers {\n>>>  \t__u32\t\t\tcount;\n>>>  \t__u32\t\t\ttype;\t\t/* enum v4l2_buf_type */\n>>>  \t__u32\t\t\tmemory;\t\t/* enum v4l2_memory */\n>>> -\t__u32\t\t\treserved[2];\n>>> +\t__u32\t\t\tcapabilities;\n>>> +\t__u32\t\t\treserved[1];\n>>>  };\n>>>\n>>> +/* capabilities for struct v4l2_requestbuffers and v4l2_create_buffers */\n>>> +#define V4L2_BUF_CAP_SUPPORTS_MMAP\t(1 << 0)\n>>> +#define V4L2_BUF_CAP_SUPPORTS_USERPTR\t(1 << 1)\n>>> +#define V4L2_BUF_CAP_SUPPORTS_DMABUF\t(1 << 2)\n>>> +#define V4L2_BUF_CAP_SUPPORTS_REQUESTS\t(1 << 3)\n>>> +#define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)\n>>> +\n>>>  /**\n>>>   * struct v4l2_plane - plane info for multi-planar buffers\n>>>   * @bytesused:\t\tnumber of bytes occupied by data in the plane (payload)\n>>> @@ -913,6 +948,7 @@ struct v4l2_plane {\n>>>   * @length:\tsize in bytes of the buffer (NOT its payload) for single-plane\n>>>   *\t\tbuffers (when type != *_MPLANE); number of elements in the\n>>>   *\t\tplanes array for multi-plane buffers\n>>> + * @request_fd: fd of the request that this buffer should use\n>>>   *\n>>>   * Contains data exchanged by application and driver using one of the Streaming\n>>>   * I/O methods.\n>>> @@ -937,9 +973,24 @@ struct v4l2_buffer {\n>>>  \t} m;\n>>>  \t__u32\t\t\tlength;\n>>>  \t__u32\t\t\treserved2;\n>>> -\t__u32\t\t\treserved;\n>>> +\tunion {\n>>> +\t\t__s32\t\trequest_fd;\n>>> +\t\t__u32\t\treserved;\n>>> +\t};\n>>>  };\n>>>\n>>> +/**\n>>> + * v4l2_timeval_to_ns - Convert timeval to nanoseconds\n>>> + * @ts:\t\tpointer to the timeval variable to be converted\n>>> + *\n>>> + * Returns the scalar nanosecond representation of the timeval\n>>> + * parameter.\n>>> + */\n>>> +static __inline__ __u64 v4l2_timeval_to_ns(const struct timeval *tv)\n>>> +{\n>>> +\treturn (__u64)tv->tv_sec * 1000000000ULL + tv->tv_usec * 1000;\n>>> +}\n>>> +\n>>>  /*  Flags for 'flags' field */\n>>>  /* Buffer is mapped (flag) */\n>>>  #define V4L2_BUF_FLAG_MAPPED\t\t\t0x00000001\n>>> @@ -955,6 +1006,8 @@ struct v4l2_buffer {\n>>>  #define V4L2_BUF_FLAG_BFRAME\t\t\t0x00000020\n>>>  /* Buffer is ready, but the data contained within is corrupted. */\n>>>  #define V4L2_BUF_FLAG_ERROR\t\t\t0x00000040\n>>> +/* Buffer is added to an unqueued request */\n>>> +#define V4L2_BUF_FLAG_IN_REQUEST\t\t0x00000080\n>>>  /* timecode field is valid */\n>>>  #define V4L2_BUF_FLAG_TIMECODE\t\t\t0x00000100\n>>>  /* Buffer is prepared for queuing */\n>>> @@ -973,6 +1026,8 @@ struct v4l2_buffer {\n>>>  #define V4L2_BUF_FLAG_TSTAMP_SRC_SOE\t\t0x00010000\n>>>  /* mem2mem encoder/decoder */\n>>>  #define V4L2_BUF_FLAG_LAST\t\t\t0x00100000\n>>> +/* request_fd is valid */\n>>> +#define V4L2_BUF_FLAG_REQUEST_FD\t\t0x00800000\n>>>\n>>>  /**\n>>>   * struct v4l2_exportbuffer - export of video buffer as DMABUF file descriptor\n>>> @@ -1396,6 +1451,13 @@ struct v4l2_bt_timings {\n>>>   * InfoFrame).\n>>>   */\n>>>  #define V4L2_DV_FL_HAS_HDMI_VIC\t\t\t(1 << 8)\n>>> +/*\n>>> + * CEA-861 specific: only valid for video receivers.\n>>> + * If set, then HW can detect the difference between regular FPS and\n>>> + * 1000/1001 FPS. Note: This flag is only valid for HDMI VIC codes with\n>>> + * the V4L2_DV_FL_CAN_REDUCE_FPS flag set.\n>>> + */\n>>> +#define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS\t(1 << 9)\n>>>\n>>>  /* A few useful defines to calculate the total blanking and frame sizes */\n>>>  #define V4L2_DV_BT_BLANKING_WIDTH(bt) \\\n>>> @@ -1593,7 +1655,8 @@ struct v4l2_ext_controls {\n>>>  \t};\n>>>  \t__u32 count;\n>>>  \t__u32 error_idx;\n>>> -\t__u32 reserved[2];\n>>> +\t__s32 request_fd;\n>>> +\t__u32 reserved[1];\n>>>  \tstruct v4l2_ext_control *controls;\n>>>  };\n>>>\n>>> @@ -1604,6 +1667,7 @@ struct v4l2_ext_controls {\n>>>  #define V4L2_CTRL_MAX_DIMS\t  (4)\n>>>  #define V4L2_CTRL_WHICH_CUR_VAL   0\n>>>  #define V4L2_CTRL_WHICH_DEF_VAL   0x0f000000\n>>> +#define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000\n>>>\n>>>  enum v4l2_ctrl_type {\n>>>  \tV4L2_CTRL_TYPE_INTEGER\t     = 1,\n>>> @@ -2294,6 +2358,7 @@ struct v4l2_dbg_chip_info {\n>>>   *\t\treturn: number of created buffers\n>>>   * @memory:\tenum v4l2_memory; buffer memory type\n>>>   * @format:\tframe format, for which buffers are requested\n>>> + * @capabilities: capabilities of this buffer type.\n>>>   * @reserved:\tfuture extensions\n>>>   */\n>>>  struct v4l2_create_buffers {\n>>> @@ -2301,7 +2366,8 @@ struct v4l2_create_buffers {\n>>>  \t__u32\t\t\tcount;\n>>>  \t__u32\t\t\tmemory;\n>>>  \tstruct v4l2_format\tformat;\n>>> -\t__u32\t\t\treserved[8];\n>>> +\t__u32\t\t\tcapabilities;\n>>> +\t__u32\t\t\treserved[7];\n>>>  };\n>>>\n>>>  /*\n>>>\n>>\n>> --\n>> Regards\n>> --\n>> Kieran","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 26F2161B88\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  4 Jun 2019 18:56:09 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 856F42D1;\n\tTue,  4 Jun 2019 18:56:08 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1559667368;\n\tbh=3L9r6q+SsvtdsdKh5uuEkp/nmQ/sQi0jDOxUL6pwz/M=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=eLqiKAaODWziDG8nZN/Ox3dXiB3FudZ1xQRRWF3BtGmCVyKcvSc6oKfo69rWRak68\n\tqRPFo5y9kUWbaE+88K4v0nwED37X9Ctp9fWmOiEwp9BoJeSNlga9YiL9NAzf212F/4\n\tvGgBV+W0nB8MfX5TgpDTXo0jTc+CS9sKKBVy8Dwo=","Reply-To":"kieran.bingham@ideasonboard.com","To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20190527090559.26549-1-jacopo@jmondi.org>\n\t<20190527090559.26549-2-jacopo@jmondi.org>\n\t<7681fab7-b2e6-bef7-21cd-d32b80b675c9@ideasonboard.com>\n\t<20190604133028.ekost7n56dtn2sti@uno.localdomain>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<1656484d-fb52-b9ab-f427-60c5b2b7bec1@ideasonboard.com>","Date":"Tue, 4 Jun 2019 17:56:05 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.7.0","MIME-Version":"1.0","In-Reply-To":"<20190604133028.ekost7n56dtn2sti@uno.localdomain>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"7bit","Subject":"Re: [libcamera-devel] [PATCH v2 1/6] include: linux: Update Linux\n\theaders to v5.1","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 04 Jun 2019 16:56:09 -0000"}}]