1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _flash-controls:
4
5***********************
6Flash Control Reference
7***********************
8
9The V4L2 flash controls are intended to provide generic access to flash
10controller devices. Flash controller devices are typically used in
11digital cameras.
12
13The interface can support both LED and xenon flash devices. As of
14writing this, there is no xenon flash driver using this interface.
15
16
17.. _flash-controls-use-cases:
18
19Supported use cases
20===================
21
22
23Unsynchronised LED flash (software strobe)
24------------------------------------------
25
26Unsynchronised LED flash is controlled directly by the host as the
27sensor. The flash must be enabled by the host before the exposure of the
28image starts and disabled once it ends. The host is fully responsible
29for the timing of the flash.
30
31Example of such device: Nokia N900.
32
33
34Synchronised LED flash (hardware strobe)
35----------------------------------------
36
37The synchronised LED flash is pre-programmed by the host (power and
38timeout) but controlled by the sensor through a strobe signal from the
39sensor to the flash.
40
41The sensor controls the flash duration and timing. This information
42typically must be made available to the sensor.
43
44
45LED flash as torch
46------------------
47
48LED flash may be used as torch in conjunction with another use case
49involving camera or individually.
50
51
52.. _flash-control-id:
53
54Flash Control IDs
55-----------------
56
57``V4L2_CID_FLASH_CLASS (class)``
58    The FLASH class descriptor.
59
60``V4L2_CID_FLASH_LED_MODE (menu)``
61    Defines the mode of the flash LED, the high-power white LED attached
62    to the flash controller. Setting this control may not be possible in
63    presence of some faults. See V4L2_CID_FLASH_FAULT.
64
65
66.. tabularcolumns:: |p{5.7cm}|p{11.8cm}|
67
68.. flat-table::
69    :header-rows:  0
70    :stub-columns: 0
71
72    * - ``V4L2_FLASH_LED_MODE_NONE``
73      - Off.
74    * - ``V4L2_FLASH_LED_MODE_FLASH``
75      - Flash mode.
76    * - ``V4L2_FLASH_LED_MODE_TORCH``
77      - Torch mode.
78
79        See V4L2_CID_FLASH_TORCH_INTENSITY.
80
81
82
83``V4L2_CID_FLASH_STROBE_SOURCE (menu)``
84    Defines the source of the flash LED strobe.
85
86.. tabularcolumns:: |p{7.5cm}|p{7.5cm}|
87
88.. flat-table::
89    :header-rows:  0
90    :stub-columns: 0
91
92    * - ``V4L2_FLASH_STROBE_SOURCE_SOFTWARE``
93      - The flash strobe is triggered by using the
94	V4L2_CID_FLASH_STROBE control.
95    * - ``V4L2_FLASH_STROBE_SOURCE_EXTERNAL``
96      - The flash strobe is triggered by an external source. Typically
97	this is a sensor, which makes it possible to synchronise the
98	flash strobe start to exposure start.
99
100
101
102``V4L2_CID_FLASH_STROBE (button)``
103    Strobe flash. Valid when V4L2_CID_FLASH_LED_MODE is set to
104    V4L2_FLASH_LED_MODE_FLASH and V4L2_CID_FLASH_STROBE_SOURCE
105    is set to V4L2_FLASH_STROBE_SOURCE_SOFTWARE. Setting this
106    control may not be possible in presence of some faults. See
107    V4L2_CID_FLASH_FAULT.
108
109``V4L2_CID_FLASH_STROBE_STOP (button)``
110    Stop flash strobe immediately.
111
112``V4L2_CID_FLASH_STROBE_STATUS (boolean)``
113    Strobe status: whether the flash is strobing at the moment or not.
114    This is a read-only control.
115
116``V4L2_CID_FLASH_TIMEOUT (integer)``
117    Hardware timeout for flash. The flash strobe is stopped after this
118    period of time has passed from the start of the strobe.
119
120``V4L2_CID_FLASH_INTENSITY (integer)``
121    Intensity of the flash strobe when the flash LED is in flash mode
122    (V4L2_FLASH_LED_MODE_FLASH). The unit should be milliamps (mA)
123    if possible.
124
125``V4L2_CID_FLASH_TORCH_INTENSITY (integer)``
126    Intensity of the flash LED in torch mode
127    (V4L2_FLASH_LED_MODE_TORCH). The unit should be milliamps (mA)
128    if possible. Setting this control may not be possible in presence of
129    some faults. See V4L2_CID_FLASH_FAULT.
130
131``V4L2_CID_FLASH_INDICATOR_INTENSITY (integer)``
132    Intensity of the indicator LED. The indicator LED may be fully
133    independent of the flash LED. The unit should be microamps (uA) if
134    possible.
135
136``V4L2_CID_FLASH_FAULT (bitmask)``
137    Faults related to the flash. The faults tell about specific problems
138    in the flash chip itself or the LEDs attached to it. Faults may
139    prevent further use of some of the flash controls. In particular,
140    V4L2_CID_FLASH_LED_MODE is set to V4L2_FLASH_LED_MODE_NONE
141    if the fault affects the flash LED. Exactly which faults have such
142    an effect is chip dependent. Reading the faults resets the control
143    and returns the chip to a usable state if possible.
144
145.. tabularcolumns:: |p{8.4cm}|p{9.1cm}|
146
147.. flat-table::
148    :header-rows:  0
149    :stub-columns: 0
150
151    * - ``V4L2_FLASH_FAULT_OVER_VOLTAGE``
152      - Flash controller voltage to the flash LED has exceeded the limit
153	specific to the flash controller.
154    * - ``V4L2_FLASH_FAULT_TIMEOUT``
155      - The flash strobe was still on when the timeout set by the user ---
156	V4L2_CID_FLASH_TIMEOUT control --- has expired. Not all flash
157	controllers may set this in all such conditions.
158    * - ``V4L2_FLASH_FAULT_OVER_TEMPERATURE``
159      - The flash controller has overheated.
160    * - ``V4L2_FLASH_FAULT_SHORT_CIRCUIT``
161      - The short circuit protection of the flash controller has been
162	triggered.
163    * - ``V4L2_FLASH_FAULT_OVER_CURRENT``
164      - Current in the LED power supply has exceeded the limit specific to
165	the flash controller.
166    * - ``V4L2_FLASH_FAULT_INDICATOR``
167      - The flash controller has detected a short or open circuit
168	condition on the indicator LED.
169    * - ``V4L2_FLASH_FAULT_UNDER_VOLTAGE``
170      - Flash controller voltage to the flash LED has been below the
171	minimum limit specific to the flash controller.
172    * - ``V4L2_FLASH_FAULT_INPUT_VOLTAGE``
173      - The input voltage of the flash controller is below the limit under
174	which strobing the flash at full current will not be possible.The
175	condition persists until this flag is no longer set.
176    * - ``V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE``
177      - The temperature of the LED has exceeded its allowed upper limit.
178
179
180
181``V4L2_CID_FLASH_CHARGE (boolean)``
182    Enable or disable charging of the xenon flash capacitor.
183
184``V4L2_CID_FLASH_READY (boolean)``
185    Is the flash ready to strobe? Xenon flashes require their capacitors
186    charged before strobing. LED flashes often require a cooldown period
187    after strobe during which another strobe will not be possible. This
188    is a read-only control.
189