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,