Date: Thu, 24 Apr 2008 23:01:25 +0100 From: Rui Paulo <rpaulo@FreeBSD.org> To: Andriy Gapon <avg@icyb.net.ua> Cc: freebsd-acpi@freebsd.org Subject: Re: initial value of tz_active Message-ID: <4D198421-0D21-4DD6-9B1B-A2A8B1EB4B63@FreeBSD.org> In-Reply-To: <4810F8DB.3090507@icyb.net.ua> References: <480F8E2E.8000502@icyb.net.ua> <480F921D.3050505@root.org> <480FBA31.2050202@icyb.net.ua> <4810F8DB.3090507@icyb.net.ua>
index | next in thread | previous in thread | raw e-mail
On 24 Apr 2008, at 22:17, Andriy Gapon wrote:
> on 24/04/2008 01:37 Andriy Gapon said the following:
>> I agree - this is a better approach.
>> On a technical level - maybe use TZ_ACTIVE_UNKNOWN=-2 instead of a
>> new
>> variable.
>> I'll try to work on this somewhere in the middle of May.
>
> I've couple of spare hours this evening, so I decided to not delay
> this
> small thing until after the vacation.
> Result is attached.
> My short testing shows that the patch does the job and doesn't
> introduce
> any problems.
>
> --
> Andriy Gapon
> diff --git a/sys/dev/acpica/acpi_thermal.c b/sys/dev/acpica/
> acpi_thermal.c
> index 18432ee..f87d6df 100644
> --- a/sys/dev/acpica/acpi_thermal.c
> +++ b/sys/dev/acpica/acpi_thermal.c
> @@ -90,6 +90,7 @@ struct acpi_tz_softc {
> int tz_temperature; /*Current temperature*/
> int tz_active; /*Current active cooling*/
> #define TZ_ACTIVE_NONE -1
> +#define TZ_ACTIVE_UNKNOWN -2
> int tz_requested; /*Minimum active cooling*/
> int tz_thflags; /*Current temp-related flags*/
> #define TZ_THFLAG_NONE 0
> @@ -202,7 +203,7 @@ acpi_tz_attach(device_t dev)
> sc->tz_dev = dev;
> sc->tz_handle = acpi_get_handle(dev);
> sc->tz_requested = TZ_ACTIVE_NONE;
> - sc->tz_active = TZ_ACTIVE_NONE;
> + sc->tz_active = TZ_ACTIVE_UNKNOWN;
> sc->tz_thflags = TZ_THFLAG_NONE;
> sc->tz_cooling_proc = NULL;
> sc->tz_cooling_proc_running = FALSE;
> @@ -520,6 +521,7 @@ acpi_tz_monitor(void *Context)
> * minimum cooling run time if requested.
> */
> if (acpi_tz_min_runtime > 0 && sc->tz_active != TZ_ACTIVE_NONE &&
> + sc->tz_active != TZ_ACTIVE_UNKNOWN &&
> (newactive == TZ_ACTIVE_NONE || newactive > sc->tz_active)) {
>
> getnanotime(&curtime);
> @@ -543,6 +545,22 @@ acpi_tz_monitor(void *Context)
> newflags |= TZ_THFLAG_CRT;
>
> /* If the active cooling state has changed, we have to switch
> things. */
> + if (sc->tz_active == TZ_ACTIVE_UNKNOWN) {
> + /* We don't know which cooling device is on or off,
Please make this:
"/*"
" * We don't ..."
to comply with style.
>
> + * so stop them all, because we now know which
> + * should be on (if any).
> + */
> + for (i = 0; i < TZ_NUMLEVELS; i++) {
> + if (sc->tz_zone.al[i].Pointer != NULL) {
> + acpi_ForeachPackageObject(
> + (ACPI_OBJECT *)sc->tz_zone.al[i].Pointer,
> + acpi_tz_switch_cooler_off, sc);
> + }
> + }
> + /* now we know that all devices are off */
> + sc->tz_active = TZ_ACTIVE_NONE;
> + }
> +
> if (newactive != sc->tz_active) {
> /* Turn off the cooling devices that are on, if any are */
> if (sc->tz_active != TZ_ACTIVE_NONE)
>
Looks good to me.
Regards,
--
Rui Paulo
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4D198421-0D21-4DD6-9B1B-A2A8B1EB4B63>
