[COMMON] fimc-is2: distinguished setfile select by H/W revision for 2P7SQ, 2T7SX
authorWooyeon Kim <wooy88.kim@samsung.com>
Mon, 13 May 2019 05:58:21 +0000 (14:58 +0900)
committerKim Gunho <gunho.kim@samsung.com>
Fri, 28 Jun 2019 14:45:31 +0000 (23:45 +0900)
 - for distinguish setting files by H/W revision (0x0002)

 PR JIRA ID: CPR-1050

Change-Id: I6ce68cd3437be78e56789db47119432fcd9d8bb3
Signed-off-by: Wooyeon Kim <wooy88.kim@samsung.com>
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2p7sq.c
drivers/media/platform/exynos/fimc-is2/sensor/module_framework/cis/fimc-is-cis-2t7sx.c

index cf1a58be4e214e223087eef3a9d4018bddcb53dd..7eea58b99ba158bf108cfc17c89c4c007564a7d1 100644 (file)
@@ -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);
 
index 72d0a8c53c66b7dfb94bf470edfb0728e2803296..3fba5e3e75777456f1e1b42150020c6a6c5065e2 100644 (file)
@@ -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);