[libcamera-devel] [PATCH v2 02/11] libcamera: camera_sensor: Make V4L2_CID_EXPOSURE mandatory

Jacopo Mondi jacopo at jmondi.org
Tue Jan 19 15:37:02 CET 2021


Add the V4L2_CID_EXPOSURE control to the list of mandatory controls the
sensor driver has to report and document this new requirement.

While at it, re-sort the mandatory V4L2 controls in alphabetical
order in the CameraSensor class.

Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
 Documentation/sensor_driver_requirements.rst | 11 ++++++++++-
 src/libcamera/camera_sensor.cpp              |  3 ++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/Documentation/sensor_driver_requirements.rst b/Documentation/sensor_driver_requirements.rst
index 0e658aaa03b5..187f1c921dbf 100644
--- a/Documentation/sensor_driver_requirements.rst
+++ b/Documentation/sensor_driver_requirements.rst
@@ -24,13 +24,22 @@ The sensor driver is assumed to be fully compliant with the V4L2 specification.
 
 The sensor driver shall support the following V4L2 controls:
 
+* `V4L2_CID_EXPOSURE`_
 * `V4L2_CID_HBLANK`_
 * `V4L2_CID_PIXEL_RATE`_
 
+.. _V4L2_CID_EXPOSURE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/control.html
 .. _V4L2_CID_HBLANK: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-source.html
 .. _V4L2_CID_PIXEL_RATE: https://www.kernel.org/doc/html/latest/userspace-api/media/v4l/ext-ctrls-image-process.html
 
-Both controls are used to compute the sensor output timings.
+The `EXPOSURE` control shall report the image integration time in number of
+lines. While V4L2 doesn't specify a unit for the `EXPOSURE` control, libcamera
+requires it to be expressed as a number of image lines. Camera sensor drivers
+that do not comply with this requirement will need to be adapted or will produce
+incorrect results.
+
+The `HBLANK` and `PIXEL_RATE` controls are used to compute the sensor output
+timings.
 
 Optional Requirements
 ---------------------
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 9abb9d330664..5774578fe61f 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -243,8 +243,9 @@ int CameraSensor::validateSensorDriver()
 	 * - V4L2_CID_HBLANK is used to calculate the line length
 	 */
 	const std::vector<uint32_t> mandatoryControls{
-		V4L2_CID_PIXEL_RATE,
+		V4L2_CID_EXPOSURE,
 		V4L2_CID_HBLANK,
+		V4L2_CID_PIXEL_RATE,
 	};
 
 	ControlList ctrls = subdev_->getControls(mandatoryControls);
-- 
2.29.2



More information about the libcamera-devel mailing list