The V4L2_CID_FLASH_HW_STROBE_MODE mode control is intended
for devices that are source of an external flash strobe for flash
devices. This part seems to be missing in current Flash control
class, i.e. a means for configuring devices that are not camera
flash drivers but involve a flash related functionality.

The V4L2_CID_FLASH_HW_STROBE_MODE control enables the user
to determine the flash control behavior, for instance, at an image
sensor device.

The control has effect only when V4L2_CID_FLASH_STROBE_SOURCE control
is set to V4L2_FLASH_STROBE_SOURCE_EXTERNAL at a flash subdev, if
a flash subdev is present in the system.

Signed-off-by: Sylwester Nawrocki <snj...@gmail.com>
---

Hi Sakari,

My apologies for not bringing this earlier when you were designing
the Flash control API.
It seems like a use case were a sensor controller drives a strobe
signal for a Flash and the sensor side requires some set up doesn't
quite fit in the Flash Control API.

Or is there already a control allowing to set Flash strobe mode at
the sensor to: OFF, ON (per each exposed frame), AUTO ?

--

Regards,
Sylwester
---
 Documentation/DocBook/media/v4l/controls.xml |   30 ++++++++++++++++++++++++++
 drivers/media/video/v4l2-ctrls.c             |    2 +
 include/linux/videodev2.h                    |    7 ++++++
 3 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/Documentation/DocBook/media/v4l/controls.xml 
b/Documentation/DocBook/media/v4l/controls.xml
index 48a0434..1745187 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -3462,6 +3462,36 @@ interface and may change in the future.</para>
            after strobe during which another strobe will not be
            possible. This is a read-only control.</entry>
          </row>
+         <row>
+           <entry 
spanname="id"><constant>V4L2_CID_FLASH_HW_STROBE_MODE</constant></entry>
+           <entry>menu</entry>
+         </row>
+         <row id="v4l2-flash-hw-strobe-mode">
+           <entry spanname="descr">Determines the mode of hardware flash strobe
+           at the device external to a flash controller, e.g. image sensor. 
This
+           control has effect only when <constant>V4L2_CID_FLASH_STROBE_SOURCE
+           </constant> is set to <constant>V4L2_FLASH_STROBE_SOURCE_EXTERNAL
+           </constant> at the flash controller.
+            </entry>
+         </row>
+         <row>
+           <entrytbl spanname="descr" cols="2">
+             <tbody valign="top">
+               <row>
+                 
<entry><constant>V4L2_FLASH_HW_STROBE_MODE_OFF</constant></entry>
+                 <entry>Flash strobe disabled.</entry>
+               </row>
+               <row>
+                 
<entry><constant>V4L2_FLASH_HW_STROBE_MODE_ON</constant></entry>
+                 <entry>Flash strobe enabled for each exposed frame.</entry>
+               </row>
+               <row>
+                 
<entry><constant>V4L2_FLASH_HW_STROBE_MODE_AUTO</constant></entry>
+                 <entry>Flash strobe determined automatically.</entry>
+               </row>
+             </tbody>
+           </entrytbl>
+         </row>
          <row><entry></entry></row>
        </tbody>
       </tgroup>
diff --git a/drivers/media/video/v4l2-ctrls.c b/drivers/media/video/v4l2-ctrls.c
index 96ec73d..0d188e3 100644
--- a/drivers/media/video/v4l2-ctrls.c
+++ b/drivers/media/video/v4l2-ctrls.c
@@ -619,6 +619,7 @@ const char *v4l2_ctrl_get_name(u32 id)
        case V4L2_CID_FLASH_FAULT:              return "Faults";
        case V4L2_CID_FLASH_CHARGE:             return "Charge";
        case V4L2_CID_FLASH_READY:              return "Ready to strobe";
+       case V4L2_CID_FLASH_HW_STROBE_MODE:     return "Hardware strobe mode";

        default:
                return NULL;
@@ -699,6 +700,7 @@ void v4l2_ctrl_fill(u32 id, const char **name, enum 
v4l2_ctrl_type *type,
        case V4L2_CID_TUNE_PREEMPHASIS:
        case V4L2_CID_FLASH_LED_MODE:
        case V4L2_CID_FLASH_STROBE_SOURCE:
+       case V4L2_CID_FLASH_HW_STROBE_MODE:
        case V4L2_CID_MPEG_VIDEO_HEADER_MODE:
        case V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE:
        case V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE:
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index d43149c..7ffb47d 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -1705,6 +1705,13 @@ enum v4l2_flash_strobe_source {
 #define V4L2_CID_FLASH_CHARGE                  (V4L2_CID_FLASH_CLASS_BASE + 11)
 #define V4L2_CID_FLASH_READY                   (V4L2_CID_FLASH_CLASS_BASE + 12)

+#define V4L2_CID_FLASH_HW_STROBE_MODE          (V4L2_CID_FLASH_CLASS_BASE + 13)
+enum v4l2_flash_hw_strobe_mode {
+       V4L2_FLASH_HW_STROBE_OFF,
+       V4L2_FLASH_HW_STROBE_ON,
+       V4L2_FLASH_HW_STROBE_AUTO,
+};
+
 /*
  *     T U N I N G
  */
--
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to