Skip to content

Commit

Permalink
ACPI: thinkpad-acpi: add a safety net for TPEC fan control mode
Browse files Browse the repository at this point in the history
The Linux ThinkPad community is not positive that all ThinkPads that do
HFSP EC fan control do implement full-speed and auto modes, some of the
earlier ones supporting HFSP might not.

If the EC ignores the AUTO or FULL-SPEED bits, it will pay attention to the
lower three bits that set the fan level.  And as thinkpad-acpi was leaving
these set to zero, it would stop(!) the fan, which is Not A Good Thing.

So, as a safety net, we now make sure to also set the fan level part of the
HFSP register to speed 7 for full-speed, and a minimum of speed 4 for auto
mode.

Signed-off-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Henrique de Moraes Holschuh authored and Len Brown committed Apr 25, 2007
1 parent fe98a52 commit eaa7571
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions drivers/misc/thinkpad_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -3185,6 +3185,13 @@ static int fan_set_level(int level)
((level < 0) || (level > 7)))
return -EINVAL;

/* safety net should the EC not support AUTO
* or FULLSPEED mode bits and just ignore them */
if (level & TP_EC_FAN_FULLSPEED)
level |= 7; /* safety min speed 7 */
else if (level & TP_EC_FAN_FULLSPEED)
level |= 4; /* safety min speed 4 */

if (!acpi_ec_write(fan_status_offset, level))
return -EIO;
else
Expand Down Expand Up @@ -3233,8 +3240,10 @@ static int fan_set_enable(void)
break;

/* Don't go out of emergency fan mode */
if (s != 7)
s = TP_EC_FAN_AUTO;
if (s != 7) {
s &= 0x07;
s |= TP_EC_FAN_AUTO | 4; /* min fan speed 4 */
}

if (!acpi_ec_write(fan_status_offset, s))
rc = -EIO;
Expand All @@ -3252,8 +3261,7 @@ static int fan_set_enable(void)
s &= 0x07;

/* Set fan to at least level 4 */
if (s < 4)
s = 4;
s |= 4;

if (!acpi_evalf(sfan_handle, NULL, NULL, "vd", s))
rc= -EIO;
Expand Down

0 comments on commit eaa7571

Please sign in to comment.