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

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

Merge "msm: camera: Free power setting pointer during shutdown" into dev/msm-4.9-camx

parents 754479ca 45e94a59
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -603,7 +603,11 @@ int32_t cam_actuator_i2c_pkt_parse(struct cam_actuator_ctrl_t *a_ctrl,

void cam_actuator_shutdown(struct cam_actuator_ctrl_t *a_ctrl)
{
	int rc;
	int rc = 0;
	struct cam_actuator_soc_private  *soc_private =
		(struct cam_actuator_soc_private *)a_ctrl->soc_info.soc_private;
	struct cam_sensor_power_ctrl_t *power_info =
		&soc_private->power_info;

	if (a_ctrl->cam_act_state == CAM_ACTUATOR_INIT)
		return;
@@ -612,6 +616,7 @@ void cam_actuator_shutdown(struct cam_actuator_ctrl_t *a_ctrl)
		rc = cam_actuator_power_down(a_ctrl);
		if (rc < 0)
			CAM_ERR(CAM_ACTUATOR, "Actuator Power down failed");
		a_ctrl->cam_act_state = CAM_ACTUATOR_ACQUIRE;
	}

	if (a_ctrl->cam_act_state >= CAM_ACTUATOR_ACQUIRE) {
@@ -622,6 +627,12 @@ void cam_actuator_shutdown(struct cam_actuator_ctrl_t *a_ctrl)
		a_ctrl->bridge_intf.link_hdl = -1;
		a_ctrl->bridge_intf.session_hdl = -1;
	}

	kfree(power_info->power_setting);
	kfree(power_info->power_down_setting);
	power_info->power_setting = NULL;
	power_info->power_down_setting = NULL;

	a_ctrl->cam_act_state = CAM_ACTUATOR_INIT;
}

+11 −1
Original line number Diff line number Diff line
@@ -636,7 +636,11 @@ static int cam_ois_pkt_parse(struct cam_ois_ctrl_t *o_ctrl, void *arg)

void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl)
{
	int rc;
	int rc = 0;
	struct cam_ois_soc_private  *soc_private =
		(struct cam_ois_soc_private *)o_ctrl->soc_info.soc_private;
	struct cam_sensor_power_ctrl_t *power_info =
		&soc_private->power_info;

	if (o_ctrl->cam_ois_state == CAM_OIS_INIT)
		return;
@@ -645,6 +649,7 @@ void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl)
		rc = cam_ois_power_down(o_ctrl);
		if (rc < 0)
			CAM_ERR(CAM_OIS, "OIS Power down failed");
		o_ctrl->cam_ois_state = CAM_OIS_ACQUIRE;
	}

	if (o_ctrl->cam_ois_state >= CAM_OIS_ACQUIRE) {
@@ -656,6 +661,11 @@ void cam_ois_shutdown(struct cam_ois_ctrl_t *o_ctrl)
		o_ctrl->bridge_intf.session_hdl = -1;
	}

	kfree(power_info->power_setting);
	kfree(power_info->power_down_setting);
	power_info->power_setting = NULL;
	power_info->power_down_setting = NULL;

	o_ctrl->cam_ois_state = CAM_OIS_INIT;
}

+19 −15
Original line number Diff line number Diff line
@@ -698,14 +698,17 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf,
	}

	power_info->power_setting_size = 0;
	if (power_info->power_setting == NULL) {
		power_info->power_setting =
			(struct cam_sensor_power_setting *)
			kzalloc(sizeof(struct cam_sensor_power_setting) *
				MAX_POWER_CONFIG, GFP_KERNEL);
		if (!power_info->power_setting)
			return -ENOMEM;
	}

	power_info->power_down_setting_size = 0;
	if (power_info->power_down_setting == NULL) {
		power_info->power_down_setting =
			(struct cam_sensor_power_setting *)
			kzalloc(sizeof(struct cam_sensor_power_setting) *
@@ -714,6 +717,7 @@ int32_t cam_sensor_update_power_settings(void *cmd_buf,
			rc = -ENOMEM;
			goto free_power_settings;
		}
	}

	while (tot_size < cmd_length) {
		if (cmm_hdr->cmd_type ==
@@ -1552,7 +1556,7 @@ int cam_sensor_core_power_up(struct cam_sensor_power_ctrl_t *ctrl,
		if (ret)
			CAM_ERR(CAM_SENSOR, "cannot set pin to suspend state");
		cam_res_mgr_shared_pinctrl_select_state(false);
		pinctrl_put(ctrl->pinctrl_info.pinctrl);
		devm_pinctrl_put(ctrl->pinctrl_info.pinctrl);
		cam_res_mgr_shared_pinctrl_put();
	}

@@ -1766,7 +1770,7 @@ int msm_camera_power_down(struct cam_sensor_power_ctrl_t *ctrl,
			CAM_ERR(CAM_SENSOR, "cannot set pin to suspend state");

		cam_res_mgr_shared_pinctrl_select_state(false);
		pinctrl_put(ctrl->pinctrl_info.pinctrl);
		devm_pinctrl_put(ctrl->pinctrl_info.pinctrl);
		cam_res_mgr_shared_pinctrl_put();
	}