Beispiel #1
0
int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
	int rc;
	struct msm_camera_power_ctrl_t *power_info;
	struct msm_camera_i2c_client *sensor_i2c_client;
	struct msm_camera_slave_info *slave_info;
	const char *sensor_name;
	uint32_t retry = 0;

	if (!s_ctrl) {
		pr_err("%s:%d failed: %p\n",
			__func__, __LINE__, s_ctrl);
		return -EINVAL;
	}

	power_info = &s_ctrl->sensordata->power_info;
	sensor_i2c_client = s_ctrl->sensor_i2c_client;
	slave_info = s_ctrl->sensordata->slave_info;
	sensor_name = s_ctrl->sensordata->sensor_name;

	if (!power_info || !sensor_i2c_client || !slave_info ||
		!sensor_name) {
		pr_err("%s:%d failed: %p %p %p %p\n",
			__func__, __LINE__, power_info,
			sensor_i2c_client, slave_info, sensor_name);
		return -EINVAL;
	}

	if (s_ctrl->set_mclk_23880000)
		msm_sensor_adjust_mclk(power_info);

	for (retry = 0; retry < 3; retry++) {
		rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type,
			sensor_i2c_client);
		if (rc < 0)
			return rc;
		rc = msm_sensor_check_id(s_ctrl);
		if (rc < 0) {
			msm_camera_power_down(power_info,
				s_ctrl->sensor_device_type, sensor_i2c_client);
			msleep(20);
			continue;
		} else {
			break;
		}
	}

	return rc;
}
int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
	int rc;
	struct msm_camera_power_ctrl_t *power_info;
	struct msm_camera_i2c_client *sensor_i2c_client;
	struct msm_camera_slave_info *slave_info;
	const char *sensor_name;

#if defined(CONFIG_MACH_LGE)
/* Add sensor On/Off log */
	pr_info("%s E, sensor name = %s\n", __func__, s_ctrl->sensordata->sensor_name);
#endif

	if (!s_ctrl) {
		pr_err("%s:%d failed: %p\n",
			__func__, __LINE__, s_ctrl);
		return -EINVAL;
	}

	power_info = &s_ctrl->sensordata->power_info;
	sensor_i2c_client = s_ctrl->sensor_i2c_client;
	slave_info = s_ctrl->sensordata->slave_info;
	sensor_name = s_ctrl->sensordata->sensor_name;

	if (!power_info || !sensor_i2c_client || !slave_info ||
		!sensor_name) {
		pr_err("%s:%d failed: %p %p %p %p\n",
			__func__, __LINE__, power_info,
			sensor_i2c_client, slave_info, sensor_name);
		return -EINVAL;
	}

	rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type,
		sensor_i2c_client);
	if (rc < 0)
		return rc;
	rc = msm_sensor_check_id(s_ctrl);
	if (rc < 0)
		msm_camera_power_down(power_info, s_ctrl->sensor_device_type,
					sensor_i2c_client);

#if defined(CONFIG_MACH_LGE)
/* Add sensor On/Off log */
	pr_info("%s X, sensor name = %s\n", __func__, s_ctrl->sensordata->sensor_name);
#endif
	return rc;
}
Beispiel #3
0
int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl,
	struct msm_camera_power_ctrl_t *power_info,
	struct msm_camera_i2c_client *sensor_i2c_client,
	struct msm_camera_slave_info *slave_info,
	const char *sensor_name)
{
	int rc;

	pr_err("%s\n", __func__);
	if (!s_ctrl || !power_info || !sensor_i2c_client || !slave_info ||
		!sensor_name) {
		pr_err("%s:%d failed: %p %p %p %p %p\n",
			__func__, __LINE__, s_ctrl, power_info,
			sensor_i2c_client, slave_info, sensor_name);
		return -EINVAL;
	}
	
	if (s_ctrl->sensor_state == MSM_SENSOR_POWER_UP) {
		pr_err("%s:%d invalid sensor state %d\n", __func__, __LINE__,
			s_ctrl->sensor_state);
		return -EINVAL;
	}

	pr_warn("[%s:%d] %s", __func__, __LINE__,
		sensor_name);
	rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type,
		sensor_i2c_client);
	if (rc < 0) {
            pr_err("%s : power up failed", __func__);
            return rc;
        }
	s_ctrl->sensor_state = MSM_SENSOR_POWER_UP;
	pr_err("%s: %d\n", __func__, s_ctrl->sensor_state);
