示例#1
0
int YushanII_power_up(const struct msm_camera_rawchip_info *pdata)
{
	int rc = 0;
	CDBG("[CAM] %s\n", __func__);

	if (pdata->camera_rawchip_power_on == NULL) {
		pr_err("YushanII power on platform_data didn't register\n");
		return -EIO;
	}
	rc = pdata->camera_rawchip_power_on();
	if (rc < 0) {
		pr_err("YushanII power on failed\n");
		goto enable_power_on_failed;
	}

#ifdef CONFIG_RAWCHIP_MCLK
	rc = msm_camio_clk_enable(CAMIO_CAM_RAWCHIP_MCLK_CLK);
#else
	rc = msm_camio_clk_enable(CAMIO_CAM_MCLK_CLK);
#endif

	if (rc < 0) {
		pr_err("enable MCLK failed\n");
		goto enable_mclk_failed;
	}
	mdelay(1);

	rc = gpio_request(pdata->rawchip_reset, "YushanII");
	if (rc < 0) {
		pr_err("GPIO(%d) request failed\n", pdata->rawchip_reset);
		goto enable_reset_failed;
	}
	gpio_direction_output(pdata->rawchip_reset, 1);
	gpio_free(pdata->rawchip_reset);
	mdelay(1);
	Ilp0100_enableIlp0100SensorClock(SENSOR_0);
	mdelay(1);

	return rc;

enable_reset_failed:
#ifdef CONFIG_RAWCHIP_MCLK
	rc = msm_camio_clk_disable(CAMIO_CAM_RAWCHIP_MCLK_CLK);
#else
	rc = msm_camio_clk_disable(CAMIO_CAM_MCLK_CLK);
#endif

enable_mclk_failed:
	if (pdata->camera_rawchip_power_off == NULL)
		pr_err("YushanII power off platform_data didn't register\n");
	else
		pdata->camera_rawchip_power_off();
enable_power_on_failed:
	return rc;
}
示例#2
0
int32_t ov2722_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{
	int rc;
	struct msm_camera_sensor_info *sdata = NULL;
	pr_info("%s\n", __func__);

	if (s_ctrl && s_ctrl->sensordata)
		sdata = s_ctrl->sensordata;
	else {
		pr_err("%s: s_ctrl sensordata NULL\n", __func__);
		return (-1);
	}

	if (sdata->camera_power_on == NULL) {
		pr_err("sensor platform_data didnt register\n");
		return -EIO;
	}

	rc = sdata->camera_power_on();
	if (rc < 0) {
		pr_err("%s failed to enable power\n", __func__);
		return rc;
	}

	if (!sdata->use_rawchip && (sdata->htc_image != HTC_CAMERA_IMAGE_YUSHANII_BOARD)) {
		rc = msm_camio_clk_enable(CAMIO_CAM_MCLK_CLK);
		if (rc < 0) {
			return rc;
		}
	}

#ifdef CONFIG_RAWCHIPII
	Ilp0100_enableIlp0100SensorClock(SENSOR_1);
	mdelay(3);	
#endif

	ov2722_sensor_open_init(sdata);
	pr_info("%s end\n", __func__);

	return 0;  
}
示例#3
0
int32_t s5k6a2ya_power_up(struct msm_sensor_ctrl_t *s_ctrl)//(const struct msm_camera_sensor_info *sdata)
{
	int rc;
	struct msm_camera_sensor_info *sdata = NULL;
	pr_info("%s\n", __func__);

	if (s_ctrl && s_ctrl->sensordata)
		sdata = s_ctrl->sensordata;
	else {
		pr_err("%s: s_ctrl sensordata NULL\n", __func__);
		return (-1);
	}

	if (sdata->camera_power_on == NULL) {
		pr_err("sensor platform_data didnt register\n");
		return -EIO;
	}
	rc = sdata->camera_power_on();
	if (rc < 0) {
		pr_err("%s failed to enable power\n", __func__);
		goto enable_power_on_failed;
	}

#ifndef CONFIG_DISABLE_MCLK_RAWCHIP_TO_MAINCAM
	if (!sdata->use_rawchip && (sdata->htc_image != HTC_CAMERA_IMAGE_YUSHANII_BOARD)) {
		rc = msm_camio_clk_enable(sdata,CAMIO_CAM_MCLK_CLK);
		if (rc < 0) {
			pr_err("%s: msm_camio_clk_enable failed:%d\n",
			 __func__, rc);
			goto enable_mclk_failed;
		}
	}

	rc = msm_sensor_set_power_up(s_ctrl);//(sdata);

	if (rc < 0) {
		pr_err("%s msm_sensor_power_up failed\n", __func__);
		goto set_sensor_power_up_failed;
	}
#else
	rc = msm_camio_clk_enable(sdata,CAMIO_CAM_MCLK_CLK);
	if (rc < 0) {
		pr_err("%s msm_camio_clk_enable failed\n", __func__);
		goto enable_mclk_failed;
	}
#endif

#ifdef CONFIG_RAWCHIPII
	Ilp0100_enableIlp0100SensorClock(SENSOR_1);
	mdelay(35); //temp timing setting
#endif

	s5k6a2ya_sensor_open_init(sdata);
	pr_info("%s end\n", __func__);

	return rc;

#ifndef CONFIG_DISABLE_MCLK_RAWCHIP_TO_MAINCAM
set_sensor_power_up_failed:
	msm_camio_clk_disable(sdata,CAMIO_CAM_MCLK_CLK);
#endif
enable_mclk_failed:
	if (sdata->camera_power_off == NULL)
		pr_err("sensor platform_data didnt register\n");
	else
		sdata->camera_power_off();
enable_power_on_failed:
	return rc;
}