[libcamera-devel] [PATCH v2] libcamera: Test sensor's ability to discover ancillary devices

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Apr 25 01:04:29 CEST 2022


Hi Yunke,

Thank you for the patch.

On Thu, Apr 21, 2022 at 06:53:20PM +0900, Yunke Cao via libcamera-devel wrote:
> 
> Use vimc lens to test sensor's ability to discover ancillary lens.
> 
> Tested with/without the recent kernel patch for vimc lens:
> https://lore.kernel.org/linux-media/20220415023855.2568366-1-yunkec@google.com/
> 
> Signed-off-by: Yunke Cao <yunkec at google.com>
> ---
> Changelog since v1:
>  - Dont fail test when lens is not present.
>  - Remove lens from dm.
>  - Tested on both kernels with/without the vimc lens patch.
> 
>  src/libcamera/camera_sensor.cpp |  5 +++++
>  test/camera-sensor.cpp          | 12 ++++++++++++
>  2 files changed, 17 insertions(+)
> 
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index eaa2da6b..fe366267 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -152,6 +152,11 @@ int CameraSensor::init()
>  	 */
>  	if (entity_->device()->driver() == "vimc") {
>  		initVimcDefaultProperties();
> +
> +		ret = discoverAncillaryDevices();
> +		if (ret)
> +			return ret;

I would move this after initProperties() to keep the same order as for
regular (non-vimc) sensors.

> +
>  		return initProperties();
>  	}
>  
> diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp
> index 372ee4af..d1bb639a 100644
> --- a/test/camera-sensor.cpp
> +++ b/test/camera-sensor.cpp
> @@ -12,6 +12,7 @@
>  
>  #include <libcamera/base/utils.h>
>  
> +#include "libcamera/internal/camera_lens.h"
>  #include "libcamera/internal/camera_sensor.h"
>  #include "libcamera/internal/device_enumerator.h"
>  #include "libcamera/internal/media_device.h"
> @@ -57,6 +58,11 @@ protected:
>  			return TestFail;
>  		}
>  
> +		lens_ = sensor_->focusLens();
> +		if (lens_) {
> +			cout << "Found lens" << endl;

Nitpicking, I'd write "Found lens controller" as we're dealing with the
lens controller, not the lens itself.

> +		}

No need for curly braces around a single statement.

Other than that, the patch looks good.

> +
>  		return TestPass;
>  	}
>  
> @@ -104,6 +110,11 @@ protected:
>  			return TestFail;
>  		}
>  
> +		if (lens_ && lens_->setFocusPosition(10)) {
> +			cerr << "Failed to set lens focus position" << endl;
> +			return TestFail;
> +		}
> +
>  		return TestPass;
>  	}
>  
> @@ -116,6 +127,7 @@ private:
>  	std::unique_ptr<DeviceEnumerator> enumerator_;
>  	std::shared_ptr<MediaDevice> media_;
>  	CameraSensor *sensor_;
> +	CameraLens *lens_;
>  };
>  
>  TEST_REGISTER(CameraSensorTest)

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list