[libcamera-devel] [PATCH v8 5/5] ipu3: ipa: Allow IPA to apply controls to the lens device

Han-Lin Chen hanlinchen at chromium.org
Fri Dec 3 10:44:26 CET 2021


Allow IPA to apply controls to the lens device.

Signed-off-by: Han-Lin Chen <hanlinchen at chromium.org>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index c65afdb2..1215bdb8 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -24,6 +24,7 @@
 #include <libcamera/stream.h>
 
 #include "libcamera/internal/camera.h"
+#include "libcamera/internal/camera_lens.h"
 #include "libcamera/internal/camera_sensor.h"
 #include "libcamera/internal/delayed_controls.h"
 #include "libcamera/internal/device_enumerator.h"
@@ -1238,8 +1239,16 @@ void IPU3CameraData::queueFrameAction(unsigned int id,
 {
 	switch (action.op) {
 	case ipa::ipu3::ActionSetSensorControls: {
-		const ControlList &controls = action.sensorControls;
-		delayedCtrls_->push(controls);
+		const ControlList &sensorControls = action.sensorControls;
+		delayedCtrls_->push(sensorControls);
+
+		const ControlList lensControls = action.lensControls;
+		const ControlValue &focusValue =
+			lensControls.get(V4L2_CID_FOCUS_ABSOLUTE);
+
+		CameraLens *focusLens = cio2_.sensor()->focusLens();
+		if (focusLens && !focusValue.isNone())
+			focusLens->setFocusPostion(focusValue.get<int32_t>());
 		break;
 	}
 	case ipa::ipu3::ActionParamFilled: {
-- 
2.34.0.384.gca35af8252-goog



More information about the libcamera-devel mailing list