diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index e37b2fa0..ac0c42a7 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -277,6 +277,10 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo,
 							       frameDurations[1],
 							       frameDurations[2]);
 
+	/* Af controls */
+	controls[&controls::AfMode] = ControlInfo(controls::AfModeValues);
+	controls[&controls::LensPosition] = ControlInfo(0.0f, 1.0f, 0.5f);
+
 	*ipaControls = ControlInfoMap(std::move(controls), controls::controls);
 }
 
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 93219a6c..2e35b9bc 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -43,6 +43,8 @@ LOG_DEFINE_CATEGORY(IPU3)
 
 static const ControlInfoMap::Map IPU3Controls = {
 	{ &controls::draft::PipelineDepth, ControlInfo(2, 3) },
+	{ &controls::AfMode, ControlInfo(controls::AfModeValues) },
+	{ &controls::LensPosition, ControlInfo(0.0f, 1.0f, 0.5f) }
 };
 
 class IPU3CameraData : public Camera::Private
