summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/sensor_driver_requirements.rst10
-rw-r--r--src/libcamera/camera_sensor.cpp5
2 files changed, 11 insertions, 4 deletions
diff --git a/Documentation/sensor_driver_requirements.rst b/Documentation/sensor_driver_requirements.rst
index 1dc8c890..6dcd4e68 100644
--- a/Documentation/sensor_driver_requirements.rst
+++ b/Documentation/sensor_driver_requirements.rst
@@ -24,13 +24,21 @@ 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.
+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 9abb9d33..ca33c009 100644
--- a/src/libcamera/camera_sensor.cpp
+++ b/src/libcamera/camera_sensor.cpp
@@ -239,12 +239,11 @@ int CameraSensor::validateSensorDriver()
/*
* Make sure the sensor driver supports the mandatory controls
* required by the CameraSensor class.
- * - V4L2_CID_PIXEL_RATE is used to calculate the sensor timings
- * - 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);