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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 5
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;
}
Ejemplo n.º 6
0
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;
}
Ejemplo n.º 8
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;
}
Ejemplo n.º 10
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;
}
Ejemplo n.º 12
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;
}
Ejemplo n.º 13
0
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;
}
Ejemplo n.º 14
0
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;
}
Ejemplo n.º 15
0
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;
}
Ejemplo n.º 16
0
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;
}
Ejemplo n.º 17
0
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;
}
Ejemplo n.º 18
0
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;	
}
Ejemplo n.º 19
0
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    
}
Ejemplo n.º 28
0
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;
}
Ejemplo n.º 30
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;
}