From afcb8304af9333a63b1dff246fc758817a44aa19 Mon Sep 17 00:00:00 2001 From: Suprith Malligere Shankaregowda Date: Thu, 24 May 2018 15:25:43 +0530 Subject: [PATCH] msm: ais: Corrected sensor state in power up when we kill ais_server sensor state is in cci down, hence added cci power down check in sensor power up. Added CLKFLAG_NO_RATE_CACHE to support hibernation Change-Id: Ic546ab4a320d0aa4a3ee80bc8256687ee89e9f63 Signed-off-by: Suprith Malligere Shankaregowda --- drivers/media/platform/msm/ais/common/cam_soc_api.c | 3 +++ drivers/media/platform/msm/ais/sensor/msm_sensor.c | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/msm/ais/common/cam_soc_api.c b/drivers/media/platform/msm/ais/common/cam_soc_api.c index 520940c74d69..46738a1ca381 100644 --- a/drivers/media/platform/msm/ais/common/cam_soc_api.c +++ b/drivers/media/platform/msm/ais/common/cam_soc_api.c @@ -26,6 +26,7 @@ #include #include "cam_soc_api.h" #include "msm_camera_diag_util.h" +#include struct msm_cam_bus_pscale_data { struct msm_bus_scale_pdata *pdata; @@ -362,6 +363,7 @@ int msm_camera_clk_enable(struct device *dev, clk_info[i].clk_name); goto cam_clk_set_err; } + clk_ptr[i]->flags |= CLKFLAG_NO_RATE_CACHE; rc = clk_set_rate(clk_ptr[i], clk_rate); if (rc < 0) { @@ -383,6 +385,7 @@ int msm_camera_clk_enable(struct device *dev, goto cam_clk_set_err; } } + clk_ptr[i]->flags |= CLKFLAG_NO_RATE_CACHE; rc = clk_set_rate(clk_ptr[i], clk_rate); if (rc < 0) { diff --git a/drivers/media/platform/msm/ais/sensor/msm_sensor.c b/drivers/media/platform/msm/ais/sensor/msm_sensor.c index 7434ba49fb8d..657c6ee7c0b6 100644 --- a/drivers/media/platform/msm/ais/sensor/msm_sensor.c +++ b/drivers/media/platform/msm/ais/sensor/msm_sensor.c @@ -842,7 +842,8 @@ static int msm_sensor_config32(struct msm_sensor_ctrl_t *s_ctrl, if (s_ctrl->is_csid_tg_mode) goto DONE; - if (s_ctrl->sensor_state != MSM_SENSOR_POWER_DOWN) { + if ((s_ctrl->sensor_state != MSM_SENSOR_POWER_DOWN) && + (s_ctrl->sensor_state != MSM_SENSOR_CCI_DOWN)) { pr_err("%s:%d failed: invalid state %d\n", __func__, __LINE__, s_ctrl->sensor_state); rc = -EFAULT; @@ -1403,7 +1404,8 @@ int msm_sensor_config(struct msm_sensor_ctrl_t *s_ctrl, void *argp) if (s_ctrl->is_csid_tg_mode) goto DONE; - if (s_ctrl->sensor_state != MSM_SENSOR_POWER_DOWN) { + if ((s_ctrl->sensor_state != MSM_SENSOR_POWER_DOWN) && + (s_ctrl->sensor_state != MSM_SENSOR_CCI_DOWN)) { pr_err("%s:%d failed: invalid state %d\n", __func__, __LINE__, s_ctrl->sensor_state); rc = -EFAULT;