From: Wooyeon Kim Date: Mon, 13 May 2019 05:58:21 +0000 (+0900) Subject: [COMMON] fimc-is2: distinguished setfile select by H/W revision for 2P7SQ, 2T7SX X-Git-Tag: MMI-QSAS30.62-33-3~899 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=1b436739664c3dec2932384c6c3f4de8b2d9f90f;p=GitHub%2FMotorolaMobilityLLC%2Fkernel-slsi.git [COMMON] fimc-is2: distinguished setfile select by H/W revision for 2P7SQ, 2T7SX - for distinguish setting files by H/W revision (0x0002) PR JIRA ID: CPR-1050 Change-Id: I6ce68cd3437be78e56789db47119432fcd9d8bb3 Signed-off-by: Wooyeon Kim --- diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p7sq.c b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p7sq.c index cf1a58be4e21..7eea58b99ba1 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p7sq.c +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p7sq.c @@ -143,6 +143,41 @@ static int sensor_2p7sq_wait_stream_off_status(cis_shared_data *cis_data) return ret; } +void sensor_2p7sq_cis_select_setfile(struct v4l2_subdev *subdev) +{ + u8 rev = 0; + struct fimc_is_cis *cis = NULL; + + WARN_ON(!subdev); + + cis = (struct fimc_is_cis *)v4l2_get_subdevdata(subdev); + WARN_ON(!cis); + WARN_ON(!cis->cis_data); + + rev = cis->cis_data->cis_rev; + + switch (rev) { + case 0xA0: /* 2P7SQ */ + pr_info("%s setfile_A(2P7SQ)\n", __func__); + sensor_2p7sq_global = sensor_2p7sq_setfile_A_Global; + sensor_2p7sq_global_size = ARRAY_SIZE(sensor_2p7sq_setfile_A_Global); + sensor_2p7sq_setfiles = sensor_2p7sq_setfiles_A; + sensor_2p7sq_setfile_sizes = sensor_2p7sq_setfile_A_sizes; + sensor_2p7sq_max_setfile_num = ARRAY_SIZE(sensor_2p7sq_setfiles_A); + sensor_2p7sq_pllinfos = sensor_2p7sq_pllinfos_A; + break; + default: + err("Unsupported 2p7sq sensor revision(%#x) use setfile_A for default\n", rev); + sensor_2p7sq_global = sensor_2p7sq_setfile_A_Global; + sensor_2p7sq_global_size = ARRAY_SIZE(sensor_2p7sq_setfile_A_Global); + sensor_2p7sq_setfiles = sensor_2p7sq_setfiles_A; + sensor_2p7sq_setfile_sizes = sensor_2p7sq_setfile_A_sizes; + sensor_2p7sq_max_setfile_num = ARRAY_SIZE(sensor_2p7sq_setfiles_A); + sensor_2p7sq_pllinfos = sensor_2p7sq_pllinfos_A; + break; + } +} + /* CIS OPS */ int sensor_2p7sq_cis_init(struct v4l2_subdev *subdev) { @@ -175,6 +210,8 @@ int sensor_2p7sq_cis_init(struct v4l2_subdev *subdev) ret = 0; } + sensor_2p7sq_cis_select_setfile(subdev); + cis->cis_data->cur_width = SENSOR_2P7SQ_MAX_WIDTH; cis->cis_data->cur_height = SENSOR_2P7SQ_MAX_HEIGHT; cis->cis_data->low_expo_start = 33000; @@ -1751,33 +1788,6 @@ static int cis_2p7sq_probe(struct i2c_client *client, setfile = "default"; } - if (strcmp(setfile, "default") == 0 || - strcmp(setfile, "setA") == 0) { - probe_info("%s setfile_A\n", __func__); - sensor_2p7sq_global = sensor_2p7sq_setfile_A_Global; - sensor_2p7sq_global_size = ARRAY_SIZE(sensor_2p7sq_setfile_A_Global); - sensor_2p7sq_setfiles = sensor_2p7sq_setfiles_A; - sensor_2p7sq_setfile_sizes = sensor_2p7sq_setfile_A_sizes; - sensor_2p7sq_pllinfos = sensor_2p7sq_pllinfos_A; - sensor_2p7sq_max_setfile_num = ARRAY_SIZE(sensor_2p7sq_setfiles_A); - } else if (strcmp(setfile, "setB") == 0) { - probe_info("%s setfile_B\n", __func__); - sensor_2p7sq_global = sensor_2p7sq_setfile_B_Global; - sensor_2p7sq_global_size = ARRAY_SIZE(sensor_2p7sq_setfile_B_Global); - sensor_2p7sq_setfiles = sensor_2p7sq_setfiles_B; - sensor_2p7sq_setfile_sizes = sensor_2p7sq_setfile_B_sizes; - sensor_2p7sq_pllinfos = sensor_2p7sq_pllinfos_B; - sensor_2p7sq_max_setfile_num = ARRAY_SIZE(sensor_2p7sq_setfiles_B); - } else { - err("%s setfile index out of bound, take default (setfile_A)", __func__); - sensor_2p7sq_global = sensor_2p7sq_setfile_A_Global; - sensor_2p7sq_global_size = ARRAY_SIZE(sensor_2p7sq_setfile_A_Global); - sensor_2p7sq_setfiles = sensor_2p7sq_setfiles_A; - sensor_2p7sq_setfile_sizes = sensor_2p7sq_setfile_A_sizes; - sensor_2p7sq_pllinfos = sensor_2p7sq_pllinfos_A; - sensor_2p7sq_max_setfile_num = ARRAY_SIZE(sensor_2p7sq_setfiles_A); - } - cis->use_initial_ae = of_property_read_bool(dnode, "use_initial_ae"); probe_info("%s use initial_ae(%d)\n", __func__, cis->use_initial_ae); diff --git a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2t7sx.c b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2t7sx.c index 72d0a8c53c66..3fba5e3e7577 100644 --- a/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2t7sx.c +++ b/drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2t7sx.c @@ -143,6 +143,41 @@ static int sensor_2t7sx_wait_stream_off_status(cis_shared_data *cis_data) return ret; } +void sensor_2t7sx_cis_select_setfile(struct v4l2_subdev *subdev) +{ + u8 rev = 0; + struct fimc_is_cis *cis = NULL; + + WARN_ON(!subdev); + + cis = (struct fimc_is_cis *)v4l2_get_subdevdata(subdev); + WARN_ON(!cis); + WARN_ON(!cis->cis_data); + + rev = cis->cis_data->cis_rev; + + switch (rev) { + case 0xA0: /* 2T7SX */ + pr_info("%s setfile_A(2T7SX)\n", __func__); + sensor_2t7sx_global = sensor_2t7sx_setfile_A_Global; + sensor_2t7sx_global_size = ARRAY_SIZE(sensor_2t7sx_setfile_A_Global); + sensor_2t7sx_setfiles = sensor_2t7sx_setfiles_A; + sensor_2t7sx_setfile_sizes = sensor_2t7sx_setfile_A_sizes; + sensor_2t7sx_max_setfile_num = ARRAY_SIZE(sensor_2t7sx_setfiles_A); + sensor_2t7sx_pllinfos = sensor_2t7sx_pllinfos_A; + break; + default: + err("Unsupported 2p7sq sensor revision(%#x) use setfile_A for default\n", rev); + sensor_2t7sx_global = sensor_2t7sx_setfile_A_Global; + sensor_2t7sx_global_size = ARRAY_SIZE(sensor_2t7sx_setfile_A_Global); + sensor_2t7sx_setfiles = sensor_2t7sx_setfiles_A; + sensor_2t7sx_setfile_sizes = sensor_2t7sx_setfile_A_sizes; + sensor_2t7sx_max_setfile_num = ARRAY_SIZE(sensor_2t7sx_setfiles_A); + sensor_2t7sx_pllinfos = sensor_2t7sx_pllinfos_A; + break; + } +} + /* CIS OPS */ int sensor_2t7sx_cis_init(struct v4l2_subdev *subdev) { @@ -175,6 +210,8 @@ int sensor_2t7sx_cis_init(struct v4l2_subdev *subdev) ret = 0; } + sensor_2t7sx_cis_select_setfile(subdev); + cis->cis_data->cur_width = SENSOR_2T7SX_MAX_WIDTH; cis->cis_data->cur_height = SENSOR_2T7SX_MAX_HEIGHT; cis->cis_data->low_expo_start = 33000; @@ -1751,33 +1788,6 @@ static int cis_2t7sx_probe(struct i2c_client *client, setfile = "default"; } - if (strcmp(setfile, "default") == 0 || - strcmp(setfile, "setA") == 0) { - probe_info("%s setfile_A\n", __func__); - sensor_2t7sx_global = sensor_2t7sx_setfile_A_Global; - sensor_2t7sx_global_size = ARRAY_SIZE(sensor_2t7sx_setfile_A_Global); - sensor_2t7sx_setfiles = sensor_2t7sx_setfiles_A; - sensor_2t7sx_setfile_sizes = sensor_2t7sx_setfile_A_sizes; - sensor_2t7sx_pllinfos = sensor_2t7sx_pllinfos_A; - sensor_2t7sx_max_setfile_num = ARRAY_SIZE(sensor_2t7sx_setfiles_A); - } else if (strcmp(setfile, "setB") == 0) { - probe_info("%s setfile_B\n", __func__); - sensor_2t7sx_global = sensor_2t7sx_setfile_B_Global; - sensor_2t7sx_global_size = ARRAY_SIZE(sensor_2t7sx_setfile_B_Global); - sensor_2t7sx_setfiles = sensor_2t7sx_setfiles_B; - sensor_2t7sx_setfile_sizes = sensor_2t7sx_setfile_B_sizes; - sensor_2t7sx_pllinfos = sensor_2t7sx_pllinfos_B; - sensor_2t7sx_max_setfile_num = ARRAY_SIZE(sensor_2t7sx_setfiles_B); - } else { - err("%s setfile index out of bound, take default (setfile_A)", __func__); - sensor_2t7sx_global = sensor_2t7sx_setfile_A_Global; - sensor_2t7sx_global_size = ARRAY_SIZE(sensor_2t7sx_setfile_A_Global); - sensor_2t7sx_setfiles = sensor_2t7sx_setfiles_A; - sensor_2t7sx_setfile_sizes = sensor_2t7sx_setfile_A_sizes; - sensor_2t7sx_pllinfos = sensor_2t7sx_pllinfos_A; - sensor_2t7sx_max_setfile_num = ARRAY_SIZE(sensor_2t7sx_setfiles_A); - } - cis->use_initial_ae = of_property_read_bool(dnode, "use_initial_ae"); probe_info("%s use initial_ae(%d)\n", __func__, cis->use_initial_ae);