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

Kieran Bingham kieran.bingham at ideasonboard.com
Mon Apr 25 16:24:42 CEST 2022


Quoting Yunke Cao (2022-04-25 10:27:10)
> Use vimc lens to test sensor's ability to discover ancillary lens.
> 
> Tested with 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>

You can collect RB tags here when they are given to you for new versions
too.

Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> ---
> Changelog since v3:
>  - Remove unnecessary brace. Sorry! Kept forgetting this.
> 
> Changelog since v2:
>  - Flip the order of initProperties and discoverAncillaryDevices.
>  - Fix log string.
> 
> 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 |  7 ++++++-
>  test/camera-sensor.cpp          | 11 +++++++++++
>  2 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/src/libcamera/camera_sensor.cpp b/src/libcamera/camera_sensor.cpp
> index eaa2da6b..c56b8a60 100644
> --- a/src/libcamera/camera_sensor.cpp
> +++ b/src/libcamera/camera_sensor.cpp
> @@ -152,7 +152,12 @@ int CameraSensor::init()
>          */
>         if (entity_->device()->driver() == "vimc") {
>                 initVimcDefaultProperties();
> -               return initProperties();
> +
> +               ret = initProperties();
> +               if (ret)
> +                       return ret;
> +
> +               return discoverAncillaryDevices();
>         }
>  
>         /* Get the color filter array pattern (only for RAW sensors). */
> diff --git a/test/camera-sensor.cpp b/test/camera-sensor.cpp
> index 372ee4af..dc99ab33 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,10 @@ protected:
>                         return TestFail;
>                 }
>  
> +               lens_ = sensor_->focusLens();
> +               if (lens_)
> +                       cout << "Found lens controller" << endl;
> +
>                 return TestPass;
>         }
>  
> @@ -104,6 +109,11 @@ protected:
>                         return TestFail;
>                 }
>  
> +               if (lens_ && lens_->setFocusPosition(10)) {
> +                       cerr << "Failed to set lens focus position" << endl;
> +                       return TestFail;
> +               }
> +
>                 return TestPass;
>         }
>  
> @@ -116,6 +126,7 @@ private:
>         std::unique_ptr<DeviceEnumerator> enumerator_;
>         std::shared_ptr<MediaDevice> media_;
>         CameraSensor *sensor_;
> +       CameraLens *lens_;
>  };
>  
>  TEST_REGISTER(CameraSensorTest)
> -- 
> 2.36.0.rc2.479.g8af0fa9b8e-goog
>


More information about the libcamera-devel mailing list