public inbox for linux-media@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation
@ 2026-04-14 10:35 Sakari Ailus
  2026-04-14 15:46 ` Jacopo Mondi
  0 siblings, 1 reply; 5+ messages in thread
From: Sakari Ailus @ 2026-04-14 10:35 UTC (permalink / raw)
  To: linux-media; +Cc: laurent.pinchart, Jacopo Mondi, jai.luthra

Document explicitly that the PIXEL_RATE control reflects the actual
frequency at which the pixels are read in the pixel array. It is thus
orthogonal to analogue binning.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 .../userspace-api/media/v4l/ext-ctrls-image-process.rst      | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
index 6d516f041ca2..8616bcd67270 100644
--- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
+++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
@@ -41,6 +41,11 @@ Image Process Control IDs
     The configuration of the frame rate is performed by selecting the desired
     horizontal and vertical blanking. The unit of this control is Hz.
 
+    Note that this control isn't affected by analogue binning as the pixels are
+    still being read at the same frequency as without analogue binning, only
+    what is being read is different (a single pixel value vs. a binned pixel
+    value based on the values of two or more pixels).
+
 ``V4L2_CID_TEST_PATTERN (menu)``
     Some capture/display/sensor devices have the capability to generate
     test pattern images. These hardware specific test patterns can be
-- 
2.47.3


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

* Re: [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation
  2026-04-14 10:35 [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation Sakari Ailus
@ 2026-04-14 15:46 ` Jacopo Mondi
  2026-04-14 19:00   ` Sakari Ailus
  0 siblings, 1 reply; 5+ messages in thread
From: Jacopo Mondi @ 2026-04-14 15:46 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: linux-media, laurent.pinchart, Jacopo Mondi, jai.luthra

Hi Sakari

On Tue, Apr 14, 2026 at 01:35:59PM +0300, Sakari Ailus wrote:
> Document explicitly that the PIXEL_RATE control reflects the actual
> frequency at which the pixels are read in the pixel array. It is thus
> orthogonal to analogue binning.
>
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  .../userspace-api/media/v4l/ext-ctrls-image-process.rst      | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> index 6d516f041ca2..8616bcd67270 100644
> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> @@ -41,6 +41,11 @@ Image Process Control IDs
>      The configuration of the frame rate is performed by selecting the desired
>      horizontal and vertical blanking. The unit of this control is Hz.
>
> +    Note that this control isn't affected by analogue binning as the pixels are
> +    still being read at the same frequency as without analogue binning, only
> +    what is being read is different (a single pixel value vs. a binned pixel
> +    value based on the values of two or more pixels).
> +

This breaks the model implemented to support "special" (aka analogue
?) binning mode on imx219 where we double the pixel rate to express an
higher frame rate and halve the blanking values before writing them to
registers

I guess we have to keep this mode working not to break existing
userspace, also because it's the only way we can have it working
without the introduction of the FLL and LLP controls.

With the new model and FLL and LLP controls, I presume analog binning
would require userspace to program halved FLL and LLP values ?

Currently in your proposal of V4L2_CID_BINNING_FACTORS it doesn't seem
there is a way to distinguish between  a digital and an analogue
binning mode, they're both 2x2 so I guess it's the driver that has to
realize that if FLL and LLP are smaller the [output width + blank] it
has to activate the analogue binning mode ?


>  ``V4L2_CID_TEST_PATTERN (menu)``
>      Some capture/display/sensor devices have the capability to generate
>      test pattern images. These hardware specific test patterns can be
> --
> 2.47.3
>

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

* Re: [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation
  2026-04-14 15:46 ` Jacopo Mondi
@ 2026-04-14 19:00   ` Sakari Ailus
  2026-04-15 13:35     ` Jacopo Mondi
  0 siblings, 1 reply; 5+ messages in thread
From: Sakari Ailus @ 2026-04-14 19:00 UTC (permalink / raw)
  To: Jacopo Mondi; +Cc: linux-media, laurent.pinchart, jai.luthra

Hi Jacopo,

