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>
This commit is contained in:
@@ -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
|
||||
---------------------
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user