diff options
-rw-r--r-- | drivers/misc/thinkpad_acpi.c | 28 |
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 | ||