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

Commit dd864b17 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: camera: Bypass redundant creation of video node in stereo"

parents 2a462bd8 363d7dc5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ struct msm_sensor_ctrl_t {
	uint32_t set_mclk_23880000;
	uint8_t is_csid_tg_mode;
	uint32_t is_secure;
	uint8_t bypass_video_node_creation;
};

int msm_sensor_config(struct msm_sensor_ctrl_t *s_ctrl, void __user *argp);
+21 −9
Original line number Diff line number Diff line
@@ -86,11 +86,14 @@ static int32_t msm_sensor_driver_create_i2c_v4l_subdev
	struct i2c_client *client = s_ctrl->sensor_i2c_client->client;

	CDBG("%s %s I2c probe succeeded\n", __func__, client->name);
	if (0 == s_ctrl->bypass_video_node_creation) {
		rc = camera_init_v4l2(&client->dev, &session_id);
		if (rc < 0) {
			pr_err("failed: camera_init_i2c_v4l2 rc %d", rc);
			return rc;
		}
	}

	CDBG("%s rc %d session_id %d\n", __func__, rc, session_id);
	snprintf(s_ctrl->msm_sd.sd.name,
		sizeof(s_ctrl->msm_sd.sd.name), "%s",
@@ -123,11 +126,14 @@ static int32_t msm_sensor_driver_create_v4l_subdev
	int32_t rc = 0;
	uint32_t session_id = 0;

	if (0 == s_ctrl->bypass_video_node_creation) {
		rc = camera_init_v4l2(&s_ctrl->pdev->dev, &session_id);
		if (rc < 0) {
			pr_err("failed: camera_init_v4l2 rc %d", rc);
			return rc;
		}
	}

	CDBG("rc %d session_id %d", rc, session_id);
	s_ctrl->sensordata->sensor_info->session_id = session_id;

@@ -712,6 +718,8 @@ int32_t msm_sensor_driver_probe(void *setting,
			slave_info32->sensor_init_params;
		slave_info->output_format =
			slave_info32->output_format;
		slave_info->bypass_video_node_creation =
			!!slave_info32->bypass_video_node_creation;
		kfree(slave_info32);
	} else
#endif
@@ -739,7 +747,8 @@ int32_t msm_sensor_driver_probe(void *setting,
		slave_info->sensor_init_params.position);
	CDBG("mount %d",
		slave_info->sensor_init_params.sensor_mount_angle);

	CDBG("bypass video node creation %d",
		slave_info->bypass_video_node_creation);
	/* Validate camera id */
	if (slave_info->camera_id >= MAX_CAMERAS) {
		pr_err("failed: invalid camera id %d max %d",
@@ -902,6 +911,9 @@ CSID_TG:
	 */
	s_ctrl->is_probe_succeed = 1;

	s_ctrl->bypass_video_node_creation =
		slave_info->bypass_video_node_creation;

	/*
	 * Update the subdevice id of flash-src based on availability in kernel.
	 */
+1 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ struct msm_camera_sensor_slave_info32 {
	uint8_t  is_init_params_valid;
	struct msm_sensor_init_params sensor_init_params;
	enum msm_sensor_output_format_t output_format;
	uint8_t bypass_video_node_creation;
};

struct msm_camera_csid_lut_params32 {
+3 −0
Original line number Diff line number Diff line
@@ -48,6 +48,8 @@
#define MSM_EEPROM_MEMORY_MAP_MAX_SIZE  80
#define MSM_EEPROM_MAX_MEM_MAP_CNT      8

#define MSM_SENSOR_BYPASS_VIDEO_NODE    1

enum msm_sensor_camera_id_t {
	CAMERA_0,
	CAMERA_1,
@@ -300,6 +302,7 @@ struct msm_camera_sensor_slave_info {
	unsigned char  is_init_params_valid;
	struct msm_sensor_init_params sensor_init_params;
	enum msm_sensor_output_format_t output_format;
	uint8_t bypass_video_node_creation;
};

struct msm_camera_i2c_reg_array {