diff options
author | Jacopo Mondi <jacopo@jmondi.org> | 2021-01-02 11:35:32 +0100 |
---|---|---|
committer | Jacopo Mondi <jacopo@jmondi.org> | 2021-01-25 14:54:04 +0100 |
commit | 021752924b1721db9aae656af6910b50fb78915f (patch) | |
tree | 6ce5ee2367fcb81dfe02b11be1155a3ae9a6889b | |
parent | db19dcb75d1d06dcdb0b9f8fe3de668aca6b8178 (diff) |
libcamera: camera_sensor: Make V4L2_CID_EXPOSURE mandatory
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 and remove the above comment as
the usage of the controls is better reported in the documentation.
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | Documentation/sensor_driver_requirements.rst | 10 | ||||
-rw-r--r-- | src/libcamera/camera_sensor.cpp | 5 |
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); |