#if 1
	rc = msm_sensor_check_id(s_ctrl, sensor_i2c_client, slave_info,
		sensor_name);
//	if (rc < 0)
//		msm_sensor_power_down(power_info, s_ctrl->sensor_device_type,
//		sensor_i2c_client);
#endif

	return rc;
}
Beispiel #4
0
int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
	int rc;
	struct msm_camera_power_ctrl_t *power_info;
	struct msm_camera_i2c_client *sensor_i2c_client;
	struct msm_camera_slave_info *slave_info;
	const char *sensor_name;

	if (!s_ctrl) {
		pr_err("%s:%d failed: %p\n",
			__func__, __LINE__, s_ctrl);
		return -EINVAL;
	}

	power_info = &s_ctrl->sensordata->power_info;
	sensor_i2c_client = s_ctrl->sensor_i2c_client;
	slave_info = s_ctrl->sensordata->slave_info;
	sensor_name = s_ctrl->sensordata->sensor_name;

	if (!power_info || !sensor_i2c_client || !slave_info ||
		!sensor_name) {
		pr_err("%s:%d failed: %p %p %p %p\n",
			__func__, __LINE__, power_info,
			sensor_i2c_client, slave_info, sensor_name);
		return -EINVAL;
	}

	rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type,
		sensor_i2c_client);
	if (rc < 0)
		return rc;
	rc = msm_sensor_check_id(s_ctrl);
	if (rc < 0)
		msm_camera_power_down(power_info, s_ctrl->sensor_device_type,
					sensor_i2c_client);

	return rc;
}
int msm_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
	int rc;
	struct msm_camera_power_ctrl_t *power_info;
	struct msm_camera_i2c_client *sensor_i2c_client;
	struct msm_camera_slave_info *slave_info;
	const char *sensor_name;
	uint32_t retry = 0; /*LGE_CHANGE, power up retry, 2014-12-29, [email protected]*/

	if (!s_ctrl) {
		pr_err("%s:%d failed: %p\n",
			__func__, __LINE__, s_ctrl);
		return -EINVAL;
	}

	power_info = &s_ctrl->sensordata->power_info;
	sensor_i2c_client = s_ctrl->sensor_i2c_client;
	slave_info = s_ctrl->sensordata->slave_info;
	sensor_name = s_ctrl->sensordata->sensor_name;

	if (!power_info || !sensor_i2c_client || !slave_info ||
		!sensor_name) {
		pr_err("%s:%d failed: %p %p %p %p\n",
			__func__, __LINE__, power_info,
			sensor_i2c_client, slave_info, sensor_name);
		return -EINVAL;
	}
/*LGE_CHANGE_S, power up retry, 2014-12-29, [email protected]*/
	for (retry = 0; retry < 3; retry++) {
/*LGE_CHANGE_E, power up retry, 2014-12-29, [email protected]*/
	rc = msm_camera_power_up(power_info, s_ctrl->sensor_device_type,
		sensor_i2c_client);
	if (rc < 0)
		return rc;
	rc = msm_sensor_check_id(s_ctrl);

	/*LGE_CHANGE_S, mipi end packet issue, 2013-10-15, [email protected]*/
	if(strncmp(s_ctrl->sensordata->sensor_name, "hi707", strlen("hi707")) == 0)
		s_ctrl->isFirstStream = TRUE;
	/*LGE_CHANGE_E, mipi end packet issue, 2013-10-15, [email protected]*/

/*LGE_CHANGE_S, power up retry, 2014-12-29, [email protected]*/
#if 0   //QCT Original
	if (rc < 0)
		msm_camera_power_down(power_info, s_ctrl->sensor_device_type,
					sensor_i2c_client);
#else
		if (rc < 0) {
			msm_camera_power_down(power_info,
				s_ctrl->sensor_device_type, sensor_i2c_client);
			msleep(20);
			continue;
		} else {
			break;
		}
	}
#endif
/*LGE_CHANGE_E, power up retry, 2014-12-29, [email protected]*/

	return rc;
}