camera: intel: ipu6: Set AG/DG immidiately if triggered by SOF
Set AG/DG immidiately if triggered by SOF to fix one ITS issue:
scene1/test_latching.py
BUG=b:149068439, b:149068672
TEST=Full tested pass for camera functions.
Change-Id: I55447e6af8a9018c47302512c535c28c33a4e56d
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/camera/+/2720712
Reviewed-by: Zong Li <zong.li@intel.com>
Reviewed-by: Qingwu Zhang <qingwu.zhang@intel.corp-partner.google.com>
Reviewed-by: Hung-yu Wu <hywu@chromium.org>
Tested-by: Zong Li <zong.li@intel.com>
Commit-Queue: Ren-Pei Zeng <kamesan@chromium.org>
diff --git a/hal/intel/ipu6/src/3a/SensorManager.cpp b/hal/intel/ipu6/src/3a/SensorManager.cpp
index b65e4e1..1a2a4ee 100644
--- a/hal/intel/ipu6/src/3a/SensorManager.cpp
+++ b/hal/intel/ipu6/src/3a/SensorManager.cpp
@@ -199,8 +199,16 @@
mExposureDataMap[sensorSeq] = exposureData;
}
- mAnalogGainMap[sensorSeq + mAnalogGainDelay] = analogGains;
- mDigitalGainMap[sensorSeq + mDigitalGainDelay] = digitalGains;
+ if ((sensorSeq + mAnalogGainDelay) == mLastSofSequence) {
+ mSensorHwCtrl->setAnalogGains(analogGains);
+ } else {
+ mAnalogGainMap[sensorSeq + mAnalogGainDelay] = analogGains;
+ }
+ if ((sensorSeq + mDigitalGainDelay) == mLastSofSequence) {
+ mSensorHwCtrl->setDigitalGains(digitalGains);
+ } else {
+ mDigitalGainMap[sensorSeq + mDigitalGainDelay] = digitalGains;
+ }
effectSeq += mExposureDataMap.size();
} else if (PlatformData::isIsysEnabled(mCameraId)) {
mSensorHwCtrl->setFrameDuration(exposureData.lineLengthPixels,