* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.