Merge "msm: camera: sensor: Add error handling when adding request" into camera-kernel.lnx.4.0

This commit is contained in:
Haritha Chintalapati 2020-07-27 13:38:56 -07:00 • committed by Gerrit - the friendly Code Review server
commit fdc5107b5e
3 changed files with 65 additions and 14 deletions

View file

@ -360,10 +360,11 @@ int32_t cam_actuator_establish_link(
return 0;
}
static void cam_actuator_update_req_mgr(
static int cam_actuator_update_req_mgr(
struct cam_actuator_ctrl_t *a_ctrl,
struct cam_packet *csl_packet)
{
int rc = 0;
struct cam_req_mgr_add_request add_req;
add_req.link_hdl = a_ctrl->bridge_intf.link_hdl;
@ -374,13 +375,22 @@ static void cam_actuator_update_req_mgr(
if (a_ctrl->bridge_intf.crm_cb &&
a_ctrl->bridge_intf.crm_cb->add_req) {
a_ctrl->bridge_intf.crm_cb->add_req(&add_req);
rc = a_ctrl->bridge_intf.crm_cb->add_req(&add_req);
if (rc) {
CAM_ERR(CAM_ACTUATOR,
"Adding request: %llu failed: rc: %d",
csl_packet->header.request_id, rc);
return rc;
}
CAM_DBG(CAM_ACTUATOR, "Request Id: %lld added to CRM",
add_req.req_id);
} else {
CAM_ERR(CAM_ACTUATOR, "Can't add Request ID: %lld to CRM",
csl_packet->header.request_id);
rc = -EINVAL;
}
return rc;
}
int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info)
@ -619,7 +629,12 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
"Auto move lens parsing failed: %d", rc);
goto end;
}
cam_actuator_update_req_mgr(a_ctrl, csl_packet);
rc = cam_actuator_update_req_mgr(a_ctrl, csl_packet);
if (rc) {
CAM_ERR(CAM_ACTUATOR,
"Failed in adding request to request manager");
goto end;
}
break;
case CAM_ACTUATOR_PACKET_MANUAL_MOVE_LENS:
if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) {
@ -651,7 +666,12 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
goto end;
}
cam_actuator_update_req_mgr(a_ctrl, csl_packet);
rc = cam_actuator_update_req_mgr(a_ctrl, csl_packet);
if (rc) {
CAM_ERR(CAM_ACTUATOR,
"Failed in adding request to request manager");
goto end;
}
break;
case CAM_PKT_NOP_OPCODE:
if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) {
@ -661,7 +681,12 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,
rc = -EINVAL;
goto end;
}
cam_actuator_update_req_mgr(a_ctrl, csl_packet);
rc = cam_actuator_update_req_mgr(a_ctrl, csl_packet);
if (rc) {
CAM_ERR(CAM_ACTUATOR,
"Failed in adding request to request manager");
goto end;
}
break;
case CAM_ACTUATOR_PACKET_OPCODE_READ: {
struct cam_buf_io_cfg *io_cfg;

View file

@ -1275,7 +1275,13 @@ update_req_mgr:
if (fctrl->bridge_intf.crm_cb &&
fctrl->bridge_intf.crm_cb->add_req)
fctrl->bridge_intf.crm_cb->add_req(&add_req);
rc = fctrl->bridge_intf.crm_cb->add_req(&add_req);
if (rc) {
CAM_ERR(CAM_FLASH,
"Failed in adding request: %llu to request manager",
csl_packet->header.request_id);
return rc;
}
CAM_DBG(CAM_FLASH, "add req to req_mgr= %lld", add_req.req_id);
}
return rc;

View file

@ -13,25 +13,34 @@
#include "cam_packet_util.h"
static void cam_sensor_update_req_mgr(
static int cam_sensor_update_req_mgr(
struct cam_sensor_ctrl_t *s_ctrl,
struct cam_packet *csl_packet)
{
int rc = 0;
struct cam_req_mgr_add_request add_req;
add_req.link_hdl = s_ctrl->bridge_intf.link_hdl;
add_req.req_id = csl_packet->header.request_id;
CAM_DBG(CAM_SENSOR, " Rxed Req Id: %lld",
CAM_DBG(CAM_SENSOR, " Rxed Req Id: %llu",
csl_packet->header.request_id);
add_req.dev_hdl = s_ctrl->bridge_intf.device_hdl;
add_req.skip_before_applying = 0;
add_req.trigger_eof = false;
if (s_ctrl->bridge_intf.crm_cb &&
s_ctrl->bridge_intf.crm_cb->add_req)
s_ctrl->bridge_intf.crm_cb->add_req(&add_req);
s_ctrl->bridge_intf.crm_cb->add_req) {
rc = s_ctrl->bridge_intf.crm_cb->add_req(&add_req);
if (rc) {
CAM_ERR(CAM_SENSOR,
"Adding request: %llu failed with request manager rc: %d",
csl_packet->header.request_id, rc);
return rc;
}
}
CAM_DBG(CAM_SENSOR, " add req to req mgr: %lld",
CAM_DBG(CAM_SENSOR, "Successfully add req: %llu to req mgr",
add_req.req_id);
return rc;
}
static void cam_sensor_release_stream_rsc(
@ -248,7 +257,10 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
* and freeze. If this log is triggered then
* fix it.
*/
cam_sensor_update_req_mgr(s_ctrl, csl_packet);
rc = cam_sensor_update_req_mgr(s_ctrl, csl_packet);
if (rc)
CAM_ERR(CAM_SENSOR,
"Failed in adding request to req_mgr");
goto end;
}
break;
@ -277,7 +289,10 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
goto end;
}
cam_sensor_update_req_mgr(s_ctrl, csl_packet);
rc = cam_sensor_update_req_mgr(s_ctrl, csl_packet);
if (rc)
CAM_ERR(CAM_SENSOR,
"Failed in adding request to req_mgr");
goto end;
}
default:
@ -301,7 +316,12 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
CAM_SENSOR_PACKET_OPCODE_SENSOR_UPDATE) {
i2c_reg_settings->request_id =
csl_packet->header.request_id;
cam_sensor_update_req_mgr(s_ctrl, csl_packet);
rc = cam_sensor_update_req_mgr(s_ctrl, csl_packet);
if (rc) {
CAM_ERR(CAM_SENSOR,
"Failed in adding request to req_mgr");
goto end;
}
}
if ((csl_packet->header.op_code & 0xFFFFFF) ==