summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJinyoung Park <jinyoungp@nvidia.com>2013-03-22 00:41:05 -0400
committerSrikar Srimath Tirumala <srikars@nvidia.com>2018-05-28 23:06:41 -0400
commitb0fec00c77060d0bfa5ac98d44fafeeee67aba30 (patch)
tree15252065c3a55ffb626c64874af1e3e65524aae2
parent097c63b52999b5c4381d1f521f562ee43eed45d7 (diff)
Thermal: pid_thermal_gov: Apply compenstaion even if sum_err is 0 or max
Applied compensation even if sum_err is 0 or max to prevent determining target state to 0 in short time. Bug 1200111 Change-Id: I52a8bbeb4ae8553f14401cd0eaa4508337111955 Signed-off-by: Jinyoung Park <jinyoungp@nvidia.com> Reviewed-on: http://git-master/r/211960 (cherry picked from commit 221bc8d9307876a099c917100ef1066cf8cef308) Signed-off-by: Jinyoung Park <jinyoungp@nvidia.com> Reviewed-on: http://git-master/r/215535 Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com> (cherry picked from commit b510de2a4f4eeba4fa69d2633407d1696235c4f0) Signed-off-by: Srikar Srimath Tirumala <srikars@nvidia.com>
-rw-r--r--drivers/thermal/pid_thermal_gov.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/thermal/pid_thermal_gov.c b/drivers/thermal/pid_thermal_gov.c
index c29033fb6..f326d8e15 100644
--- a/drivers/thermal/pid_thermal_gov.c
+++ b/drivers/thermal/pid_thermal_gov.c
@@ -382,15 +382,8 @@ pid_thermal_gov_get_target(struct thermal_zone_device *tz,
382 derivative = min_t(s64, derivative, max_dout); 382 derivative = min_t(s64, derivative, max_dout);
383 } 383 }
384 384
385 sum_err = proportional + derivative; 385 sum_err = max_t(s64, proportional + derivative, 0);
386 sum_err = max_t(s64, sum_err, 0);
387 if (sum_err == 0)
388 return 0;
389
390 sum_err = min_t(s64, sum_err, max_err); 386 sum_err = min_t(s64, sum_err, max_err);
391 if (sum_err == max_err)
392 return max_state;
393
394 sum_err = sum_err * max_state + max_err - 1; 387 sum_err = sum_err * max_state + max_err - 1;
395 target = (unsigned long)div64_s64(sum_err, max_err); 388 target = (unsigned long)div64_s64(sum_err, max_err);
396 389