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

Commit a008b9e9 authored by Kui Wang's avatar Kui Wang
Browse files

msm: camera: sensor: refactor sensor configure



There need to configure init/resolution/master or slave
setting before stream on. Use sensor configure opcode
to configure resolution and sensor hardware sync setting

Change-Id: I27d326dd316b3a5846041f79812402b0f6db02a9
Signed-off-by: default avatarKui Wang <kuiw@codeaurora.org>
parent 8c2eea77
Loading
Loading
Loading
Loading
+13 −12
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ static void cam_sensor_release_resource(
				"failed while deleting Init settings");
	}

	i2c_set = &(s_ctrl->i2c_data.res_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);
@@ -145,8 +145,8 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
		i2c_reg_settings->is_settings_valid = 1;
		break;
	}
	case CAM_SENSOR_PACKET_OPCODE_SENSOR_RESCONFIG: {
		i2c_reg_settings = &i2c_data->res_settings;
	case CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG: {
		i2c_reg_settings = &i2c_data->config_settings;
		i2c_reg_settings->request_id = 0;
		i2c_reg_settings->is_settings_valid = 1;
		break;
@@ -163,6 +163,7 @@ static int32_t cam_sensor_i2c_pkt_parse(struct cam_sensor_ctrl_t *s_ctrl,
		i2c_reg_settings->is_settings_valid = 1;
		break;
	}

	case CAM_SENSOR_PACKET_OPCODE_SENSOR_UPDATE: {
		i2c_reg_settings =
			&i2c_data->
@@ -776,22 +777,22 @@ int32_t cam_sensor_driver_cmd(struct cam_sensor_ctrl_t *s_ctrl,
			s_ctrl->i2c_data.init_settings.request_id = -1;
		}

		if (s_ctrl->i2c_data.res_settings.is_settings_valid &&
			(s_ctrl->i2c_data.res_settings.request_id == 0)) {
		if (s_ctrl->i2c_data.config_settings.is_settings_valid &&
			(s_ctrl->i2c_data.config_settings.request_id == 0)) {
			rc = cam_sensor_apply_settings(s_ctrl, 0,
				CAM_SENSOR_PACKET_OPCODE_SENSOR_RESCONFIG);
				CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG);
			if (rc < 0) {
				CAM_ERR(CAM_SENSOR,
					"cannot apply res settings");
					"cannot apply config settings");
				goto release_mutex;
			}
			rc = delete_request(&s_ctrl->i2c_data.res_settings);
			rc = delete_request(&s_ctrl->i2c_data.config_settings);
			if (rc < 0) {
				CAM_ERR(CAM_SENSOR,
					"Fail in deleting the res settings");
					"Fail in deleting the config settings");
				goto release_mutex;
			}
			s_ctrl->i2c_data.res_settings.request_id = -1;
			s_ctrl->i2c_data.config_settings.request_id = -1;
		}
	}
		break;
@@ -944,8 +945,8 @@ int cam_sensor_apply_settings(struct cam_sensor_ctrl_t *s_ctrl,
			i2c_set = &s_ctrl->i2c_data.init_settings;
			break;
		}
		case CAM_SENSOR_PACKET_OPCODE_SENSOR_RESCONFIG: {
			i2c_set = &s_ctrl->i2c_data.res_settings;
		case CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG: {
			i2c_set = &s_ctrl->i2c_data.config_settings;
			break;
		}
		case CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMOFF: {
+2 −2
Original line number Diff line number Diff line
@@ -183,7 +183,7 @@ static int32_t cam_sensor_driver_i2c_probe(struct i2c_client *client,
	}

	INIT_LIST_HEAD(&(s_ctrl->i2c_data.init_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.res_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.config_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.streamon_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.streamoff_settings.list_head));

@@ -292,7 +292,7 @@ static int32_t cam_sensor_driver_platform_probe(
	}

	INIT_LIST_HEAD(&(s_ctrl->i2c_data.init_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.res_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.config_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.streamon_settings.list_head));
	INIT_LIST_HEAD(&(s_ctrl->i2c_data.streamoff_settings.list_head));

+2 −2
Original line number Diff line number Diff line
@@ -154,7 +154,7 @@ enum cam_sensor_packet_opcodes {
	CAM_SENSOR_PACKET_OPCODE_SENSOR_UPDATE,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_INITIAL_CONFIG,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_PROBE,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_RESCONFIG,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMOFF,
	CAM_SENSOR_PACKET_OPCODE_SENSOR_NOP = 127
};
@@ -282,7 +282,7 @@ struct i2c_settings_array {

struct i2c_data_settings {
	struct i2c_settings_array init_settings;
	struct i2c_settings_array res_settings;
	struct i2c_settings_array config_settings;
	struct i2c_settings_array streamon_settings;
	struct i2c_settings_array streamoff_settings;
	struct i2c_settings_array *per_frame;