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; }
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; }