void fimc_is_ois_get_offset_data(struct fimc_is_core *core, long *raw_data_x, long *raw_data_y) { int i = 0; u8 val = 0, x = 0, y = 0; u16 x_sum = 0, y_sum = 0, sum = 0; int retries = 0, avg_count = 20; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x0248, &val); x = val; fimc_is_ois_i2c_read(core->client1, 0x0249, &val); x_sum = (val << 8) | x; sum += x_sum; } sum = sum * 10 / avg_count; *raw_data_x = sum * 1000 / 175 / 10; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x024A, &val); y = val; fimc_is_ois_i2c_read(core->client1, 0x024B, &val); y_sum = (val << 8) | y; sum += y_sum; } sum = sum * 10 / avg_count; *raw_data_y = sum * 1000 / 175 / 10; fimc_is_ois_version(core); return; }
void fimc_is_ois_get_offset_data(struct fimc_is_core *core, long *raw_data_x, long *raw_data_y) { int i = 0; u8 val = 0, x = 0, y = 0; int x_sum = 0, y_sum = 0, sum = 0; int retries = 0, avg_count = 20; pr_info("%s : E\n", __FUNCTION__); if (core->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, true); } retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x0248, &val); x = val; fimc_is_ois_i2c_read(core->client1, 0x0249, &val); x_sum = (val << 8) | x; if (x_sum > 0x7FFF) { x_sum = -((x_sum ^ 0xFFFF) + 1); } sum += x_sum; } sum = sum * 10 / avg_count; *raw_data_x = sum * 1000 / 175 / 10; sum = 0; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x024A, &val); y = val; fimc_is_ois_i2c_read(core->client1, 0x024B, &val); y_sum = (val << 8) | y; if (y_sum > 0x7FFF) { y_sum = -((y_sum ^ 0xFFFF) + 1); } sum += y_sum; } sum = sum * 10 / avg_count; *raw_data_y = sum * 1000 / 175 / 10; if (core->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, false); } fimc_is_ois_version(core); pr_info("%s : X\n", __FUNCTION__); return; }
void fimc_is_ois_offset_test(struct fimc_is_core *core, long *raw_data_x, long *raw_data_y) { int ret = 0, i = 0; u8 val = 0, x = 0, y = 0; u16 x_sum = 0, y_sum = 0, sum = 0; int retries = 0, avg_count = 20; ret = fimc_is_ois_i2c_write(core->client1, 0x0014, 0x01); if (ret) { err("i2c write fail\n"); } retries = avg_count; do { fimc_is_ois_i2c_read(core->client1, 0x0014, &val); msleep(10); if (--retries < 0) { err("Read register failed!!!!, data = 0x%04x\n", val); break; } } while (val); retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x0248, &val); x = val; fimc_is_ois_i2c_read(core->client1, 0x0249, &val); x_sum = (val << 8) | x; sum += x_sum; } sum = sum * 10 / avg_count; *raw_data_x = sum * 1000 / 175 / 10; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x024A, &val); y = val; fimc_is_ois_i2c_read(core->client1, 0x024B, &val); y_sum = (val << 8) | y; sum += y_sum; } sum = sum * 10 / avg_count; *raw_data_y = sum * 1000 / 175 / 10; fimc_is_ois_version(core); return; }
void fimc_is_ois_get_offset_data(struct fimc_is_core *core, long *raw_data_x, long *raw_data_y) { int i = 0; u8 val = 0, x = 0, y = 0; int x_sum = 0, y_sum = 0, sum = 0; int retries = 0, avg_count = 20; int scale_factor = 0; struct exynos_platform_fimc_is *core_pdata = NULL; core_pdata = dev_get_platdata(fimc_is_dev); if (!core_pdata) { err("core->pdata is null"); return; } info("%s : E\n", __FUNCTION__); if (ois_minfo.header_ver[0] == '6') { scale_factor = OIS_GYRO_SCALE_FACTOR_IDG; } else { scale_factor = OIS_GYRO_SCALE_FACTOR_K2G; } if (core_pdata->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, true); } retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x0248, &val); x = val; fimc_is_ois_i2c_read(core->client1, 0x0249, &val); x_sum = (val << 8) | x; if (x_sum > 0x7FFF) { x_sum = -((x_sum ^ 0xFFFF) + 1); } sum += x_sum; } sum = sum * 10 / avg_count; *raw_data_x = sum * 1000 / scale_factor / 10; sum = 0; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x024A, &val); y = val; fimc_is_ois_i2c_read(core->client1, 0x024B, &val); y_sum = (val << 8) | y; if (y_sum > 0x7FFF) { y_sum = -((y_sum ^ 0xFFFF) + 1); } sum += y_sum; } sum = sum * 10 / avg_count; *raw_data_y = sum * 1000 / scale_factor / 10; if (core_pdata->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, false); } fimc_is_ois_version(core); info("%s : X\n", __FUNCTION__); return; }
void fimc_is_ois_offset_test(struct fimc_is_core *core, long *raw_data_x, long *raw_data_y) { int ret = 0, i = 0; u8 val = 0, x = 0, y = 0; int x_sum = 0, y_sum = 0, sum = 0; int retries = 0, avg_count = 20; pr_info("%s : E\n", __FUNCTION__); if (core->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, true); } ret = fimc_is_ois_i2c_write(core->client1, 0x0014, 0x01); if (ret) { err("i2c write fail\n"); } retries = avg_count; do { ret = fimc_is_ois_i2c_read(core->client1, 0x0014, &val); if (ret != 0) { break; } msleep(10); if (--retries < 0) { err("Read register failed!!!!, data = 0x%04x\n", val); break; } } while (val); sum = 0; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x0248, &val); x = val; fimc_is_ois_i2c_read(core->client1, 0x0249, &val); x_sum = (val << 8) | x; if (x_sum > 0x7FFF) { x_sum = -((x_sum ^ 0xFFFF) + 1); } sum += x_sum; } sum = sum * 10 / avg_count; *raw_data_x = sum * 1000 / 175 / 10; retries = avg_count; for (i = 0; i < retries; retries--) { fimc_is_ois_i2c_read(core->client1, 0x024A, &val); y = val; fimc_is_ois_i2c_read(core->client1, 0x024B, &val); y_sum = (val << 8) | y; if (y_sum > 0x7FFF) { y_sum = -((y_sum ^ 0xFFFF) + 1); } sum += y_sum; } sum = sum * 10 / avg_count; *raw_data_y = sum * 1000 / 175 / 10; if (core->use_ois_hsi2c) { fimc_is_ois_i2c_config(core->client1, false); } fimc_is_ois_version(core); pr_info("%s : X\n", __FUNCTION__); return; }