static int mt9d113_sensor_set_effect(struct msm_sensor_ctrl_t *s_ctrl ,int8_t effect) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s effect=%d\n", __func__, effect); switch (effect) { case 0: pid = SI2C_EFFECT_OFF; break; case 1: pid = SI2C_EFFECT_MONO; break; case 2: pid = SI2C_EFFECT_NEGATIVE; break; case 3: pid = SI2C_EFFECT_SOLARIZE; break; case 4: pid = SI2C_EFFECT_SEPIA; break; default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
static int as0260_sensor_set_reflect(struct msm_sensor_ctrl_t *s_ctrl ,int8_t reflect) { int rc = 0; SKYCDBG("%s reflect=%d start \n",__func__,reflect); //SKYCDBG if(reflect < 0 || reflect > 3){ SKYCERR("%s error. reflect=%d\n", __func__, reflect); //SKYCERR return -EINVAL; } rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->reflect_cfg_settings[reflect], s_ctrl->msm_sensor_reg->reflect_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
int32_t as0260_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; SKYCDBG("%s: %d\n", __func__, __LINE__); rc = msm_sensor_power_up(s_ctrl); SKYCDBG(" %s : msm_sensor_power_up : rc = %d E\n",__func__, rc); as0260_vreg_init(); if (svreg_ctrl(svregs, CAMV_CORE_1P8V, 1) < 0) rc = -EIO; mdelay(50); if (svreg_ctrl(svregs, CAMV_I2C_1P8V, 1) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_IO_1P8V, 1) < 0) rc = -EIO; mdelay(1); /* > 20us */ if (svreg_ctrl(svregs, CAMV_A_2P8V, 1) < 0) rc = -EIO; mdelay(1); /* > 15us */ if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; //msm_camio_clk_rate_set(24000000); msleep(10); /* > 50us */ if (sgpio_ctrl(sgpios, CAMIO_RST_N, 1) < 0) rc = -EIO; mdelay(30); //mdelay(1); /* > 50us */ SKYCDBG("%s X (%d)\n", __func__, rc); return rc; }
static int mt9d113_sensor_set_brightness(struct msm_sensor_ctrl_t *s_ctrl ,int8_t brightness) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s brightness=%d\n", __func__, brightness); switch (brightness) { case 0: pid = SI2C_BRIGHTNESS_M4; break; case 1: pid = SI2C_BRIGHTNESS_M3; break; case 2: pid = SI2C_BRIGHTNESS_M2; break; case 3: pid = SI2C_BRIGHTNESS_M1; break; case 4: pid = SI2C_BRIGHTNESS_0; break; case 5: pid = SI2C_BRIGHTNESS_P1; break; case 6: pid = SI2C_BRIGHTNESS_P2; break; case 7: pid = SI2C_BRIGHTNESS_P3; break; case 8: pid = SI2C_BRIGHTNESS_P4; break; default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
static int32_t as0260_trans_gpio_pm_to_sys(sgpio_ctrl_t *gpios, struct msm_sensor_ctrl_t *s_ctrl, uint32_t gpio_max_num) { int i; int rc = 0; struct msm_camera_gpio_conf *gpio_conf = s_ctrl->sensordata->sensor_platform_info->gpio_conf; for (i = 0; i < gpio_max_num; i++) { //if(strstr(gpios[i].label, gpio_conf->cam_gpio_common_tbl[i].label)) if(strstr(gpios[i].label, "PM")) { SKYCDBG("%s MATCH gpio string_111~~~[board=%s, %d], [driver=%s, %d]\n", __func__, gpio_conf->cam_gpio_req_tbl[i].label, gpio_conf->cam_gpio_req_tbl[i].gpio, gpios[i].label, gpios[i].nr); gpios[i].nr = gpio_conf->cam_gpio_req_tbl[i].gpio; SKYCDBG("%s MATCH gpio string_222~~~[board=%s, %d], [driver=%s, %d]\n", __func__, gpio_conf->cam_gpio_req_tbl[i].label, gpio_conf->cam_gpio_req_tbl[i].gpio, gpios[i].label, gpios[i].nr); } else SKYCDBG("%s DON'T MATCH gpio string~~~(board=%s, driver=%s)\n", __func__, gpio_conf->cam_gpio_req_tbl[i].label, gpios[i].label); } return rc; }
int32_t as0260_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; SKYCDBG("%s\n", __func__); msm_sensor_power_down(s_ctrl); SKYCDBG(" %s : msm_sensor_power_down : rc = %d E\n",__func__, rc); if (sgpio_ctrl(sgpios, CAMIO_RST_N, 0) < 0) rc = -EIO; mdelay(1); /* > 20 cycles (approx. 0.64us) */ if (sgpio_ctrl(sgpios, CAMIO_STB_N, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_A_2P8V, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_IO_1P8V, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_I2C_1P8V, 0) < 0) rc = -EIO; if (svreg_ctrl(svregs, CAMV_CORE_1P8V, 0) < 0) rc = -EIO; svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); SKYCDBG("%s X (%d)\n", __func__, rc); return rc; }
static int mt9d113_sensor_set_reflect(struct msm_sensor_ctrl_t *s_ctrl ,int8_t reflect) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s reflect=%d\n", __func__, reflect); switch (reflect) { #ifdef CONFIG_MACH_MSM8X60_EF65L case 0: pid = SI2C_REFLECT_MIRROR_WATER; break; case 1: pid = SI2C_REFLECT_WATER; break; case 2: pid = SI2C_REFLECT_MIRROR; break; case 3: pid = SI2C_REFLECT_OFF; break; #else case 0: pid = SI2C_REFLECT_OFF; break; case 1: pid = SI2C_REFLECT_MIRROR; break; case 2: pid = SI2C_REFLECT_WATER; break; case 3: pid = SI2C_REFLECT_MIRROR_WATER; break; #endif default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
int32_t mt9v113_sensor_power_down(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; SKYCDBG("%s E\n", __func__); msm_sensor_probe_off(&s_ctrl->sensor_i2c_client->client->dev); /*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); SKYCDBG("%s X (%d)\n", __func__, rc); return rc; }
static int mt9d113_sensor_set_wb(struct msm_sensor_ctrl_t *s_ctrl ,int8_t wb) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s wb=%d\n", __func__, wb); switch (wb) { case 1: pid = SI2C_WB_AUTO; break; case 3: pid = SI2C_WB_INCANDESCENT; break; case 4: pid = SI2C_WB_FLUORESCENT; break; case 5: pid = SI2C_WB_DAYLIGHT; break; case 6: pid = SI2C_WB_CLOUDY; break; default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
static int icp_hd_reset(int set) { int rc = 0; rc = gpio_tlmm_config(GPIO_CFG(SENSOR_RESET_8M, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE); if (!rc) { SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); gpio_set_value(SENSOR_RESET_8M,0); if(set){ gpio_set_value(SENSOR_RESET_8M,1); } } else{ SKYCERR("icp_hd_reset gpio_tlmm_config Failed!\n"); goto reset_fail; } SKYCDBG("%s %s Success:%d\n", __FILE__, __func__, __LINE__); return rc; reset_fail: SKYCERR("%s %s Failed!:%d\n", __FILE__, __func__, __LINE__); return rc; }
static int mt9d113_sensor_set_exposure_mode(struct msm_sensor_ctrl_t *s_ctrl ,int8_t exposure) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s exposure=%d\n", __func__, exposure); switch (exposure) { case 1: pid = SI2C_EXPOSURE_AVERAGE; break; case 2: case 3: pid = SI2C_EXPOSURE_CENTER; break; default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
static int as0260_sensor_set_exposure_mode(struct msm_sensor_ctrl_t *s_ctrl ,int8_t exposure) { int rc = 0; SKYCDBG("%s exposure=%d start \n",__func__,exposure); //SKYCDBG if(exposure < 0 || exposure > 3){ SKYCERR("%s error. exposure=%d\n", __func__, exposure); //SKYCERR return -EINVAL; } rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->exposure_mode_cfg_settings[exposure], s_ctrl->msm_sensor_reg->exposure_mode_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
static int as0260_sensor_set_effect(struct msm_sensor_ctrl_t *s_ctrl ,int8_t effect) { int rc = 0; SKYCDBG("%s effect=%d start \n",__func__,effect); //SKYCDBG #if 0 if(effect < CAMERA_EFFECT_OFF || effect >= CAMERA_EFFECT_MAX){ SKYCERR("%s error. effect=%d\n", __func__, effect); //SKYCERR return -EINVAL; } #endif rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->effect_cfg_settings[effect], s_ctrl->msm_sensor_reg->effect_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
static int as0260_sensor_set_wb(struct msm_sensor_ctrl_t *s_ctrl ,int8_t wb) { int rc = 0; SKYCDBG("%s wb=%d start \n",__func__,wb); //SKYCDBG if(wb < 0 || wb > 6){ SKYCERR("%s error. wb=%d\n", __func__, wb); //SKYCERR return -EINVAL; } rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->wb_cfg_settings[wb], s_ctrl->msm_sensor_reg->wb_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
static int as0260_sensor_set_brightness(struct msm_sensor_ctrl_t * s_ctrl,int8_t brightness) { int rc = 0; SKYCDBG("%s brightness=%d start \n",__func__,brightness); //SKYCDBG if(brightness < 0 || brightness > 8){ SKYCERR("%s error. brightness=%d\n", __func__, brightness); //SKYCERR return -EINVAL; } rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->bright_cfg_settings[brightness], s_ctrl->msm_sensor_reg->bright_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
static int as0260_sensor_set_preview_fps(struct msm_sensor_ctrl_t *s_ctrl ,int8_t preview_fps) { int rc = 0; SKYCDBG("%s preview_fps=%d start \n",__func__,preview_fps); //SKYCDBG if(preview_fps < 5 || preview_fps > 31){ SKYCERR("%s error. preview_fps=%d\n", __func__, preview_fps); //SKYCERR return -EINVAL; } rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->preview_fps_cfg_settings[preview_fps-5], s_ctrl->msm_sensor_reg->preview_fps_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); if (rc < 0) { SKYCERR("ERR:%s FAIL!!! rc=%d \n", __func__, rc); //SKYCERR return rc; } SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
static int s5k6aafx13_reset(const struct msm_camera_sensor_info *dev) { int rc = 0; //rc = gpio_request(dev->sensor_reset, "s5k6aafx13"); rc = gpio_tlmm_config(GPIO_CFG(SENSOR_RESET, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE); if (!rc) { SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); gpio_set_value(SENSOR_RESET,0); //rc = gpio_direction_output(137, 0); mdelay(20); gpio_set_value(SENSOR_RESET,1); //rc = gpio_direction_output(137, 1); } //standby rc = gpio_tlmm_config(GPIO_CFG(SENSOR_STANDBY, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE); if (!rc) { SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); gpio_set_value(SENSOR_STANDBY,1); //rc = gpio_direction_output(137, 0); mdelay(20); } //gpio_free(dev->sensor_reset); return rc; }
static int s5k6aafx13_vreg_init(void) { int rc; SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); mvs0b_1p8v = regulator_get(NULL, "8901_mvs0"); if (IS_ERR(mvs0b_1p8v)) { SKYCERR("regulator_get mvs0b_1p8v fail\n" );; return -ENODEV; } #if 0 lvs2b_1p8v = regulator_get(NULL, "8901_lvs2"); if (IS_ERR(lvs2b_1p8v)) { SKYCERR("regulator_get lvs2b_1p8v fail\n" );; return -ENODEV; } #endif l9a_2p8v = regulator_get(NULL, "8058_l9"); if (IS_ERR(l9a_2p8v)) { SKYCERR("regulator_get l9a_2p8v fail\n" );; return -ENODEV; } rc = regulator_set_voltage(l9a_2p8v, 2800000, 2800000); if (rc) { SKYCERR("%s: unable to set l9a_2p8v voltage to 2.8V\n", __func__); goto fail; } l15a_1p5v = regulator_get(NULL, "8058_l15"); if (IS_ERR(l15a_1p5v)) { SKYCERR("regulator_get l15a_1p5v fail\n" );; return -ENODEV; } rc = regulator_set_voltage(l15a_1p5v, 1500000, 1500000); if (rc) { SKYCERR("%s: unable to set l15a_1p5v voltage to 1.5V\n", __func__); goto fail; } lvs1b_1p8v = regulator_get(NULL, "8901_lvs1"); if (IS_ERR(lvs1b_1p8v)) { SKYCERR("regulator_get lvs1b_1p8v fail\n" );; return -ENODEV; } SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); return rc; fail: SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); if(l15a_1p5v) { regulator_put(l15a_1p5v); } if(l9a_2p8v) { regulator_put(l9a_2p8v); } return rc; }
static int as0260_set_aec_lock(struct msm_sensor_ctrl_t *s_ctrl ,int8_t is_lock) { int rc =0; SKYCDBG("%s is_lock=%d start \n",__func__,is_lock); //SKYCDBG rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->set_aec_lock[is_lock], s_ctrl->msm_sensor_reg->set_aec_lock_size, s_ctrl->msm_sensor_reg->default_data_type); SKYCDBG("%s rc=%d end \n",__func__,rc); //SKYCDBG return rc; }
/* msm_sensor_write_init_settings */ int32_t yacd5c1sbdbc_sensor_write_init_settings(struct msm_sensor_ctrl_t *s_ctrl) { int32_t rc = 0; #ifdef CONFIG_PANTECH_CAMERA_TUNER int tuner_data_type; if (s_ctrl->sensor_id_info->sensor_id == YACD5C1SBDBC_ID) { SKYCDBG("[CONFIG_PANTECH_CAMERA_TUNER] %s\n",__func__); tuner_data_type = s_ctrl->msm_sensor_reg->default_data_type; rc = msm_camera_i2c_write_tuner( s_ctrl->sensor_i2c_client, yacd5c1sbdbc_recommend_tuner_settings, tuner_line,//ARRAY_SIZE(yacd5c1sbdbc_recommend_tuner_settings), tuner_data_type);//MSM_CAMERA_I2C_BYTE_DATA); } else { rc = msm_sensor_write_all_conf_array( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->init_settings, s_ctrl->msm_sensor_reg->init_size); } #else rc = msm_sensor_write_all_conf_array( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->init_settings, s_ctrl->msm_sensor_reg->init_size); #endif return rc; }
/* msm_sensor_write_res_settings */ int32_t yacd5c1sbdbc_sensor_write_res_settings(struct msm_sensor_ctrl_t *s_ctrl, uint16_t res) { int32_t rc = 0; //CDBG("[F_PANTECH_CAMERA]%s: res=%d / check_zsl_flag=%d\n", __func__,res,check_zsl_flag); if((check_zsl_flag == 0) && (res == 0)) { SKYCDBG("%s:[F_PANTECH_CAMERA] Write reg [AE, AWB Off SET]\n", __func__); rc = msm_camera_i2c_write_tbl( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->checkzsl_cfg_settings[0],//[AE, AWB Off SET] s_ctrl->msm_sensor_reg->checkzsl_cfg_settings_size, s_ctrl->msm_sensor_reg->default_data_type); } rc = msm_sensor_write_conf_array( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->mode_settings, res); if (rc < 0) return rc; #ifndef CONFIG_PANTECH_CAMERA_YACD5C1SBDBC rc = msm_sensor_write_output_settings(s_ctrl, res); #endif return rc; }
int32_t msm_sensor_set_fps(struct msm_sensor_ctrl_t *s_ctrl, struct fps_cfg *fps) { uint16_t total_lines_per_frame; int32_t rc = 0; s_ctrl->fps_divider = fps->fps_div; if (s_ctrl->curr_res != MSM_SENSOR_INVALID_RES) { total_lines_per_frame = (uint16_t) ((s_ctrl->curr_frame_length_lines) * s_ctrl->fps_divider/Q10); #if 1//def F_PANTECH_CAMERA_OV8820 //if(strcmp(s_ctrl->sensordata->sensor_name, "ov8820") == 0) { if(s_ctrl->sensor_id_info->sensor_id == OV8820_ID) { SKYCDBG("%s: -- OV8820 : %d %d %d\n", __func__, total_lines_per_frame,s_ctrl->curr_frame_length_lines,s_ctrl->fps_divider); //////////////////////////////////////////// //total_lines_per_frame = 2800;//0xE00; // It will be remove after patch. //////////////////////////////////////////// rc = msm_camera_i2c_write(s_ctrl->sensor_i2c_client, 0x380E, ((total_lines_per_frame & 0xFF00) >> 8),MSM_CAMERA_I2C_BYTE_DATA); rc = msm_camera_i2c_write(s_ctrl->sensor_i2c_client, 0x380F, (total_lines_per_frame & 0x00FF),MSM_CAMERA_I2C_BYTE_DATA); }
int32_t msm_sensor_write_res_settings(struct msm_sensor_ctrl_t *s_ctrl, uint16_t res) { int32_t rc = 0; #ifdef CONFIG_MACH_MSM8960_STARQ SKYCDBG("%s res=%d\n", __func__, res); switch (res) { case 0: if(s_ctrl->sensor_id_info->sensor_id == S5K4ECGX_ID) { rc = s5k4ecgx_snapshot_config(); } else if(s_ctrl->sensor_id_info->sensor_id == MT9V113_ID) { rc = mt9v113_snapshot_config(); } break; case 1: if(s_ctrl->sensor_id_info->sensor_id == S5K4ECGX_ID) { rc = s5k4ecgx_video_config(); } else if(s_ctrl->sensor_id_info->sensor_id == MT9V113_ID) { rc = mt9v113_video_config(); } break; default: SKYCDBG("%s fail res=%d\n", __func__, res); break; } SKYCDBG("%s X (%d)\n", __func__, rc); #else rc = msm_sensor_write_conf_array( s_ctrl->sensor_i2c_client, s_ctrl->msm_sensor_reg->mode_settings, res); if (rc < 0) return rc; rc = msm_sensor_write_output_settings(s_ctrl, res); #endif return rc; }
static int yacd5c1sbdbc_sensor_set_tuner(struct tuner_cfg tuner) { //si2c_cmd_t *cmds = NULL; msm_camera_i2c_reg_tune_t *cmds = NULL; char *fbuf = NULL; SKYCDBG("%s fbuf=%p, fsize=%d\n", __func__, tuner.fbuf, tuner.fsize); if (!tuner.fbuf || (tuner.fsize == 0)) { SKYCERR("%s err(-EINVAL)\n", __func__); return -EINVAL; } fbuf = (char *)kmalloc(tuner.fsize, GFP_KERNEL); if (!fbuf) { SKYCERR("%s err(-ENOMEM)\n", __func__); return -ENOMEM; } if (copy_from_user(fbuf, tuner.fbuf, tuner.fsize)) { SKYCERR("%s err(-EFAULT)\n", __func__); kfree(fbuf); return -EFAULT; } cmds = ptune_parse("@init", fbuf); if (!cmds) { SKYCERR("%s no @init\n", __func__); kfree(fbuf); return -EFAULT; } yacd5c1sbdbc_recommend_tuner_settings = cmds;//(struct msm_camera_i2c_reg_conf *)cmds; kfree(fbuf); SKYCDBG("%s X\n", __func__); return 0; }
static int mt9d113_sensor_set_preview_fps(struct msm_sensor_ctrl_t *s_ctrl ,int8_t preview_fps) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; SKYCDBG("%s preview_fps=%d\n", __func__, preview_fps); switch (preview_fps) { case 31: case 0: pid = SI2C_FPS_VARIABLE; break; case 7: pid = SI2C_FPS_FIXED7; break; case 8: pid = SI2C_FPS_FIXED8; break; case 10: pid = SI2C_FPS_FIXED10; break; case 15: pid = SI2C_FPS_FIXED15; break; case 30: case 20: pid = SI2C_FPS_FIXED20; break; case 24: pid = SI2C_FPS_FIXED24; break; case 25: pid = SI2C_FPS_FIXED25; break; default: //PANTECH_CAMERA_TODO SKYCDBG("%s preview_fps: %d default return 0\n", __func__, preview_fps); return 0; //SKYCDBG("%s err(-EINVAL)\n", __func__); //return -EINVAL; } SKYCDBG("%s preview_fps:%d/ pid :%d\n", __func__, preview_fps, pid); rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } current_fps = preview_fps; CDBG("%s X\n", __func__); return 0; }
static int mt9d113_set_tuner(struct tuner_cfg tuner) { si2c_cmd_t *cmds = NULL; char *fbuf = NULL; CDBG("%s fbuf=%p, fsize=%d\n", __func__, tuner.fbuf, tuner.fsize); if (!tuner.fbuf || (tuner.fsize == 0)) { SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } fbuf = (char *)kmalloc(tuner.fsize, GFP_KERNEL); if (!fbuf) { SKYCDBG("%s err(-ENOMEM)\n", __func__); return -ENOMEM; } if (copy_from_user(fbuf, tuner.fbuf, tuner.fsize)) { SKYCDBG("%s err(-EFAULT)\n", __func__); kfree(fbuf); return -EFAULT; } cmds = ptune_parse("@init", fbuf); if (!cmds) { SKYCDBG("%s no @init\n", __func__); kfree(fbuf); return -EFAULT; } mt9d113_tuner_params[SI2C_INIT].cmds = cmds; mt9d113_params[SI2C_INIT].cmds = cmds; kfree(fbuf); CDBG("%s X\n", __func__); return 0; }
int mt9d113_sensor_init(struct msm_sensor_ctrl_t *s_ctrl) { int rc = 0; //uint8_t data_buf[4]; SKYCDBG("%s: E\n",__func__); #if 1//needtocheck //sensor_mode = ??;//SENSOR_PREVIEW_MODE; // memset(mt9d113_params, 0, sizeof(mt9d113_params)); //s_ctrl->sensor_i2c_client->client->adapter, // rc = si2c_init(s5k6aafx13_client->adapter, s5k6aafx13_const_params, s5k6aafx13_params); #if 0 rc = si2c_init(mt9d113_client->adapter, mt9d113_const_params, mt9d113_params); if (!mt9d113_ctrl) { SKYCDBG("%s err(-ENOMEM)\n", __func__); goto sensor_init_fail; } #endif rc = si2c_write_param(SI2C_SA, SI2C_INIT, mt9d113_params); SKYCDBG("%s: si2c_write_param / rc:%d \n",__func__, rc); if (rc < 0) goto sensor_init_fail; #endif sensor_mode = 1; SKYCDBG("%s: X\n",__func__); return rc; #if 1//needtocheck sensor_init_fail: #if 0 if (mt9d113_ctrl) { kfree(mt9d113_ctrl); mt9d113_ctrl = NULL; } (void)mt9d113_power_off(); svreg_release(svregs, CAMV_MAX); sgpio_release(sgpios, CAMIO_MAX); #endif SKYCDBG("%s: sensor_init_fail / si2c_release(); \n",__func__); si2c_release(); SKYCDBG("%s err(%d)\n", __func__, rc); return rc; #endif }
static int s5k6aafx13_reset(int set) { int rc = 0; //reset rc = gpio_tlmm_config(GPIO_CFG(SENSOR_RESET, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE); if (!rc) { SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); gpio_set_value(SENSOR_RESET,0); if(set){ mdelay(20); gpio_set_value(SENSOR_RESET,1); } } else{ SKYCERR("ce1612_reset gpio_tlmm_config Failed!\n"); goto reset_fail; } //standby rc = gpio_tlmm_config(GPIO_CFG(SENSOR_STANDBY, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA),GPIO_CFG_ENABLE); if (!rc) { SKYCDBG("%s %s:%d\n", __FILE__, __func__, __LINE__); gpio_set_value(SENSOR_STANDBY,set); mdelay(20); } SKYCDBG("%s %s Success:%d\n", __FILE__, __func__, __LINE__); return rc; reset_fail: SKYCERR("%s %s Failed!:%d\n", __FILE__, __func__, __LINE__); return rc; }
static int32_t mt9d113_sensor_set_awb_lock(struct msm_sensor_ctrl_t *s_ctrl ,int8_t is_lock) { si2c_pid_t pid = SI2C_PID_MAX; int rc = 0; CDBG("%s is_lock = %d\n",__func__, is_lock); switch (is_lock) { case 0: pid = SI2C_AWB_ON;break; case 1: pid = SI2C_AWB_OFF;break; default: SKYCDBG("%s err(-EINVAL)\n", __func__); return -EINVAL; } rc = si2c_write_param(SI2C_SA, pid, mt9d113_params); if (rc < 0) { SKYCDBG("%s err(%d)\n", __func__, rc); return rc; } CDBG("%s X\n", __func__); return 0; }
int32_t yacd5c1sbdbc_sensor_set_fps(struct msm_sensor_ctrl_t *s_ctrl, struct fps_cfg *fps) { //uint16_t total_lines_per_frame; int32_t rc = 0; SKYCDBG("%s: %d\n", __func__, __LINE__); #if 0 s_ctrl->fps_divider = fps->fps_div; rc = msm_camera_i2c_write(s_ctrl->sensor_i2c_client, s_ctrl->sensor_output_reg_addr->frame_length_lines, total_lines_per_frame, MSM_CAMERA_I2C_WORD_DATA); #endif return rc; }