camera: ois: read ois status in vsync thread

Read ois status and mode in vsync thread.
If ois is not enabled and not in move mode, skip vsync handle.

Change-Id: I2ddbf839b089da75550aef03b63fe136cbd4bc43
Signed-off-by: liuwang2 <liuwang2@lenovo.com>
Reviewed-on: https://gerrit.mot.com/2175243
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: XiaoFeng Wang <wangxf32@lenovo.com>
Reviewed-by: Long Cheng <chengl1@motorola.com>
Reviewed-by: Zhichao Chen <chenzc2@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
liuwang2 2022-01-20 14:13:17 +08:00 • committed by zhaoji1
commit 42b21db1fb
2 changed files with 33 additions and 1 deletions

View file

@ -300,6 +300,7 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data)
uint64_t qtime_ns;
uint8_t *read_buff;
uint32_t k, read_len;
uint32_t mode_val = 0xFFFF, enable_val = 0xFFFF;
if (!o_ctrl) {
CAM_ERR(CAM_OIS, "Invalid Args");
@ -316,9 +317,38 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data)
goto release_mutex;
}
rc = camera_io_dev_read(
&o_ctrl->io_master_info,
MODE_ADDR,
&mode_val,
CAMERA_SENSOR_I2C_TYPE_WORD,
CAMERA_SENSOR_I2C_TYPE_WORD);
if (rc < 0) {
CAM_ERR(CAM_OIS, "failed to read OIS 0x7014 reg rc: %d", rc);
goto release_mutex;
}
rc = camera_io_dev_read(
&o_ctrl->io_master_info,
ENABLE_ADDR,
&enable_val,
CAMERA_SENSOR_I2C_TYPE_WORD,
CAMERA_SENSOR_I2C_TYPE_WORD);
if (rc < 0) {
CAM_ERR(CAM_OIS, "failed to read OIS 0x7015 reg rc: %d", rc);
goto release_mutex;
}
CAM_DBG(CAM_OIS, "mode_val = 0x%02x, enable_val = 0x%02x", mode_val, enable_val);
if (mode_val != 0 || enable_val != 0) {
CAM_DBG(CAM_OIS, "ois is not in move mode, skip this irq");
goto release_mutex;
}
rc = cam_sensor_util_get_current_qtimer_ns(&qtime_ns);
if (rc < 0) {
CAM_ERR(CAM_OIS, "failed to get qtimer rc:%d");
CAM_ERR(CAM_OIS, "failed to get qtimer rc:%d", rc);
goto release_mutex;
}

View file

@ -25,6 +25,8 @@
#define DEFINE_MSM_MUTEX(mutexname) \
static struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
#define MODE_ADDR 0x7014
#define ENABLE_ADDR 0x7015
#define PACKET_ADDR 0x70B0
#define PACKET_BYTE 62
#define MAX_PACKET 5