On Tue, Apr 14, 2026 at 05:46:51PM +0200, Jacopo Mondi wrote:
> Hi Sakari
> 
> On Tue, Apr 14, 2026 at 01:35:59PM +0300, Sakari Ailus wrote:
> > Document explicitly that the PIXEL_RATE control reflects the actual
> > frequency at which the pixels are read in the pixel array. It is thus
> > orthogonal to analogue binning.
> >
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  .../userspace-api/media/v4l/ext-ctrls-image-process.rst      | 5 +++++
> >  1 file changed, 5 insertions(+)
> >
> > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > index 6d516f041ca2..8616bcd67270 100644
> > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > @@ -41,6 +41,11 @@ Image Process Control IDs
> >      The configuration of the frame rate is performed by selecting the desired
> >      horizontal and vertical blanking. The unit of this control is Hz.
> >
> > +    Note that this control isn't affected by analogue binning as the pixels are
> > +    still being read at the same frequency as without analogue binning, only
> > +    what is being read is different (a single pixel value vs. a binned pixel
> > +    value based on the values of two or more pixels).
> > +
> 
> This breaks the model implemented to support "special" (aka analogue
> ?) binning mode on imx219 where we double the pixel rate to express an
> higher frame rate and halve the blanking values before writing them to
> registers

Note that this patch is a clarification to the existing documentation, not
a change as such. It was never expected to be used as it is currently in
the imx219 driver.

> 
> I guess we have to keep this mode working not to break existing
> userspace, also because it's the only way we can have it working
> without the introduction of the FLL and LLP controls.

The other option is indeed to leave the HBLANK as-is but based on a
discussion with Jai I decided to write a patch to remove the rate
multiplier. Overall I'd say it'd be better to change this now rather than
leave imx219 using a different interface behaviour than the rest.

> 
> With the new model and FLL and LLP controls, I presume analog binning
> would require userspace to program halved FLL and LLP values ?

The userspace would in fact use LLP and FLL as the sensor does, there's no
need to divide or multiply these values with another variable.

> 
> Currently in your proposal of V4L2_CID_BINNING_FACTORS it doesn't seem
> there is a way to distinguish between  a digital and an analogue
> binning mode, they're both 2x2 so I guess it's the driver that has to
> realize that if FLL and LLP are smaller the [output width + blank] it
> has to activate the analogue binning mode ?

The driver is indeed responsible for setting the limits for FLL and LLP (or
blanking) controls depending on binning and analogue cropping
configuration, a sensor supporting analogue binning is not a special case
as such.

> 
> 
> >  ``V4L2_CID_TEST_PATTERN (menu)``
> >      Some capture/display/sensor devices have the capability to generate
> >      test pattern images. These hardware specific test patterns can be

-- 
Kind regards,

Sakari Ailus

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

