<div dir="ltr"><div>Hi Jean-Michel,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 17 Mar 2022 at 09:20, Jean-Michel Hautbois via libcamera-devel <<a href="mailto:libcamera-devel@lists.libcamera.org">libcamera-devel@lists.libcamera.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The lens focus is controled by a VCM, which is linked to the sensor<br>
using the ancillary links.<br>
Pass the control to the config info structure and make it possible to<br>
update by the IPA.<br>
<br>
Signed-off-by: Jean-Michel Hautbois <<a href="mailto:jeanmichel.hautbois@ideasonboard.com" target="_blank">jeanmichel.hautbois@ideasonboard.com</a>><br>
---<br>
 include/libcamera/ipa/raspberrypi.mojom         |  1 +<br>
 .../pipeline/raspberrypi/raspberrypi.cpp        | 17 +++++++++++++++++<br>
 2 files changed, 18 insertions(+)<br>
<br>
diff --git a/include/libcamera/ipa/raspberrypi.mojom b/include/libcamera/ipa/raspberrypi.mojom<br>
index acd3cafe..0c3922b0 100644<br>
--- a/include/libcamera/ipa/raspberrypi.mojom<br>
+++ b/include/libcamera/ipa/raspberrypi.mojom<br>
@@ -125,4 +125,5 @@ interface IPARPiEventInterface {<br>
        embeddedComplete(uint32 bufferId);<br>
        setIspControls(libcamera.ControlList controls);<br>
        setDelayedControls(libcamera.ControlList controls);<br>
+       setLensControls(libcamera.ControlList controls);<br>
 };<br>
diff --git a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
index c2230199..41be10ff 100644<br>
--- a/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
+++ b/src/libcamera/pipeline/raspberrypi/raspberrypi.cpp<br>
@@ -33,6 +33,7 @@<br>
<br>
 #include "libcamera/internal/bayer_format.h"<br>
 #include "libcamera/internal/camera.h"<br>
+#include "libcamera/internal/camera_lens.h"<br>
 #include "libcamera/internal/camera_sensor.h"<br>
 #include "libcamera/internal/delayed_controls.h"<br>
 #include "libcamera/internal/device_enumerator.h"<br>
@@ -202,6 +203,7 @@ public:<br>
        void setIspControls(const ControlList &controls);<br>
        void setDelayedControls(const ControlList &controls);<br>
        void setSensorControls(ControlList &controls);<br>
+       void setLensControls(const ControlList &controls);<br>
<br>
        /* bufferComplete signal handlers. */<br>
        void unicamBufferDequeue(FrameBuffer *buffer);<br>
@@ -1483,6 +1485,7 @@ int RPiCameraData::loadIPA(ipa::RPi::SensorConfig *sensorConfig)<br>
        ipa_->embeddedComplete.connect(this, &RPiCameraData::embeddedComplete);<br>
        ipa_->setIspControls.connect(this, &RPiCameraData::setIspControls);<br>
        ipa_->setDelayedControls.connect(this, &RPiCameraData::setDelayedControls);<br>
+       ipa_->setLensControls.connect(this, &RPiCameraData::setLensControls);<br>
<br>
        /*<br>
         * The configuration (tuning file) is made from the sensor name unless<br>
@@ -1519,6 +1522,10 @@ int RPiCameraData::configureIPA(const CameraConfiguration *config)<br>
        entityControls.emplace(0, sensor_->controls());<br>
        entityControls.emplace(1, isp_[Isp::Input].dev()->controls());<br>
<br>
+       CameraLens *lens = sensor_->focusLens();<br>
+       if (lens)<br>
+               entityControls.emplace(2, lens->controls());<br>
+<br>
        /* Always send the user transform to the IPA. */<br>
        ipaConfig.transform = static_cast<unsigned int>(config->transform);<br>
<br>
@@ -1735,6 +1742,16 @@ void RPiCameraData::setDelayedControls(const ControlList &controls)<br>
        handleState();<br>
 }<br>
<br>
+void RPiCameraData::setLensControls(const ControlList &controls)<br>
+{<br>
+       ControlList ctrls = controls;<br>
+<br>
+       CameraLens *lens = sensor_->focusLens();<br>
+       if (lens)<br>
+               lens->setFocusPosition(ctrls.get(V4L2_CID_FOCUS_ABSOLUTE).get<int32_t>());<br>
+       handleState();<br></blockquote><div><br></div><div>handleState() should not be needed heere.</div><div><br></div><div>Regards,</div><div>Naush</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+}<br>
+<br>
 void RPiCameraData::setSensorControls(ControlList &controls)<br>
 {<br>
        /*<br>
-- <br>
2.32.0<br>
<br>
</blockquote></div></div>