Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e5c3238b authored by Jeyaprakash Soundrapandian's avatar Jeyaprakash Soundrapandian Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: sensor: Clean Pending requests at the time of streamoff" into dev/msm-4.9-camx

parents c3ce5115 5a9a0e0a
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -38,49 +38,58 @@ static void cam_sensor_update_req_mgr(
			add_req.req_id);
}

static void cam_sensor_release_resource(
static void cam_sensor_release_stream_rsc(
	struct cam_sensor_ctrl_t *s_ctrl)
{
	struct i2c_settings_array *i2c_set = NULL;
	int i, rc;
	int rc;

	i2c_set = &(s_ctrl->i2c_data.init_settings);
	i2c_set = &(s_ctrl->i2c_data.streamoff_settings);
	if (i2c_set->is_settings_valid == 1) {
		i2c_set->is_settings_valid = -1;
		rc = delete_request(i2c_set);
		if (rc < 0)
			CAM_ERR(CAM_SENSOR,
				"failed while deleting Init settings");
				"failed while deleting Streamoff settings");
	}

	i2c_set = &(s_ctrl->i2c_data.config_settings);
	i2c_set = &(s_ctrl->i2c_data.streamon_settings);
	if (i2c_set->is_settings_valid == 1) {
		i2c_set->is_settings_valid = -1;
		rc = delete_request(i2c_set);
		if (rc < 0)
			CAM_ERR(CAM_SENSOR,
				"failed while deleting Res settings");
				"failed while deleting Streamon settings");
	}
	i2c_set = &(s_ctrl->i2c_data.streamoff_settings);
}

static void cam_sensor_release_resource(
	struct cam_sensor_ctrl_t *s_ctrl)
{
	struct i2c_settings_array *i2c_set = NULL;
	int i, rc;

	i2c_set = &(s_ctrl->i2c_data.init_settings);
	if (i2c_set->is_settings_valid == 1) {
		i2c_set->is_settings_valid = -1;
		rc = delete_request(i2c_set);
		if (rc < 0)
			CAM_ERR(CAM_SENSOR,
				"failed while deleting Streamoff settings");
				"failed while deleting Init settings");
	}
	i2c_set = &(s_ctrl->i2c_data.streamon_settings);

	i2c_set = &(s_ctrl->i2c_data.config_settings);
	if (i2c_set->is_settings_valid == 1) {
		i2c_set->is_settings_valid = -1;
		rc = delete_request(i2c_set);
		if (rc < 0)
			CAM_ERR(CAM_SENSOR,
				"failed while deleting Streamoff settings");
				"failed while deleting Res settings");
	}

	if (s_ctrl->i2c_data.per_frame != NULL) {
		for (i = 0; i < MAX_PER_FRAME_ARRAY; i++) {
			i2c_set = &(s_ctrl->i2c_data.per_frame[i]);

			if (i2c_set->is_settings_valid == 1) {
				i2c_set->is_settings_valid = -1;
				rc = delete_request(i2c_set);
@@ -489,7 +498,7 @@ void cam_sensor_shutdown(struct cam_sensor_ctrl_t *s_ctrl)
		return;

	cam_sensor_release_resource(s_ctrl);

	cam_sensor_release_stream_rsc(s_ctrl);
	if (s_ctrl->sensor_state >= CAM_SENSOR_ACQUIRE)
		cam_sensor_power_down(s_ctrl);

@@ -722,6 +731,7 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
		}

		cam_sensor_release_resource(s_ctrl);
		cam_sensor_release_stream_rsc(s_ctrl);
		if (s_ctrl->bridge_intf.device_hdl == -1) {
			CAM_ERR(CAM_SENSOR,
				"Invalid Handles: link hdl: %d device hdl: %d",
@@ -794,6 +804,8 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
				"cannot apply streamoff settings");
			}
		}

		cam_sensor_release_resource(s_ctrl);
		s_ctrl->sensor_state = CAM_SENSOR_ACQUIRE;
	}
		break;