diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index d7c015e8df81..ce1004a7da52 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2475,6 +2475,9 @@ ioctls.
&VIDIOC-DBG-G-CHIP-IDENT; ioctl.
+
+ Flash API.
+
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index a920ee80f640..9155127ed6ab 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -2092,6 +2092,289 @@ manually or automatically if set to zero. Unit, range and step are driver-specif
For more details about RDS specification, refer to
document, from CENELEC.
+
+
+ Flash Control Reference
+
+
+ Experimental
+
+ This is an experimental
+interface and may change in the future.
+
+
+
+ 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.
+
+
+
+ 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 IDs
+
+
+
+
+
+
+
+
+
+
+ ID
+ Type
+ Description
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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.
+
+
+
+
+
+ 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 synchronises 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.
+
+
+
+
+
+ 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_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.
+
+
+
+
+