Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f8707ec9643769957065405b5090e4aa64fd8214
Commit:     f8707ec9643769957065405b5090e4aa64fd8214
Parent:     f54871456162aff557d57bec51639b1288d4a84b
Author:     Len Brown <[EMAIL PROTECTED]>
AuthorDate: Sun Aug 12 00:12:54 2007 -0400
Committer:  Len Brown <[EMAIL PROTECTED]>
CommitDate: Sun Aug 12 00:12:54 2007 -0400

    ACPI: thermal: create "thermal.act=" to disable or override active trip 
point
    
    thermal.act=-1 disables all active trip points
    in all ACPI thermal zones.
    
    thermal.act=C, where C > 0, overrides all lowest temperature
    active trip points in all thermal zones to C degrees Celsius.
    Raising this trip-point may allow you to keep your system silent
    up to a higher temperature.  However, it will not allow you to
    raise the lowest temperature trip point above the next higher
    trip point (if there is one).  Lowering this trip point may
    kick in the fan sooner.
    
    Note that overriding this trip-point will disable any BIOS attempts
    to implement hysteresis around the lowest temperature trip point.
    This may result in the fan starting and stopping frequently
    if temperature frequently crosses C.
    
    WARNING: raising trip points above the manufacturer's defaults
    may cause the system to run at higher temperature and shorten
    its life.
    
    Signed-off-by: Len Brown <[EMAIL PROTECTED]>
---
 Documentation/kernel-parameters.txt |    4 ++++
 drivers/acpi/thermal.c              |   34 ++++++++++++++++++++++++++++++----
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/Documentation/kernel-parameters.txt 
b/Documentation/kernel-parameters.txt
index 4c7d277..06db892 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -1820,6 +1820,10 @@ and is between 256 and 4096 characters. It is defined in 
the file
        thash_entries=  [KNL,NET]
                        Set number of hash buckets for TCP connection
 
+       thermal.act=    [HW,ACPI]
+                       -1: disable all active trip points in all thermal zones
+                       <degrees C>: override all lowest active trip points
+
        thermal.nocrt=  [HW,ACPI]
                        Set to disable actions on ACPI thermal zone
                        critical and hot trip points.
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 57d05ff..3521c37 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -74,6 +74,10 @@ MODULE_AUTHOR("Paul Diefenbaugh");
 MODULE_DESCRIPTION("ACPI Thermal Zone Driver");
 MODULE_LICENSE("GPL");
 
+static int act;
+module_param(act, int, 0644);
+MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.\n");
+
 static int tzp;
 module_param(tzp, int, 0444);
 MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n");
@@ -405,11 +409,33 @@ static int acpi_thermal_get_trip_points(struct 
acpi_thermal *tz)
 
                char name[5] = { '_', 'A', 'C', ('0' + i), '\0' };
 
-               status =
-                   acpi_evaluate_integer(tz->device->handle, name, NULL,
-                                         &tz->trips.active[i].temperature);
-               if (ACPI_FAILURE(status))
+               if (act == -1)
+                       break;  /* disable all active trip points */
+
+               status = acpi_evaluate_integer(tz->device->handle,
+                       name, NULL, &tz->trips.active[i].temperature);
+
+               if (ACPI_FAILURE(status)) {
+                       if (i == 0)     /* no active trip points */
+                               break;
+                       if (act <= 0)   /* no override requested */
+                               break;
+                       if (i == 1) {   /* 1 trip point */
+                               tz->trips.active[0].temperature =
+                                       CELSIUS_TO_KELVIN(act);
+                       } else {        /* multiple trips */
+                               /*
+                                * Don't allow override higher than
+                                * the next higher trip point
+                                */
+                               tz->trips.active[i - 1].temperature =
+                                   (tz->trips.active[i - 2].temperature <
+                                       CELSIUS_TO_KELVIN(act) ?
+                                       tz->trips.active[i - 2].temperature :
+                                       CELSIUS_TO_KELVIN(act));
+                       }
                        break;
+               }
 
                name[2] = 'L';
                status =
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to