From 0b8ef446fb331acf6488fe98e2cfbbe32a6b585f Mon Sep 17 00:00:00 2001 From: Yulei Yao Date: Thu, 17 Aug 2023 15:51:00 +0800 Subject: [PATCH] msm: camera: sensor: Fix delay pass issue in I2C sequential write When I2C sequential write is applied, first register's delay parameter is used instead of the last one in the sequential queue. CRs-Fixed: 3566036 External Impact: No. Change-Id: I0aa6480d7b577fdb697bc28b61aed428d5cae8fb Signed-off-by: Yulei Yao (cherry picked from commit e2ebd508d879607b2dadb1d223c1ad7338989bf2) --- .../cam_sensor_utils/cam_sensor_util.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c b/drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c index 8d35997976..6cc5d3d62e 100644 --- a/drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c +++ b/drivers/cam_sensor_module/cam_sensor_utils/cam_sensor_util.c @@ -205,9 +205,15 @@ int32_t cam_sensor_handle_delay( i2c_list = list_entry(list_ptr, struct i2c_settings_list, list); if (generic_op_code == - CAMERA_SENSOR_WAIT_OP_HW_UCND) - i2c_list->i2c_settings.reg_setting[offset - 1].delay = - cmd_uncond_wait->delay; + CAMERA_SENSOR_WAIT_OP_HW_UCND) { + int32_t size = i2c_list->i2c_settings.size; + + if (offset >= size) + i2c_list->i2c_settings.reg_setting[offset - size].delay = + cmd_uncond_wait->delay; + else + CAM_WARN(CAM_SENSOR_UTIL, "Setting size is bigger than offset."); + } else i2c_list->i2c_settings.delay = cmd_uncond_wait->delay; (*cmd_buf) +=