new file mode 100644
@@ -0,0 +1,89 @@
+From c4dd8eb96b5d6f6e791fc66752a97b362cd885f2 Mon Sep 17 00:00:00 2001
+From: Sakari Ailus <sakari.ailus@linux.intel.com>
+Date: Thu, 24 Aug 2023 10:57:07 +0300
+Subject: [PATCH 1/4] Update kernel headers
+
+Update kernel headers to v6.5 media tree + metadata patches.
+
+Upstream-Status: Pending
+Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
+Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com>
+---
+ include/linux/v4l2-controls.h | 1 -
+ include/linux/videodev2.h | 23 ++++++++++++++++++++++-
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
+index 8a33537..150fa87 100644
+--- a/include/linux/v4l2-controls.h
++++ b/include/linux/v4l2-controls.h
+@@ -1208,7 +1208,6 @@ enum v4l2_jpeg_chroma_subsampling {
+ #define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
+ #define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
+
+-
+ /* Image processing controls */
+
+ #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
+diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
+index 397a99e..bb2d05b 100644
+--- a/include/linux/videodev2.h
++++ b/include/linux/videodev2.h
+@@ -812,6 +812,18 @@ struct v4l2_pix_format {
+ #define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P') /* Rockchip ISP1 3A Parameters */
+ #define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S') /* Rockchip ISP1 3A Statistics */
+
++/*
++ * Line-based metadata formats. Remember to update v4l_fill_fmtdesc() when
++ * adding new ones!
++ */
++#define V4L2_META_FMT_GENERIC_8 v4l2_fourcc('M', 'E', 'T', '8') /* Generic 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_10 v4l2_fourcc('M', 'E', 'C', 'A') /* 10-bit CSI-2 packed 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_12 v4l2_fourcc('M', 'E', 'C', 'C') /* 12-bit CSI-2 packed 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_14 v4l2_fourcc('M', 'E', 'C', 'E') /* 14-bit CSI-2 packed 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_16 v4l2_fourcc('M', 'E', 'C', 'G') /* 16-bit CSI-2 packed 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_20 v4l2_fourcc('M', 'E', 'C', 'K') /* 20-bit CSI-2 packed 8-bit metadata */
++#define V4L2_META_FMT_GENERIC_CSI2_24 v4l2_fourcc('M', 'E', 'C', 'O') /* 24-bit CSI-2 packed 8-bit metadata */
++
+ /* priv field value to indicates that subsequent fields are valid. */
+ #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
+
+@@ -842,6 +854,7 @@ struct v4l2_fmtdesc {
+ #define V4L2_FMT_FLAG_CSC_YCBCR_ENC 0x0080
+ #define V4L2_FMT_FLAG_CSC_HSV_ENC V4L2_FMT_FLAG_CSC_YCBCR_ENC
+ #define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100
++#define V4L2_FMT_FLAG_META_LINE_BASED 0x0200
+
+ /* Frame Size and frame rate enumeration */
+ /*
+@@ -1005,7 +1018,6 @@ struct v4l2_requestbuffers {
+ * pointing to this plane
+ * @fd: when memory is V4L2_MEMORY_DMABUF, a userspace file
+ * descriptor associated with this plane
+- * @m: union of @mem_offset, @userptr and @fd
+ * @data_offset: offset in the plane to the start of data; usually 0,
+ * unless there is a header in front of the data
+ * @reserved: drivers and applications must zero this array
+@@ -2359,10 +2371,19 @@ struct v4l2_sdr_format {
+ * struct v4l2_meta_format - metadata format definition
+ * @dataformat: little endian four character code (fourcc)
+ * @buffersize: maximum size in bytes required for data
++ * @width: number of data units of data per line (valid for line
++ * based formats only, see format documentation)
++ * @height: number of lines of data per buffer (valid for line based
++ * formats only)
++ * @bytesperline: offset between the beginnings of two adjacent lines in
++ * bytes (valid for line based formats only)
+ */
+ struct v4l2_meta_format {
+ __u32 dataformat;
+ __u32 buffersize;
++ __u32 width;
++ __u32 height;
++ __u32 bytesperline;
+ } __attribute__ ((packed));
+
+ /**
+--
+2.34.1
+
new file mode 100644
@@ -0,0 +1,52 @@
+From 94ea50843fa80fd91f8aa3ef3618310a53f40dc6 Mon Sep 17 00:00:00 2001
+From: Sakari Ailus <sakari.ailus@linux.intel.com>
+Date: Fri, 9 May 2025 18:43:38 +0300
+Subject: [PATCH 2/4] Set and get metadata width and height
+
+Support getting and setting the width and height fields of the metadata
+formats. This is required to capture line-based metadata e.g. from camera
+sensors.
+
+Upstream-Status: Pending
+Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
+Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com>
+---
+ yavta.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/yavta.c b/yavta.c
+index ba94bfa..25b95e7 100644
+--- a/yavta.c
++++ b/yavta.c
+@@ -889,13 +889,14 @@ static int video_get_format(struct device *dev)
+ fmt.fmt.pix_mp.plane_fmt[i].sizeimage);
+ }
+ } else if (video_is_meta(dev)) {
+- dev->width = 0;
+- dev->height = 0;
++ dev->width = fmt.fmt.meta.width;
++ dev->height = fmt.fmt.meta.height;
+ dev->num_planes = 1;
+
+- printf("Meta-data format: %s (%08x) buffer size %u\n",
+- v4l2_format_name(fmt.fmt.meta.dataformat), fmt.fmt.meta.dataformat,
+- fmt.fmt.meta.buffersize);
++ printf("Meta-data format: %s (%08x) %ux%u buffer size %u\n",
++ v4l2_format_name(fmt.fmt.meta.dataformat),
++ fmt.fmt.meta.dataformat, fmt.fmt.meta.width,
++ fmt.fmt.meta.height, fmt.fmt.meta.buffersize);
+ } else {
+ dev->width = fmt.fmt.pix.width;
+ dev->height = fmt.fmt.pix.height;
+@@ -951,6 +952,8 @@ static int video_set_format(struct device *dev, unsigned int w, unsigned int h,
+ } else if (video_is_meta(dev)) {
+ fmt.fmt.meta.dataformat = format;
+ fmt.fmt.meta.buffersize = buffer_size;
++ fmt.fmt.meta.width = w;
++ fmt.fmt.meta.height = h;
+ } else {
+ fmt.fmt.pix.width = w;
+ fmt.fmt.pix.height = h;
+--
+2.34.1
+
new file mode 100644
@@ -0,0 +1,42 @@
+From a4f5a948d05827d95ff2f73a997fd3cdba46d2bf Mon Sep 17 00:00:00 2001
+From: Sakari Ailus <sakari.ailus@linux.intel.com>
+Date: Thu, 24 Aug 2023 11:08:56 +0300
+Subject: [PATCH 3/4] Add support for generic metadata formats
+
+Upstream-Status: Pending
+Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
+Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com>
+---
+ yavta.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/yavta.c b/yavta.c
+index 25b95e7..6a494da 100644
+--- a/yavta.c
++++ b/yavta.c
+@@ -340,6 +340,7 @@ static const struct v4l2_format_info {
+ unsigned int fourcc;
+ unsigned char n_planes;
+ } pixel_formats[] = {
++ /* Pixel data formats */
+ { "RGB332", V4L2_PIX_FMT_RGB332, 1 },
+ { "RGB444", V4L2_PIX_FMT_RGB444, 1 },
+ { "ARGB444", V4L2_PIX_FMT_ARGB444, 1 },
+@@ -424,6 +425,14 @@ static const struct v4l2_format_info {
+ { "DV", V4L2_PIX_FMT_DV, 1 },
+ { "MJPEG", V4L2_PIX_FMT_MJPEG, 1 },
+ { "MPEG", V4L2_PIX_FMT_MPEG, 1 },
++ /* Metadata formats */
++ { "GENERIC_8", V4L2_META_FMT_GENERIC_8, 1 },
++ { "GENERIC_CSI2_10", V4L2_META_FMT_GENERIC_CSI2_10, 1 },
++ { "GENERIC_CSI2_12", V4L2_META_FMT_GENERIC_CSI2_12, 1 },
++ { "GENERIC_CSI2_14", V4L2_META_FMT_GENERIC_CSI2_14, 1 },
++ { "GENERIC_CSI2_16", V4L2_META_FMT_GENERIC_CSI2_16, 1 },
++ { "GENERIC_CSI2_20", V4L2_META_FMT_GENERIC_CSI2_20, 1 },
++ { "GENERIC_CSI2_24", V4L2_META_FMT_GENERIC_CSI2_24, 1 },
+ };
+
+ static void list_formats(void)
+--
+2.34.1
+
new file mode 100644
@@ -0,0 +1,31 @@
+From 7d5fc4a3b0982fdc894c946d16fc7152d7da8b30 Mon Sep 17 00:00:00 2001
+From: Rishikesh Donadkar <r-donadkar@ti.com>
+Date: Tue, 7 Jul 2026 13:28:41 +0530
+Subject: [PATCH 4/4] Add metadata layout ctrl
+
+Add V4L2_CID_METADATA_LAYOUT ctrl
+
+Upstream-Status: Pending
+Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com>
+---
+ include/linux/v4l2-controls.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
+index 150fa87..32291d3 100644
+--- a/include/linux/v4l2-controls.h
++++ b/include/linux/v4l2-controls.h
+@@ -1208,6 +1208,10 @@ enum v4l2_jpeg_chroma_subsampling {
+ #define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
+ #define V4L2_CID_NOTIFY_GAINS (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 9)
+
++#define V4L2_CID_METADATA_LAYOUT (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 12)
++#define V4L2_METADATA_LAYOUT_CCS 1U
++
++
+ /* Image processing controls */
+
+ #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
+--
+2.34.1
+
Add patches on top of yavta to capture metadata from sensors like IMX219 Signed-off-by: Rishikesh Donadkar <r-donadkar@ti.com> --- .../yavta/0001-Update-kernel-headers.patch | 89 +++++++++++++++++++ ...et-and-get-metadata-width-and-height.patch | 52 +++++++++++ ...support-for-generic-metadata-formats.patch | 42 +++++++++ .../yavta/0004-Add-metadata-layout-ctrl.patch | 31 +++++++ 4 files changed, 214 insertions(+) create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0001-Update-kernel-headers.patch create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0002-Set-and-get-metadata-width-and-height.patch create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0003-Add-support-for-generic-metadata-formats.patch create mode 100644 meta-arago-extras/recipes-multimedia/v4l2apps/yavta/0004-Add-metadata-layout-ctrl.patch