From 741a27ea0bbeccc24afa49976bb0f35982a305e7 Mon Sep 17 00:00:00 2001 From: liuwang2 Date: Fri, 7 Jan 2022 15:38:00 +0800 Subject: [PATCH] milanf: enable active eis [detail] add some condition judgement Change-Id: Idf7db283b79662084fa287a5743c8ad12f915d5b Signed-off-by: liuwang2 Reviewed-on: https://gerrit.mot.com/2164715 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Zhichao Chen Submit-Approved: Jira Key --- drivers/cam_sensor_module/cam_ois/cam_ois_dev.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/cam_sensor_module/cam_ois/cam_ois_dev.c b/drivers/cam_sensor_module/cam_ois/cam_ois_dev.c index 4a225bb6c499..6086557e33af 100644 --- a/drivers/cam_sensor_module/cam_ois/cam_ois_dev.c +++ b/drivers/cam_sensor_module/cam_ois/cam_ois_dev.c @@ -301,6 +301,11 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data) uint8_t *read_buff; uint32_t k, read_len; + if (!o_ctrl) { + CAM_ERR(CAM_OIS, "Invalid Args"); + return IRQ_NONE; + } + if (!mutex_trylock(&o_ctrl->vsync_mutex)) { CAM_ERR(CAM_OIS, "try lock fail, skip this irq"); return IRQ_NONE; @@ -344,6 +349,11 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data) else read_len = READ_BYTE; + if (read_len == 0) { + CAM_WARN(CAM_OIS, "Read length is zero, break loop read"); + break; + } + rc = camera_io_dev_ois_read_seq( &o_ctrl->io_master_info, PACKET_ADDR + k*READ_BYTE/2, @@ -377,7 +387,7 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data) } if (sample_cnt > 10 && packet_cnt > 1) { - CAM_DBG(CAM_OIS,"more than 1 packet, clear data-ready and read next packet"); + CAM_WARN(CAM_OIS,"more than 1 packet, clear data-ready and read next packet"); rc = cam_ois_clear_data_ready(o_ctrl); udelay(1000); @@ -388,7 +398,7 @@ static irqreturn_t cam_ois_vsync_irq_thread(int irq, void *data) } packet_cnt--; - } while(packet_cnt); + } while(packet_cnt > 0); release_mutex: if (rc < 0) {