diff options
Diffstat (limited to 'drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c')
-rw-r--r-- | drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c b/drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c index 196df084d40b..6f77e0ecb93e 100644 --- a/drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c +++ b/drivers/media/platform/msm/camera/cam_sensor_module/cam_ois/cam_ois_core.c @@ -55,6 +55,7 @@ int32_t cam_ois_construct_default_power_setting( free_power_settings: kfree(power_info->power_setting); + power_info->power_setting = NULL; return rc; } @@ -636,7 +637,11 @@ pwr_dwn: void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl) { - int rc; + int rc = 0; + struct cam_ois_soc_private *soc_private = + (struct cam_ois_soc_private *)o_ctrl->soc_info.soc_private; + struct cam_sensor_power_ctrl_t *power_info = + &soc_private->power_info; if (o_ctrl->cam_ois_state == CAM_OIS_INIT) return; @@ -645,6 +650,7 @@ void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl) rc = cam_ois_power_down(o_ctrl); if (rc < 0) CAM_ERR(CAM_OIS, "OIS Power down failed"); + o_ctrl->cam_ois_state = CAM_OIS_ACQUIRE; } if (o_ctrl->cam_ois_state >= CAM_OIS_ACQUIRE) { @@ -656,6 +662,11 @@ void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl) o_ctrl->bridge_intf.session_hdl = -1; } + kfree(power_info->power_setting); + kfree(power_info->power_down_setting); + power_info->power_setting = NULL; + power_info->power_down_setting = NULL; + o_ctrl->cam_ois_state = CAM_OIS_INIT; } |