From b0fec00c77060d0bfa5ac98d44fafeeee67aba30 Mon Sep 17 00:00:00 2001 From: Jinyoung Park Date: Fri, 22 Mar 2013 13:41:05 +0900 Subject: 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 Reviewed-on: http://git-master/r/211960 (cherry picked from commit 221bc8d9307876a099c917100ef1066cf8cef308) Signed-off-by: Jinyoung Park Reviewed-on: http://git-master/r/215535 Reviewed-by: Diwakar Tundlam (cherry picked from commit b510de2a4f4eeba4fa69d2633407d1696235c4f0) Signed-off-by: Srikar Srimath Tirumala --- drivers/thermal/pid_thermal_gov.c | 9 +-------- 1 file changed, 1 insertion(+), 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, derivative = min_t(s64, derivative, max_dout); } - sum_err = proportional + derivative; - sum_err = max_t(s64, sum_err, 0); - if (sum_err == 0) - return 0; - + sum_err = max_t(s64, proportional + derivative, 0); sum_err = min_t(s64, sum_err, max_err); - if (sum_err == max_err) - return max_state; - sum_err = sum_err * max_state + max_err - 1; target = (unsigned long)div64_s64(sum_err, max_err); -- cgit v1.2.2