[libcamera-devel] [PATCH v2 1/2] libcamera: camera_sensor: Print warning when orientation is unknown
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Feb 22 09:44:42 CET 2021
Hi Paul,
Thank you for the patch.
On Mon, Feb 22, 2021 at 05:01:11PM +0900, Paul Elder wrote:
> Print a warning when the orientation of a sensor is unknown. The
> location property is still defaulted to external.
>
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> Changes in v2:
> - expand the warning message
> ---
> src/libcamera/camera_sensor.cpp | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index c9e8d49b..d7785f63 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -446,6 +446,12 @@ int CameraSensor::initProperties()
> break;
> }
> } else {
> + LOG(CameraSensor, Warning)
> + << "Failed to retrieve the camera location, setting to External";
> + LOG(CameraSensor, Warning)
> + << "The sensor kernel driver needs to be fixed";
> + LOG(CameraSensor, Warning)
> + << "See Documentation/sensor_driver_requirements.rst in the libcamera sources for more information";
> propertyValue = properties::CameraLocationExternal;
> }
> properties_.set(properties::Location, propertyValue);
As an alternative approach, to tap into the existing infrastructure, how
about this ?
diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
index 0ea54a088a40..1987e84bfb9a 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,
};
@@ -293,6 +294,24 @@ int CameraSensor::validateSensorDriver()
<< " not supported";
}
+ /*
+ * 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,
+ };
+
+ const ControlIdMap &controls = subdev_->controls().idmap();
+ 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.
*
@@ -303,7 +322,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) {
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list