示例#1
0
static long sr130pc10_set_whitebalance(int mode, int wb)
{
	long rc = 0;

	printk(KERN_DEBUG "mode : %d,   whitebalance : %d\n", mode, wb);

	switch (wb) {
	case CAMERA_WB_AUTO:
		printk(KERN_DEBUG "CAMERA_WB_AUTO\n");
		sr130pc10_sensor_write_list(sr130pc10_wb_auto,
				    sizeof(sr130pc10_wb_auto) /
				    sizeof(sr130pc10_wb_auto[0]),
				    "sr130pc10_wb_auto");
		break;

	case CAMERA_WB_INCANDESCENT:
		printk(KERN_DEBUG "CAMERA_WB_INCANDESCENT\n");
		sr130pc10_sensor_write_list(sr130pc10_wb_tungsten,
				    sizeof(sr130pc10_wb_tungsten) /
				    sizeof(sr130pc10_wb_tungsten[0]),
				    "sr130pc10_wb_tungsten");
		break;

	case CAMERA_WB_FLUORESCENT:
		printk(KERN_DEBUG "CAMERA_WB_FLUORESCENT\n");
		sr130pc10_sensor_write_list(sr130pc10_wb_fluorescent,
				    sizeof(sr130pc10_wb_fluorescent) /
				    sizeof(sr130pc10_wb_fluorescent[0]),
				    "sr130pc10_wb_fluorescent");
		break;

	case CAMERA_WB_DAYLIGHT:
		printk(KERN_DEBUG "<=PCAM=> CAMERA_WB_DAYLIGHT\n");
		sr130pc10_sensor_write_list(sr130pc10_wb_sunny,
					    sizeof(sr130pc10_wb_sunny) /
					    sizeof(sr130pc10_wb_sunny[0]),
					    "sr130pc10_wb_sunny");
		break;

	case CAMERA_WB_CLOUDY_DAYLIGHT:
		printk(KERN_DEBUG "<=PCAM=> CAMERA_WB_CLOUDY_DAYLIGHT\n");
		sr130pc10_sensor_write_list(sr130pc10_wb_cloudy,
					    sizeof(sr130pc10_wb_cloudy) /
					    sizeof(sr130pc10_wb_cloudy[0]),
					    "sr130pc10_wb_cloudy");
		break;

	default:
		printk(KERN_DEBUG "<=PCAM=> unexpected WB mode %s/%d\n",
			__func__, __LINE__);
/*                      return -EINVAL; */
		return 0;
	}
	return rc;
}
示例#2
0
static int sr130pc10_sensor_init_probe()
{
	int err = 0;

	printk("%s/%d \n", __func__, __LINE__);	

	err = sr130pc10_sensor_write_list(sr130pc10_reg_init,\
          sizeof(sr130pc10_reg_init) / sizeof(sr130pc10_reg_init[0]),"sr130pc10_reg_init");
	msleep(10);	

	return err;
}
示例#3
0
static long sr130pc10_set_effect(int mode, int effect)
{
	long rc = 0;

	pr_info("[%s]effect(%d)\n", __func__, effect);

	switch (effect) {
	case CAMERA_EFFECT_OFF:
		printk(KERN_DEBUG "[SR130PC10] CAMERA_EFFECT_OFF\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_none,
					    sizeof(sr130pc10_effect_none) /
					    sizeof(sr130pc10_effect_none[0]),
					    "sr130pc10_effect_none");
		break;

	case CAMERA_EFFECT_MONO:
		printk(KERN_DEBUG "[SR130PC10] CAMERA_EFFECT_MONO\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_gray,
					    sizeof(sr130pc10_effect_gray) /
					    sizeof(sr130pc10_effect_gray[0]),
					    "sr130pc10_effect_gray");
		break;

	case CAMERA_EFFECT_NEGATIVE:
		printk(KERN_DEBUG "[SR130PC10] CAMERA_EFFECT_NEGATIVE\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_negative,
					    sizeof(sr130pc10_effect_negative) /
					    sizeof(sr130pc10_effect_negative
						   [0]),
					    "sr130pc10_effect_negative");
		break;

	case CAMERA_EFFECT_SEPIA:
		printk(KERN_DEBUG "[SR130PC10] CAMERA_EFFECT_SEPIA\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_sepia,
					    sizeof(sr130pc10_effect_sepia) /
					    sizeof(sr130pc10_effect_sepia[0]),
					    "sr130pc10_effect_sepia");
		break;

	case CAMERA_EFFECT_AQUA:
		printk(KERN_DEBUG "[SR130PC10] CAMERA_EFFECT_AQUA\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_aqua,
					    sizeof(sr130pc10_effect_aqua) /
					    sizeof(sr130pc10_effect_aqua[0]),
					    "sr130pc10_effect_aqua");
		break;

	default:
		printk(KERN_DEBUG "[SR130PC10] default .dsfsdf\n");
		sr130pc10_sensor_write_list(sr130pc10_effect_none,
					    sizeof(sr130pc10_effect_none) /
					    sizeof(sr130pc10_effect_none[0]),
					    "sr130pc10_effect_none");
		/*return -EINVAL; */
		return 0;
	}
	return rc;
}
static int sr130pc10_set_movie_mode(int mode)
{
	printk(KERN_DEBUG "[%s:%d][E]\n", __func__, __LINE__);

	if (mode == SENSOR_MOVIE) {
		printk(KERN_DEBUG
			"[%s:%d] Camcorder_Mode_ON\n", __func__, __LINE__);

		sr130pc10_sensor_write_list(sr130pc10_fps_15,
					    sizeof(sr130pc10_fps_15) /
					    sizeof(sr130pc10_fps_15[0]),
					    "sr130pc10_fps_15");
	} else

	if ((mode != SENSOR_CAMERA) && (mode != SENSOR_MOVIE))
		return -EINVAL;

	return 0;
}
示例#5
0
static int
sr130pc10_sensor_init_probe(const struct msm_camera_sensor_info *data)
{
	int err = 0;
	rotation_status = 0;
	factory_test = 0;
	Flipmode = 0;

	printk(KERN_DEBUG "%s/%d\n", __func__, __LINE__);

	err = sr130pc10_sensor_write_list(sr130pc10_reg_init,
					  sizeof(sr130pc10_reg_init) /
					  sizeof(sr130pc10_reg_init[0]),
					  "sr130pc10_reg_init");
	/*msleep(10);	changed for coding rule*/
	/*udelay(10000);*/

	return err;
}
示例#6
0
static long sr130pc10_set_effect(char effect)
{
	long rc = 0;
	switch (effect) {
            case CAMERA_EFFECT_OFF:
                    printk("[SR130PC10] CAMERA_EFFECT_OFF\n");
                    sr130pc10_sensor_write_list(sr130pc10_effect_none, sizeof(sr130pc10_effect_none)/sizeof(sr130pc10_effect_none[0]),"sr130pc10_effect_none"); 
                    break;

            case CAMERA_EFFECT_MONO:
                    printk("[SR130PC10] CAMERA_EFFECT_MONO\n");
                    sr130pc10_sensor_write_list(sr130pc10_effect_gray, sizeof(sr130pc10_effect_gray)/sizeof(sr130pc10_effect_gray[0]),"sr130pc10_effect_gray");
                    break;

            case CAMERA_EFFECT_NEGATIVE:
                    printk("[SR130PC10] CAMERA_EFFECT_NEGATIVE\n");
                    sr130pc10_sensor_write_list(sr130pc10_effect_negative, sizeof(sr130pc10_effect_negative)/sizeof(sr130pc10_effect_negative[0]),"sr130pc10_effect_negative"); 
                    break;

            case CAMERA_EFFECT_SEPIA:
                    printk("[SR130PC10] CAMERA_EFFECT_SEPIA\n");
                    sr130pc10_sensor_write_list(sr130pc10_effect_sepia, sizeof(sr130pc10_effect_sepia)/sizeof(sr130pc10_effect_sepia[0]),"sr130pc10_effect_sepia"); 
                    break;

            case CAMERA_EFFECT_AQUA:
                    printk("[SR130PC10] CAMERA_EFFECT_AQUA\n");
                    sr130pc10_sensor_write_list(sr130pc10_effect_aqua, sizeof(sr130pc10_effect_aqua)/sizeof(sr130pc10_effect_aqua[0]),"sr130pc10_effect_aqua"); 
                    break;

            default:
               	printk("[SR130PC10] default .dsfsdf\n");
		        sr130pc10_sensor_write_list(sr130pc10_effect_none, sizeof(sr130pc10_effect_none)/sizeof(sr130pc10_effect_none[0]),"sr130pc10_effect_none"); 
                       //return -EINVAL;
                      return 0;
	}
	return rc;
}
示例#7
0
void sensor_rough_control_sr130pc10(void __user *arg)      
{
	sensor_ext_cfg_data		ctrl_info;
/*
	int Exptime;
	int Expmax;
	unsigned short read_1, read_2, read_3;	
*/
	printk("[SR130PC10] sensor_rough_control\n");

	if(copy_from_user((void *)&ctrl_info, (const void *)arg, sizeof(ctrl_info)))
	{
		printk("<=SR130PC10=> %s fail copy_from_user!\n", __func__);
	}
	printk("<=SR130PC10=> TEST %d %d %d %d %d \n", ctrl_info.cmd, ctrl_info.device_id, ctrl_info.value_1, ctrl_info.value_2, ctrl_info.value_3);


	switch(ctrl_info.cmd)
	{
		case PCAM_CONNECT_CHECK:
                    printk("[SR130PC10] PCAM_CONNECT_CHECK\n");   
                    int rc = 0;
                    rc = sr130pc10_sensor_write(0x03, 0x00);
                    if(rc < 0) //check sensor connection
                    {
                       printk("[SR130PC10] Connect error\n");                       
                       ctrl_info.value_1 = 1;
                    }
                    break;
	
		case PCAM_EXPOSURE_TIME:
                    printk("[SR130PC10] PCAM_EXPOSURE_TIME\n");            
                    sr130pc10_sensor_write(0x03, 0x20);
                    sr130pc10_sensor_read(0x80, &ctrl_info.value_1);
                    sr130pc10_sensor_read(0x81, &ctrl_info.value_2);
                    sr130pc10_sensor_read(0x82, &ctrl_info.value_3);
                    printk("[SR130PC10] PCAM_EXPOSURE_TIME : A(%x), B(%x), C(%x)\n]",ctrl_info.value_1,ctrl_info.value_2,ctrl_info.value_3);
                    break;

		case PCAM_ISO_SPEED:
                    printk("[SR130PC10] PCAM_ISO_SPEED\n");            
                    sr130pc10_sensor_write(0x03, 0x20);
                    sr130pc10_sensor_read(0xb0, &ctrl_info.value_1);
                    break;

		case PCAM_PREVIEW_FPS:
                    printk("[SR130PC10] PCAM_PREVIEW_FPS : %d\n", ctrl_info.device_id);  
                    if(ctrl_info.device_id == 15)
                        sr130pc10_sensor_write_list(sr130pc10_vt_fps_15, sizeof(sr130pc10_vt_fps_15)/sizeof(sr130pc10_vt_fps_15[0]),"sr130pc10_vt_fps_15"); 
                    break;

		default :
			printk("<=SR130PC10=> Unexpected mode on sensor_rough_control!!!\n");
			break;
	}

	if(copy_to_user((void *)arg, (const void *)&ctrl_info, sizeof(ctrl_info)))
	{
		printk("<=SR130PC10=> %s fail on copy_to_user!\n", __func__);
	}
	
}
示例#8
0
static long sr130pc10_set_exposure_value(int exposure)
{
	long rc = 0;

	printk("exposure value  : %d\n", exposure);

	switch (exposure) {

		case SR130PC10_EV_MINUS_4:
			printk("CAMERA_EXPOSURE_VALUE_-4\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_m4, sizeof(sr130pc10_ev_m4)/sizeof(sr130pc10_ev_m4[0]),"sr130pc10_ev_m4"); 

			break;
		case SR130PC10_EV_MINUS_3:
			printk("CAMERA_EXPOSURE_VALUE_-3\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_m3, sizeof(sr130pc10_ev_m3)/sizeof(sr130pc10_ev_m3[0]),"sr130pc10_ev_m3"); 

			break;
		case SR130PC10_EV_MINUS_2:
			printk("CAMERA_EXPOSURE_VALUE_-2\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_m2, sizeof(sr130pc10_ev_m2)/sizeof(sr130pc10_ev_m2[0]),"sr130pc10_ev_m2"); 

			break;

		case SR130PC10_EV_MINUS_1:
			printk("CAMERA_EXPOSURE_VALUE_-1\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_m1, sizeof(sr130pc10_ev_m1)/sizeof(sr130pc10_ev_m1[0]),"sr130pc10_ev_m1"); 

			break;

		case SR130PC10_EV_DEFAULT:
			printk("CAMERA_EXPOSURE_VALUE_0\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_default, sizeof(sr130pc10_ev_default)/sizeof(sr130pc10_ev_default[0]),"sr130pc10_ev_default"); 

			break;

		case SR130PC10_EV_PLUS_1:
			printk("CAMERA_EXPOSURE_VALUE_1\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_p1, sizeof(sr130pc10_ev_p1)/sizeof(sr130pc10_ev_p1[0]),"sr130pc10_ev_p1"); 

			break;

		case SR130PC10_EV_PLUS_2:
			printk("CAMERA_EXPOSURE_VALUE_2\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_p2, sizeof(sr130pc10_ev_p2)/sizeof(sr130pc10_ev_p2[0]),"sr130pc10_ev_p2"); 

			break;
		case SR130PC10_EV_PLUS_3:
			printk("CAMERA_EXPOSURE_VALUE_3\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_p3, sizeof(sr130pc10_ev_p3)/sizeof(sr130pc10_ev_p3[0]),"sr130pc10_ev_p3"); 

			break;
		case SR130PC10_EV_PLUS_4:
			printk("CAMERA_EXPOSURE_VALUE_4\n");
        		sr130pc10_sensor_write_list(sr130pc10_ev_p4, sizeof(sr130pc10_ev_p4)/sizeof(sr130pc10_ev_p4[0]),"sr130pc10_ev_p4"); 

			break;
		default:
			printk("<=PCAM=> unexpected Exposure Value %s/%d\n", __func__, __LINE__);
//			return -EINVAL;
                        return 0;
	}

	return rc;
}    
示例#9
0
static long sr130pc10_set_sensor_mode(int mode)
{
	printk("[CAM-SENSOR] =Sensor Mode\n ");
        int cnt, vsync_value;
    
	switch (mode) {

	case SENSOR_PREVIEW_MODE:
		printk("[SR130PC10]-> Preview \n");
		sr130pc10_set_preview();
        //factory_test = 0;

#if 0
        for(cnt=0; cnt<200; cnt++)
        {
          vsync_value = gpio_get_value(14);
          if(vsync_value)
          {         
            printk(" on preview,  start cnt:%d vsync_value:%d\n", cnt, vsync_value);			                        
            break;
          }
          else
          {
            printk(" on preview,  wait cnt:%d vsync_value:%d\n", cnt, vsync_value);			
            msleep(1);
          }
        }
#endif

                
	//	sr130pc10_sensor_write_list(sr130pc10_preview_reg, sizeof(sr130pc10_preview_reg)/\ arun
	//	sizeof(sr130pc10_preview_reg[0]),"sr130pc10_preview_reg"); // preview start
		break;

	case SENSOR_SNAPSHOT_MODE:
		printk("[PGH}-> Capture \n");		
		//Snapshot mode is enabled so setting the preview flag
		preview_enable = 0;
       	brightness = 0;
		sr130pc10_sensor_write_list(sr130pc10_capture_reg, sizeof(sr130pc10_capture_reg)/\
		sizeof(sr130pc10_capture_reg[0]),"sr130pc10_capture_reg"); // preview start
		/* //SecFeature : for Android CCD preview mirror / snapshot non-mirror
		if(factory_test == 0)
                {      
                    if(rotation_status == 90 || rotation_status == 270)
                    {
                        sr130pc10_sensor_write(0x03, 0x00);
                        sr130pc10_sensor_write(0x11, 0x93);                    
                    }
                    else
                    {
                        sr130pc10_sensor_write(0x03, 0x00);
                        sr130pc10_sensor_write(0x11, 0x90);                    
                    }
                }
                */
		break;

	case SENSOR_RAW_SNAPSHOT_MODE:
		printk("[PGH}-> Capture RAW \n");		
		break;

	default:
		return 0;
	}

	return 0;
}
static int sr130pc10_sensor_power_up(struct msm_sensor_ctrl_t *s_ctrl)
{

	int err = 0;
	int rc = 0;
	int temp = 0;

	struct msm_camera_sensor_info *data = s_ctrl->sensordata;

#ifdef CONFIG_LOAD_FILE
	if (0 > sr130pc10_regs_table_init()) {
		CDBG("%s file open failed!\n", __func__);
		rc = -1;
		goto FAIL_END;
	}
#endif
	sr130pc10_ctrl->op_mode = 0;
	sr130pc10_ctrl->dtp_mode = 0;
	sr130pc10_ctrl->cam_mode = SENSOR_CAMERA;
	sr130pc10_ctrl->settings.exposure = 0;
	pr_info("=== Start ===");

	rc = msm_camera_request_gpio_table(data, 1);
	if (rc < 0)
		pr_info(" request gpio failed");

	gpio_set_value_cansleep(data->sensor_platform_info->vt_sensor_stby, 0);
	temp = __gpio_get_value(data->sensor_platform_info->vt_sensor_stby);
	pr_info("check VT standby : %d", temp);

	gpio_set_value_cansleep(data->sensor_platform_info->vt_sensor_reset, 0);
	temp = __gpio_get_value(data->sensor_platform_info->vt_sensor_reset);
	pr_info("check VT reset : %d", temp);

	gpio_set_value_cansleep(data->sensor_platform_info->sensor_reset, 0);
	temp = __gpio_get_value(data->sensor_platform_info->sensor_reset);
	pr_info("CAM_3M_RST : %d", temp);

	gpio_set_value_cansleep(data->sensor_platform_info->sensor_stby, 0);
	temp = __gpio_get_value(data->sensor_platform_info->sensor_stby);
	pr_info("CAM_3M_ISP_INIT : %d", temp);

	/*Power on the LDOs */
	data->sensor_platform_info->sensor_power_on(1);
	udelay(10);

	/*standy VT */
	gpio_set_value_cansleep(data->sensor_platform_info->vt_sensor_stby, 1);
	temp = __gpio_get_value(data->sensor_platform_info->vt_sensor_stby);
	pr_info("check VT standby : %d", temp);

	udelay(10);

	/*Set Main clock */
	gpio_tlmm_config(GPIO_CFG(data->sensor_platform_info->mclk, 1,
		GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA),
		GPIO_CFG_ENABLE);

	if (s_ctrl->clk_rate != 0)
		cam_clk_info->clk_rate = s_ctrl->clk_rate;

	rc = msm_cam_clk_enable(&s_ctrl->sensor_i2c_client->client->dev,
		cam_clk_info, &s_ctrl->cam_clk, ARRAY_SIZE(cam_clk_info), 1);
	if (rc < 0) {
		gpio_tlmm_config(GPIO_CFG(data->sensor_platform_info->mclk, 0,
			GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA),
			GPIO_CFG_ENABLE);

		pr_info(" Mclk enable failed");
	}


	if (rc != 0)
		goto FAIL_END;

	mdelay(12);

	/*reset VT */
	gpio_set_value_cansleep(data->sensor_platform_info->vt_sensor_reset, 1);
	temp = __gpio_get_value(data->sensor_platform_info->vt_sensor_reset);
	pr_info("check VT reset : %d", temp);
	udelay(1500);

	err = sr130pc10_sensor_write_list(sr130pc10_i2c_check,
					    sizeof(sr130pc10_i2c_check) /
					    sizeof(sr130pc10_i2c_check[0]),
					    "sr130pc10_i2c_check");
	if (err == -EINVAL) {
		cam_err("[sr130pc20] start1 fail!\n");
		msm_cam_clk_enable(&s_ctrl->sensor_i2c_client->client->dev,
				cam_clk_info, &s_ctrl->cam_clk, \
				ARRAY_SIZE(cam_clk_info), 0);

		gpio_tlmm_config(GPIO_CFG(data->sensor_platform_info->mclk, 0,
			GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA),
			GPIO_CFG_ENABLE);

		udelay(10);
		msm_camera_request_gpio_table(data, 0);

		return -EIO;
	}

FAIL_END:
	if (rc) {
		pr_info("Power up Failed!!");
		msm_camera_request_gpio_table(data, 0);
	} else {
		pr_info("power up x");
	}

	return rc;

}
static long sr130pc10_set_sensor_mode(int mode)
{
	int cnt, vsync_value;
	printk(KERN_DEBUG "[CAM-SENSOR] =Sensor Mode\n ");

	switch (mode) {
	case SENSOR_PREVIEW_MODE:
	case SENSOR_VIDEO_MODE:
		printk(KERN_DEBUG "[SR130PC10]-> Preview\n");
		if (sr130pc10_ctrl->op_mode == 0) {
			sr130pc10_sensor_write_list(sr130pc10_reg_init,
					sizeof(sr130pc10_reg_init) /
					sizeof(sr130pc10_reg_init[0]),
					"sr130pc10_reg_init");
			sr130pc10_ctrl->op_mode = 1;
			if (sr130pc10_ctrl->dtp_mode == 1)
				sr130pc10_check_dataline(1);
		}

		factory_test = 0;
		for (cnt = 0; cnt < 200; cnt++) {
			vsync_value = __gpio_get_value(14);
			if (vsync_value) {
				/*printk(KERN_DEBUG " on preview,
			start cnt:%d vsync_value:%d\n", cnt, vsync_value); */
				break;
			} else {
				/*printk(KERN_DEBUG
				    " on preview,  "
					"wait cnt:%d vsync_value:%d\n",
				     cnt, vsync_value);*/
				/*msleep(1);	changed for coding rule*/
				udelay(1000);
			}
		}
		printk(KERN_DEBUG
		  " on preview,  "
		  "wait cnt:%d vsync_value:%d\n",
		  cnt, vsync_value);

		sr130pc10_sensor_write_list(sr130pc10_preview_reg,
			sizeof(sr130pc10_preview_reg) /
			sizeof(sr130pc10_preview_reg[0]),
			"sr130pc10_preview_reg");	/* preview start */
		if (sr130pc10_ctrl->cam_mode == SENSOR_MOVIE)
			sr130pc10_set_movie_mode(SENSOR_MOVIE);
		sr130pc10_set_exposure_value(0, sr130pc10_ctrl->settings.exposure);

		break;

	case SENSOR_SNAPSHOT_MODE:
	case SENSOR_RAW_SNAPSHOT_MODE:
		printk(KERN_DEBUG "[PGH}-> Capture\n");
		if (Flipmode) {
			sr130pc10_sensor_write_list(
				sr130pc10_capture_reg_X_Flip,
				sizeof(sr130pc10_capture_reg_X_Flip) /
				sizeof(sr130pc10_capture_reg_X_Flip[0]),
				"sr130pc10_capture_reg_X_Flip");
			/* preview start */
		} else {
		sr130pc10_sensor_write_list(sr130pc10_capture_reg,
			sizeof(sr130pc10_capture_reg) /
			sizeof(sr130pc10_capture_reg[0]),
			"sr130pc10_capture_reg");	/* preview start */
		}
		   /*SecFeature : for Android CCD preview mirror
			/ snapshot non-mirror
		   if(factory_test == 0) {
			   if(rotation_status == 90 || rotation_status
				== 270) {
				   sr130pc10_sensor_write(0x03, 0x00);
				   sr130pc10_sensor_write(0x11, 0x93);
			   } else {
				   sr130pc10_sensor_write(0x03, 0x00);
				   sr130pc10_sensor_write(0x11, 0x90);
			   }
		   }
		 */
		break;
	default:
		return 0;
	}

	return 0;
}
static long sr130pc10_set_exposure_value(int mode, int exposure)
{
	long rc = 0;

	printk(KERN_DEBUG "mode : %d, exposure value  : %d\n", mode, exposure);

	switch (exposure) {

	case CAMERA_EV_M4:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_-4\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_m4,
					    sizeof(sr130pc10_ev_m4) /
					    sizeof(sr130pc10_ev_m4[0]),
					    "sr130pc10_ev_m4");
		break;

	case CAMERA_EV_M3:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_-3\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_m3,
					    sizeof(sr130pc10_ev_m3) /
					    sizeof(sr130pc10_ev_m3[0]),
					    "sr130pc10_ev_m3");
		break;

	case CAMERA_EV_M2:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_-2\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_m2,
					    sizeof(sr130pc10_ev_m2) /
					    sizeof(sr130pc10_ev_m2[0]),
					    "sr130pc10_ev_m2");

		break;

	case CAMERA_EV_M1:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_-1\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_m1,
					    sizeof(sr130pc10_ev_m1) /
					    sizeof(sr130pc10_ev_m1[0]),
					    "sr130pc10_ev_m1");

		break;

	case CAMERA_EV_DEFAULT:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_0\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_default,
					    sizeof(sr130pc10_ev_default) /
					    sizeof(sr130pc10_ev_default[0]),
					    "sr130pc10_ev_default");

		break;

	case CAMERA_EV_P1:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_1\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_p1,
					    sizeof(sr130pc10_ev_p1) /
					    sizeof(sr130pc10_ev_p1[0]),
					    "sr130pc10_ev_p1");

		break;

	case CAMERA_EV_P2:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_2\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_p2,
					    sizeof(sr130pc10_ev_p2) /
					    sizeof(sr130pc10_ev_p2[0]),
					    "sr130pc10_ev_p2");
		break;

	case CAMERA_EV_P3:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_3\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_p3,
					    sizeof(sr130pc10_ev_p3) /
					    sizeof(sr130pc10_ev_p3[0]),
					    "sr130pc10_ev_p3");
		break;

	case CAMERA_EV_P4:
		printk(KERN_DEBUG "CAMERA_EXPOSURE_VALUE_4\n");
		sr130pc10_sensor_write_list(sr130pc10_ev_p4,
					    sizeof(sr130pc10_ev_p4) /
					    sizeof(sr130pc10_ev_p4[0]),
					    "sr130pc10_ev_p4");
		break;
	default:
		printk(KERN_DEBUG "unexpected Exposure Value %s/%d\n",
			 __func__, __LINE__);
/*                      return -EINVAL; */
		return 0;
	}

	sr130pc10_ctrl->settings.exposure = exposure;
	return rc;
}