static int as0260_vreg_init(void) { int rc = 0; SKYCDBG("%s:%d\n", __func__, __LINE__); rc = sgpio_init(sgpios, CAMIO_MAX); if (rc < 0) { SKYCERR("%s: sgpio_init failed \n", __func__); goto sensor_init_fail; } rc = svreg_init(svregs, CAMV_MAX); if (rc < 0) { SKYCERR("%s: svreg_init failed \n", __func__); goto sensor_init_fail; } return rc; sensor_init_fail: return -ENODEV; }
/* mt9d113_vreg_init */ static int mt9d113_vreg_init(void) { int rc = 0; pr_err("%s E\n", __func__); rc = sgpio_init(sgpios, CAMIO_MAX); if (rc < 0) goto sensor_init_fail; rc = svreg_init(svregs, CAMV_MAX); if (rc < 0) goto sensor_init_fail; pr_err("%s X\n", __func__); return 0; sensor_init_fail: svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); return -ENODEV; }
int32_t mt9v113_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; SKYCDBG("%s E\n", __func__); msm_sensor_probe_on(&s_ctrl->sensor_i2c_client->client->dev); SKYCDBG("%s msm_sensor_probe_on ok\n", __func__); msm_camio_clk_rate_set(MSM_SENSOR_MCLK_24HZ); SKYCDBG("%s msm_camio_clk_rate_set ok\n", __func__); rc = sgpio_init(sgpios, CAMIO_MAX); if (rc < 0) goto sensor_init_fail; rc = svreg_init(svregs, CAMV_MAX); if (rc < 0) goto sensor_init_fail; if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAMIO_RST_N, 1) < 0) rc = -EIO; mdelay(1); if (svreg_ctrl(svregs, CAMV_IO_1P8V, 1) < 0) rc = -EIO; mdelay(1); /* > 1ms */ #if defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER < WS20) rc = gpio_direction_output(91, 1); if (rc < 0) { SKYCDBG("%s err(%d, gpio91)\n", __func__, rc); rc = -EIO; return rc; } mdelay(1); #elif defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER >= WS20) if (sgpio_ctrl(sgpios, CAMV_A_2P8V, 1) < 0) rc = -EIO; mdelay(1); #endif if (sgpio_ctrl(sgpios, CAMV_CORE_1P8V, 1) < 0) rc = -EIO; mdelay(1); if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); /* > 10 clks (approx. 0.42us) */ if (sgpio_ctrl(sgpios, CAMIO_RST_N, 1) < 0) rc = -EIO; mdelay(1); /* > 1 clk (apporx. 0.042us) */ msleep(500); /* 500ms PANTECH_CAMERA_TODO */ //msm_camio_clk_rate_set(24000000); msleep(10); SKYCDBG("%s X (%d)\n", __func__, rc); return rc; sensor_init_fail: /*PANTECH_CAMERA_TODO, check correct timing, spec don't have off seq. */ if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); if (svreg_ctrl(svregs, CAMV_IO_1P8V, 0) < 0) rc = -EIO; if (sgpio_ctrl(sgpios, CAMV_CORE_1P8V, 0) < 0) rc = -EIO; #if defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER < WS20) rc = gpio_direction_output(91, 0); if (rc < 0) { SKYCDBG("%s err(%d, gpio91)\n", __func__, rc); rc = -EIO; return rc; } mdelay(1); #elif defined(CONFIG_MACH_MSM8960_STARQ) && (BOARD_VER >= WS20) if (sgpio_ctrl(sgpios, CAMV_A_2P8V, 0) < 0) rc = -EIO; mdelay(1); #endif svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); return rc; }
static int yacd5c1sbdbc_vreg_init(void) { int rc = 0; pr_err("%s:%d\n", __func__, __LINE__); rc = sgpio_init(sgpios, CAMIO_MAX); if (rc < 0) { SKYCERR("%s: sgpio_init failed \n", __func__); goto sensor_init_fail; } rc = svreg_init(svregs, CAMV_MAX); if (rc < 0) { SKYCERR("%s: svreg_init failed \n", __func__); goto sensor_init_fail; } return rc; #if 0 #if 0 if (vreg_l16_2p8 == NULL) { vreg_l16_2p8 = regulator_get(NULL, "8921_l16"); if (IS_ERR(vreg_l16_2p8)) { printk("%s: vreg_l16_2p8 get failed \n", __func__); vreg_l16_2p8 = NULL; return -ENODEV; } rc = regulator_set_voltage(vreg_l16_2p8, 2800000, 2800000); if (rc) { printk("%s: unable to set vreg_l16_2p8 voltage to 2.8V\n", __func__); goto fail; } } if (vreg_s4_1p8 == NULL) { vreg_s4_1p8 = regulator_get(NULL, "8921_s4"); if (IS_ERR(vreg_s4_1p8)) { printk("%s: vreg_s4_1p8 get failed \n", __func__); vreg_s4_1p8 = NULL; return -ENODEV; } rc = regulator_set_voltage(vreg_s4_1p8, 1800000, 1800000); if (rc) { printk("%s: unable to set vreg_s4_1p8 voltage to 1.8V\n", __func__); goto fail; } } #endif #if 1 //wsyang_temp for 2M if (vreg_lvs5_1p8 == NULL) { vreg_lvs5_1p8 = regulator_get(NULL, "8921_lvs5"); if (IS_ERR(vreg_lvs5_1p8)) { printk("%s: vreg_lvs5_1p8 get failed \n", __func__); vreg_lvs5_1p8 = NULL; return -ENODEV; } // rc = regulator_set_voltage(vreg_lvs5_1p8, 1800000, 1800000); // if (rc) { // SKYCERR("%s: unable to set vreg_lvs5_1p8 voltage to 1.8V\n", __func__); // goto fail; // } } if (vreg_lvs6_1p8 == NULL) { vreg_lvs6_1p8 = regulator_get(NULL, "8921_lvs6"); if (IS_ERR(vreg_lvs6_1p8)) { printk("%s: vreg_lvs6_1p8 get failed \n", __func__); vreg_lvs6_1p8 = NULL; return -ENODEV; } // rc = regulator_set_voltage(vreg_lvs6_1p8, 1800000, 1800000); // if (rc) { // printk("%s: unable to set vreg_lvs6_1p8 voltage to 1.8V\n", __func__); // goto fail; // } } if (vreg_l11_2p85 == NULL) { vreg_l11_2p85 = regulator_get(NULL, "8921_l11"); if (IS_ERR(vreg_l11_2p85)) { printk("%s: vreg_l11_2p85 get failed \n", __func__); vreg_l11_2p85 = NULL; return -ENODEV; } rc = regulator_set_voltage(vreg_l11_2p85, 2800000, 2800000); // rc = regulator_set_voltage(vreg_l11_2p85, 2850000, 2850000); if (rc) { printk("%s: unable to set vreg_l11_2p85 voltage to 2.8V\n", __func__); goto fail; } } #endif //wsyang_temp for 2M return rc; fail: printk("%s Failed!:%d\n",__func__, __LINE__); #if 0 if(vreg_l16_2p8) { regulator_put(vreg_l16_2p8); } if(vreg_s4_1p8) { regulator_put(vreg_s4_1p8); } #endif if(vreg_lvs6_1p8) { regulator_put(vreg_lvs6_1p8); } if(vreg_l11_2p85) { regulator_put(vreg_l11_2p85); } if(vreg_lvs5_1p8) { regulator_put(vreg_lvs5_1p8); } #endif sensor_init_fail: return -ENODEV; }
int s5k6aafx13_sensor_init(const struct msm_camera_sensor_info *sinfo) { int rc = 0; CDBG("%s E\n", __func__); config_csi_done = false; sensor_mode = SENSOR_PREVIEW_MODE; memset(s5k6aafx13_params, 0, sizeof(s5k6aafx13_params)); #ifdef CONFIG_PANTECH_CAMERA_TUNER memset(s5k6aafx13_tuner_params, 0, sizeof(s5k6aafx13_tuner_params)); #endif //PANTECH_CAMERA_TODO, adapter 설정과 param 설정을 분리할 것. ugly 하다... rc = si2c_init(s5k6aafx13_client->adapter, s5k6aafx13_const_params, s5k6aafx13_params); if (rc < 0) goto sensor_init_fail; s5k6aafx13_ctrl = kzalloc(sizeof(s5k6aafx13_ctrl_t), GFP_KERNEL); if (!s5k6aafx13_ctrl) { CERR("%s err(-ENOMEM)\n", __func__); goto sensor_init_fail; } if (sinfo) s5k6aafx13_ctrl->sinfo = sinfo; rc = sgpio_init(sgpios, CAMIO_MAX); if (rc < 0) goto sensor_init_fail; rc = svreg_init(svregs, CAMV_MAX); if (rc < 0) goto sensor_init_fail; rc = s5k6aafx13_power_on(); if (rc < 0) goto sensor_init_fail; #ifdef CONFIG_PANTECH_CAMERA_TUNER CERR("%s tuner is enabled, skip writing INIT param!\n", __func__); #else rc = si2c_write_param(SI2C_SA, SI2C_INIT, s5k6aafx13_params); if (rc < 0) goto sensor_init_fail; #endif CDBG("%s X\n", __func__); return 0; sensor_init_fail: if (s5k6aafx13_ctrl) { kfree(s5k6aafx13_ctrl); s5k6aafx13_ctrl = NULL; } (void)s5k6aafx13_power_off(); svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); si2c_release(); CERR("%s err(%d)\n", __func__, rc); return rc; }