Linux LED subsystem development
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Richard Leitner <richard.leitner@linux.dev>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>,
	Dave Stevenson <dave.stevenson@raspberrypi.com>,
	Mauro Carvalho Chehab <mchehab@kernel.org>,
	Lee Jones <lee@kernel.org>, Pavel Machek <pavel@kernel.org>,
	linux-media@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-leds@vger.kernel.org, Hans Verkuil <hverkuil@kernel.org>
Subject: Re: [PATCH v7 04/10] Documentation: uAPI: media: add V4L2_CID_FLASH_{DURATION,HW_STROBE_SIGNAL}
Date: Sun, 7 Sep 2025 21:49:53 +0200	[thread overview]
Message-ID: <20250907194953.GA19568@pendragon.ideasonboard.com> (raw)
In-Reply-To: <20250901-ov9282-flash-strobe-v7-4-d58d5a694afc@linux.dev>

Hi Richard,

Thank you for the patch.

On Mon, Sep 01, 2025 at 05:05:09PM +0200, Richard Leitner wrote:
> Add the new strobe duration and hardware strobe signal control to v4l
> uAPI documentation. Additionally add labels for cross-referencing v4l
> controls.
> 
> Signed-off-by: Richard Leitner <richard.leitner@linux.dev>
> ---
>  .../userspace-api/media/v4l/ext-ctrls-flash.rst    | 29 ++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/Documentation/userspace-api/media/v4l/ext-ctrls-flash.rst b/Documentation/userspace-api/media/v4l/ext-ctrls-flash.rst
> index d22c5efb806a183a3ad67ec3e6550b002a51659a..6254420a8ca95929d23ffdc65f40a6e53e30a635 100644
> --- a/Documentation/userspace-api/media/v4l/ext-ctrls-flash.rst
> +++ b/Documentation/userspace-api/media/v4l/ext-ctrls-flash.rst
> @@ -57,6 +57,8 @@ Flash Control IDs
>  ``V4L2_CID_FLASH_CLASS (class)``
>      The FLASH class descriptor.
>  
> +.. _v4l2-cid-flash-led-mode:
> +
>  ``V4L2_CID_FLASH_LED_MODE (menu)``
>      Defines the mode of the flash LED, the high-power white LED attached
>      to the flash controller. Setting this control may not be possible in
> @@ -80,6 +82,8 @@ Flash Control IDs
>  
>  
>  
> +.. _v4l2-cid-flash-strobe-source:
> +
>  ``V4L2_CID_FLASH_STROBE_SOURCE (menu)``
>      Defines the source of the flash LED strobe.
>  
> @@ -186,3 +190,28 @@ Flash Control IDs
>      charged before strobing. LED flashes often require a cooldown period
>      after strobe during which another strobe will not be possible. This
>      is a read-only control.
> +
> +.. _v4l2-cid-flash-duration:
> +
> +``V4L2_CID_FLASH_DURATION (integer)``
> +    Duration of the flash strobe pulse generated by the strobe source,
> +    typically a camera sensor. This method of controlling flash LED strobe
> +    duration has three prerequisites: the strobe source's
> +    :ref:`hardware strobe signal <v4l2-cid-flash-hw-strobe-signal>` must be
> +    enabled, the flash LED driver's :ref:`flash LED mode <v4l2-cid-flash-led-mode>`
> +    must be set to ``V4L2_FLASH_LED_MODE_FLASH``, and the
> +    :ref:`strobe source <v4l2-cid-flash-strobe-source>` must be configured to
> +    ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``. The unit should be microseconds (µs)
> +    if possible.

As mentioned in the review of 01/10, I think this needs to be clarified.
Ideally we should add a new document in
Documentation/userspace-api/media/v4l/ to explain the flash API, but in
the meantime let's at lets improve the description of the duration
control. Here's a proposal.

