Beispiel #1
0
int sr130pc10_sensor_init(const struct msm_camera_sensor_info *data)
{
  int i, rc = 0;
	printk("[SR130PC10] %s/%d \n", __func__, __LINE__);	

#ifdef CONFIG_LOAD_FILE
	if(0 > sr130pc10_regs_table_init()) {
			CDBG("%s file open failed!\n",__func__);
			rc = -1;
			goto init_fail;
	}
#endif
        
	sr130pc10_ctrl = kzalloc(sizeof(struct sr130pc10_ctrl_t), GFP_KERNEL);
	if (!sr130pc10_ctrl) {
		printk("[SR130PC10]sr130pc10_init failed!\n");
		rc = -ENOMEM;
		goto init_done;
	}
    prev_vtcall_mode=-1;

	if (data)
		sr130pc10_ctrl->sensordata = data;

  /* Input MCLK = 24MHz */
  msm_camio_clk_rate_set(24000000);
  msleep(5);
  
  msm_camio_camif_pad_reg_reset();
  sr130pc10_set_power(true);
  
  rc = sr130pc10_sensor_init_probe();

  if(rc < 0)
  {
    for(i=0;i<5;i++)
    {
      printk("[SR130PC10]sr130pc10_sensor_init failed!\n");
      sr130pc10_set_power(false);
      mdelay(50);
      msm_camio_camif_pad_reg_reset();
      sr130pc10_set_power(true);
      msleep(5);
      rc = sr130pc10_sensor_init_probe();
      probe_init_retry++;
      if(rc >= 0)break;
    }
    if(rc < 0)goto init_fail;
  }

init_done:
	return rc;

init_fail:
	kfree(sr130pc10_ctrl);
	return rc;
}
Beispiel #2
0
int sr130pc10_sensor_init(const struct msm_camera_sensor_info *data)
{
	int rc = 0;

	printk(KERN_DEBUG "[SR130PC10] %s/%d\n", __func__, __LINE__);

#ifdef CONFIG_LOAD_FILE
	if (0 > sr130pc10_regs_table_init()) {
		CDBG("%s file open failed!\n", __func__);
		rc = -1;
		goto init_fail;
	}
#endif

	sr130pc10_ctrl = kzalloc(sizeof(struct sr130pc10_ctrl_t), GFP_KERNEL);
	if (!sr130pc10_ctrl) {
		printk(KERN_DEBUG "[SR130PC10]sr130pc10_init failed!\n");
		rc = -ENOMEM;
		goto init_done;
	}

	if (data)
		sr130pc10_ctrl->sensordata = data;

	rc = cam_hw_init();
	if (rc < 0) {
		printk(KERN_DEBUG "[SR130PC10]<=PCAM=> cam_hw_init failed!\n");
		goto init_fail;
	}

	rc = sr130pc10_sensor_init_probe(data);
	if (rc < 0) {
		printk(KERN_DEBUG "[SR130PC10]sr130pc10_sensor_init failed!\n");
		goto init_fail;
	}
	printk(KERN_DEBUG "[SR130PC10] %s/%d\n", __func__, __LINE__);

 init_done:
	return rc;

 init_fail:
	kfree(sr130pc10_ctrl);
	return rc;
}