mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
Merge "msm: camera: sensor: Add Init setting retry in case cci is resetting" into camera-kernel.lnx.4.0
This commit is contained in:
commit
d8b3b0fb80
4 changed files with 53 additions and 10 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -957,10 +957,19 @@ int32_t cam_actuator_driver_cmd(struct cam_actuator_ctrl_t *a_ctrl,
|
|||
ACT_APPLY_SETTINGS_NOW) {
|
||||
rc = cam_actuator_apply_settings(a_ctrl,
|
||||
&a_ctrl->i2c_data.init_settings);
|
||||
if ((rc == -EAGAIN) &&
|
||||
(a_ctrl->io_master_info.master_type == CCI_MASTER)) {
|
||||
CAM_WARN(CAM_ACTUATOR,
|
||||
"CCI HW is in resetting mode:: Reapplying Init settings");
|
||||
usleep_range(1000, 1010);
|
||||
rc = cam_actuator_apply_settings(a_ctrl,
|
||||
&a_ctrl->i2c_data.init_settings);
|
||||
}
|
||||
|
||||
if (rc < 0)
|
||||
CAM_ERR(CAM_ACTUATOR,
|
||||
"Cannot apply Update settings");
|
||||
|
||||
"Failed to apply Init settings: rc = %d",
|
||||
rc);
|
||||
/* Delete the request even if the apply is failed */
|
||||
rc = delete_request(&a_ctrl->i2c_data.init_settings);
|
||||
if (rc < 0) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -662,6 +662,16 @@ int cam_flash_i2c_apply_setting(struct cam_flash_ctrl *fctrl,
|
|||
list) {
|
||||
rc = cam_sensor_util_i2c_apply_setting
|
||||
(&(fctrl->io_master_info), i2c_list);
|
||||
if ((rc == -EAGAIN) &&
|
||||
(fctrl->io_master_info.master_type ==
|
||||
CCI_MASTER)) {
|
||||
CAM_WARN(CAM_FLASH,
|
||||
"CCI HW is in reset mode: Reapplying Init settings");
|
||||
usleep_range(1000, 1010);
|
||||
rc = cam_sensor_util_i2c_apply_setting
|
||||
(&(fctrl->io_master_info), i2c_list);
|
||||
}
|
||||
|
||||
if (rc) {
|
||||
CAM_ERR(CAM_FLASH,
|
||||
"Failed to apply init settings: %d",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
|
|
@ -583,8 +583,18 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)
|
|||
}
|
||||
|
||||
rc = cam_ois_apply_settings(o_ctrl, &o_ctrl->i2c_init_data);
|
||||
if ((rc == -EAGAIN) &&
|
||||
(o_ctrl->io_master_info.master_type == CCI_MASTER)) {
|
||||
CAM_WARN(CAM_OIS,
|
||||
"CCI HW is restting: Reapplying INIT settings");
|
||||
usleep_range(1000, 1010);
|
||||
rc = cam_ois_apply_settings(o_ctrl,
|
||||
&o_ctrl->i2c_init_data);
|
||||
}
|
||||
if (rc < 0) {
|
||||
CAM_ERR(CAM_OIS, "Cannot apply Init settings");
|
||||
CAM_ERR(CAM_OIS,
|
||||
"Cannot apply Init settings: rc = %d",
|
||||
rc);
|
||||
goto pwr_dwn;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -644,7 +644,7 @@ int cam_sensor_match_id(struct cam_sensor_ctrl_t *s_ctrl)
|
|||
int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
|
||||
void *arg)
|
||||
{
|
||||
int rc = 0;
|
||||
int rc = 0, pkt_opcode = 0;
|
||||
struct cam_control *cmd = (struct cam_control *)arg;
|
||||
struct cam_sensor_power_ctrl_t *power_info =
|
||||
&s_ctrl->sensordata->power_info;
|
||||
|
|
@ -932,14 +932,28 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
|
|||
if (s_ctrl->i2c_data.init_settings.is_settings_valid &&
|
||||
(s_ctrl->i2c_data.init_settings.request_id == 0)) {
|
||||
|
||||
pkt_opcode =
|
||||
CAM_SENSOR_PACKET_OPCODE_SENSOR_INITIAL_CONFIG;
|
||||
rc = cam_sensor_apply_settings(s_ctrl, 0,
|
||||
CAM_SENSOR_PACKET_OPCODE_SENSOR_INITIAL_CONFIG);
|
||||
pkt_opcode);
|
||||
|
||||
if ((rc == -EAGAIN) &&
|
||||
(s_ctrl->io_master_info.master_type == CCI_MASTER)) {
|
||||
/* If CCI hardware is resetting we need to wait
|
||||
* for sometime before reapply
|
||||
*/
|
||||
CAM_WARN(CAM_SENSOR,
|
||||
"Reapplying the Init settings due to cci hw reset");
|
||||
usleep_range(1000, 1010);
|
||||
rc = cam_sensor_apply_settings(s_ctrl, 0,
|
||||
pkt_opcode);
|
||||
}
|
||||
s_ctrl->i2c_data.init_settings.request_id = -1;
|
||||
|
||||
if (rc < 0) {
|
||||
CAM_ERR(CAM_SENSOR,
|
||||
"cannot apply init settings");
|
||||
"cannot apply init settings rc= %d",
|
||||
rc);
|
||||
delete_request(&s_ctrl->i2c_data.init_settings);
|
||||
goto release_mutex;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue