ipu3: ipa: Allow IPA to apply controls to the lens device

Allow IPA to apply controls to the lens device.

Signed-off-by: Han-Lin Chen <hanlinchen@chromium.org>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Han-Lin Chen
2021-12-03 17:44:26 +08:00
committed by Kieran Bingham
parent ad2bcbe5b5
commit 3f881dbc33
+11 -2
View File
@@ -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: {