diff options
author | Paul Elder <paul.elder@ideasonboard.com> | 2021-02-11 17:50:13 +0900 |
---|---|---|
committer | Paul Elder <paul.elder@ideasonboard.com> | 2021-02-24 19:38:39 +0900 |
commit | edc771ef2fab4ef6619dd970786681b218abdee7 (patch) | |
tree | 45397af189ef4b859b87fde20378f35ef01bfd18 /src | |
parent | 6e65d4225736cec2fb58168e0e66951483f13903 (diff) |
libcamera: camera_sensor: Print warning when orientation is unknown
Print a warning when the orientation of a sensor is unknown. The
location property is still defaulted to external.
Also add a recommended controls list, similar to the optional and
mandatory controls list, to handle controls in a similar situation in
the future.
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libcamera/camera_sensor.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp index c9e8d49b..8a1b9bd2 100644 --- a/src/libcamera/camera_sensor.cpp +++ b/src/libcamera/camera_sensor.cpp @@ -276,12 +276,13 @@ int CameraSensor::init() int CameraSensor::validateSensorDriver() { + int err = 0; + /* * Optional controls are used to register optional sensor properties. If * not present, some values will be defaulted. */ static constexpr uint32_t optionalControls[] = { - V4L2_CID_CAMERA_ORIENTATION, V4L2_CID_CAMERA_SENSOR_ROTATION, }; @@ -294,6 +295,23 @@ int CameraSensor::validateSensorDriver() } /* + * Recommended controls are similar to optional controls, but will + * become mandatory in the near future. Be loud if they're missing. + */ + static constexpr uint32_t recommendedControls[] = { + V4L2_CID_CAMERA_ORIENTATION, + }; + + for (uint32_t ctrl : recommendedControls) { + if (!controls.count(ctrl)) { + LOG(CameraSensor, Warning) + << "Recommended V4L2 control " << utils::hex(ctrl) + << " not supported"; + err = -EINVAL; + } + } + + /* * Make sure the required selection targets are supported. * * Failures in reading any of the targets are not deemed to be fatal, @@ -303,7 +321,6 @@ int CameraSensor::validateSensorDriver() * \todo Make support for selection targets mandatory as soon as all * test platforms have been updated. */ - int err = 0; Rectangle rect; int ret = subdev_->getSelection(pad_, V4L2_SEL_TGT_CROP_BOUNDS, &rect); if (ret) { @@ -446,6 +463,8 @@ int CameraSensor::initProperties() break; } } else { + LOG(CameraSensor, Warning) + << "Failed to retrieve the camera location, setting to External"; propertyValue = properties::CameraLocationExternal; } properties_.set(properties::Location, propertyValue); |