diff options
author | Diwakar Tundlam <dtundlam@nvidia.com> | 2012-10-17 14:11:27 -0700 |
---|---|---|
committer | Mrutyunjay Sawant <msawant@nvidia.com> | 2012-10-29 04:42:19 -0700 |
commit | 44832e3505a72488fe900b2e6098fa2922d19e09 (patch) | |
tree | b2c7edfd919b3cde73e46438909e967150140ba4 /arch/arm/mach-tegra/edp.c | |
parent | 4057185084d0e35232678cacdb9a7854159ad559 (diff) |
arm: tegra: power: ignore duplicate reg_override values
and some clean ups
Change-Id: Ic5c239cea8921ae4b5639dd8439c569fa89cb1ec
Signed-off-by: Diwakar Tundlam <dtundlam@nvidia.com>
Reviewed-on: http://git-master/r/159375
Reviewed-by: Automatic_Commit_Validation_User
Diffstat (limited to 'arch/arm/mach-tegra/edp.c')
-rw-r--r-- | arch/arm/mach-tegra/edp.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/arch/arm/mach-tegra/edp.c b/arch/arm/mach-tegra/edp.c index 12723ea53bdd..9a2615ec6a03 100644 --- a/arch/arm/mach-tegra/edp.c +++ b/arch/arm/mach-tegra/edp.c @@ -454,7 +454,7 @@ unsigned int edp_calculate_maxf(struct edp_constants_lut_t *edp_constants, int n_cores_idx) { unsigned int voltage_mV, freq_MHz; - unsigned int regulator_cur_effective = regulator_cur - edp_reg_override_mA; + unsigned int regulator_cur_effective; int f_v_pair, i, j, k, leakage_const_n, dyn_const_n; int *leakage_consts_ijk; s64 leakage_mA, dyn_mA, leakage_calc_step; @@ -463,6 +463,7 @@ unsigned int edp_calculate_maxf(struct edp_constants_lut_t *edp_constants, leakage_consts_ijk = edp_constants->leakage_consts_ijk; dyn_const_n = edp_constants->dyn_consts_n[n_cores_idx]; leakage_const_n = edp_constants->leakage_consts_n[n_cores_idx]; + regulator_cur_effective = regulator_cur - edp_reg_override_mA; for (f_v_pair = freq_voltage_lut_size - 1; f_v_pair >= 0; f_v_pair--) { freq_MHz = freq_voltage_lut[f_v_pair].freq / 1000000; @@ -530,7 +531,7 @@ static int edp_relate_freq_voltage(struct clk *clk_cpu_g, /* Predict voltages */ voltage_mV = tegra_dvfs_predict_millivolts(clk_cpu_g, freq); if (voltage_mV < 0) { - pr_err("%s: couldn't predict voltage for freq %u, err %d", + pr_err("%s: couldn't predict voltage: freq %u; err %d", __func__, freq, voltage_mV); return -EINVAL; } @@ -600,7 +601,8 @@ int init_cpu_edp_limits_calculated(int cpu_speedo_id) /* Calculate EDP table */ for (temp_idx = 0; temp_idx < ARRAY_SIZE(temps_lut); temp_idx++) { - edp_calculated_limits[temp_idx].temperature = temps_lut[temp_idx]; + edp_calculated_limits[temp_idx].temperature = + temps_lut[temp_idx]; for (n_cores_idx = 0; n_cores_idx < NR_CPUS; n_cores_idx++) edp_calculated_limits[temp_idx]. @@ -845,7 +847,7 @@ static int edp_debugfs_show(struct seq_file *s, void *data) static int edp_reg_override_show(struct seq_file *s, void *data) { - seq_printf(s, "Regulator limit override: %u mA. Effective regulator limit: %u mA\n", + seq_printf(s, "Limit override: %u mA. Effective limit: %u mA\n", edp_reg_override_mA, regulator_cur - edp_reg_override_mA); return 0; } @@ -876,16 +878,19 @@ static int edp_reg_override_write(struct file *file, if (edp_reg_override_mA_temp >= regulator_cur) goto override_err; + if (edp_reg_override_mA == edp_reg_override_mA_temp) + return count; + edp_reg_override_mA = edp_reg_override_mA_temp; cpu_speedo_id = tegra_cpu_speedo_id(); - if(init_cpu_edp_limits_calculated(cpu_speedo_id)) { + if (init_cpu_edp_limits_calculated(cpu_speedo_id)) { /* Revert to previous override value if new value fails */ edp_reg_override_mA = edp_reg_override_mA_prev; goto override_err; } if (tegra_cpu_set_speed_cap(NULL)) { - pr_err("Failed to apply CPU freq cap using new VDD_CPU EDP table.\n"); + pr_err("FAILED: Set CPU freq cap with new VDD_CPU EDP table\n"); goto override_out; } @@ -895,11 +900,10 @@ static int edp_reg_override_write(struct file *file, return count; override_err: - pr_err("Failed to reinitialized VDD_CPU EDP table with override \"%s\"", + pr_err("FAILED: Reinitialize VDD_CPU EDP table with override \"%s\"", buf); override_out: return -EINVAL; - } static int edp_debugfs_open(struct inode *inode, struct file *file) |