@@ -251,6 +251,7 @@ int atomisp_freq_scaling(struct atomisp_device *isp,
{
/* FIXME! Only use subdev[0] status yet */
struct atomisp_sub_device *asd = &isp->asd[0];
+ const struct atomisp_dfs_config *dfs;
unsigned int new_freq;
struct atomisp_freq_scaling_rule curr_rules;
int i, ret;
@@ -265,20 +266,22 @@ int atomisp_freq_scaling(struct atomisp_device *isp,
ATOMISP_PCI_DEVICE_SOC_CHT && ATOMISP_USE_YUVPP(asd))
isp->dfs = &dfs_config_cht_soc;
- if (isp->dfs->lowest_freq == 0 || isp->dfs->max_freq_at_vmin == 0 ||
- isp->dfs->highest_freq == 0 || isp->dfs->dfs_table_size == 0 ||
- !isp->dfs->dfs_table) {
+ dfs = isp->dfs;
+
+ if (dfs->lowest_freq == 0 || dfs->max_freq_at_vmin == 0 ||
+ dfs->highest_freq == 0 || dfs->dfs_table_size == 0 ||
+ !dfs->dfs_table) {
dev_err(isp->dev, "DFS configuration is invalid.\n");
return -EINVAL;
}
if (mode == ATOMISP_DFS_MODE_LOW) {
- new_freq = isp->dfs->lowest_freq;
+ new_freq = dfs->lowest_freq;
goto done;
}
if (mode == ATOMISP_DFS_MODE_MAX) {
- new_freq = isp->dfs->highest_freq;
+ new_freq = dfs->highest_freq;
goto done;
}
@@ -304,26 +307,26 @@ int atomisp_freq_scaling(struct atomisp_device *isp,
}
/* search for the target frequency by looping freq rules*/
- for (i = 0; i < isp->dfs->dfs_table_size; i++) {
- if (curr_rules.width != isp->dfs->dfs_table[i].width &&
- isp->dfs->dfs_table[i].width != ISP_FREQ_RULE_ANY)
+ for (i = 0; i < dfs->dfs_table_size; i++) {
+ if (curr_rules.width != dfs->dfs_table[i].width &&
+ dfs->dfs_table[i].width != ISP_FREQ_RULE_ANY)
continue;
- if (curr_rules.height != isp->dfs->dfs_table[i].height &&
- isp->dfs->dfs_table[i].height != ISP_FREQ_RULE_ANY)
+ if (curr_rules.height != dfs->dfs_table[i].height &&
+ dfs->dfs_table[i].height != ISP_FREQ_RULE_ANY)
continue;
- if (curr_rules.fps != isp->dfs->dfs_table[i].fps &&
- isp->dfs->dfs_table[i].fps != ISP_FREQ_RULE_ANY)
+ if (curr_rules.fps != dfs->dfs_table[i].fps &&
+ dfs->dfs_table[i].fps != ISP_FREQ_RULE_ANY)
continue;
- if (curr_rules.run_mode != isp->dfs->dfs_table[i].run_mode &&
- isp->dfs->dfs_table[i].run_mode != ISP_FREQ_RULE_ANY)
+ if (curr_rules.run_mode != dfs->dfs_table[i].run_mode &&
+ dfs->dfs_table[i].run_mode != ISP_FREQ_RULE_ANY)
continue;
break;
}
- if (i == isp->dfs->dfs_table_size)
- new_freq = isp->dfs->max_freq_at_vmin;
+ if (i == dfs->dfs_table_size)
+ new_freq = dfs->max_freq_at_vmin;
else
- new_freq = isp->dfs->dfs_table[i].isp_freq;
+ new_freq = dfs->dfs_table[i].isp_freq;
done:
dev_dbg(isp->dev, "DFS target frequency=%d.\n", new_freq);