summaryrefslogtreecommitdiff
path: root/common/fan.c
diff options
context:
space:
mode:
authorKyoung Kim <kyoung.il.kim@intel.com>2015-10-19 15:55:20 -0700
committerchrome-bot <chrome-bot@chromium.org>2015-11-19 20:01:59 -0800
commitea3b0a97c8eb09066d90d11ed7e89a3de1c33eaf (patch)
treec203943472e2d12ebc0f1a63326cb7c7fe22a71e /common/fan.c
parentebf92ecc839a6361605eb4c3ac7cb44fa4eb603a (diff)
downloadchrome-ec-ea3b0a97c8eb09066d90d11ed7e89a3de1c33eaf.tar.gz
fan: Disable fan when duty / RPM is set to zero
BRANCH=master BUG=none TEST=Check GPIO(fan_t.enable_gpio) if it is low when S3 or S0ix or 0% duty or 0 RPM on kunimitsu. Change-Id: I6aecae269fa8bb41a811e75089757fe714576160 Signed-off-by: Kyoung Kim <kyoung.il.kim@intel.com> Reviewed-on: https://chromium-review.googlesource.com/310391 Commit-Ready: Kyoung Il Kim <kyoung.il.kim@intel.com> Tested-by: Kyoung Il Kim <kyoung.il.kim@intel.com> Reviewed-by: Kyoung Il Kim <kyoung.il.kim@intel.com> Reviewed-by: Shawn N <shawnn@chromium.org>
Diffstat (limited to 'common/fan.c')
-rw-r--r--common/fan.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/common/fan.c b/common/fan.c
index 9c2a7c587e..86cdafe814 100644
--- a/common/fan.c
+++ b/common/fan.c
@@ -97,8 +97,8 @@ static void set_duty_cycle(int fan, int percent)
/* Move the fan to manual control */
fan_set_rpm_mode(fans[fan].ch, 0);
- /* Always enable the fan */
- set_enabled(fan, 1);
+ /* enable the fan when non-zero duty */
+ set_enabled(fan, (percent > 0) ? 1 : 0);
/* Disable thermal engine automatic fan control. */
set_thermal_control_enabled(fan, 0);
@@ -227,8 +227,8 @@ static int cc_fanset(int argc, char **argv)
/* Move the fan to automatic control */
fan_set_rpm_mode(fans[fan].ch, 1);
- /* Always enable the fan */
- set_enabled(fan, 1);
+ /* enable the fan when non-zero rpm */
+ set_enabled(fan, (rpm > 0) ? 1 : 0);
/* Disable thermal engine automatic fan control. */
set_thermal_control_enabled(fan, 0);
@@ -335,8 +335,8 @@ static int hc_pwm_set_fan_target_rpm(struct host_cmd_handler_args *args)
if (args->version == 0) {
for (fan = 0; fan < CONFIG_FANS; fan++) {
- /* Always enable the fan */
- set_enabled(fan, 1);
+ /* enable the fan if rpm is non-zero */
+ set_enabled(fan, (p_v0->rpm > 0) ? 1 : 0);
set_thermal_control_enabled(fan, 0);
fan_set_rpm_mode(fans[fan].ch, 1);
@@ -350,8 +350,8 @@ static int hc_pwm_set_fan_target_rpm(struct host_cmd_handler_args *args)
if (fan >= CONFIG_FANS)
return EC_RES_ERROR;
- /* Always enable the fan */
- set_enabled(fan, 1);
+ /* enable the fan if rpm is non-zero */
+ set_enabled(fan, (p_v1->rpm > 0) ? 1 :0);
set_thermal_control_enabled(fan, 0);
fan_set_rpm_mode(fans[fan].ch, 1);
@@ -531,7 +531,7 @@ static void pwm_fan_S3_S5(void)
* charging or something.
*/
fan_set_rpm_target(fans[fan].ch, 0);
- fan_set_enabled(fans[fan].ch, 0); /* crosbug.com/p/8097 */
+ set_enabled(fan, 0); /* crosbug.com/p/8097 */
}
}
DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, pwm_fan_S3_S5, HOOK_PRIO_DEFAULT);