Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bed79efc authored by junwen.ye's avatar junwen.ye Committed by android-t1
Browse files

[ALM:11087279] [FP4]:ois gain offset

&&&%%%comment:[FP4]:ois gain offset
&&&%%%bug number:10872982
&&&%%%jira id:FP4-1868
&&&%%%product name:sm7225_r_fp4
&&&%%%root cause:coding
&&&%%%Bug category:T2M
&&&%%%Module_Impact:chi-cdk
&&&%%%Test_Suggestion:NA
&&&%%%Solution:NA
&&&%%%Test_Report:ok in native
&&&%%%VAL Can Test:NA
parent 4aec7802
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ static int32_t ois_reg_value = -1;
static int calibration_status = 0;
static int ois_status = 0;
static int ois_init_status = 0;
extern float gyro_gain_X;


int32_t cam_ois_construct_default_power_setting(
	struct cam_sensor_power_ctrl_t *power_info)
@@ -317,6 +319,7 @@ static int cam_ois_gyro_calibration(struct cam_ois_ctrl_t *o_ctrl)
	struct page                       *page = NULL;
  	uint32_t                           fw_size;
	uint32_t cmd_adress=0,cmd_data=0;
	uint32_t c=0;
	
	const REGSETTING cml_ois_gyro_calibration[]= {
		//gyro cali mode
@@ -338,6 +341,7 @@ static int cam_ois_gyro_calibration(struct cam_ois_ctrl_t *o_ctrl)
		{0x0018 ,0x0001} ,//13[write]
		{0x9E18 ,0x0002} ,//14[write]
		{0x0024 ,0x0001} ,//15[write]
		{0x9fb2 ,0x0000} ,//16[read]
	};

	if (!o_ctrl) {
@@ -384,6 +388,19 @@ static int cam_ois_gyro_calibration(struct cam_ois_ctrl_t *o_ctrl)
	rc = camera_io_dev_write(&(o_ctrl->io_master_info), &i2c_reg_setting);
	CAM_ERR(CAM_OIS, "write 0x0024 -> 0x0001");

	mdelay(50);
	gyro_gain_X = gyro_gain_X -0.075;
	c = (int) (gyro_gain_X*8192);
	if (c > 0)
	{
		i2c_reg_setting.reg_setting[0].reg_addr = cml_ois_gyro_calibration[16].reg;
		i2c_reg_setting.reg_setting[0].reg_data = c;
		i2c_reg_setting.reg_setting[0].delay = 1;
		i2c_reg_setting.reg_setting[0].data_mask = 0;
		CAM_ERR(CAM_OIS, "write 0x9fb2 -> 0x%x",c);
		rc = camera_io_dev_write(&(o_ctrl->io_master_info), &i2c_reg_setting);
	}

	mdelay(50);
	i2c_reg_setting.reg_setting[0].reg_addr = cml_ois_gyro_calibration[0].reg;
	i2c_reg_setting.reg_setting[0].reg_data = cml_ois_gyro_calibration[0].val;
+20 −0
Original line number Diff line number Diff line
@@ -50,6 +50,16 @@ int32_t cam_cci_i2c_read(struct cam_sensor_cci_client *cci_client,
	return rc;
}

union sf
{
	float f;
	unsigned char s[4];
}cam_gyro_gain;

float gyro_gain_X = 0.0;



int32_t cam_camera_cci_i2c_read_seq(struct cam_sensor_cci_client *cci_client,
	uint32_t addr, uint8_t *data,
	enum camera_sensor_i2c_type addr_type,
@@ -60,6 +70,7 @@ int32_t cam_camera_cci_i2c_read_seq(struct cam_sensor_cci_client *cci_client,
	unsigned char             *buf = NULL;
	int                        i = 0;
	struct cam_cci_ctrl        cci_ctrl;
	uint8_t d[4];

	if ((addr_type >= CAMERA_SENSOR_I2C_TYPE_MAX)
		|| (data_type >= CAMERA_SENSOR_I2C_TYPE_MAX)
@@ -89,6 +100,15 @@ int32_t cam_camera_cci_i2c_read_seq(struct cam_sensor_cci_client *cci_client,
		data[i] = buf[i];
		CAM_DBG(CAM_SENSOR, "Byte %d: Data: 0x%x\n", i, data[i]);
	}
	
	if (num_byte == 7494){
		for (i = 0; i < 4; i++)
			d[i] = data[6980+i];
		sprintf(cam_gyro_gain.s,"%c%c%c%c", d[0],d[1],d[2],d[3]);
		gyro_gain_X = cam_gyro_gain.f;
	}

	
	kfree(buf);
	return rc;
}