189 lines
6.2 KiB
ReStructuredText
189 lines
6.2 KiB
ReStructuredText
|
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||
|
|
||
|
.. _flash-controls:
|
||
|
|
||
|
***********************
|
||
|
Flash Control Reference
|
||
|
***********************
|
||
|
|
||
|
The V4L2 flash controls are intended to provide generic access to flash
|
||
|
controller devices. Flash controller devices are typically used in
|
||
|
digital cameras.
|
||
|
|
||
|
The interface can support both LED and xenon flash devices. As of
|
||
|
writing this, there is no xenon flash driver using this interface.
|
||
|
|
||
|
|
||
|
.. _flash-controls-use-cases:
|
||
|
|
||
|
Supported use cases
|
||
|
===================
|
||
|
|
||
|
|
||
|
Unsynchronised LED flash (software strobe)
|
||
|
------------------------------------------
|
||
|
|
||
|
Unsynchronised LED flash is controlled directly by the host as the
|
||
|
sensor. The flash must be enabled by the host before the exposure of the
|
||
|
image starts and disabled once it ends. The host is fully responsible
|
||
|
for the timing of the flash.
|
||
|
|
||
|
Example of such device: Nokia N900.
|
||
|
|
||
|
|
||
|
Synchronised LED flash (hardware strobe)
|
||
|
----------------------------------------
|
||
|
|
||
|
The synchronised LED flash is pre-programmed by the host (power and
|
||
|
timeout) but controlled by the sensor through a strobe signal from the
|
||
|
sensor to the flash.
|
||
|
|
||
|
The sensor controls the flash duration and timing. This information
|
||
|
typically must be made available to the sensor.
|
||
|
|
||
|
|
||
|
LED flash as torch
|
||
|
------------------
|
||
|
|
||
|
LED flash may be used as torch in conjunction with another use case
|
||
|
involving camera or individually.
|
||
|
|
||
|
|
||
|
.. _flash-control-id:
|
||
|
|
||
|
Flash Control IDs
|
||
|
-----------------
|
||
|
|
||
|
``V4L2_CID_FLASH_CLASS (class)``
|
||
|
The FLASH class descriptor.
|
||
|
|
||
|
``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
|
||
|
presence of some faults. See V4L2_CID_FLASH_FAULT.
|
||
|
|
||
|
|
||
|
.. tabularcolumns:: |p{5.7cm}|p{11.8cm}|
|
||
|
|
||
|
.. flat-table::
|
||
|
:header-rows: 0
|
||
|
:stub-columns: 0
|
||
|
|
||
|
* - ``V4L2_FLASH_LED_MODE_NONE``
|
||
|
- Off.
|
||
|
* - ``V4L2_FLASH_LED_MODE_FLASH``
|
||
|
- Flash mode.
|
||
|
* - ``V4L2_FLASH_LED_MODE_TORCH``
|
||
|
- Torch mode.
|
||
|
|
||
|
See V4L2_CID_FLASH_TORCH_INTENSITY.
|
||
|
|
||
|
|
||
|
|
||
|
``V4L2_CID_FLASH_STROBE_SOURCE (menu)``
|
||
|
Defines the source of the flash LED strobe.
|
||
|
|
||
|
.. tabularcolumns:: |p{7.5cm}|p{7.5cm}|
|
||
|
|
||
|
.. flat-table::
|
||
|
:header-rows: 0
|
||
|
:stub-columns: 0
|
||
|
|
||
|
* - ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
|
||
|
- The flash strobe is triggered by using the
|
||
|
V4L2_CID_FLASH_STROBE control.
|
||
|
* - ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``
|
||
|
- The flash strobe is triggered by an external source. Typically
|
||
|
this is a sensor, which makes it possible to synchronise the
|
||
|
flash strobe start to exposure start.
|
||
|
|
||
|
|
||
|
|
||
|
``V4L2_CID_FLASH_STROBE (button)``
|
||
|
Strobe flash. Valid when V4L2_CID_FLASH_LED_MODE is set to
|
||
|
V4L2_FLASH_LED_MODE_FLASH and V4L2_CID_FLASH_STROBE_SOURCE
|
||
|
is set to V4L2_FLASH_STROBE_SOURCE_SOFTWARE. Setting this
|
||
|
control may not be possible in presence of some faults. See
|
||
|
V4L2_CID_FLASH_FAULT.
|
||
|
|
||
|
``V4L2_CID_FLASH_STROBE_STOP (button)``
|
||
|
Stop flash strobe immediately.
|
||
|
|
||
|
``V4L2_CID_FLASH_STROBE_STATUS (boolean)``
|
||
|
Strobe status: whether the flash is strobing at the moment or not.
|
||
|
This is a read-only control.
|
||
|
|
||
|
``V4L2_CID_FLASH_TIMEOUT (integer)``
|
||
|
Hardware timeout for flash. The flash strobe is stopped after this
|
||
|
period of time has passed from the start of the strobe.
|
||
|
|
||
|
``V4L2_CID_FLASH_INTENSITY (integer)``
|
||
|
Intensity of the flash strobe when the flash LED is in flash mode
|
||
|
(V4L2_FLASH_LED_MODE_FLASH). The unit should be milliamps (mA)
|
||
|
if possible.
|
||
|
|
||
|
``V4L2_CID_FLASH_TORCH_INTENSITY (integer)``
|
||
|
Intensity of the flash LED in torch mode
|
||
|
(V4L2_FLASH_LED_MODE_TORCH). The unit should be milliamps (mA)
|
||
|
if possible. Setting this control may not be possible in presence of
|
||
|
some faults. See V4L2_CID_FLASH_FAULT.
|
||
|
|
||
|
``V4L2_CID_FLASH_INDICATOR_INTENSITY (integer)``
|
||
|
Intensity of the indicator LED. The indicator LED may be fully
|
||
|
independent of the flash LED. The unit should be microamps (uA) if
|
||
|
possible.
|
||
|
|
||
|
``V4L2_CID_FLASH_FAULT (bitmask)``
|
||
|
Faults related to the flash. The faults tell about specific problems
|
||
|
in the flash chip itself or the LEDs attached to it. Faults may
|
||
|
prevent further use of some of the flash controls. In particular,
|
||
|
V4L2_CID_FLASH_LED_MODE is set to V4L2_FLASH_LED_MODE_NONE
|
||
|
if the fault affects the flash LED. Exactly which faults have such
|
||
|
an effect is chip dependent. Reading the faults resets the control
|
||
|
and returns the chip to a usable state if possible.
|
||
|
|
||
|
.. tabularcolumns:: |p{8.4cm}|p{9.1cm}|
|
||
|
|
||
|
.. flat-table::
|
||
|
:header-rows: 0
|
||
|
:stub-columns: 0
|
||
|
|
||
|
* - ``V4L2_FLASH_FAULT_OVER_VOLTAGE``
|
||
|
- Flash controller voltage to the flash LED has exceeded the limit
|
||
|
specific to the flash controller.
|
||
|
* - ``V4L2_FLASH_FAULT_TIMEOUT``
|
||
|
- The flash strobe was still on when the timeout set by the user ---
|
||
|
V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
|
||
|
controllers may set this in all such conditions.
|
||
|
* - ``V4L2_FLASH_FAULT_OVER_TEMPERATURE``
|
||
|
- The flash controller has overheated.
|
||
|
* - ``V4L2_FLASH_FAULT_SHORT_CIRCUIT``
|
||
|
- The short circuit protection of the flash controller has been
|
||
|
triggered.
|
||
|
* - ``V4L2_FLASH_FAULT_OVER_CURRENT``
|
||
|
- Current in the LED power supply has exceeded the limit specific to
|
||
|
the flash controller.
|
||
|
* - ``V4L2_FLASH_FAULT_INDICATOR``
|
||
|
- The flash controller has detected a short or open circuit
|
||
|
condition on the indicator LED.
|
||
|
* - ``V4L2_FLASH_FAULT_UNDER_VOLTAGE``
|
||
|
- Flash controller voltage to the flash LED has been below the
|
||
|
minimum limit specific to the flash controller.
|
||
|
* - ``V4L2_FLASH_FAULT_INPUT_VOLTAGE``
|
||
|
- The input voltage of the flash controller is below the limit under
|
||
|
which strobing the flash at full current will not be possible.The
|
||
|
condition persists until this flag is no longer set.
|
||
|
* - ``V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE``
|
||
|
- The temperature of the LED has exceeded its allowed upper limit.
|
||
|
|
||
|
|
||
|
|
||
|
``V4L2_CID_FLASH_CHARGE (boolean)``
|
||
|
Enable or disable charging of the xenon flash capacitor.
|
||
|
|
||
|
``V4L2_CID_FLASH_READY (boolean)``
|
||
|
Is the flash ready to strobe? Xenon flashes require their capacitors
|
||
|
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.
|