int32_t lgit2_ois_on ( enum ois_ver_t ver ) { int32_t rc = OIS_SUCCESS; uint16_t cal_ver = 0; printk("%s, %s\n", __func__,LAST_UPDATE); ois_i2c_e2p_read(E2P_FIRST_ADDR+0x1C, &cal_ver, 2); printk("%s ver %x\n", __func__, cal_ver); switch (cal_ver) { case 0xE: rc = lgit2_bin_download(LGIT_VER14_REL_BIN_DATA); break; default: rc = OIS_INIT_NOT_SUPPORTED; break; } if (rc < 0) { CDBG("%s: init fail \n", __func__); return rc; } switch (ver) { case OIS_VER_RELEASE: lgit2_ois_init_cmd(LIMIT_OIS_ON_RETRY); /* OIS ON */ RegWriteA(0x6021, 0x12);//LGIT STILL & PAN ON MODE RegWriteA(0x6020, 0x02);//OIS ON if (!lgit2_ois_poll_ready(5)) return OIS_INIT_TIMEOUT; break; case OIS_VER_CALIBRATION: case OIS_VER_DEBUG: lgit_ois_calibration(ver); /* OIS ON */ RegWriteA(0x6021, 0x12);//LGIT STILL & PAN ON MODE RegWriteA(0x6020, 0x02);//OIS ON if (!lgit2_ois_poll_ready(5)) return OIS_INIT_TIMEOUT; break; } lgit2_ois_func_tbl.ois_cur_mode = OIS_MODE_CENTERING_ONLY; CDBG("%s : complete!\n", __func__); return rc; }
static int lgit_ois_rohm_on(enum ois_ver_t ver) { int32_t rc = OIS_SUCCESS; uint16_t cal_ver = 0; ois_i2c_e2p_read(E2P_FIRST_ADDR + 0x1C, &cal_ver, 2); pr_info("%s ver %x\n", __func__, cal_ver); switch (cal_ver) { case 1: rc = lgit2_bin_download(LGIT_VER2_REL_BIN_DATA); break; case 2: rc = lgit2_bin_download(LGIT_VER3_CAL_BIN_DATA); if (rc < 0) rc = lgit2_bin_download(LGIT_VER3_REL_BIN_DATA); break; default: rc = OIS_INIT_NOT_SUPPORTED; break; } if (rc < 0) { pr_err("%s: init fail \n", __func__); return rc; } rc = lgit_ois_rohm_init_cmd(LIMIT_OIS_ON_RETRY); lgit_ois_rohm_func_tbl.ois_cur_mode = OIS_MODE_CENTERING_ONLY; /* temp code to execute ois */ reg_write_addr(0x6021, 0x11); /* movie mode, pan on */ reg_write_addr(0x6020, 0x02); /* ois on */ CDBG("%s: complete!\n", __func__); return rc; }