Exemple #1
0
int msm_sensor_bayer_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	CDBG("%s enter\n", __func__);
	rc = msm_sensor_write_enum_conf_array(
		s_ctrl->sensor_i2c_client,
		ctrl_info->enum_cfg_settings, value);
	return rc;
}
Exemple #2
0
int ov7692_sharpness_msm_sensor_s_ctrl_by_enum(
		struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	if (effect_value == CAMERA_EFFECT_OFF) {
		rc = msm_sensor_write_enum_conf_array(
			s_ctrl->sensor_i2c_client,
			ctrl_info->enum_cfg_settings, value);
	}
	return rc;
}
Exemple #3
0
int ov7692_msm_sensor_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	rc = msm_sensor_write_enum_conf_array(
		s_ctrl->sensor_i2c_client,
		ctrl_info->enum_cfg_settings, value);
	if (rc < 0) {
		CDBG("write faield\n");
		return rc;
	}
	return rc;
}
Exemple #4
0
int ov7692_saturation_msm_sensor_s_ctrl_by_enum(
		struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	if (effect_value == CAMERA_EFFECT_OFF) {
		rc = msm_sensor_write_enum_conf_array(
			s_ctrl->sensor_i2c_client,
			ctrl_info->enum_cfg_settings, value);
	}
	if (value <= MSM_V4L2_SATURATION_L8)
		SAT_U = SAT_V = value * 0x10;
	CDBG("--CAMERA-- %s ...(End)\n", __func__);
	return rc;
}
Exemple #5
0
int ov7692_effect_msm_sensor_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	effect_value = value;
	if (effect_value == CAMERA_EFFECT_OFF) {
		rc = msm_sensor_write_conf_array(
			s_ctrl->sensor_i2c_client,
			s_ctrl->msm_sensor_reg->no_effect_settings, 0);
		if (rc < 0) {
			CDBG("write faield\n");
			return rc;
		}
		msm_camera_i2c_write(s_ctrl->sensor_i2c_client, 0xda, SAT_U,
			MSM_CAMERA_I2C_BYTE_DATA);
		msm_camera_i2c_write(s_ctrl->sensor_i2c_client, 0xdb, SAT_V,
			MSM_CAMERA_I2C_BYTE_DATA);
	} else {
		rc = msm_sensor_write_enum_conf_array(
			s_ctrl->sensor_i2c_client,
			ctrl_info->enum_cfg_settings, value);
	}
	return rc;
}
Exemple #6
0
/*
int hi351_effect_msm_sensor_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;

	pr_err("%s is called effect=%d\n", __func__, value);
	if (PREV_EFFECT == value || PREV_EFFECT == -1) {
		PREV_EFFECT = value;
		pr_err("%s: SKIP: EFFECT called previous value :%d\n", __func__,value);
		return rc;
	}
	PREV_EFFECT = value;
	if (PREV_EFFECT == CAMERA_EFFECT_OFF) {
		rc = msm_sensor_write_conf_array(
			s_ctrl->sensor_i2c_client,
			s_ctrl->msm_sensor_reg->no_effect_settings, 0);
		if (rc < 0) {
			pr_err("%s: write faield\n", __FUNCTION__);
			return rc;
		}
	} else {
		rc = msm_sensor_write_enum_conf_array(
			s_ctrl->sensor_i2c_client,
			ctrl_info->enum_cfg_settings, value);
	}
	return rc;
}
*/
int hi351_msm_sensor_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;
	int retry = 0;
	pr_err("%s is called enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
	switch(ctrl_info->ctrl_id) {
		case V4L2_CID_WHITE_BALANCE_TEMPERATURE:
			if(PREV_WB == value || PREV_WB == -1) {
				PREV_WB = value;
				pr_err("%s SKIP due to duplicate enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
				return rc;
			}else {
				PREV_WB = value;
			}
			break;
		case V4L2_CID_SPECIAL_EFFECT:
			if(PREV_EFFECT == value || PREV_EFFECT == -1) {
				PREV_EFFECT = value;
				pr_err("%s SKIP due to duplicate enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
				return rc;
			}else {
				PREV_EFFECT = value;
			}
			break;
		case MSM_V4L2_PID_ISO:
			if(PREV_ISO == value || PREV_ISO == -1) {
				PREV_ISO = value;
				pr_err("%s SKIP due to duplicate enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
				return rc;
			}else {
				PREV_ISO = value;
			}
			break;
		case V4L2_CID_FPS_RANGE:
			if(PREV_FPS == value || PREV_FPS == -1) {
				PREV_FPS = value;
				pr_err("%s SKIP due to duplicate enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
				return rc;
			}else {
				PREV_FPS = value;
			}
			break;
		case V4L2_CID_BESTSHOT_MODE:
			if(PREV_BESTSHOT == value || PREV_BESTSHOT == -1) {
				PREV_BESTSHOT = value;
				pr_err("%s SKIP due to duplicate enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
				return rc;
			}else {
				PREV_BESTSHOT = value;
			}
			break;
		default:
			break;
	}

	for (retry = 0; retry < 3; ++retry) {
		rc = msm_sensor_write_enum_conf_array(
		s_ctrl->sensor_i2c_client,
		ctrl_info->enum_cfg_settings, value);

		if (rc < 0)
			printk(KERN_ERR "[ERROR]%s:write failed for enum num: %d, value = %d, retry = %d\n", __func__, ctrl_info->ctrl_id, value, retry);
		else
			break;
	}
	pr_err("%s: write done for enum num: %d , value = %d\n", __func__, ctrl_info->ctrl_id, value);
	return rc;

}
int s5k5ca_msm_sensor_s_ctrl_by_enum(struct msm_sensor_ctrl_t *s_ctrl,
		struct msm_sensor_v4l2_ctrl_info_t *ctrl_info, int value)
{
	int rc = 0;

	//printk(" s5k5ca_msm_sensor_s_ctrl_by_enum() ctrl_id:%x value:%d\n",ctrl_info->ctrl_id,value);

	switch(ctrl_info->ctrl_id){
		case V4L2_CID_SPECIAL_EFFECT:
		{
			switch(value){
				case MSM_V4L2_EFFECT_SOLARIZE:
				case MSM_V4L2_EFFECT_POSTERAIZE:
				case MSM_V4L2_EFFECT_WHITEBOARD:
				case MSM_V4L2_EFFECT_BLACKBOARD:
				case MSM_V4L2_EFFECT_EMBOSS:
				case MSM_V4L2_EFFECT_NEON:
					return -EINVAL;
			}
		}
		break;
		case MSM_V4L2_PID_ISO:
		{
		}
		break;
		case V4L2_CID_POWER_LINE_FREQUENCY:
		{
		}
		break;
		case V4L2_CID_WHITE_BALANCE_TEMPERATURE:
		{
			if(value == MSM_V4L2_WB_CUSTOM){
				return -EINVAL;
			}
		}
		break;
		case MSM_V4L2_PID_BEST_SHOT:
				{
night_mode_flag=value;
 switch(value){
 	                     case msm_v4l2_best_shot_normal:
				value=0;
				break;
			
				case msm_v4l2_best_shot_landscape:
				value=1;
				break;	
				case msm_v4l2_best_shot_sunset:
				value=2;
				break;	
				case msm_v4l2_best_shot_night:
				value=3;
				break;	
				case msm_v4l2_best_shot_portrait:
				value=4;
				break;	
				case msm_v4l2_best_shot_sports:
				value=5;
				break;	
                            case msm_v4l2_best_shot_flowers:
				value=6;
				break;				
            
					

			}
			}
		default:
			break;
	}

	rc = msm_sensor_write_enum_conf_array(s_ctrl->sensor_i2c_client, ctrl_info->enum_cfg_settings, value);

	return rc;
}