ACPI and Gateway 400sd4 laptop

Nate Lawson nate at root.org
Fri Jan 16 10:23:05 PST 2004


On Thu, 8 Jan 2004, Sean Lazar wrote:
> >> I have a Gateway 400SD4 laptop that I am having thermal issues with in
> >> FreeBSD-CURRENT. The two-speed fan dosen't seem to come on. With ACPI on,
> >> after the system has been running a little while and has warmed up, if I
> >> turn off acpi with "acpiconf -d" the fan will kick on immediately. After
> >> that the fan appears to behave normally, turning on and off when
> >> necessary.
> >> If the laptop boots warm with the fan on, it will shut off when it gets
> >> cool but it won't come back on again.
> >
> >Output from sysctl hw.acpi would help.  You can also play with values from
> >0-2 for hw.acpi.tz0.active.  That should manually turn the fan on at
> >various speeds.
> >
> >-Nate
>
> very interesting, it dosen't want to turn on the fan:
>
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=0
> hw.acpi.thermal.tz0.active: -1 -> -1
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=0
> hw.acpi.thermal.tz0.active: -1 -> -1
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=1
> hw.acpi.thermal.tz0.active: -1 -> -1
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=2
> hw.acpi.thermal.tz0.active: -1 -> -1
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=3
> hw.acpi.thermal.tz0.active: -1 -> 3
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=6
> hw.acpi.thermal.tz0.active: 3 -> 6
> freebsd-5_2# sysctl hw.acpi.thermal.tz0.active=0
> hw.acpi.thermal.tz0.active: 6 -> -1

Your ASL has something strange.  Your ThermalZone has an _INI method.

Try the following patch:

Index: sys/dev/acpica/acpi_thermal.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi_thermal.c,v
retrieving revision 1.35
diff -u -r1.35 acpi_thermal.c
--- sys/dev/acpica/acpi_thermal.c	12 Jan 2004 17:59:10 -0000	1.35
+++ sys/dev/acpica/acpi_thermal.c	16 Jan 2004 18:21:53 -0000
@@ -306,6 +306,9 @@
 	AcpiOsFree(sc->tz_zone.psl.Pointer);
     bzero(&sc->tz_zone, sizeof(sc->tz_zone));

+    /* XXX Call _INI if it exists */
+    AcpiEvaluateObject(sc->tz_handle, "_INI", NULL, NULL);
+
     /* Evaluate thermal zone parameters. */
     for (i = 0; i < TZ_NUMLEVELS; i++) {
 	sprintf(nbuf, "_AC%d", i);

-Nate


More information about the freebsd-current mailing list