[ltp] [PATCH] ibm_acpi - Allow fan to be set to full speed
Thomas Renninger
linux-thinkpad@linux-thinkpad.org
Tue, 23 Aug 2005 09:10:24 +0200
This is a multi-part message in MIME format.
--------------080706030904010408060909
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
honey@gneek.com wrote:
> On Mon, 22 Aug 2005, Leon Brokken wrote:
>
>> Patch works on my T41.
>>
>> However, the ibm_manage_fan script doesn't work anymore (ibm_manage_fan
>> script disables the fan when CPU temp is below a certain value). Anyone
>> else noticed this behaviour?
>>
>> bash-bash-3.00# cat /proc/acpi/ibm/fan
>> status: enabled
>> speed: 3581
>> commands: enable, disable, full-speed
>> bash-3.00# echo full-speed > /proc/acpi/ibm/fan
>> bash-3.00# cat /proc/acpi/ibm/fan
>> status: disabled
>> speed: 4986
>> commands: enable, disable, full-speed
>>
>> Cheers, Leon.
>
> Leon - yes, it would be likely to break Paul's script once set, as
> the script reads back fan status from /proc/acpi/ibm/fan, which as
> you say is incorrect for full-speed currently. It'd be great if
> Borislav implemented Thomas's work in ibm_acpi and fixed the status
> too.
If correct speed status is needed for the script you can try this one.
I think it should work (untested, I unfortunetely don't own a Thinkpad) ...
BTW: I never got that much positive feed-back on any patch, thanks.
Thomas
--------------080706030904010408060909
Content-Type: text/x-patch;
name="ibm_add_full-speed_adjust_status.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="ibm_add_full-speed_adjust_status.diff"
--- ibm_acpi.c.orig 2005-08-21 03:42:16.000000000 +0200
+++ ibm_acpi.c 2005-08-23 09:01:32.000000000 +0200
@@ -1491,7 +1491,8 @@
len += sprintf(p + len, "status:\t\tunreadable\n");
else
len += sprintf(p + len, "status:\t\t%s\n",
- enabled(status, 7));
+ (status ? : "enabled" : "disabled");
+// enabled(status, 7));
if (!acpi_ec_read(fan_rpm_offset, &lo) ||
!acpi_ec_read(fan_rpm_offset + 1, &hi))
@@ -1507,7 +1508,7 @@
" (<level> is 0-7)\n");
if (!gfan_handle)
/* all except 570, 600e/x, 770e, 770x */
- len += sprintf(p + len, "commands:\tenable, disable\n");
+ len += sprintf(p + len, "commands:\tenable, disable, full-speed\n");
if (fans_handle)
/* X31, X40 */
len += sprintf(p + len, "commands:\tspeed <speed>"
@@ -1538,6 +1539,11 @@
/* all except 570, 600e/x, 770e, 770x */
if (!acpi_ec_write(fan_status_offset, 0x00))
return -EIO;
+ } else if (!gfan_handle &&
+ strlencmp(cmd, "full-speed") == 0) {
+ /* all except 570, 600e/x, 770e, 770x */
+ if (!acpi_ec_write(fan_status_offset, 0x50))
+ return -EIO;
} else if (fans_handle &&
sscanf(cmd, "speed %d", &speed) == 1 &&
speed >= 0 && speed <= 65535) {
--------------080706030904010408060909--