``V4L2_CID_FLASH_DURATION (integer)``
    Duration of the flash strobe pulse generated by the strobe source, when
    using external strobe. This control shall be implemented by the device
    generating the hardware flash strobe signal, typically a camera sensor,
    connected to a flash controller. It must not be implemented by the flash
    controller.

    This method of controlling flash LED strobe duration has three
    prerequisites: the strobe source's :ref:`hardware strobe signal
    <v4l2-cid-flash-hw-strobe-signal>` must be enabled, the flash controller's
    :ref:`flash LED mode <v4l2-cid-flash-led-mode>` must be set to
    ``V4L2_FLASH_LED_MODE_FLASH``, and its :ref:`strobe source
    <v4l2-cid-flash-strobe-source>` must be configured to
    ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``.

    The unit should be microseconds (µs) if possible.


The second paragraph may be better replaced by expanding the
documentation of V4L2_FLASH_STROBE_SOURCE_EXTERNAL, it seems a better
place to document how external strobe works.

As for the unit, is microseconds really the best option ? I would expect
most sensors to express the strobe pulse width in unit of lines.

I think we also need to decide how to handle camera sensors whose flash
strobe pulse width can't be controlled. For instance, the AR0144 can
output a flash signal, and its width is always equal to the exposure
time. The most straightforward solution seems to implement
V4L2_CID_FLASH_HW_STROBE_SIGNAL but not V4L2_CID_FLASH_DURATION in the
sensor driver. Could this cause issues in any use case ? Is there a
better solution ? I would like this to be documented.

Finally, I think we also need to standardize the flash strobe offset.

> +
> +.. _v4l2-cid-flash-hw-strobe-signal:
> +
> +``V4L2_CID_FLASH_HW_STROBE_SIGNAL (boolean)``

Nitpicking a bit on the name, I would have called this
V4L2_CID_FLASH_STROBE_OUTPUT_ENABLE (or _OE).

> +    Enables the output of a hardware strobe signal from the strobe source,
> +    typically a camera sensor. To control a flash LED driver connected to this
> +    hardware signal, the :ref:`flash LED mode <v4l2-cid-flash-led-mode>`
> +    must be set to ``V4L2_FLASH_LED_MODE_FLASH`` and the
> +    :ref:`strobe source <v4l2-cid-flash-strobe-source>` must be set to
> +    ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``. Provided the flash LED driver
> +    supports it, the length of the strobe signal can be configured by
> +    adjusting its :ref:`flash duration <v4l2-cid-flash-duration>`.

The V4L2_CID_FLASH_HW_STROBE_SIGNAL documentation needs to be clarified
in a similar way as V4L2_CID_FLASH_DURATION.

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2025-09-07 19:50 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-01 15:05 [PATCH v7 00/10] Add strobe duration and hw strobe signal v4l2 ctrl & use it for ov9282 Richard Leitner
2025-09-01 15:05 ` [PATCH v7 01/10] media: v4l: ctrls: add a control for flash/strobe duration Richard Leitner
2025-09-07 18:55   ` Laurent Pinchart
2025-09-08 14:41     ` Richard Leitner
2025-09-08 15:40       ` Laurent Pinchart
2025-09-01 15:05 ` [PATCH v7 02/10] media: v4l2-flash: add support " Richard Leitner
2025-09-07 19:05   ` Laurent Pinchart
2025-09-08 14:15     ` Richard Leitner
2025-09-08 15:39       ` Laurent Pinchart
2025-09-01 15:05 ` [PATCH v7 03/10] media: v4l: ctrls: add a control for enabling hw strobe signal Richard Leitner
2025-09-01 15:05 ` [PATCH v7 04/10] Documentation: uAPI: media: add V4L2_CID_FLASH_{DURATION,HW_STROBE_SIGNAL} Richard Leitner
2025-09-07 19:49   ` Laurent Pinchart [this message]
2025-09-08 12:37     ` Richard Leitner
2025-09-08 15:59       ` Laurent Pinchart
2025-09-09 10:29         ` Richard Leitner
2025-09-17 10:14           ` Richard Leitner
2025-09-17 15:43           ` Sakari Ailus
2025-09-18  8:07             ` Richard Leitner
2025-10-13  9:57             ` Richard Leitner
2025-09-01 15:05 ` [PATCH v7 05/10] media: i2c: ov9282: add output enable register definitions Richard Leitner
2025-09-01 15:05 ` [PATCH v7 06/10] media: i2c: ov9282: add hardware strobe signal v4l2 control Richard Leitner
2025-09-01 20:57   ` Sakari Ailus
2025-09-03  6:58     ` Richard Leitner
2025-09-07 20:08       ` Laurent Pinchart
2025-09-08 12:09         ` Richard Leitner
2025-09-08 13:47           ` Laurent Pinchart
2025-09-08 14:47             ` Richard Leitner
2025-09-01 15:05 ` [PATCH v7 07/10] media: i2c: ov9282: add strobe_duration " Richard Leitner
2025-09-01 20:55   ` Sakari Ailus
2025-09-03  6:54     ` Richard Leitner
2025-09-07 20:18       ` Laurent Pinchart
2025-09-07 20:21         ` Laurent Pinchart
2025-09-08 11:57           ` Richard Leitner
2025-09-08 13:54             ` Laurent Pinchart
2025-09-01 15:05 ` [PATCH v7 08/10] media: i2c: ov9282: add strobe_source " Richard Leitner
2025-09-07 20:20   ` Laurent Pinchart
2025-09-08 11:38     ` Richard Leitner
2025-09-01 15:05 ` [PATCH v7 09/10] media: i2c: ov9282: implement try_ctrl for strobe_duration Richard Leitner
2025-09-01 21:06   ` Sakari Ailus
2025-09-05 17:31   ` kernel test robot
2025-09-01 15:05 ` [PATCH v7 10/10] media: i2c: ov9282: dynamic flash_duration maximum Richard Leitner
2025-09-01 21:16   ` Sakari Ailus
2025-09-03  7:13     ` Richard Leitner
2025-09-03  7:48       ` Sakari Ailus
2025-09-03  8:24         ` Richard Leitner
2025-09-03  8:55           ` Sakari Ailus

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=20250907194953.GA19568@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=hverkuil@kernel.org \
    --cc=lee@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=pavel@kernel.org \
    --cc=richard.leitner@linux.dev \
    --cc=sakari.ailus@linux.intel.com \
    /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