Linux Media Controller development
 help / color / mirror / Atom feed
* [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats
@ 2026-09-10 17:22 Niklas Söderlund
  2026-09-10 17:22 ` [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats Niklas Söderlund
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Niklas Söderlund @ 2026-09-10 17:22 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc,
	Niklas Söderlund

Hello,

This series adds the pixel formats and documentation for the 20-, 24- 
and 28-bit Bayer formats. This is done in preparation of work on the 
Renesas R-Car video capture pipeline which will support these pixel
formats in multiple drivers. For this reason it is posted as a separate
series before the driver work.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
Niklas Söderlund (3):
      media: uapi: videodev2: Add 20-bit Bayer formats
      media: uapi: videodev2: Add 24-bit Bayer formats
      media: uapi: videodev2: Add 28-bit Bayer formats

 .../userspace-api/media/v4l/pixfmt-bayer.rst       |   3 +
 .../userspace-api/media/v4l/pixfmt-srggb20.rst     | 102 +++++++++++++++++++++
 .../userspace-api/media/v4l/pixfmt-srggb24.rst     | 102 +++++++++++++++++++++
 .../userspace-api/media/v4l/pixfmt-srggb28.rst     | 102 +++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ioctl.c               |  12 +++
 include/uapi/linux/videodev2.h                     |  12 +++
 6 files changed, 333 insertions(+)
---
base-commit: f9536a8065d9eed0d9114878c56ffc4e5a18bdfc
change-id: 20260908-v4l2-add-raw-pix-50ca1182ccd2

Best regards,
--  
Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats
  2026-09-10 17:22 [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Niklas Söderlund
@ 2026-09-10 17:22 ` Niklas Söderlund
  2026-11-12 10:37   ` Jacopo Mondi
  2026-09-10 17:22 ` [PATCH 2/3] media: uapi: videodev2: Add 24-bit " Niklas Söderlund
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Niklas Söderlund @ 2026-09-10 17:22 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc,
	Niklas Söderlund

Add 20-bit Bayer formats and documentation.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 .../userspace-api/media/v4l/pixfmt-bayer.rst       |   1 +
 .../userspace-api/media/v4l/pixfmt-srggb20.rst     | 102 +++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ioctl.c               |   4 +
 include/uapi/linux/videodev2.h                     |   4 +
 4 files changed, 111 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
index 8b4e413177f5..b93e66d6a27e 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
@@ -33,3 +33,4 @@ orders. See also `the Wikipedia article on Bayer filter
     pixfmt-srggb14
     pixfmt-srggb14p
     pixfmt-srggb16
+    pixfmt-srggb20
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst b/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst
new file mode 100644
index 000000000000..cf911e93aa8d
--- /dev/null
+++ b/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst
@@ -0,0 +1,102 @@
+.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
+.. c:namespace:: V4L
+
+.. _V4L2-PIX-FMT-SRGGB20:
+.. _v4l2-pix-fmt-sbggr20:
+.. _v4l2-pix-fmt-sgbrg20:
+.. _v4l2-pix-fmt-sgrbg20:
+
+***************************************************************************************************************************
+V4L2_PIX_FMT_SBGGR20 ('BG20'), V4L2_PIX_FMT_SGBRG20 ('GB20'), V4L2_PIX_FMT_SGRBG20 ('GR20'), V4L2_PIX_FMT_SRGGB20 ('RG20'),
+***************************************************************************************************************************
+
+
+====================
+20-bit Bayer formats
+====================
+
+
+Description
+===========
+
+These four pixel formats are raw sRGB / Bayer formats with 20 bits per
+sample. Each sample is stored in a 32-bit word. Each n-pixel row contains
+n/2 green samples and n/2 blue or red samples, with alternating red and blue
+rows. Bytes are stored in memory in little endian order. They are
+conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is
+an example of one sample.
+
+.. cssclass: longtable
+
+.. flat-table:: 20-bit Bayer Formats
+    :header-rows:  2
+    :stub-columns: 0
+
+    * -
+      - :cspan:`31` Sample organization
+    * - Bit
+      - 31
+      - 30
+      - 29
+      - 28
+      - 27
+      - 26
+      - 25
+      - 24
+      - 23
+      - 22
+      - 21
+      - 20
+      - 19
+      - 18
+      - 17
+      - 16
+      - 15
+      - 14
+      - 13
+      - 12
+      - 11
+      - 10
+      - 9
+      - 8
+      - 7
+      - 6
+      - 5
+      - 4
+      - 3
+      - 2
+      - 1
+      - 0
+    * -
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - P\ :sub:`19`
+      - P\ :sub:`18`
+      - P\ :sub:`17`
+      - P\ :sub:`16`
+      - P\ :sub:`15`
+      - P\ :sub:`14`
+      - P\ :sub:`13`
+      - P\ :sub:`12`
+      - P\ :sub:`11`
+      - P\ :sub:`10`
+      - P\ :sub:`9`
+      - P\ :sub:`8`
+      - P\ :sub:`7`
+      - P\ :sub:`6`
+      - P\ :sub:`5`
+      - P\ :sub:`4`
+      - P\ :sub:`3`
+      - P\ :sub:`2`
+      - P\ :sub:`1`
+      - P\ :sub:`0`
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 17ba1ae70735..14cb94591ea8 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1434,6 +1434,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 	case V4L2_PIX_FMT_SGBRG16:	descr = "16-bit Bayer GBGB/RGRG"; break;
 	case V4L2_PIX_FMT_SGRBG16:	descr = "16-bit Bayer GRGR/BGBG"; break;
 	case V4L2_PIX_FMT_SRGGB16:	descr = "16-bit Bayer RGRG/GBGB"; break;
+	case V4L2_PIX_FMT_SBGGR20:	descr = "20-bit Bayer BGBG/GRGR"; break;
+	case V4L2_PIX_FMT_SGBRG20:	descr = "20-bit Bayer GBGB/RGRG"; break;
+	case V4L2_PIX_FMT_SGRBG20:	descr = "20-bit Bayer GRGR/BGBG"; break;
+	case V4L2_PIX_FMT_SRGGB20:	descr = "20-bit Bayer RGRG/GBGB"; break;
 	case V4L2_PIX_FMT_RAW_CRU20:	descr = "14-bit Raw CRU Packed"; break;
 	case V4L2_PIX_FMT_SN9C20X_I420:	descr = "GSPCA SN9C20X I420"; break;
 	case V4L2_PIX_FMT_SPCA501:	descr = "GSPCA SPCA501"; break;
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 5373dba640fa..85a32dee4e21 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -744,6 +744,10 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */
 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16  GRGR.. BGBG.. */
 #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */
+#define V4L2_PIX_FMT_SBGGR20 v4l2_fourcc('B', 'G', '2', '0') /* 20  BGBG.. GRGR.. */
+#define V4L2_PIX_FMT_SGBRG20 v4l2_fourcc('G', 'B', '2', '0') /* 20  GBGB.. RGRG.. */
+#define V4L2_PIX_FMT_SGRBG20 v4l2_fourcc('G', 'R', '2', '0') /* 20  GRGR.. BGBG.. */
+#define V4L2_PIX_FMT_SRGGB20 v4l2_fourcc('R', 'G', '2', '0') /* 20  RGRG.. GBGB.. */
 
 /* HSV formats */
 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] media: uapi: videodev2: Add 24-bit Bayer formats
  2026-09-10 17:22 [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Niklas Söderlund
  2026-09-10 17:22 ` [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats Niklas Söderlund
@ 2026-09-10 17:22 ` Niklas Söderlund
  2026-09-10 17:22 ` [PATCH 3/3] media: uapi: videodev2: Add 28-bit " Niklas Söderlund
  2026-11-12 10:16 ` [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Jacopo Mondi
  3 siblings, 0 replies; 6+ messages in thread
From: Niklas Söderlund @ 2026-09-10 17:22 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc,
	Niklas Söderlund

Add 24-bit Bayer formats and documentation.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 .../userspace-api/media/v4l/pixfmt-bayer.rst       |   1 +
 .../userspace-api/media/v4l/pixfmt-srggb24.rst     | 102 +++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ioctl.c               |   4 +
 include/uapi/linux/videodev2.h                     |   4 +
 4 files changed, 111 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
index b93e66d6a27e..9d76def66648 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
@@ -34,3 +34,4 @@ orders. See also `the Wikipedia article on Bayer filter
     pixfmt-srggb14p
     pixfmt-srggb16
     pixfmt-srggb20
+    pixfmt-srggb24
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-srggb24.rst b/Documentation/userspace-api/media/v4l/pixfmt-srggb24.rst
new file mode 100644
index 000000000000..e08a00882d81
--- /dev/null
+++ b/Documentation/userspace-api/media/v4l/pixfmt-srggb24.rst
@@ -0,0 +1,102 @@
+.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
+.. c:namespace:: V4L
+
+.. _V4L2-PIX-FMT-SRGGB24:
+.. _v4l2-pix-fmt-sbggr24:
+.. _v4l2-pix-fmt-sgbrg24:
+.. _v4l2-pix-fmt-sgrbg24:
+
+***************************************************************************************************************************
+V4L2_PIX_FMT_SBGGR24 ('BG24'), V4L2_PIX_FMT_SGBRG24 ('GB24'), V4L2_PIX_FMT_SGRBG24 ('GR24'), V4L2_PIX_FMT_SRGGB24 ('RG24'),
+***************************************************************************************************************************
+
+
+====================
+24-bit Bayer formats
+====================
+
+
+Description
+===========
+
+These four pixel formats are raw sRGB / Bayer formats with 24 bits per
+sample. Each sample is stored in a 32-bit word. Each n-pixel row contains
+n/2 green samples and n/2 blue or red samples, with alternating red and blue
+rows. Bytes are stored in memory in little endian order. They are
+conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is
+an example of one sample.
+
+.. cssclass: longtable
+
+.. flat-table:: 24-bit Bayer Formats
+    :header-rows:  2
+    :stub-columns: 0
+
+    * -
+      - :cspan:`31` Sample organization
+    * - Bit
+      - 31
+      - 30
+      - 29
+      - 28
+      - 27
+      - 26
+      - 25
+      - 24
+      - 23
+      - 22
+      - 21
+      - 20
+      - 19
+      - 18
+      - 17
+      - 16
+      - 15
+      - 14
+      - 13
+      - 12
+      - 11
+      - 10
+      - 9
+      - 8
+      - 7
+      - 6
+      - 5
+      - 4
+      - 3
+      - 2
+      - 1
+      - 0
+    * -
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - *
+      - P\ :sub:`23`
+      - P\ :sub:`22`
+      - P\ :sub:`21`
+      - P\ :sub:`20`
+      - P\ :sub:`19`
+      - P\ :sub:`18`
+      - P\ :sub:`17`
+      - P\ :sub:`16`
+      - P\ :sub:`15`
+      - P\ :sub:`14`
+      - P\ :sub:`13`
+      - P\ :sub:`12`
+      - P\ :sub:`11`
+      - P\ :sub:`10`
+      - P\ :sub:`9`
+      - P\ :sub:`8`
+      - P\ :sub:`7`
+      - P\ :sub:`6`
+      - P\ :sub:`5`
+      - P\ :sub:`4`
+      - P\ :sub:`3`
+      - P\ :sub:`2`
+      - P\ :sub:`1`
+      - P\ :sub:`0`
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 14cb94591ea8..cf2831cbdbc8 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1438,6 +1438,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 	case V4L2_PIX_FMT_SGBRG20:	descr = "20-bit Bayer GBGB/RGRG"; break;
 	case V4L2_PIX_FMT_SGRBG20:	descr = "20-bit Bayer GRGR/BGBG"; break;
 	case V4L2_PIX_FMT_SRGGB20:	descr = "20-bit Bayer RGRG/GBGB"; break;
+	case V4L2_PIX_FMT_SBGGR24:	descr = "24-bit Bayer BGBG/GRGR"; break;
+	case V4L2_PIX_FMT_SGBRG24:	descr = "24-bit Bayer GBGB/RGRG"; break;
+	case V4L2_PIX_FMT_SGRBG24:	descr = "24-bit Bayer GRGR/BGBG"; break;
+	case V4L2_PIX_FMT_SRGGB24:	descr = "24-bit Bayer RGRG/GBGB"; break;
 	case V4L2_PIX_FMT_RAW_CRU20:	descr = "14-bit Raw CRU Packed"; break;
 	case V4L2_PIX_FMT_SN9C20X_I420:	descr = "GSPCA SN9C20X I420"; break;
 	case V4L2_PIX_FMT_SPCA501:	descr = "GSPCA SPCA501"; break;
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 85a32dee4e21..027c7c7a352c 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -748,6 +748,10 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_SGBRG20 v4l2_fourcc('G', 'B', '2', '0') /* 20  GBGB.. RGRG.. */
 #define V4L2_PIX_FMT_SGRBG20 v4l2_fourcc('G', 'R', '2', '0') /* 20  GRGR.. BGBG.. */
 #define V4L2_PIX_FMT_SRGGB20 v4l2_fourcc('R', 'G', '2', '0') /* 20  RGRG.. GBGB.. */
+#define V4L2_PIX_FMT_SBGGR24 v4l2_fourcc('B', 'G', '2', '4') /* 24  BGBG.. GRGR.. */
+#define V4L2_PIX_FMT_SGBRG24 v4l2_fourcc('G', 'B', '2', '4') /* 24  GBGB.. RGRG.. */
+#define V4L2_PIX_FMT_SGRBG24 v4l2_fourcc('G', 'R', '2', '4') /* 24  GRGR.. BGBG.. */
+#define V4L2_PIX_FMT_SRGGB24 v4l2_fourcc('R', 'G', '2', '4') /* 24  RGRG.. GBGB.. */
 
 /* HSV formats */
 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] media: uapi: videodev2: Add 28-bit Bayer formats
  2026-09-10 17:22 [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Niklas Söderlund
  2026-09-10 17:22 ` [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats Niklas Söderlund
  2026-09-10 17:22 ` [PATCH 2/3] media: uapi: videodev2: Add 24-bit " Niklas Söderlund
@ 2026-09-10 17:22 ` Niklas Söderlund
  2026-11-12 10:16 ` [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Jacopo Mondi
  3 siblings, 0 replies; 6+ messages in thread
From: Niklas Söderlund @ 2026-09-10 17:22 UTC (permalink / raw)
  To: Mauro Carvalho Chehab
  Cc: linux-media, linux-kernel, linux-renesas-soc,
	Niklas Söderlund

Add 28-bit Bayer formats and documentation.

Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
---
 .../userspace-api/media/v4l/pixfmt-bayer.rst       |   1 +
 .../userspace-api/media/v4l/pixfmt-srggb28.rst     | 102 +++++++++++++++++++++
 drivers/media/v4l2-core/v4l2-ioctl.c               |   4 +
 include/uapi/linux/videodev2.h                     |   4 +
 4 files changed, 111 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
index 9d76def66648..ca915889199e 100644
--- a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
+++ b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
@@ -35,3 +35,4 @@ orders. See also `the Wikipedia article on Bayer filter
     pixfmt-srggb16
     pixfmt-srggb20
     pixfmt-srggb24
+    pixfmt-srggb28
diff --git a/Documentation/userspace-api/media/v4l/pixfmt-srggb28.rst b/Documentation/userspace-api/media/v4l/pixfmt-srggb28.rst
new file mode 100644
index 000000000000..34133d430436
--- /dev/null
+++ b/Documentation/userspace-api/media/v4l/pixfmt-srggb28.rst
@@ -0,0 +1,102 @@
+.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
+.. c:namespace:: V4L
+
+.. _V4L2-PIX-FMT-SRGGB28:
+.. _v4l2-pix-fmt-sbggr28:
+.. _v4l2-pix-fmt-sgbrg28:
+.. _v4l2-pix-fmt-sgrbg28:
+
+***************************************************************************************************************************
+V4L2_PIX_FMT_SBGGR28 ('BG28'), V4L2_PIX_FMT_SGBRG28 ('GB28'), V4L2_PIX_FMT_SGRBG28 ('GR28'), V4L2_PIX_FMT_SRGGB28 ('RG28'),
+***************************************************************************************************************************
+
+
+====================
+28-bit Bayer formats
+====================
+
+
+Description
+===========
+
+These four pixel formats are raw sRGB / Bayer formats with 28 bits per
+sample. Each sample is stored in a 32-bit word. Each n-pixel row contains
+n/2 green samples and n/2 blue or red samples, with alternating red and blue
+rows. Bytes are stored in memory in little endian order. They are
+conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is
+an example of one sample.
+
+.. cssclass: longtable
+
+.. flat-table:: 28-bit Bayer Formats
+    :header-rows:  2
+    :stub-columns: 0
+
+    * -
+      - :cspan:`31` Sample organization
+    * - Bit
+      - 31
+      - 30
+      - 29
+      - 28
+      - 27
+      - 26
+      - 25
+      - 24
+      - 23
+      - 22
+      - 21
+      - 20
+      - 19
+      - 18
+      - 17
+      - 16
+      - 15
+      - 14
+      - 13
+      - 12
+      - 11
+      - 10
+      - 9
+      - 8
+      - 7
+      - 6
+      - 5
+      - 4
+      - 3
+      - 2
+      - 1
+      - 0
+    * -
+      - *
+      - *
+      - *
+      - *
+      - P\ :sub:`27`
+      - P\ :sub:`26`
+      - P\ :sub:`25`
+      - P\ :sub:`24`
+      - P\ :sub:`23`
+      - P\ :sub:`22`
+      - P\ :sub:`21`
+      - P\ :sub:`20`
+      - P\ :sub:`19`
+      - P\ :sub:`18`
+      - P\ :sub:`17`
+      - P\ :sub:`16`
+      - P\ :sub:`15`
+      - P\ :sub:`14`
+      - P\ :sub:`13`
+      - P\ :sub:`12`
+      - P\ :sub:`11`
+      - P\ :sub:`10`
+      - P\ :sub:`9`
+      - P\ :sub:`8`
+      - P\ :sub:`7`
+      - P\ :sub:`6`
+      - P\ :sub:`5`
+      - P\ :sub:`4`
+      - P\ :sub:`3`
+      - P\ :sub:`2`
+      - P\ :sub:`1`
+      - P\ :sub:`0`
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index cf2831cbdbc8..e14542ad3228 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1442,6 +1442,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
 	case V4L2_PIX_FMT_SGBRG24:	descr = "24-bit Bayer GBGB/RGRG"; break;
 	case V4L2_PIX_FMT_SGRBG24:	descr = "24-bit Bayer GRGR/BGBG"; break;
 	case V4L2_PIX_FMT_SRGGB24:	descr = "24-bit Bayer RGRG/GBGB"; break;
+	case V4L2_PIX_FMT_SBGGR28:	descr = "28-bit Bayer BGBG/GRGR"; break;
+	case V4L2_PIX_FMT_SGBRG28:	descr = "28-bit Bayer GBGB/RGRG"; break;
+	case V4L2_PIX_FMT_SGRBG28:	descr = "28-bit Bayer GRGR/BGBG"; break;
+	case V4L2_PIX_FMT_SRGGB28:	descr = "28-bit Bayer RGRG/GBGB"; break;
 	case V4L2_PIX_FMT_RAW_CRU20:	descr = "14-bit Raw CRU Packed"; break;
 	case V4L2_PIX_FMT_SN9C20X_I420:	descr = "GSPCA SN9C20X I420"; break;
 	case V4L2_PIX_FMT_SPCA501:	descr = "GSPCA SPCA501"; break;
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 027c7c7a352c..0611ba1e5fd9 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -752,6 +752,10 @@ struct v4l2_pix_format {
 #define V4L2_PIX_FMT_SGBRG24 v4l2_fourcc('G', 'B', '2', '4') /* 24  GBGB.. RGRG.. */
 #define V4L2_PIX_FMT_SGRBG24 v4l2_fourcc('G', 'R', '2', '4') /* 24  GRGR.. BGBG.. */
 #define V4L2_PIX_FMT_SRGGB24 v4l2_fourcc('R', 'G', '2', '4') /* 24  RGRG.. GBGB.. */
+#define V4L2_PIX_FMT_SBGGR28 v4l2_fourcc('B', 'G', '2', '8') /* 28  BGBG.. GRGR.. */
+#define V4L2_PIX_FMT_SGBRG28 v4l2_fourcc('G', 'B', '2', '8') /* 28  GBGB.. RGRG.. */
+#define V4L2_PIX_FMT_SGRBG28 v4l2_fourcc('G', 'R', '2', '8') /* 28  GRGR.. BGBG.. */
+#define V4L2_PIX_FMT_SRGGB28 v4l2_fourcc('R', 'G', '2', '8') /* 28  RGRG.. GBGB.. */
 
 /* HSV formats */
 #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')

-- 
2.55.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats
  2026-09-10 17:22 [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Niklas Söderlund
                   ` (2 preceding siblings ...)
  2026-09-10 17:22 ` [PATCH 3/3] media: uapi: videodev2: Add 28-bit " Niklas Söderlund
@ 2026-11-12 10:16 ` Jacopo Mondi
  3 siblings, 0 replies; 6+ messages in thread
From: Jacopo Mondi @ 2026-11-12 10:16 UTC (permalink / raw)
  To: Niklas Söderlund
  Cc: Mauro Carvalho Chehab, linux-media, linux-kernel,
	linux-renesas-soc

Hi Niklas,

On Thu, Sep 10, 2026 at 07:22:30PM +0200, Niklas Söderlund wrote:
> Hello,
>
> This series adds the pixel formats and documentation for the 20-, 24-
> and 28-bit Bayer formats. This is done in preparation of work on the
> Renesas R-Car video capture pipeline which will support these pixel
> formats in multiple drivers. For this reason it is posted as a separate
> series before the driver work.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
> Niklas Söderlund (3):
>       media: uapi: videodev2: Add 20-bit Bayer formats
>       media: uapi: videodev2: Add 24-bit Bayer formats
>       media: uapi: videodev2: Add 28-bit Bayer formats
>
>  .../userspace-api/media/v4l/pixfmt-bayer.rst       |   3 +
>  .../userspace-api/media/v4l/pixfmt-srggb20.rst     | 102 +++++++++++++++++++++
>  .../userspace-api/media/v4l/pixfmt-srggb24.rst     | 102 +++++++++++++++++++++
>  .../userspace-api/media/v4l/pixfmt-srggb28.rst     | 102 +++++++++++++++++++++
>  drivers/media/v4l2-core/v4l2-ioctl.c               |  12 +++
>  include/uapi/linux/videodev2.h                     |  12 +++

Have you forgot to add the new formats to the table in
v4l2_format_info() in drivers/media/v4l2-core/v4l2-common.c ?



>  6 files changed, 333 insertions(+)
> ---
> base-commit: f9536a8065d9eed0d9114878c56ffc4e5a18bdfc
> change-id: 20260908-v4l2-add-raw-pix-50ca1182ccd2
>
> Best regards,
> --
> Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats
  2026-09-10 17:22 ` [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats Niklas Söderlund
@ 2026-11-12 10:37   ` Jacopo Mondi
  0 siblings, 0 replies; 6+ messages in thread
From: Jacopo Mondi @ 2026-11-12 10:37 UTC (permalink / raw)
  To: Niklas Söderlund
  Cc: Mauro Carvalho Chehab, linux-media, linux-kernel,
	linux-renesas-soc

Hi Niklas

On Thu, Sep 10, 2026 at 07:22:31PM +0200, Niklas Söderlund wrote:
> Add 20-bit Bayer formats and documentation.
>
> Signed-off-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> ---
>  .../userspace-api/media/v4l/pixfmt-bayer.rst       |   1 +
>  .../userspace-api/media/v4l/pixfmt-srggb20.rst     | 102 +++++++++++++++++++++
>  drivers/media/v4l2-core/v4l2-ioctl.c               |   4 +
>  include/uapi/linux/videodev2.h                     |   4 +
>  4 files changed, 111 insertions(+)
>
> diff --git a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
> index 8b4e413177f5..b93e66d6a27e 100644
> --- a/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
> +++ b/Documentation/userspace-api/media/v4l/pixfmt-bayer.rst
> @@ -33,3 +33,4 @@ orders. See also `the Wikipedia article on Bayer filter
>      pixfmt-srggb14
>      pixfmt-srggb14p
>      pixfmt-srggb16
> +    pixfmt-srggb20
> diff --git a/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst b/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst
> new file mode 100644
> index 000000000000..cf911e93aa8d
> --- /dev/null
> +++ b/Documentation/userspace-api/media/v4l/pixfmt-srggb20.rst
> @@ -0,0 +1,102 @@
> +.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
> +.. c:namespace:: V4L
> +
> +.. _V4L2-PIX-FMT-SRGGB20:
> +.. _v4l2-pix-fmt-sbggr20:
> +.. _v4l2-pix-fmt-sgbrg20:
> +.. _v4l2-pix-fmt-sgrbg20:
> +
> +***************************************************************************************************************************
> +V4L2_PIX_FMT_SBGGR20 ('BG20'), V4L2_PIX_FMT_SGBRG20 ('GB20'), V4L2_PIX_FMT_SGRBG20 ('GR20'), V4L2_PIX_FMT_SRGGB20 ('RG20'),
> +***************************************************************************************************************************
> +
> +
> +====================
> +20-bit Bayer formats
> +====================
> +
> +
> +Description
> +===========
> +
> +These four pixel formats are raw sRGB / Bayer formats with 20 bits per
> +sample. Each sample is stored in a 32-bit word. Each n-pixel row contains
> +n/2 green samples and n/2 blue or red samples, with alternating red and blue
> +rows. Bytes are stored in memory in little endian order. They are
> +conventionally described as GRGR... BGBG..., RGRG... GBGB..., etc. Below is
> +an example of one sample.
> +
> +.. cssclass: longtable
> +
> +.. flat-table:: 20-bit Bayer Formats
> +    :header-rows:  2
> +    :stub-columns: 0
> +
> +    * -
> +      - :cspan:`31` Sample organization
> +    * - Bit

One more question, the other RAW formats show a byte-organized table,
where the R G and B components are shown as line-interleaved
components (hope this is clear, have a look at the tables at
Documentation/output/userspace-api/media/v4l/pixfmt-srggb16.html
and compare it with
Documentation/output/userspace-api/media/v4l/pixfmt-srggb20.html)

Was this intentional ?

> +      - 31
> +      - 30
> +      - 29
> +      - 28
> +      - 27
> +      - 26
> +      - 25
> +      - 24
> +      - 23
> +      - 22
> +      - 21
> +      - 20
> +      - 19
> +      - 18
> +      - 17
> +      - 16
> +      - 15
> +      - 14
> +      - 13
> +      - 12
> +      - 11
> +      - 10
> +      - 9
> +      - 8
> +      - 7
> +      - 6
> +      - 5
> +      - 4
> +      - 3
> +      - 2
> +      - 1
> +      - 0
> +    * -
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - *
> +      - P\ :sub:`19`
> +      - P\ :sub:`18`
> +      - P\ :sub:`17`
> +      - P\ :sub:`16`
> +      - P\ :sub:`15`
> +      - P\ :sub:`14`
> +      - P\ :sub:`13`
> +      - P\ :sub:`12`
> +      - P\ :sub:`11`
> +      - P\ :sub:`10`
> +      - P\ :sub:`9`
> +      - P\ :sub:`8`
> +      - P\ :sub:`7`
> +      - P\ :sub:`6`
> +      - P\ :sub:`5`
> +      - P\ :sub:`4`
> +      - P\ :sub:`3`
> +      - P\ :sub:`2`
> +      - P\ :sub:`1`
> +      - P\ :sub:`0`
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> index 17ba1ae70735..14cb94591ea8 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -1434,6 +1434,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
>  	case V4L2_PIX_FMT_SGBRG16:	descr = "16-bit Bayer GBGB/RGRG"; break;
>  	case V4L2_PIX_FMT_SGRBG16:	descr = "16-bit Bayer GRGR/BGBG"; break;
>  	case V4L2_PIX_FMT_SRGGB16:	descr = "16-bit Bayer RGRG/GBGB"; break;
> +	case V4L2_PIX_FMT_SBGGR20:	descr = "20-bit Bayer BGBG/GRGR"; break;
> +	case V4L2_PIX_FMT_SGBRG20:	descr = "20-bit Bayer GBGB/RGRG"; break;
> +	case V4L2_PIX_FMT_SGRBG20:	descr = "20-bit Bayer GRGR/BGBG"; break;
> +	case V4L2_PIX_FMT_SRGGB20:	descr = "20-bit Bayer RGRG/GBGB"; break;
>  	case V4L2_PIX_FMT_RAW_CRU20:	descr = "14-bit Raw CRU Packed"; break;
>  	case V4L2_PIX_FMT_SN9C20X_I420:	descr = "GSPCA SN9C20X I420"; break;
>  	case V4L2_PIX_FMT_SPCA501:	descr = "GSPCA SPCA501"; break;
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 5373dba640fa..85a32dee4e21 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -744,6 +744,10 @@ struct v4l2_pix_format {
>  #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16  GBGB.. RGRG.. */
>  #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16  GRGR.. BGBG.. */
>  #define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16  RGRG.. GBGB.. */
> +#define V4L2_PIX_FMT_SBGGR20 v4l2_fourcc('B', 'G', '2', '0') /* 20  BGBG.. GRGR.. */
> +#define V4L2_PIX_FMT_SGBRG20 v4l2_fourcc('G', 'B', '2', '0') /* 20  GBGB.. RGRG.. */
> +#define V4L2_PIX_FMT_SGRBG20 v4l2_fourcc('G', 'R', '2', '0') /* 20  GRGR.. BGBG.. */
> +#define V4L2_PIX_FMT_SRGGB20 v4l2_fourcc('R', 'G', '2', '0') /* 20  RGRG.. GBGB.. */
>
>  /* HSV formats */
>  #define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
>
> --
> 2.55.0
>
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-11-12 10:38 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-10 17:22 [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Niklas Söderlund
2026-09-10 17:22 ` [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats Niklas Söderlund
2026-11-12 10:37   ` Jacopo Mondi
2026-09-10 17:22 ` [PATCH 2/3] media: uapi: videodev2: Add 24-bit " Niklas Söderlund
2026-09-10 17:22 ` [PATCH 3/3] media: uapi: videodev2: Add 28-bit " Niklas Söderlund
2026-11-12 10:16 ` [PATCH 0/3] media: uapi: videodev2: Add 20-, 24- and 28-bit bayer pixel formats Jacopo Mondi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox