media: atomisp: remove table duplication from dfs tables
authorMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 23 Apr 2020 07:29:54 +0000 (09:29 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Wed, 20 May 2020 10:32:16 +0000 (12:32 +0200)
The way atomisp_dfs_tables.h is defined, it ends by duplicating
all data structs there on both atomisp_v4l2.c and atomisp_cmd.c.

Change the logic in order to place the definitions only on a single
place.

Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/atomisp/pci/atomisp2/atomisp_dfs_tables.h
drivers/staging/media/atomisp/pci/atomisp2/atomisp_v4l2.c

index f5e16e968cd310434b1f0dcfef922409b6613e3d..9680f211d424bfcb6c5f75ee2975ad1c1012e1ef 100644 (file)
@@ -35,373 +35,6 @@ struct atomisp_dfs_config {
        unsigned int dfs_table_size;
 };
 
-static const struct atomisp_freq_scaling_rule dfs_rules_merr[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_457MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-/* Merrifield and Moorefield DFS rules */
-static const struct atomisp_dfs_config dfs_config_merr = {
-       .lowest_freq = ISP_FREQ_200MHZ,
-       .max_freq_at_vmin = ISP_FREQ_400MHZ,
-       .highest_freq = ISP_FREQ_457MHZ,
-       .dfs_table = dfs_rules_merr,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr),
-};
-
-static const struct atomisp_freq_scaling_rule dfs_rules_merr_1179[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static const struct atomisp_dfs_config dfs_config_merr_1179 = {
-       .lowest_freq = ISP_FREQ_200MHZ,
-       .max_freq_at_vmin = ISP_FREQ_400MHZ,
-       .highest_freq = ISP_FREQ_400MHZ,
-       .dfs_table = dfs_rules_merr_1179,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr_1179),
-};
-
-static struct atomisp_freq_scaling_rule dfs_rules_merr_117a[] = {
-       {
-               .width = 1920,
-               .height = 1080,
-               .fps = 30,
-               .isp_freq = ISP_FREQ_266MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = 1080,
-               .height = 1920,
-               .fps = 30,
-               /*
-                * FIXME: this is weird, but .isp_freq depends on
-                * the chip being ISP2400 or ISP2401. So, this should be
-                * initialized on runtime.
-                */
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = 1920,
-               .height = 1080,
-               .fps = 45,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = 1080,
-               .height = 1920,
-               .fps = 45,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = 60,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_200MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_200MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static struct atomisp_dfs_config dfs_config_merr_117a = {
-       .lowest_freq = ISP_FREQ_200MHZ,
-       .max_freq_at_vmin = ISP_FREQ_200MHZ,
-       .highest_freq = ISP_FREQ_400MHZ,
-       .dfs_table = dfs_rules_merr_117a,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr_117a),
-};
-
-static const struct atomisp_freq_scaling_rule dfs_rules_byt[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_400MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static const struct atomisp_dfs_config dfs_config_byt = {
-       .lowest_freq = ISP_FREQ_200MHZ,
-       .max_freq_at_vmin = ISP_FREQ_400MHZ,
-       .highest_freq = ISP_FREQ_400MHZ,
-       .dfs_table = dfs_rules_byt,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_byt),
-};
-
-static const struct atomisp_freq_scaling_rule dfs_rules_byt_cr[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static const struct atomisp_dfs_config dfs_config_byt_cr = {
-       .lowest_freq = ISP_FREQ_200MHZ,
-       .max_freq_at_vmin = ISP_FREQ_320MHZ,
-       .highest_freq = ISP_FREQ_320MHZ,
-       .dfs_table = dfs_rules_byt_cr,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_byt_cr),
-};
-
-static const struct atomisp_freq_scaling_rule dfs_rules_cht[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = 1280,
-               .height = 720,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static const struct atomisp_freq_scaling_rule dfs_rules_cht_soc[] = {
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_VIDEO,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_320MHZ,
-               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
-       },
-       {
-               .width = ISP_FREQ_RULE_ANY,
-               .height = ISP_FREQ_RULE_ANY,
-               .fps = ISP_FREQ_RULE_ANY,
-               .isp_freq = ISP_FREQ_356MHZ,
-               .run_mode = ATOMISP_RUN_MODE_SDV,
-       },
-};
-
-static const struct atomisp_dfs_config dfs_config_cht = {
-       .lowest_freq = ISP_FREQ_100MHZ,
-       .max_freq_at_vmin = ISP_FREQ_356MHZ,
-       .highest_freq = ISP_FREQ_356MHZ,
-       .dfs_table = dfs_rules_cht,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_cht),
-};
-
-static const struct atomisp_dfs_config dfs_config_cht_soc = {
-       .lowest_freq = ISP_FREQ_100MHZ,
-       .max_freq_at_vmin = ISP_FREQ_356MHZ,
-       .highest_freq = ISP_FREQ_356MHZ,
-       .dfs_table = dfs_rules_cht_soc,
-       .dfs_table_size = ARRAY_SIZE(dfs_rules_cht_soc),
-};
+extern const struct atomisp_dfs_config dfs_config_cht_soc;
 
 #endif /* __ATOMISP_DFS_TABLES_H__ */
index ef7a83c5f4593c13258bc555a61fe12dd0c7f5bc..87736e7a5ea93f11d27a5406fb3d19562681d695 100644 (file)
@@ -124,6 +124,376 @@ struct device *atomisp_dev;
 
 void __iomem *atomisp_io_base;
 
+static const struct atomisp_freq_scaling_rule dfs_rules_merr[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_457MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+/* Merrifield and Moorefield DFS rules */
+static const struct atomisp_dfs_config dfs_config_merr = {
+       .lowest_freq = ISP_FREQ_200MHZ,
+       .max_freq_at_vmin = ISP_FREQ_400MHZ,
+       .highest_freq = ISP_FREQ_457MHZ,
+       .dfs_table = dfs_rules_merr,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr),
+};
+
+static const struct atomisp_freq_scaling_rule dfs_rules_merr_1179[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static const struct atomisp_dfs_config dfs_config_merr_1179 = {
+       .lowest_freq = ISP_FREQ_200MHZ,
+       .max_freq_at_vmin = ISP_FREQ_400MHZ,
+       .highest_freq = ISP_FREQ_400MHZ,
+       .dfs_table = dfs_rules_merr_1179,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr_1179),
+};
+
+static struct atomisp_freq_scaling_rule dfs_rules_merr_117a[] = {
+       {
+               .width = 1920,
+               .height = 1080,
+               .fps = 30,
+               .isp_freq = ISP_FREQ_266MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = 1080,
+               .height = 1920,
+               .fps = 30,
+               /*
+                * FIXME: this is weird, but .isp_freq depends on
+                * the chip being ISP2400 or ISP2401. So, this should be
+                * initialized on runtime.
+                */
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = 1920,
+               .height = 1080,
+               .fps = 45,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = 1080,
+               .height = 1920,
+               .fps = 45,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = 60,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_200MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_200MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static struct atomisp_dfs_config dfs_config_merr_117a = {
+       .lowest_freq = ISP_FREQ_200MHZ,
+       .max_freq_at_vmin = ISP_FREQ_200MHZ,
+       .highest_freq = ISP_FREQ_400MHZ,
+       .dfs_table = dfs_rules_merr_117a,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_merr_117a),
+};
+
+static const struct atomisp_freq_scaling_rule dfs_rules_byt[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_400MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static const struct atomisp_dfs_config dfs_config_byt = {
+       .lowest_freq = ISP_FREQ_200MHZ,
+       .max_freq_at_vmin = ISP_FREQ_400MHZ,
+       .highest_freq = ISP_FREQ_400MHZ,
+       .dfs_table = dfs_rules_byt,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_byt),
+};
+
+static const struct atomisp_freq_scaling_rule dfs_rules_byt_cr[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static const struct atomisp_dfs_config dfs_config_byt_cr = {
+       .lowest_freq = ISP_FREQ_200MHZ,
+       .max_freq_at_vmin = ISP_FREQ_320MHZ,
+       .highest_freq = ISP_FREQ_320MHZ,
+       .dfs_table = dfs_rules_byt_cr,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_byt_cr),
+};
+
+static const struct atomisp_freq_scaling_rule dfs_rules_cht[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = 1280,
+               .height = 720,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static const struct atomisp_freq_scaling_rule dfs_rules_cht_soc[] = {
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_VIDEO,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_STILL_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_CONTINUOUS_CAPTURE,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_320MHZ,
+               .run_mode = ATOMISP_RUN_MODE_PREVIEW,
+       },
+       {
+               .width = ISP_FREQ_RULE_ANY,
+               .height = ISP_FREQ_RULE_ANY,
+               .fps = ISP_FREQ_RULE_ANY,
+               .isp_freq = ISP_FREQ_356MHZ,
+               .run_mode = ATOMISP_RUN_MODE_SDV,
+       },
+};
+
+static const struct atomisp_dfs_config dfs_config_cht = {
+       .lowest_freq = ISP_FREQ_100MHZ,
+       .max_freq_at_vmin = ISP_FREQ_356MHZ,
+       .highest_freq = ISP_FREQ_356MHZ,
+       .dfs_table = dfs_rules_cht,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_cht),
+};
+
+/* This one should be visible also by atomisp_cmd.c */
+const struct atomisp_dfs_config dfs_config_cht_soc = {
+       .lowest_freq = ISP_FREQ_100MHZ,
+       .max_freq_at_vmin = ISP_FREQ_356MHZ,
+       .highest_freq = ISP_FREQ_356MHZ,
+       .dfs_table = dfs_rules_cht_soc,
+       .dfs_table_size = ARRAY_SIZE(dfs_rules_cht_soc),
+};
+
 int atomisp_video_init(struct atomisp_video_pipe *video, const char *name)
 {
        int ret;