mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>
To: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-renesas-soc@vger.kernel.org
Subject: Re: [PATCH 1/3] media: uapi: videodev2: Add 20-bit Bayer formats
Date: Sat, 14 Nov 2026 21:20:54 +0100	[thread overview]
Message-ID: <20261114202054.GF938627@ragnatech.se> (raw)
In-Reply-To: <avWWbro0mM0kW3vu@zed>

Hi Jacopo,

Thanks for your review.

On 2026-11-12 11:37:58 +0100, Jacopo Mondi wrote:
> 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)

I see what you mean.

> 
> Was this intentional ?

It was done intentionally, but I see now that what you point out is 
likely a better way. I was likely influenced by having done the media 
bus documentation patches just before doing this. Will changed to the 
common style.

> 
> > +      - 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
> >
> >

-- 
Kind Regards,
Niklas Söderlund

  reply	other threads:[~2026-11-14 20:20 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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-11-14 20:20     ` Niklas Söderlund [this message]
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
2026-11-14 20:07   ` Niklas Söderlund

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261114202054.GF938627@ragnatech.se \
    --to=niklas.soderlund+renesas@ragnatech.se \
    --cc=jacopo.mondi@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=mchehab@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®