aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/misc/thinkpad_acpi.c28
1 files changed, 13 insertions, 15 deletions
diff --git a/drivers/misc/thinkpad_acpi.c b/drivers/misc/thinkpad_acpi.c
index 1683bfe15b35..4131a7875ad7 100644
--- a/drivers/misc/thinkpad_acpi.c
+++ b/drivers/misc/thinkpad_acpi.c
@@ -1852,16 +1852,17 @@ static int volume_write(char *buf)
1852 * ACPI GFAN method: returns fan level 1852 * ACPI GFAN method: returns fan level
1853 * 1853 *
1854 * see TPACPI_FAN_WR_ACPI_SFAN 1854 * see TPACPI_FAN_WR_ACPI_SFAN
1855 * EC 0x2f not available if GFAN exists 1855 * EC 0x2f (HFSP) not available if GFAN exists
1856 * 1856 *
1857 * TPACPI_FAN_WR_ACPI_SFAN: 1857 * TPACPI_FAN_WR_ACPI_SFAN:
1858 * ACPI SFAN method: sets fan level, 0 (stop) to 7 (max) 1858 * ACPI SFAN method: sets fan level, 0 (stop) to 7 (max)
1859 * 1859 *
1860 * EC 0x2f might be available *for reading*, but never for writing. 1860 * EC 0x2f (HFSP) might be available *for reading*, but do not use
1861 * it for writing.
1861 * 1862 *
1862 * TPACPI_FAN_WR_TPEC: 1863 * TPACPI_FAN_WR_TPEC:
1863 * ThinkPad EC register 0x2f (HFSP): fan control loop mode Supported 1864 * ThinkPad EC register 0x2f (HFSP): fan control loop mode
1864 * on almost all ThinkPads 1865 * Supported on almost all ThinkPads
1865 * 1866 *
1866 * Fan speed changes of any sort (including those caused by the 1867 * Fan speed changes of any sort (including those caused by the
1867 * disengaged mode) are usually done slowly by the firmware as the 1868 * disengaged mode) are usually done slowly by the firmware as the
@@ -1875,12 +1876,13 @@ static int volume_write(char *buf)
1875 * 7 automatic mode engaged; 1876 * 7 automatic mode engaged;
1876 * (default operation mode of the ThinkPad) 1877 * (default operation mode of the ThinkPad)
1877 * fan level is ignored in this mode. 1878 * fan level is ignored in this mode.
1878 * 6 disengage mode (takes precedence over bit 7); 1879 * 6 full speed mode (takes precedence over bit 7);
1879 * not available on all thinkpads. May disable 1880 * not available on all thinkpads. May disable
1880 * the tachometer, and speeds up fan to 100% duty-cycle, 1881 * the tachometer while the fan controller ramps up
1881 * which speeds it up far above the standard RPM 1882 * the speed (which can take up to a few *minutes*).
1882 * levels. It is not impossible that it could cause 1883 * Speeds up fan to 100% duty-cycle, which is far above
1883 * hardware damage. 1884 * the standard RPM levels. It is not impossible that
1885 * it could cause hardware damage.
1884 * 5-3 unused in some models. Extra bits for fan level 1886 * 5-3 unused in some models. Extra bits for fan level
1885 * in others, but still useless as all values above 1887 * in others, but still useless as all values above
1886 * 7 map to the same speed as level 7 in these models. 1888 * 7 map to the same speed as level 7 in these models.
@@ -1916,9 +1918,8 @@ static int volume_write(char *buf)
1916 * FIRMWARE BUG: always read 0x84 first, otherwise incorrect readings 1918 * FIRMWARE BUG: always read 0x84 first, otherwise incorrect readings
1917 * might result. 1919 * might result.
1918 * 1920 *
1919 * FIRMWARE BUG: when EC 0x2f bit 6 is set (disengaged mode), this 1921 * FIRMWARE BUG: may go stale while the EC is switching to full speed
1920 * register is not invalidated in ThinkPads that disable tachometer 1922 * mode.
1921 * readings. Thus, the tachometer readings go stale.
1922 * 1923 *
1923 * For firmware bugs, refer to: 1924 * For firmware bugs, refer to:
1924 * http://thinkwiki.org/wiki/Embedded_Controller_Firmware#Firmware_Issues 1925 * http://thinkwiki.org/wiki/Embedded_Controller_Firmware#Firmware_Issues
@@ -2283,9 +2284,6 @@ static int fan_read(char *p)
2283 len += sprintf(p + len, "status:\t\t%s\n", 2284 len += sprintf(p + len, "status:\t\t%s\n",
2284 (status != 0) ? "enabled" : "disabled"); 2285 (status != 0) ? "enabled" : "disabled");
2285 2286
2286 /* No ThinkPad boots on disengaged mode, we can safely
2287 * assume the tachometer is online if fan control status
2288 * was unknown */
2289 if ((rc = fan_get_speed(&speed)) < 0) 2287 if ((rc = fan_get_speed(&speed)) < 0)
2290 return rc; 2288 return rc;
2291 2289