0x0428, /* line_length_pck (0x380c) */
};
+const struct sensor_crop_info sensor_12a10_crop_info_A_4096x3072_30fps = {
+ 0, /* cal_crop_x */
+ 0, /* cal_crop_y */
+};
+#if 0
+const struct sensor_crop_info sensor_12a10_crop_info_A_2048x1536_60fps = {
+ 0, /* cal_crop_x */
+ 0, /* cal_crop_y */
+};
+
+const struct sensor_crop_info sensor_12a10_crop_info_A_2000x1124_60fps = {
+ 24, /* cal_crop_x */
+ 206, /* cal_crop_y */
+};
+
+const struct sensor_crop_info sensor_12a10_crop_info_A_1920x1080_60fps = {
+ 64, /* cal_crop_x */
+ 228, /* cal_crop_y */
+};
+
+const struct sensor_crop_info sensor_12a10_crop_info_A_1280x720_120fps = {
+ 384, /* cal_crop_x */
+ 408, /* cal_crop_y */
+};
+#endif
static const u32 *sensor_12a10_setfiles_A[] = {
sensor_12a10_setfile_A_4096x3072_30fps,
sensor_12a10_setfile_A_2048x1536_60fps,
&sensor_12a10_pllinfo_A_1920x1080_60fps,*/
&sensor_12a10_pllinfo_A_1280x720_120fps,
};
+
+static const struct sensor_crop_info *sensor_12a10_crop_infos_A[] = {
+ &sensor_12a10_crop_info_A_4096x3072_30fps,
+ /*&sensor_12a10_crop_info_A_2048x1536_60fps,
+ &sensor_12a10_crop_info_A_2000x1124_60fps,
+ &sensor_12a10_crop_info_A_1920x1080_60fps,
+ &sensor_12a10_crop_info_A_1280x720_120fps,*/
+};
#endif
static const u32 **sensor_12a10_setfiles;
static const u32 *sensor_12a10_setfile_sizes;
static const struct sensor_pll_info_compact **sensor_12a10_pllinfos;
+static const struct sensor_crop_info **sensor_12a10_crop_infos;
static u32 sensor_12a10_max_setfile_num;
static void sensor_12a10_cis_data_calculation(const struct sensor_pll_info_compact *pll_info_compact, cis_shared_data *cis_data)
sensor_12a10_cis_data_calculation(sensor_12a10_pllinfos[mode], cis->cis_data);
+ if (cis->cis_data->is_data.paf_mode) {
+ cis->cis_data->cur_pos_x = 0;
+ cis->cis_data->cur_pos_y = 0;
+ info("get cur_pos_x/y value for MS paf mode x: %d, y: %d\n",
+ cis->cis_data->cur_pos_x, cis->cis_data->cur_pos_y);
+ }
+
I2C_MUTEX_LOCK(cis->i2c_lock);
ret = sensor_cis_set_registers(subdev, sensor_12a10_setfiles[mode], sensor_12a10_setfile_sizes[mode]);
sensor_12a10_setfile_sizes = sensor_12a10_setfile_A_sizes;
sensor_12a10_pllinfos = sensor_12a10_pllinfos_A;
sensor_12a10_max_setfile_num = ARRAY_SIZE(sensor_12a10_setfiles_A);
+ sensor_12a10_crop_infos = sensor_12a10_crop_infos_A;
}
cis->use_initial_ae = of_property_read_bool(dnode, "use_initial_ae");
static struct fimc_is_sensor_cfg config_module_12a10[] = {
/* width, height, fps, settle, mode, lane, speed, interleave, pd_mode */
- FIMC_IS_SENSOR_CFG(4096, 3072, 30, 0, 0, CSI_DATA_LANES_4, 1144, CSI_MODE_VC_DT, PD_NONE,
+ FIMC_IS_SENSOR_CFG(4096, 3072, 30, 0, 0, CSI_DATA_LANES_4, 1144, CSI_MODE_VC_DT, PD_MSPD,
VC_IN(0, HW_FORMAT_RAW10, 4096, 3072), VC_OUT(HW_FORMAT_RAW10, VC_NOTHING, 4096, 3072),
- VC_IN(1, HW_FORMAT_UNKNOWN, 0, 0), VC_OUT(HW_FORMAT_UNKNOWN, VC_NOTHING, 0, 0),
- VC_IN(2, HW_FORMAT_UNKNOWN, 0, 0), VC_OUT(HW_FORMAT_UNKNOWN, VC_NOTHING, 0, 0),
+ VC_IN(1, HW_FORMAT_RAW10, 256, 384), VC_OUT(HW_FORMAT_USER, VC_PRIVATE, 256, 384),
+ VC_IN(2, HW_FORMAT_UNKNOWN, 0, 0), VC_OUT(HW_FORMAT_USER, VC_MIPISTAT, 256, 384),
VC_IN(0, HW_FORMAT_EMBEDDED_8BIT, 0, 0), VC_OUT(HW_FORMAT_UNKNOWN, VC_NOTHING, 0, 0)),
FIMC_IS_SENSOR_CFG(2048, 1536, 60, 0, 1, CSI_DATA_LANES_4, 1144, CSI_MODE_VC_DT, PD_NONE,
VC_IN(0, HW_FORMAT_RAW10, 2048, 1536), VC_OUT(HW_FORMAT_RAW10, VC_NOTHING, 2048, 1536),
module->vc_extra_info[t].stat_type
= VC_STAT_TYPE_PAFSTAT_FLOATING;
- module->vc_extra_info[t].sensor_mode = VC_SENSOR_MODE_ULTRA_PD_TAIL;
- module->vc_extra_info[t].max_width = 4032;
- module->vc_extra_info[t].max_height = 1;
- module->vc_extra_info[t].max_element = 1;
+ module->vc_extra_info[t].sensor_mode = VC_SENSOR_MODE_OV_PDAF;
+ module->vc_extra_info[t].max_width = 256;
+ module->vc_extra_info[t].max_height = 768;
+ module->vc_extra_info[t].max_element = 2;
break;
case VC_BUF_DATA_TYPE_GENERAL_STAT2:
module->vc_extra_info[t].stat_type
= VC_STAT_TYPE_PAFSTAT_STATIC;
- module->vc_extra_info[t].sensor_mode = VC_SENSOR_MODE_ULTRA_PD_TAIL;
- module->vc_extra_info[t].max_width = 127680;
- module->vc_extra_info[t].max_height = 1;
- module->vc_extra_info[t].max_element = 1;
+ module->vc_extra_info[t].sensor_mode = VC_SENSOR_MODE_OV_PDAF;
+ module->vc_extra_info[t].max_width = 256;
+ module->vc_extra_info[t].max_height = 768;
+ module->vc_extra_info[t].max_element = 2;
break;
}
}