wip: tab4 camera

Change-Id: I71c883898fa8c318ebd598835e9bea7db20e2065
This commit is contained in:
Francescodario Cuzzocrea 2020-01-02 21:48:39 +01:00
parent f2dc623c24
commit c069e1c53a
11 changed files with 61 additions and 11211 deletions

View File

@ -193,19 +193,12 @@ int32_t sr130pc20_set_white_balance(struct msm_sensor_ctrl_t *s_ctrl, int mode)
return rc;
}
#ifdef CONFIG_MACH_MILLETLTE_KOR
int32_t sr130pc20_set_Init_reg(struct msm_sensor_ctrl_t *s_ctrl, int resolution)
int32_t sr130pc20_set_Init_reg(struct msm_sensor_ctrl_t *s_ctrl)
{
if (sr130pc20_ctrl.prev_mode == CAMERA_MODE_INIT) {
if (sr130pc20_ctrl.vtcall_mode == 1) {
if(resolution== MSM_SENSOR_RES_3) {
CDBG("CIF size VT Init Settings");
SR130PC20_WRITE_LIST(sr130pc20_CIF_VT_Init_Reg);
}
else {
CDBG("VT Init Settings");
SR130PC20_WRITE_LIST(sr130pc20_VT_Init_Reg);
}
SR130PC20_WRITE_LIST(sr130pc20_VT_Init_Reg);
CDBG("VT Init Settings");
}else {
SR130PC20_WRITE_LIST(sr130pc20_Init_Reg);
CDBG("Init settings");
@ -215,31 +208,8 @@ int32_t sr130pc20_set_Init_reg(struct msm_sensor_ctrl_t *s_ctrl, int resolution)
}
return 0;
}
#else
int32_t sr130pc20_set_Init_reg(struct msm_sensor_ctrl_t *s_ctrl, int flicker_type)
{
if (sr130pc20_ctrl.prev_mode == CAMERA_MODE_INIT) {
if (sr130pc20_ctrl.vtcall_mode == 1) {
SR130PC20_WRITE_LIST(sr130pc20_VT_Init_Reg);
CDBG("VT Init Settings");
}else {
if (flicker_type == MSM_CAM_FLICKER_50HZ) {
pr_err("%s : %d 50Hz init setting\n", __func__, __LINE__);
SR130PC20_WRITE_LIST(sr130pc20_Init_Reg);
} else {
pr_err("%s : %d 60Hz init setting\n", __func__, __LINE__);
SR130PC20_WRITE_LIST(sr130pc20_Init_Reg_60hz);
}
CDBG("Init settings");
}
SR130PC20_WRITE_LIST(sr130pc20_stop_stream);
CDBG("Stop Stream Settings");
}
return 0;
}
#endif
int32_t sr130pc20_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode, int flicker_type)
int32_t sr130pc20_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode)
{
int32_t rc = 0;
CDBG("mode = %d", mode);
@ -248,13 +218,8 @@ int32_t sr130pc20_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode, int
rc = SR130PC20_WRITE_LIST(sr130pc20_Snapshot);
break;
default:
if (flicker_type == MSM_CAM_FLICKER_50HZ) {
pr_err("%s : %d 50Hz Preview initial\n", __func__, __LINE__);
rc = SR130PC20_WRITE_LIST(sr130pc20_Preview_for_initial_50hz);
} else {
pr_err("%s : %d 60Hz Preview initial\n", __func__, __LINE__);
rc = SR130PC20_WRITE_LIST(sr130pc20_Preview_for_initial_60hz);
}
rc = SR130PC20_WRITE_LIST(sr130pc20_Preview);
pr_err("%s: Setting %d is sr130pc20_Preview\n", __func__, mode);
}
return rc;
}
@ -383,13 +348,9 @@ int32_t sr130pc20_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
#endif
break;
case CFG_SET_RESOLUTION:
sr130pc20_set_Init_reg(s_ctrl);
resolution = *((int32_t *)cdata->cfg.setting);
CDBG("CFG_SET_RESOLUTION res = %d" , resolution);
#ifdef CONFIG_MACH_MILLETLTE_KOR
sr130pc20_set_Init_reg(s_ctrl, resolution);
#else
sr130pc20_set_Init_reg(s_ctrl, cdata->flicker_type);
#endif
break;
case CFG_SET_STOP_STREAM:
CDBG(" CFG_SET_STOP_STREAM writing stop stream registers: sr130pc20_stop_stream");
@ -405,13 +366,7 @@ int32_t sr130pc20_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
{
CDBG(" CFG_SET_START_STREAM: Preview");
if(sr130pc20_ctrl.prev_mode == CAMERA_MODE_RECORDING) {
if (cdata->flicker_type == MSM_CAM_FLICKER_50HZ) {
pr_err("%s : %d 50Hz init setting\n", __func__, __LINE__);
SR130PC20_WRITE_LIST(sr130pc20_Init_Reg);
} else {
pr_err("%s : %d 60Hz init setting\n", __func__, __LINE__);
SR130PC20_WRITE_LIST(sr130pc20_Init_Reg_60hz);
}
SR130PC20_WRITE_LIST(sr130pc20_stop_stream);
}
if(sr130pc20_ctrl.prev_mode != CAMERA_MODE_CAPTURE) {
@ -419,7 +374,7 @@ int32_t sr130pc20_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
sr130pc20_set_white_balance( s_ctrl, sr130pc20_ctrl.settings.wb);
sr130pc20_set_exposure_compensation( s_ctrl , sr130pc20_ctrl.settings.exposure );
}
sr130pc20_set_resolution(s_ctrl , resolution , cdata->flicker_type);
sr130pc20_set_resolution(s_ctrl , resolution );
#if defined(CONFIG_SEC_MILLET_PROJECT) || defined(CONFIG_SEC_MATISSE_PROJECT) || defined (CONFIG_MACH_VICTOR3GDSDTV_LTN)
if(sr130pc20_ctrl.prev_mode == CAMERA_MODE_INIT) {
msleep(200);
@ -429,18 +384,13 @@ int32_t sr130pc20_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
break;
case CAMERA_MODE_CAPTURE:
{
sr130pc20_set_resolution(s_ctrl , resolution , cdata->flicker_type);
sr130pc20_set_resolution(s_ctrl , resolution );
sr130pc20_set_exif(s_ctrl);
}
break;
case CAMERA_MODE_RECORDING:
{
//SR130PC20_WRITE_LIST(sr130pc20_camcorder_mode);
if (cdata->flicker_type == MSM_CAM_FLICKER_50HZ) {
SR130PC20_WRITE_LIST(sr130pc20_camcorder_mode_50hz);
} else {
SR130PC20_WRITE_LIST(sr130pc20_camcorder_mode_60hz);
}
SR130PC20_WRITE_LIST(sr130pc20_camcorder_mode);
sr130pc20_set_effect( s_ctrl , sr130pc20_ctrl.settings.effect);
sr130pc20_set_white_balance( s_ctrl, sr130pc20_ctrl.settings.wb);
sr130pc20_set_exposure_compensation( s_ctrl , sr130pc20_ctrl.settings.exposure );

File diff suppressed because it is too large Load Diff

View File

@ -155,7 +155,7 @@ void sr352_get_ev_data_preflash_func2(struct msm_sensor_ctrl_t *s_ctrl);
void sr352_set_ev_data_mainFlash_func3(struct msm_sensor_ctrl_t *s_ctrl);
void sr352_return_ev_data_func4(struct msm_sensor_ctrl_t *s_ctrl);
void sr352_actuator_softlanding(struct msm_sensor_ctrl_t *s_ctrl);
void sr352_ae_stable_without_af(struct msm_sensor_ctrl_t *s_ctrl, int flicker_type);
void sr352_ae_stable_without_af(struct msm_sensor_ctrl_t *s_ctrl);
static int sr352_is_required_flash(struct msm_sensor_ctrl_t *s_ctrl, int flash_mode);
void sr352_set_af_mode(struct msm_sensor_ctrl_t *s_ctrl, int mode);
void sr352_recording_landing(struct msm_sensor_ctrl_t *s_ctrl);
@ -386,12 +386,12 @@ int32_t sr352_set_scene_mode(struct msm_sensor_ctrl_t *s_ctrl, int mode)
}
int32_t sr352_set_ae_awb_lock(struct msm_sensor_ctrl_t *s_ctrl, int mode, int flicker_type)
int32_t sr352_set_ae_awb_lock(struct msm_sensor_ctrl_t *s_ctrl, int mode)
{
int32_t rc = 0;
CDBG("mode = %d", mode);
if(flicker_type == MSM_CAM_FLICKER_60HZ) {
if(ANTIBANDING_60HZ) {
if(mode) {
rc = SR352_WRITE_LIST(sr352_AEAWB_Lock_60Hz);
} else {
@ -456,7 +456,7 @@ int32_t sr352_set_metering(struct msm_sensor_ctrl_t *s_ctrl, int mode)
return rc;
}
int32_t sr352_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode, int flicker_type)
int32_t sr352_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode)
{
int32_t rc = 0;
CDBG("mode = %d", mode);
@ -500,10 +500,10 @@ int32_t sr352_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode, int fli
else {
rc = SR352_WRITE_LIST_BURST(sr352_recording_50Hz_HD);
}
if(flicker_type == MSM_CAM_FLICKER_50HZ) {
rc = SR352_WRITE_LIST(sr352_HD_50hz_setting);
} else {
if(ANTIBANDING_60HZ) {
rc = SR352_WRITE_LIST(sr352_HD_60hz_setting);
} else {
rc = SR352_WRITE_LIST(sr352_HD_50hz_setting);
}
#if defined (AF_FLASH_SUPPORT)
SR352_WRITE_LIST(sr352_HD_AF_Init_Reg);
@ -523,25 +523,16 @@ int32_t sr352_set_resolution(struct msm_sensor_ctrl_t *s_ctrl, int mode, int fli
case MSM_SENSOR_RES_6:
rc = SR352_WRITE_LIST(sr352_preview_320_240);
break;
#ifdef CONFIG_MACH_MILLETLTE_KOR
case MSM_SENSOR_RES_7:
rc = SR352_WRITE_LIST(sr352_preview_352_288);
break;
case MSM_SENSOR_RES_8:
rc = SR352_WRITE_LIST(sr352_preview_176_144);
break;
#else
case MSM_SENSOR_RES_7:
rc = SR352_WRITE_LIST(sr352_preview_176_144);
break;
#endif
default:
pr_err("%s: Setting %d is invalid\n", __func__, mode);
}
return rc;
}
void sr352_init_camera(struct msm_sensor_ctrl_t *s_ctrl , int flicker_type)
void sr352_init_camera(struct msm_sensor_ctrl_t *s_ctrl)
{
int32_t rc = 0;
if(settings_type == 1) {
@ -555,10 +546,10 @@ void sr352_init_camera(struct msm_sensor_ctrl_t *s_ctrl , int flicker_type)
#if defined (AF_FLASH_SUPPORT)
SR352_WRITE_LIST(sr352_AF_Init_Reg);
#endif
if(flicker_type == MSM_CAM_FLICKER_50HZ) {
rc = SR352_WRITE_LIST(sr352_50hz_setting);
} else {
if(ANTIBANDING_60HZ) {
rc = SR352_WRITE_LIST(sr352_60hz_setting);
} else {
rc = SR352_WRITE_LIST(sr352_50hz_setting);
}
if(rc <0) {
pr_err("%s:%d error writing 50hz failed\n", __func__, __LINE__);
@ -647,7 +638,6 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
int32_t rc = 0;
int32_t i = 0;
mutex_lock(s_ctrl->msm_sensor_mutex);
sr352_ctrl.settings.flicker = cdata->flicker_type;
switch (cdata->cfgtype) {
case CFG_GET_SENSOR_INFO:
@ -677,7 +667,7 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
sr352_regs_table_init("/data/"REG_SET_FILE);
pr_err("/data/"REG_SET_FILE" inside CFG_SET_INIT_SETTING");
#endif
sr352_init_camera(s_ctrl , cdata->flicker_type);
sr352_init_camera(s_ctrl);
#if !defined (AF_FLASH_SUPPORT)
//Stop stream and start in START_STREAM
@ -689,7 +679,7 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
if (sr352_ctrl.prev_mode == CAMERA_MODE_RECORDING &&
sr352_ctrl.settings.resolution == MSM_SENSOR_RES_3) {
sr352_init_camera(s_ctrl , cdata->flicker_type);
sr352_init_camera(s_ctrl);
//Stop stream and start in START_STREAM
SR352_WRITE_LIST(sr352_stop_stream);
CDBG("CFG CFG_SET_RESOLUTION - HD Recording mode off");
@ -718,12 +708,12 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
switch(sr352_ctrl.op_mode) {
case CAMERA_MODE_PREVIEW:
{
sr352_set_resolution(s_ctrl , sr352_ctrl.settings.resolution , cdata->flicker_type);
sr352_set_resolution(s_ctrl , sr352_ctrl.settings.resolution);
#if !defined(AF_FLASH_SUPPORT)
if (sr352_ctrl.prev_mode == CAMERA_MODE_RECORDING &&
sr352_ctrl.settings.prev_resolution == MSM_SENSOR_RES_3) {
sr352_set_ae_awb_lock(s_ctrl, 0, cdata->flicker_type);
sr352_set_ae_awb_lock(s_ctrl, 0);
msleep(100);
}
@ -737,21 +727,17 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
{
#if defined (AF_FLASH_SUPPORT)
if (!is_af_run)
sr352_ae_stable_without_af(s_ctrl,sr352_ctrl.settings.flicker);
sr352_ae_stable_without_af(s_ctrl);
if (need_main_flash) {
SR352_WRITE_LIST(sr352_stop_stream);
if(sr352_ctrl.settings.flicker == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable4_1_60Hz);
} else {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable4_1);
}
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable4_1);
sr352_set_ev_data_mainFlash_func3(s_ctrl);
set_led_flash(MSM_CAMERA_LED_HIGH);
SR352_WRITE_LIST(sr352_StartMainFlash_FlashRegTable5);
flash_status = MSM_CAMERA_LED_HIGH;
}
#endif
sr352_set_resolution(s_ctrl , sr352_ctrl.settings.resolution , cdata->flicker_type);
sr352_set_resolution(s_ctrl , sr352_ctrl.settings.resolution);
}
break;
case CAMERA_MODE_RECORDING:
@ -764,10 +750,10 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
#endif
if ( sr352_ctrl.settings.resolution == MSM_SENSOR_RES_3 ) {
CDBG("CFG writing *** sr352_recording_50Hz_HD");
sr352_set_resolution( s_ctrl , sr352_ctrl.settings.resolution , cdata->flicker_type );
sr352_set_resolution( s_ctrl , sr352_ctrl.settings.resolution);
} else {
CDBG("CFG writing *** sr352_recording_50Hz_30fps");
sr352_set_resolution( s_ctrl , MSM_SENSOR_RES_5 , cdata->flicker_type);
sr352_set_resolution( s_ctrl , MSM_SENSOR_RES_5);
if(settings_type == 1) {
rc = SR352_WRITE_LIST(sr352_recording_50Hz_30fps_01);
}
@ -793,11 +779,7 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
if (flash_status == MSM_CAMERA_LED_HIGH) {
set_led_flash(MSM_CAMERA_LED_OFF);
flash_status = MSM_CAMERA_LED_OFF;
if(sr352_ctrl.settings.flicker == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6_60Hz);
} else {
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6);
}
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6);
sr352_return_ev_data_func4(s_ctrl);
SR352_WRITE_LIST(sr352_EndMainFlash_FlashRegTable7);
need_main_flash = 0;
@ -1097,33 +1079,21 @@ int32_t sr352_sensor_config(struct msm_sensor_ctrl_t *s_ctrl,
#if defined (AF_FLASH_SUPPORT)
void sr352_ae_stable_without_af(struct msm_sensor_ctrl_t *s_ctrl, int flicker_type)
void sr352_ae_stable_without_af(struct msm_sensor_ctrl_t *s_ctrl)
{
is_preflash = sr352_is_required_flash(s_ctrl, flash_mode);
if (is_preflash) {
memset(&Flash, 0, sizeof(Flash));
if(flicker_type == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1_60Hz);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2_60Hz);
} else {
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2);
}
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2);
set_led_flash(MSM_CAMERA_LED_LOW);
flash_status = MSM_CAMERA_LED_LOW;
need_main_flash = 1;
msleep(600); /* AE become stable here */
if(flicker_type == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3_60Hz);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4_60Hz);
} else {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4);
}
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4);
msleep(50);
set_led_flash(MSM_CAMERA_LED_OFF);
msleep(300);
@ -1942,7 +1912,7 @@ void sr352_cancel_af(struct msm_sensor_ctrl_t *s_ctrl)
SR352_WRITE_ADDR(0x11, focus_reg);
}
int32_t sr352_set_af_status(struct msm_sensor_ctrl_t *s_ctrl, int status, int initial_pos, int flicker_type)
int32_t sr352_set_af_status(struct msm_sensor_ctrl_t *s_ctrl, int status, int initial_pos)
{
int rc = -EINVAL;
@ -1954,15 +1924,9 @@ int32_t sr352_set_af_status(struct msm_sensor_ctrl_t *s_ctrl, int status, int in
if (is_preflash) {
memset(&Flash, 0, sizeof(Flash));
if(flicker_type == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1_60Hz);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2_60Hz);
} else {
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2);
}
SR352_WRITE_LIST(sr352_StartPreFlash_FlashRegTable1);
sr352_get_ev_data_flash_Off_func1(s_ctrl);
SR352_WRITE_LIST(sr352_ReadyPreFlash_FlashRegTable2);
set_led_flash(MSM_CAMERA_LED_LOW);
flash_status = MSM_CAMERA_LED_LOW;
rc = SENSOR_AF_PRE_FLASH_ON;
@ -1976,15 +1940,9 @@ int32_t sr352_set_af_status(struct msm_sensor_ctrl_t *s_ctrl, int status, int in
case SENSOR_AF_PRE_FLASH_OFF:
CDBG("SENSOR_AF_PRE_FLASH_OFF\n");
if (is_preflash) {
if(flicker_type == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3_60Hz);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4_60Hz);
} else {
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4);
}
SR352_WRITE_LIST(sr352_AfterPreFlash_FlashRegTable3);
sr352_get_ev_data_preflash_func2(s_ctrl);
SR352_WRITE_LIST(sr352_EndPreFlash_FlashRegTable4);
if (!is_touchaf)
msleep(100);
@ -2105,10 +2063,10 @@ int32_t sr352_sensor_native_control(struct msm_sensor_ctrl_t *s_ctrl,
#if defined (AF_FLASH_SUPPORT)
if(!flash_mode){
CDBG("EXT_CAM_SET_AE_AWB, !flash_mode");
sr352_set_ae_awb_lock(s_ctrl, sr352_ctrl.settings.aeawblock, sr352_ctrl.settings.flicker);
sr352_set_ae_awb_lock(s_ctrl, sr352_ctrl.settings.aeawblock);
}
#else
sr352_set_ae_awb_lock(s_ctrl, sr352_ctrl.settings.aeawblock, sr352_ctrl.settings.flicker);
sr352_set_ae_awb_lock(s_ctrl, sr352_ctrl.settings.aeawblock);
#endif
break;
#if defined (AF_FLASH_SUPPORT)
@ -2122,7 +2080,7 @@ int32_t sr352_sensor_native_control(struct msm_sensor_ctrl_t *s_ctrl,
CDBG("DAFF EXT_CAM_SET_AF_STATUS: %d : %d\n", cam_info->value_1, cam_info->value_2);
cam_info->value_1 = sr352_set_af_status(s_ctrl, cam_info->value_1,
cam_info->value_2, sr352_ctrl.settings.flicker);
cam_info->value_2);
if (!copy_to_user((void *)argp, (const void *)&cam_info,
sizeof(cam_info)))
@ -2169,11 +2127,7 @@ int32_t sr352_sensor_native_control(struct msm_sensor_ctrl_t *s_ctrl,
if (flash_status == MSM_CAMERA_LED_HIGH) {
set_led_flash(MSM_CAMERA_LED_OFF);
flash_status = MSM_CAMERA_LED_OFF;
if(sr352_ctrl.settings.flicker == MSM_CAM_FLICKER_60HZ) {
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6_60Hz);
} else {
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6);
}
SR352_WRITE_LIST(sr352_AfterMainFlash_FlashRegTable6);
sr352_return_ev_data_func4(s_ctrl);
SR352_WRITE_LIST(sr352_EndMainFlash_FlashRegTable7);
need_main_flash = 0;
@ -2203,7 +2157,6 @@ void sr352_set_default_settings(void)
sr352_ctrl.settings.effect = CAMERA_EFFECT_OFF;
sr352_ctrl.settings.scenemode = CAMERA_SCENE_AUTO;
sr352_ctrl.settings.aeawblock = 0;
sr352_ctrl.settings.flicker = MSM_CAM_FLICKER_50HZ;
}
#ifndef NO_BURST

View File

@ -17609,57 +17609,6 @@ static struct msm_camera_i2c_reg_conf sr352_preview_320_240[] ={
};
#ifdef CONFIG_MACH_MILLETLTE_KOR
static struct msm_camera_i2c_reg_conf sr352_preview_352_288[] ={
{0x03, 0xc1,},
{0x10, 0x06,}, // ssd tranfer disable
{0xff, 0x01,},
{0x03, 0x00,},
{0x01, 0x01,}, // Sleep On
{0x03, 0xc1,},
{0x10, 0x07,}, // ssd tranfer enable
///////////////////////////////////////////
// Scaler 352_288
///////////////////////////////////////////
{0x03, 0x19,},
{0x10, 0x00,}, //hw scaler off
{0x14, 0x03,}, //sawtooth on 320_240 176_144 pre filter //Bit[5] on
//Scaler
{0x03, 0xc0,},
{0xa0, 0x00,}, //fw scaler off
{0xa2, 0x01,}, //width
{0xa3, 0x60,},
{0xa4, 0x01,}, //height
{0xa5, 0x20,},
{0xa1, 0x00,}, //zoom step
{0xa0, 0xc0,}, //fw scaler on
{0x03, 0x19,},
{0x10, 0x07,}, //hw scaler on
///////////////////////////////////////////
// 05 Page MIPI Size
///////////////////////////////////////////
{0x03, 0x05,}, // Page05
{0x30, 0x02,}, // l_pkt_wc_h // Pre = 352 * 2 (YUV)
{0x31, 0xc0,}, // l_pkt_wc_l
//------------------------------------//
{0x03, 0x00,},
{0x1e, 0x01,}, // frame update
{0x01, 0x00,}, // Sleep Off
{0xff, 0x01,}, //delay 10ms
};
#endif
static struct msm_camera_i2c_reg_conf sr352_preview_800_480[] ={
{0x03, 0xc1,},
{0x10, 0x06,}, // ssd tranfer disable

View File

@ -36442,7 +36442,6 @@ static struct msm_camera_i2c_reg_conf sr352_50hz_setting[] = {
{0x03, 0xc7,},
{0x10, 0x70,}, //AE Off (Band Off) 50hz 70, 60hz 50
{0x12, 0x30,}, // Fast speed
{0x13, 0x61,},
{0x15, 0xc0,}, // SSD Patch Weight Y Mean On
{0x1e, 0x03,}, // Band1 Step
@ -36607,7 +36606,6 @@ static struct msm_camera_i2c_reg_conf sr352_60hz_setting[] = {
{0x03, 0xc7,},
{0x10, 0x50,}, //AE Off (Band Off) 50hz 70, 60hz 50
{0x12, 0x30,}, // Fast speed
{0x13, 0x61,},
{0x15, 0xc0,}, // SSD Patch Weight Y Mean On
{0x1e, 0x03,}, // Band1 Step
@ -36695,7 +36693,7 @@ static struct msm_camera_i2c_reg_conf sr352_HD_60hz_setting[] = {
///////////////////////////////////////////////////////////////////////////////
//Shutter Setting
{0x03, 0xc7,},
{0x10, 0x10,}, // AE Off (Band Off) 50hz 30, 60hz 10
{0x10, 0x30,}, // AE Off (Band Off) 50hz 30, 60hz 10
{0x12, 0x03,}, // Slow AE
{0x15, 0xc0,}, // SSD Patch Weight Y Mean On

View File

@ -37970,78 +37970,6 @@ static struct msm_camera_i2c_reg_conf sr352_StartPreFlash_FlashRegTable1[]={
};
static struct msm_camera_i2c_reg_conf sr352_StartPreFlash_FlashRegTable1_60Hz[]={
{0x03, 0xc7}, //SW ExpMax 15fps
{0xb3, 0x3f},
{0xb4, 0x80},
{0xb5, 0x00},
{0xb6, 0x00},
{0xb7, 0x3f},
{0xb8, 0x80},
{0xb9, 0x00},
{0xba, 0x00},
{0xbb, 0x3f},
{0xbc, 0x80},
{0xbd, 0x00},
{0xbe, 0x00},
{0x32, 0x00},
{0x33, 0x36},
{0x34, 0xC9},
{0x35, 0x00},
{0x6F, 0x08},//SW ExpMaxStep 15fps
{0x03, 0x20}, //HW ExpMax 15fps
{0x24, 0x00},
{0x25, 0x36},
{0x26, 0xC9},
{0x27, 0x00},
{0x03, 0xD3}, // Adaptive start
{0x85, 0x70}, // Cb _Sat_Dark1
{0x86, 0x70}, // Cb _Sat_Dark2
{0x8B, 0x70}, // Cr _Sat_Dark1
{0x8C, 0x70}, // Cr _Sat_Dark2
{0xB4, 0x80}, // LSC3_Ind_LowTmp gain g 80
{0xB5, 0x80}, // LSC4_Ind_LowTmp gain b 80
{0xB6, 0x7A}, // LSC5_Ind_LowTmp gain r 82
{0xBA, 0x80}, // LSC3_Ind_MiddleTmp gain g 80
{0xBB, 0x80}, // LSC4_Ind_MiddleTmp gain b 80
{0xBC, 0x6E}, // LSC5_Ind_MiddleTmp gain r 74
{0xC0, 0x80}, // LSC3_Ind_HighTmp gain g 80
{0xC1, 0x80}, // LSC4_Ind_HighTmp gain b 80
{0xC2, 0x6E}, // LSC5_Ind_HighTmp gain r 74
{0xC6, 0x84}, // LSC3_Dark1_LowTmp gain g 68
{0xC7, 0x84}, // LSC4_Dark1_LowTmp gain b 65
{0xC8, 0x6A}, // LSC5_Dark1_LowTmp gain r 62
{0xCC, 0x84}, // LSC3_Dark1_MiddleTmp gain g 68
{0xCD, 0x84}, // LSC4_Dark1_MiddleTmp gain b 65
{0xCE, 0x6A}, // LSC5_Dark1_MiddleTmp gain r 62
{0xD2, 0x84}, // LSC3_Dark1_HighTmp gain g 68
{0xD3, 0x84}, // LSC4_Dark1_HighTmp gain b 65
{0xD4, 0x6A}, // LSC5_Dark1_HighTmp gain r 62
{0xD8, 0x84}, // LSC3_Dark2 gain g 68
{0xD9, 0x84}, // LSC4_Dark2 gain b 65
{0xDA, 0x6A}, // LSC5_Dark2 gain r 52
{0x03, 0x00},
{0xFF, 0x23}, // 350ms delay(unit=10ms)
{0x03, 0xC7},
{0x10, 0x50},
{0x03, 0xC8},
{0x10, 0x00},
{0x03, 0xCF},
{0x2C, 0x06},
{0xFF, 0x0A}, // 100ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_ReadyPreFlash_FlashRegTable2[]={
{0x03, 0xC7},
{0x10, 0xF0}, //AE on
@ -38110,74 +38038,6 @@ static struct msm_camera_i2c_reg_conf sr352_ReadyPreFlash_FlashRegTable2[]={
{0x10, 0xD3},
};
static struct msm_camera_i2c_reg_conf sr352_ReadyPreFlash_FlashRegTable2_60Hz[]={
{0x03, 0xC7},
{0x10, 0xD0}, //AE on 60Hz
{0x12, 0x70}, //AE Speed Hi
{0x03, 0xC8},
{0x10, 0x00},
{0x14, 0x8F},
{0x17, 0x77}, //AWB speed1
{0x18, 0x77}, //AWB speed2
{0x22, 0x80}, //AWB MaxStepInc
{0x91, 0x20},
{0x92, 0x20},
{0x03, 0xCA},
{0xA1, 0x80},
{0xA2, 0x00},
{0xA3, 0x00},
{0x03, 0xC8},
{0xEB, 0x11}, //Indoor_aCtmpWgt
{0xEC, 0x11}, //Indoor_aCtmpWgt_a01
{0xED, 0x11}, //Indoor_aCtmpWgt_a02
{0xEE, 0x11}, //Indoor_aCtmpWgt_a03
{0xEF, 0x11}, //Indoor_aCtmpWgt_a04
{0xF0, 0x11}, //Indoor_aCtmpWgt_a05
{0xF1, 0x11}, //Indoor_aCtmpWgt_a06
{0xF2, 0x11}, //Indoor_aCtmpWgt_a07
{0xF3, 0x11}, //Indoor_aCtmpWgt_a08
{0xF4, 0x12}, //Indoor_aCtmpWgt_a09
{0xF5, 0x64}, //Indoor_aCtmpWgt_a10
{0xF6, 0x11}, //Indoor_aCtmpWgt_a11
{0xF7, 0x18}, //Indoor_aCtmpWgt_a12
{0xF8, 0xFA}, //Indoor_aCtmpWgt_a13
{0xF9, 0x11}, //Indoor_aCtmpWgt_a14
{0xFA, 0x48}, //Indoor_aCtmpWgt_a15
{0xFB, 0x82}, //Indoor_aCtmpWgt_a16
{0xFC, 0x11}, //Indoor_aCtmpWgt_a17
{0xFD, 0x11}, //Indoor_aCtmpWgt_a18
{0x03, 0xC9}, //c9 page
{0x10, 0x11}, //Indoor_aCtmpWgt_a19
{0x11, 0x11}, //Indoor_aCtmpWgt_a20
{0x12, 0x11}, //Indoor_aCtmpWgt_a21
{0x13, 0x11}, //Indoor_aCtmpWgt_a22
{0x14, 0x11}, //Indoor_aCtmpWgt_a23
{0x15, 0x10}, //Indoor_aCtmpWgt_a24
{0x2B, 0x28}, //Indoor_aRgTgtOfs
{0x2C, 0x24}, //Indoor_aRgTgtOfs_a01
{0x2D, 0x20}, //Indoor_aRgTgtOfs_a02
{0x2E, 0x1C}, //Indoor_aRgTgtOfs_a03 //h80->h84 Hando Extend MaxMax choi 0618
{0x2F, 0x18}, //Indoor_aRgTgtOfs_a04 //h04->h00 choi 0618
{0x30, 0xB0}, //Indoor_aBgTgtOfs
{0x31, 0xAC}, //Indoor_aBgTgtOfs_a01
{0x32, 0xA4}, //Indoor_aBgTgtOfs_a02
{0x33, 0x9C}, //Indoor_aBgTgtOfs_a03 //h84->h8a Hando Extend MaxMax choi 0618
{0x34, 0x90}, //Indoor_aBgTgtOfs_a04 //h00->h84 0618 choi
{0x35, 0x38}, //bRgDefTgt //indoor
{0x36, 0x00}, //bBgDefTgt //indoor
{0x03, 0xCA},
{0x23, 0x00}, //0x92 //bRgDefTgt //Outdoor
{0x24, 0x8D}, //0x8D //bBgDefTgt //Outdoor
{0x03, 0xC8},
{0x11, 0xC1},
{0x10, 0xD3},
};
static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable3[]={
{0x03, 0xC7},
{0x10, 0x70}, // AE Off 50hz 70, 60hz 50
@ -38186,14 +38046,6 @@ static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable3[]={
{0xFF, 0x0D}, // 130ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable3_60Hz[]={
{0x03, 0xC7},
{0x10, 0x50}, // AE Off 50hz 70, 60hz 50
{0x03, 0xC8}, // AWB Off
{0x10, 0x52},
{0xFF, 0x0D}, // 130ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_EndPreFlash_FlashRegTable4[]={
{0x03, 0xC7},
{0x10, 0xF0}, // AE ON
@ -38202,13 +38054,6 @@ static struct msm_camera_i2c_reg_conf sr352_EndPreFlash_FlashRegTable4[]={
{0xFF, 0x0D}, // 130ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_EndPreFlash_FlashRegTable4_60Hz[]={
{0x03, 0xC7},
{0x10, 0xD0}, // AE ON
{0x03, 0xC8}, // AWB ON
{0x10, 0xD2},
{0xFF, 0x0D}, // 130ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable4_1[]={
{0x03, 0xC7},
@ -38220,16 +38065,6 @@ static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable4_1[]={
};
static struct msm_camera_i2c_reg_conf sr352_AfterPreFlash_FlashRegTable4_1_60Hz[]={
{0x03, 0xC7},
{0x10, 0x50}, // AE Off 50hz 70, 60hz 50
{0x03, 0xC8}, // AWB Off
{0x10, 0x52},
{0xFF, 0x0D}, // 130ms delay(unit=10ms)
};
static struct msm_camera_i2c_reg_conf sr352_StartMainFlash_FlashRegTable5[]={
{0xFF, 0x01}, // Array end flag
@ -38372,143 +38207,6 @@ static struct msm_camera_i2c_reg_conf sr352_AfterMainFlash_FlashRegTable6[]={
{0x24, 0x8D}, // bBgDefTgt //Outdoor
};
static struct msm_camera_i2c_reg_conf sr352_AfterMainFlash_FlashRegTable6_60Hz[]={
{0x03, 0xC1},
{0x10, 0x06}, // ssd tranfer disable
{0x03, 0xc7},
{0xb3, 0x40},
{0xb4, 0x12},
{0xb5, 0x00},
{0xb6, 0x00},
{0xb7, 0x40},
{0xb8, 0x26},
{0xb9, 0x00},
{0xba, 0x00},
{0xbb, 0x40},
{0xbc, 0x70},
{0xbd, 0x00},
{0xbe, 0x00},
{0x03, 0xc7}, // SW ExpMax 8fps
{0x32, 0x00},
{0x33, 0x66},
{0x34, 0xB8},
{0x35, 0xE0},
{0x6F, 0x0F}, //SW ExpMaxStep 8fps
{0x03, 0x20}, //HW ExpMax 8fps
{0x24, 0x00},
{0x25, 0x66},
{0x26, 0xB8},
{0x27, 0xE0},
{0x03, 0xCA},
{0xA1, 0x00},
{0xA3, 0x00},
{0x03, 0x26},
{0x30, 0x28}, // Preview // sleep off
{0x03, 0xC7},
{0x10, 0x50},
{0x03, 0xC8},
{0x10, 0x00},
{0x03, 0xD3}, // Adaptive
{0x83, 0x98}, // Cb_Outdoor
{0x84, 0x95}, // Cb _Sat_Indoor
{0x85, 0xA0}, // Cb _Sat_Dark1
{0x86, 0x8A}, // Cb _Sat_Dark2
{0x87, 0x88}, // Cb _Sat_LowTemp
{0x88, 0x96}, // Cb _Sat_HighTemp
{0x89, 0x88}, // Cr _Sat_Outdoor
{0x8A, 0x90}, // Cr _Sat_Indoor
{0x8B, 0xA0}, // Cr _Sat_Dark1
{0x8C, 0x84}, // Cr _Sat_Dark2
{0x8D, 0x75}, // Cr _Sat_LowTemp
{0x8E, 0x96}, // Cr _Sat_HighTemp
{0xB4, 0x80}, // LSC3_Ind_LowTmp gain g
{0xB5, 0x80}, // LSC4_Ind_LowTmp gain b
{0xB6, 0x82}, // LSC5_Ind_LowTmp gain r
{0xBA, 0x80}, // LSC3_Ind_MiddleTmp gain g
{0xBB, 0x80}, // LSC4_Ind_MiddleTmp gain b
{0xBC, 0x74}, // LSC5_Ind_MiddleTmp gain r
{0xC0, 0x80}, // LSC3_Ind_HighTmp gain g
{0xC1, 0x80}, // LSC4_Ind_HighTmp gain b
{0xC2, 0x74}, // LSC5_Ind_HighTmp gain r
{0xC6, 0x68}, // LSC3_Dark1_LowTmp gain g
{0xC7, 0x65}, // LSC4_Dark1_LowTmp gain b
{0xC8, 0x62}, // LSC5_Dark1_LowTmp gain r
{0xCC, 0x68}, // LSC3_Dark1_MiddleTmp gain g
{0xCD, 0x65}, // LSC4_Dark1_MiddleTmp gain b
{0xCE, 0x62}, // LSC5_Dark1_MiddleTmp gain r
{0xD2, 0x68}, // LSC3_Dark1_HighTmp gain g
{0xD3, 0x65}, // LSC4_Dark1_HighTmp gain b
{0xD4, 0x62}, // LSC5_Dark1_HighTmp gain r
{0xD8, 0x68}, // LSC3_Dark2 gain g
{0xD9, 0x65}, // LSC4_Dark2 gain b
{0xDA, 0x62}, // LSC5_Dark2 gain r
{0x03, 0xC8}, // AWB Speed option recovery form Flash AWB
{0x14, 0x9F},
{0x17, 0x34}, // AWB speed1
{0x18, 0x55}, // AWB speed2
{0x22, 0x30}, // AWB MaxStep
{0x03, 0xC8},
{0xEB, 0x11}, // Indoor_aCtmpWgt
{0xEC, 0x11}, // Indoor_aCtmpWgt_a01
{0xED, 0x12}, // Indoor_aCtmpWgt_a02
{0xEE, 0x11}, // Indoor_aCtmpWgt_a03
{0xEF, 0x11}, // Indoor_aCtmpWgt_a04
{0xF0, 0x33}, // Indoor_aCtmpWgt_a05
{0xF1, 0x11}, // Indoor_aCtmpWgt_a06
{0xF2, 0x14}, // Indoor_aCtmpWgt_a07
{0xF3, 0x43}, // Indoor_aCtmpWgt_a08
{0xF4, 0x11}, // Indoor_aCtmpWgt_a09
{0xF5, 0x55}, // Indoor_aCtmpWgt_a10
{0xF6, 0x41}, // Indoor_aCtmpWgt_a11
{0xF7, 0x16}, // Indoor_aCtmpWgt_a12
{0xF8, 0x65}, // Indoor_aCtmpWgt_a13
{0xF9, 0x11}, // Indoor_aCtmpWgt_a14
{0xFA, 0x48}, // Indoor_aCtmpWgt_a15
{0xFB, 0x61}, // Indoor_aCtmpWgt_a16
{0xFC, 0x11}, // Indoor_aCtmpWgt_a17
{0xFD, 0x46}, // Indoor_aCtmpWgt_a18
{0x03, 0xC9}, // c9 page
{0x10, 0x11}, // Indoor_aCtmpWgt_a19
{0x11, 0x11}, // Indoor_aCtmpWgt_a20
{0x12, 0x23}, // Indoor_aCtmpWgt_a21
{0x13, 0x11}, // Indoor_aCtmpWgt_a22
{0x14, 0x11}, // Indoor_aCtmpWgt_a23
{0x15, 0x10}, // Indoor_aCtmpWgt_a24
{0x26, 0x3E}, // Indoor_aTgtAngle
{0x27, 0x42}, // Indoor_aTgtAngle_a01
{0x28, 0x4D}, // Indoor_aTgtAngle_a02
{0x29, 0x52}, // Indoor_aTgtAngle_a03 //h50->h4e Hando Extend MaxMax choi 0618
{0x2A, 0x77}, // Indoor_aTgtAngle_a04
{0x2B, 0x12}, // Indoor_aRgTgtOfs
{0x2C, 0x90}, // Indoor_aRgTgtOfs_a01
{0x2D, 0x90}, // Indoor_aRgTgtOfs_a02
{0x2E, 0x05}, // Indoor_aRgTgtOfs_a03 //h80->h84 Hando Extend MaxMax choi 0618
{0x2F, 0x0E}, // Indoor_aRgTgtOfs_a04 //h04->h00 choi 0618
{0x30, 0xCC}, // Indoor_aBgTgtOfs
{0x31, 0xA7}, // Indoor_aBgTgtOfs_a01
{0x32, 0xA7}, // Indoor_aBgTgtOfs_a02
{0x33, 0x82}, // Indoor_aBgTgtOfs_a03 //h84->h8a Hando Extend MaxMax choi 0618
{0x34, 0x83}, // Indoor_aBgTgtOfs_a04 //h00->h84 0618 choi
{0x35, 0x24}, // 24 bRgDefTgt //indoor
{0x36, 0x00}, // 00bBgDefTgt //indoor
{0x03, 0xCA},
{0x23, 0x92}, // bRgDefTgt //Outdoor
{0x24, 0x8D}, // bBgDefTgt //Outdoor
};
static struct msm_camera_i2c_reg_conf sr352_EndMainFlash_FlashRegTable7[]={
{0x03, 0xC0}, // AE, AWB frame skip
{0x55, 0x04},

View File

@ -448,7 +448,7 @@ enum camerab_mode_t {
struct sensorb_cfg_data {
int cfgtype;
#if defined(CONFIG_S5K4ECGX) || defined(CONFIG_SR030PC50) || defined(CONFIG_SR352) || defined(CONFIG_SR200PC20) || defined(CONFIG_SR130PC20)
#if defined(CONFIG_SEC_ATLANTIC_PROJECT)
int flicker_type;
#endif
union {