Bläddra i källkod

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

Haritha Chintalapati 5 år sedan
förälder
incheckning
fdc5107b5e

+ 30 - 5
drivers/cam_sensor_module/cam_actuator/cam_actuator_core.c

@@ -360,10 +360,11 @@ int32_t cam_actuator_establish_link(
 	return 0;
 	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_actuator_ctrl_t *a_ctrl,
 	struct cam_packet *csl_packet)
 	struct cam_packet *csl_packet)
 {
 {
+	int rc = 0;
 	struct cam_req_mgr_add_request add_req;
 	struct cam_req_mgr_add_request add_req;
 
 
 	add_req.link_hdl = a_ctrl->bridge_intf.link_hdl;
 	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 &&
 	if (a_ctrl->bridge_intf.crm_cb &&
 		a_ctrl->bridge_intf.crm_cb->add_req) {
 		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",
 		CAM_DBG(CAM_ACTUATOR, "Request Id: %lld added to CRM",
 			add_req.req_id);
 			add_req.req_id);
 	} else {
 	} else {
 		CAM_ERR(CAM_ACTUATOR, "Can't add Request ID: %lld to CRM",
 		CAM_ERR(CAM_ACTUATOR, "Can't add Request ID: %lld to CRM",
 			csl_packet->header.request_id);
 			csl_packet->header.request_id);
+		rc = -EINVAL;
 	}
 	}
+
+	return rc;
 }
 }
 
 
 int32_t cam_actuator_publish_dev_info(struct cam_req_mgr_device_info *info)
 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);
 				"Auto move lens parsing failed: %d", rc);
 			goto end;
 			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;
 		break;
 	case CAM_ACTUATOR_PACKET_MANUAL_MOVE_LENS:
 	case CAM_ACTUATOR_PACKET_MANUAL_MOVE_LENS:
 		if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) {
 		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;
 			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;
 		break;
 	case CAM_PKT_NOP_OPCODE:
 	case CAM_PKT_NOP_OPCODE:
 		if (a_ctrl->cam_act_state < CAM_ACTUATOR_CONFIG) {
 		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;
 			rc = -EINVAL;
 			goto end;
 			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;
 		break;
 	case CAM_ACTUATOR_PACKET_OPCODE_READ: {
 	case CAM_ACTUATOR_PACKET_OPCODE_READ: {
 		struct cam_buf_io_cfg *io_cfg;
 		struct cam_buf_io_cfg *io_cfg;

+ 7 - 1
drivers/cam_sensor_module/cam_flash/cam_flash_core.c

@@ -1275,7 +1275,13 @@ update_req_mgr:
 
 
 		if (fctrl->bridge_intf.crm_cb &&
 		if (fctrl->bridge_intf.crm_cb &&
 			fctrl->bridge_intf.crm_cb->add_req)
 			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);
 		CAM_DBG(CAM_FLASH, "add req to req_mgr= %lld", add_req.req_id);
 	}
 	}
 	return rc;
 	return rc;

+ 28 - 8
drivers/cam_sensor_module/cam_sensor/cam_sensor_core.c

@@ -13,25 +13,34 @@
 #include "cam_packet_util.h"
 #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_sensor_ctrl_t *s_ctrl,
 	struct cam_packet *csl_packet)
 	struct cam_packet *csl_packet)
 {
 {
+	int rc = 0;
 	struct cam_req_mgr_add_request add_req;
 	struct cam_req_mgr_add_request add_req;
 
 
 	add_req.link_hdl = s_ctrl->bridge_intf.link_hdl;
 	add_req.link_hdl = s_ctrl->bridge_intf.link_hdl;
 	add_req.req_id = csl_packet->header.request_id;
 	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);
 		csl_packet->header.request_id);
 	add_req.dev_hdl = s_ctrl->bridge_intf.device_hdl;
 	add_req.dev_hdl = s_ctrl->bridge_intf.device_hdl;
 	add_req.skip_before_applying = 0;
 	add_req.skip_before_applying = 0;
 	add_req.trigger_eof = false;
 	add_req.trigger_eof = false;
 	if (s_ctrl->bridge_intf.crm_cb &&
 	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);
 			add_req.req_id);
+	return rc;
 }
 }
 
 
 static void cam_sensor_release_stream_rsc(
 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
 			 * and freeze. If this log is triggered then
 			 * fix it.
 			 * 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;
 			goto end;
 		}
 		}
 		break;
 		break;
@@ -277,7 +289,10 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
 			goto end;
 			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;
 		goto end;
 	}
 	}
 	default:
 	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) {
 		CAM_SENSOR_PACKET_OPCODE_SENSOR_UPDATE) {
 		i2c_reg_settings->request_id =
 		i2c_reg_settings->request_id =
 			csl_packet->header.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) ==
 	if ((csl_packet->header.op_code & 0xFFFFFF) ==