[libcamera-devel] [RFC v1 5/5] ipa: ipu3: af: Remove hardcoded maximum VCM steps

Kate Hsuan hpa at redhat.com
Thu Apr 14 09:43:42 CEST 2022


The hardcoded VCM step variable was removed and was replaced by the
context configuration.

Signed-off-by: Kate Hsuan<hpa at redhat.com>
---
 src/ipa/ipu3/algorithms/af.cpp | 6 +++---
 src/ipa/ipu3/ipu3.cpp          | 1 +
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/ipa/ipu3/algorithms/af.cpp b/src/ipa/ipu3/algorithms/af.cpp
index addf98af..95fb39f5 100644
--- a/src/ipa/ipu3/algorithms/af.cpp
+++ b/src/ipa/ipu3/algorithms/af.cpp
@@ -179,7 +179,7 @@ int Af::configure(IPAContext &context, const IPAConfigInfo &configInfo)
 	grid.y_start |= IPU3_UAPI_GRID_Y_START_EN;
 
 	/* Initial max focus step */
-	maxStep_ = kMaxFocusSteps;
+	maxStep_ = context.configuration.af.maxVcmSteps;
 
 	/* Initial focus value */
 	context.frameContext.af.focus = 0;
@@ -214,7 +214,7 @@ void Af::afCoarseScan(IPAContext &context)
 		context.frameContext.af.focus = focus_;
 		previousVariance_ = 0;
 		maxStep_ = std::clamp(focus_ + static_cast<uint32_t>((focus_ * kFineRange)),
-				      0U, kMaxFocusSteps);
+				      0U, static_cast<uint32_t>(context.configuration.af.maxVcmSteps));
 	}
 }
 
@@ -259,7 +259,7 @@ void Af::afReset(IPAContext &context)
 	previousVariance_ = 0.0;
 	coarseCompleted_ = false;
 	fineCompleted_ = false;
-	maxStep_ = kMaxFocusSteps;
+	maxStep_ = context.configuration.af.maxVcmSteps;
 }
 
 /**
diff --git a/src/ipa/ipu3/ipu3.cpp b/src/ipa/ipu3/ipu3.cpp
index dd6cfd79..d46f7853 100644
--- a/src/ipa/ipu3/ipu3.cpp
+++ b/src/ipa/ipu3/ipu3.cpp
@@ -456,6 +456,7 @@ int IPAIPU3::configure(const IPAConfigInfo &configInfo,
 
 	/* Clean frameContext at each reconfiguration. */
 	context_.frameContext = {};
+	context_.configuration.af.maxVcmSteps = configInfo.sensorInfo.maxVcmSteps;
 
 	if (!validateSensorControls()) {
 		LOG(IPAIPU3, Error) << "Sensor control validation failed.";
-- 
2.35.1



More information about the libcamera-devel mailing list