|
|
@ -1399,7 +1399,7 @@ static void camera_open(CameraState *s, bool rear) { |
|
|
|
err = ioctl(s->ois_fd, VIDIOC_MSM_OIS_CFG, &ois_cfg_data); |
|
|
|
err = ioctl(s->ois_fd, VIDIOC_MSM_OIS_CFG, &ois_cfg_data); |
|
|
|
LOG("ois init settings: %d", err); |
|
|
|
LOG("ois init settings: %d", err); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
// leeco actuator
|
|
|
|
// leeco actuator (DW9800W H-Bridge Driver IC)
|
|
|
|
// from sniff
|
|
|
|
// from sniff
|
|
|
|
s->infinity_dac = 364; |
|
|
|
s->infinity_dac = 364; |
|
|
|
|
|
|
|
|
|
|
@ -1407,6 +1407,7 @@ static void camera_open(CameraState *s, bool rear) { |
|
|
|
{ |
|
|
|
{ |
|
|
|
.reg_write_type = MSM_ACTUATOR_WRITE_DAC, |
|
|
|
.reg_write_type = MSM_ACTUATOR_WRITE_DAC, |
|
|
|
.hw_mask = 0, |
|
|
|
.hw_mask = 0, |
|
|
|
|
|
|
|
// MSB here at address 3
|
|
|
|
.reg_addr = 3, |
|
|
|
.reg_addr = 3, |
|
|
|
.hw_shift = 0, |
|
|
|
.hw_shift = 0, |
|
|
|
.data_type = 9, |
|
|
|
.data_type = 9, |
|
|
@ -1417,11 +1418,14 @@ static void camera_open(CameraState *s, bool rear) { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct reg_settings_t actuator_init_settings[] = { |
|
|
|
struct reg_settings_t actuator_init_settings[] = { |
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=1, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, |
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=1, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, // PD = power down
|
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=0, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 2 }, |
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=0, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 2 }, // 0 = power up
|
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=2, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 2 }, |
|
|
|
{ .reg_addr=2, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=2, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 2 }, // RING = SAC mode
|
|
|
|
{ .reg_addr=6, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=64, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, |
|
|
|
{ .reg_addr=6, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=64, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, // 0x40 = SAC3 mode
|
|
|
|
{ .reg_addr=7, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=113, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, |
|
|
|
{ .reg_addr=7, .addr_type=MSM_ACTUATOR_BYTE_ADDR, .reg_data=113, .data_type = MSM_ACTUATOR_BYTE_DATA, .i2c_operation = MSM_ACT_WRITE, .delay = 0 }, |
|
|
|
|
|
|
|
// 0x71 = DIV1 | DIV0 | SACT0 -- Tvib x 1/4 (quarter)
|
|
|
|
|
|
|
|
// SAC Tvib = 6.3 ms + 0.1 ms = 6.4 ms / 4 = 1.6 ms
|
|
|
|
|
|
|
|
// LSC 1-step = 252 + 1*4 = 256 ms / 4 = 64 ms
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct region_params_t region_params[] = { |
|
|
|
struct region_params_t region_params[] = { |
|
|
|