diff --git a/camera/hal/intel/ipu6/src/core/IspParamAdaptor.cpp b/camera/hal/intel/ipu6/src/core/IspParamAdaptor.cpp
index e8611f8..561e514 100644
--- a/camera/hal/intel/ipu6/src/core/IspParamAdaptor.cpp
+++ b/camera/hal/intel/ipu6/src/core/IspParamAdaptor.cpp
@@ -829,6 +829,13 @@
     }
     LOG2("%s, media format: 0x%x", __func__, inputParams.media_format);
 
+    float saturationFactor = PlatformData::getManualSaturationFactor(mCameraId);
+    if (saturationFactor > 0.0f &&
+        aiqResults->mAiqParam.awbMode == AWB_MODE_MANUAL_COLOR_TRANSFORM) {
+        inputParams.pa_results->saturation_factor = saturationFactor;
+    }
+    LOG2("%s, saturation_factor: %f", __func__, inputParams.pa_results->saturation_factor);
+
     if (VIDEO_STREAM_ID == streamId) {
         inputParams.call_rate_control.mode = ia_isp_call_rate_never_on_converged;
     } else {
diff --git a/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp b/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
index d5cffdd..3d063de 100644
--- a/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
+++ b/camera/hal/intel/ipu6/src/platformdata/CameraParser.cpp
@@ -483,6 +483,8 @@
     } else if (strcmp(name, "tnrExtraFrameNum") == 0) {
         int val = atoi(atts[1]);
         pCurrentCam->mTnrExtraFrameNum = val > 0 ? val : DEFAULT_TNR_EXTRA_FRAME_NUM;
+    } else if (strcmp(name, "saturationFactor") == 0) {
+        pCurrentCam->mSaturationFactor = atof(atts[1]);
     }
 }
 
diff --git a/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp b/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
index 59c03dd..322d702 100644
--- a/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
+++ b/camera/hal/intel/ipu6/src/platformdata/PlatformData.cpp
@@ -1405,4 +1405,9 @@
 {
     return getInstance()->mStaticCfg.mCameras[cameraId].mTnrExtraFrameNum;
 }
+
+float PlatformData::getManualSaturationFactor(int cameraId)
+{
+    return getInstance()->mStaticCfg.mCameras[cameraId].mSaturationFactor;
+}
 } // namespace icamera
diff --git a/camera/hal/intel/ipu6/src/platformdata/PlatformData.h b/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
index 1e33187..e82de38 100644
--- a/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
+++ b/camera/hal/intel/ipu6/src/platformdata/PlatformData.h
@@ -143,7 +143,8 @@
                 mSwProcessingAlignWithIsp(false),
                 mMaxNvmDataSize(0),
                 mVideoStreamNum(DEFAULT_VIDEO_STREAM_NUM),
-                mTnrExtraFrameNum(DEFAULT_TNR_EXTRA_FRAME_NUM)
+                mTnrExtraFrameNum(DEFAULT_TNR_EXTRA_FRAME_NUM),
+                mSaturationFactor(-1.0f)
             {
             }
 
@@ -235,6 +236,7 @@
             std::vector<IGraphType::ScalerInfo> mScalerInfo;
             int mVideoStreamNum;
             int mTnrExtraFrameNum;
+            float mSaturationFactor;
         };
 
         std::vector<CameraInfo> mCameras;
@@ -1197,5 +1199,13 @@
      * the extra frame count for still stream
      */
      static int getTnrExtraFrameCount(int cameraId);
+
+     /**
+     * Get saturation factor for manual CCM
+     *
+     * \param cameraId: [0, MAX_CAMERA_NUMBER - 1]
+     * \return manual saturation factor
+     */
+     static float getManualSaturationFactor(int cameraId);
 };
 } /* namespace icamera */
