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

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

Merge "msm: ais: sensor: Fix turning clocks off during suspend"

parents 1708fcc6 c8e9459d
Loading
Loading
Loading
Loading
+55 −41
Original line number Diff line number Diff line
@@ -73,22 +73,19 @@ static int msm_sensor_suspend(struct device *dev)
		return -EFAULT;
	}

	if (s_ctrl->is_csid_tg_mode)
		return 0;

	if (s_ctrl->sensor_state == MSM_SENSOR_CCI_DOWN) {

		/* Turning on cci clock to retain previous state */
		if (!msm_camera_cci_power_up(s_ctrl->sensor_device_type,
				s_ctrl->sensor_i2c_client)) {
			s_ctrl->sensor_state = MSM_SENSOR_CCI_UP;
		}

	if (s_ctrl->is_csid_tg_mode)
		return 0;

		kfree(s_ctrl->stop_setting.reg_setting);
		s_ctrl->stop_setting.reg_setting = NULL;
	if (s_ctrl->sensor_state == MSM_SENSOR_POWER_DOWN) {
		pr_debug("just returning success since sensor is already off %d\n",
			 s_ctrl->sensor_state);
		return 0;
	}
		if (s_ctrl->func_tbl->sensor_power_down) {
			if (s_ctrl->sensordata->misc_regulator)
				msm_sensor_misc_regulator(s_ctrl, 0);
@@ -104,6 +101,15 @@ static int msm_sensor_suspend(struct device *dev)
		} else {
			rc = -EFAULT;
		}
	} else if (s_ctrl->sensor_state == MSM_SENSOR_POWER_DOWN) {
		pr_debug("just returning success since sensor is already off %d\n",
			 s_ctrl->sensor_state);
		return 0;
	} else {
		pr_err("%s:%d invalid state\n", __func__,
			__LINE__);
		rc = -EFAULT;
	}

	return rc;
}
@@ -123,11 +129,8 @@ static int msm_sensor_resume(struct device *dev)
	if (s_ctrl->is_csid_tg_mode)
		return 0;

	if (s_ctrl->sensor_state == MSM_SENSOR_POWER_UP) {
		pr_debug("just returning success since sensor is alreay on %d\n",
			 s_ctrl->sensor_state);
		return 0;
	}
	if (s_ctrl->sensor_state == MSM_SENSOR_POWER_DOWN) {

		if (s_ctrl->func_tbl->sensor_power_up) {
			if (s_ctrl->sensordata->misc_regulator)
				msm_sensor_misc_regulator(s_ctrl, 1);
@@ -137,6 +140,7 @@ static int msm_sensor_resume(struct device *dev)
				pr_err("%s:%d failed rc %d\n", __func__,
					__LINE__, rc);
				rc = -EFAULT;
				return rc;
			}
			s_ctrl->sensor_state = MSM_SENSOR_POWER_UP;
			CDBG("%s:%d sensor state %d\n", __func__, __LINE__,
@@ -150,6 +154,16 @@ static int msm_sensor_resume(struct device *dev)
			s_ctrl->sensor_i2c_client)) {
			s_ctrl->sensor_state = MSM_SENSOR_CCI_DOWN;
		}
	} else if (s_ctrl->sensor_state == MSM_SENSOR_CCI_DOWN) {
		pr_debug("just returning success since sensor is already on %d\n",
			s_ctrl->sensor_state);
		rc = 0;
	} else {
		pr_err("%s:%d invalid state\n", __func__,
			__LINE__);
		rc = -EFAULT;
	}

	return rc;
}