* Re: [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation
  2026-04-14 19:00   ` Sakari Ailus
@ 2026-04-15 13:35     ` Jacopo Mondi
  2026-04-20 21:52       ` Sakari Ailus
  0 siblings, 1 reply; 5+ messages in thread
From: Jacopo Mondi @ 2026-04-15 13:35 UTC (permalink / raw)
  To: Sakari Ailus; +Cc: Jacopo Mondi, linux-media, laurent.pinchart, jai.luthra

Hi Sakari

On Tue, Apr 14, 2026 at 10:00:08PM +0300, Sakari Ailus wrote:
> Hi Jacopo,
>
> On Tue, Apr 14, 2026 at 05:46:51PM +0200, Jacopo Mondi wrote:
> > Hi Sakari
> >
> > On Tue, Apr 14, 2026 at 01:35:59PM +0300, Sakari Ailus wrote:
> > > Document explicitly that the PIXEL_RATE control reflects the actual
> > > frequency at which the pixels are read in the pixel array. It is thus
> > > orthogonal to analogue binning.
> > >
> > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > ---
> > >  .../userspace-api/media/v4l/ext-ctrls-image-process.rst      | 5 +++++
> > >  1 file changed, 5 insertions(+)
> > >
> > > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > index 6d516f041ca2..8616bcd67270 100644
> > > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > @@ -41,6 +41,11 @@ Image Process Control IDs
> > >      The configuration of the frame rate is performed by selecting the desired
> > >      horizontal and vertical blanking. The unit of this control is Hz.
> > >
> > > +    Note that this control isn't affected by analogue binning as the pixels are
> > > +    still being read at the same frequency as without analogue binning, only
> > > +    what is being read is different (a single pixel value vs. a binned pixel
> > > +    value based on the values of two or more pixels).
> > > +
> >
> > This breaks the model implemented to support "special" (aka analogue
> > ?) binning mode on imx219 where we double the pixel rate to express an
> > higher frame rate and halve the blanking values before writing them to
> > registers
>
> Note that this patch is a clarification to the existing documentation, not
> a change as such. It was never expected to be used as it is currently in
> the imx219 driver.
>
> >
> > I guess we have to keep this mode working not to break existing
> > userspace, also because it's the only way we can have it working
> > without the introduction of the FLL and LLP controls.
>
> The other option is indeed to leave the HBLANK as-is but based on a
> discussion with Jai I decided to write a patch to remove the rate
> multiplier. Overall I'd say it'd be better to change this now rather than
> leave imx219 using a different interface behaviour than the rest.
>

imx219 is PiCamera module v2, it's very popular, I would be careful
changing it. If I'm not mistaken (please confirm) your series now
require userspace to program FLL and LLP in units of two lines when
using binning. What would happen to existing userspace with the new
version ?

Again, I would defer it to Dave as the maintainer.

> >
> > With the new model and FLL and LLP controls, I presume analog binning
> > would require userspace to program halved FLL and LLP values ?
>
> The userspace would in fact use LLP and FLL as the sensor does, there's no
> need to divide or multiply these values with another variable.
>
> >
> > Currently in your proposal of V4L2_CID_BINNING_FACTORS it doesn't seem
> > there is a way to distinguish between  a digital and an analogue
> > binning mode, they're both 2x2 so I guess it's the driver that has to
> > realize that if FLL and LLP are smaller the [output width + blank] it
> > has to activate the analogue binning mode ?
>
> The driver is indeed responsible for setting the limits for FLL and LLP (or
> blanking) controls depending on binning and analogue cropping
> configuration, a sensor supporting analogue binning is not a special case
> as such.

Maybe I wasn't clear

The imx219 supports 2 different 2x2 binning modes

#define IMX219_BINNING_X2		0x01
#define IMX219_BINNING_X2_ANALOG	0x03

We currently use X2_ANALOG unconditionally, and your patches do not
change this, I agree.

My thinking was in general, is there a need to distinguish between a
2x2 digital binning and a 2x2 analog binning ? Does the new API allow
to do so ?

>
> >
> >
> > >  ``V4L2_CID_TEST_PATTERN (menu)``
> > >      Some capture/display/sensor devices have the capability to generate
> > >      test pattern images. These hardware specific test patterns can be
>
> --
> Kind regards,
>
> Sakari Ailus

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

* Re: [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation
  2026-04-15 13:35     ` Jacopo Mondi
@ 2026-04-20 21:52       ` Sakari Ailus
  0 siblings, 0 replies; 5+ messages in thread
From: Sakari Ailus @ 2026-04-20 21:52 UTC (permalink / raw)
  To: Jacopo Mondi; +Cc: linux-media, laurent.pinchart, jai.luthra

Hi Jacopo,

On Wed, Apr 15, 2026 at 03:35:39PM +0200, Jacopo Mondi wrote:
> Hi Sakari
> 
> On Tue, Apr 14, 2026 at 10:00:08PM +0300, Sakari Ailus wrote:
> > Hi Jacopo,
> >
> > On Tue, Apr 14, 2026 at 05:46:51PM +0200, Jacopo Mondi wrote:
> > > Hi Sakari
> > >
> > > On Tue, Apr 14, 2026 at 01:35:59PM +0300, Sakari Ailus wrote:
> > > > Document explicitly that the PIXEL_RATE control reflects the actual
> > > > frequency at which the pixels are read in the pixel array. It is thus
> > > > orthogonal to analogue binning.
> > > >
> > > > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > > > ---
> > > >  .../userspace-api/media/v4l/ext-ctrls-image-process.rst      | 5 +++++
> > > >  1 file changed, 5 insertions(+)
> > > >
> > > > diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > > index 6d516f041ca2..8616bcd67270 100644
> > > > --- a/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > > +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-image-process.rst
> > > > @@ -41,6 +41,11 @@ Image Process Control IDs
> > > >      The configuration of the frame rate is performed by selecting the desired
> > > >      horizontal and vertical blanking. The unit of this control is Hz.
> > > >
> > > > +    Note that this control isn't affected by analogue binning as the pixels are
> > > > +    still being read at the same frequency as without analogue binning, only
> > > > +    what is being read is different (a single pixel value vs. a binned pixel
> > > > +    value based on the values of two or more pixels).
> > > > +
> > >
> > > This breaks the model implemented to support "special" (aka analogue
> > > ?) binning mode on imx219 where we double the pixel rate to express an
> > > higher frame rate and halve the blanking values before writing them to
> > > registers
> >
> > Note that this patch is a clarification to the existing documentation, not
> > a change as such. It was never expected to be used as it is currently in
> > the imx219 driver.
> >
> > >
> > > I guess we have to keep this mode working not to break existing
> > > userspace, also because it's the only way we can have it working
> > > without the introduction of the FLL and LLP controls.
> >
> > The other option is indeed to leave the HBLANK as-is but based on a
> > discussion with Jai I decided to write a patch to remove the rate
> > multiplier. Overall I'd say it'd be better to change this now rather than
> > leave imx219 using a different interface behaviour than the rest.
> >
> 
> imx219 is PiCamera module v2, it's very popular, I would be careful
> changing it. If I'm not mistaken (please confirm) your series now
> require userspace to program FLL and LLP in units of two lines when
> using binning. What would happen to existing userspace with the new
> version ?

The unit of LLP and FLL are pixels and lines, respectively. Please see my
other reply <aeaVsZQVHsqlOtGP@kekkonen.localdomain>. This patch isn't
directly related to the imx219 driver, the purpose here was to define it in
a way that left no room for interpretation.

The imx219 driver is a different discussion as it does affect an existing
UAPI.

> 
> Again, I would defer it to Dave as the maintainer.
> 
> > >
> > > With the new model and FLL and LLP controls, I presume analog binning
> > > would require userspace to program halved FLL and LLP values ?
> >
> > The userspace would in fact use LLP and FLL as the sensor does, there's no
> > need to divide or multiply these values with another variable.
> >
> > >
> > > Currently in your proposal of V4L2_CID_BINNING_FACTORS it doesn't seem
> > > there is a way to distinguish between  a digital and an analogue
> > > binning mode, they're both 2x2 so I guess it's the driver that has to
> > > realize that if FLL and LLP are smaller the [output width + blank] it
> > > has to activate the analogue binning mode ?
> >
> > The driver is indeed responsible for setting the limits for FLL and LLP (or
> > blanking) controls depending on binning and analogue cropping
> > configuration, a sensor supporting analogue binning is not a special case
> > as such.
> 
> Maybe I wasn't clear
> 
> The imx219 supports 2 different 2x2 binning modes
> 
> #define IMX219_BINNING_X2		0x01
> #define IMX219_BINNING_X2_ANALOG	0x03
> 
> We currently use X2_ANALOG unconditionally, and your patches do not
> change this, I agree.
> 
> My thinking was in general, is there a need to distinguish between a
> 2x2 digital binning and a 2x2 analog binning ? Does the new API allow
> to do so ?

I think we'd need a new control to do that, if we needed to tell them
apart. I'm fairly certain we'll never need the digital option.

-- 
Kind regards,

Sakari Ailus

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

end of thread, other threads:[~2026-04-20 21:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-14 10:35 [PATCH 1/1] media: Documentation: Improve PIXEL_RATE control documentation Sakari Ailus
2026-04-14 15:46 ` Jacopo Mondi
2026-04-14 19:00   ` Sakari Ailus
2026-04-15 13:35     ` Jacopo Mondi
2026-04-20 21:52       ` Sakari Ailus

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