mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 12:10:23 -04:00
media: atomisp: remove table duplication from dfs tables
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>
This commit is contained in:
@@ -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__ */
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user