Module Name: src Committed By: jruoho Date: Sun Jan 24 11:32:13 UTC 2010
Modified Files: src/sys/dev/acpi: acpi_bat.c Log Message: * Reintroduce a state variable. From nj...@. * Always mark the charge state sensor as valid. To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/dev/acpi/acpi_bat.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/acpi/acpi_bat.c diff -u src/sys/dev/acpi/acpi_bat.c:1.77 src/sys/dev/acpi/acpi_bat.c:1.78 --- src/sys/dev/acpi/acpi_bat.c:1.77 Sat Jan 23 15:06:47 2010 +++ src/sys/dev/acpi/acpi_bat.c Sun Jan 24 11:32:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: acpi_bat.c,v 1.77 2010/01/23 15:06:47 jruoho Exp $ */ +/* $NetBSD: acpi_bat.c,v 1.78 2010/01/24 11:32:13 jruoho Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. @@ -75,7 +75,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.77 2010/01/23 15:06:47 jruoho Exp $"); +__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.78 2010/01/24 11:32:13 jruoho Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -152,6 +152,7 @@ envsys_data_t sc_sensor[ACPIBAT_COUNT]; kmutex_t sc_mutex; kcondvar_t sc_condvar; + int sc_present; }; static const char * const bat_hid[] = { @@ -233,6 +234,7 @@ aprint_normal(": ACPI Battery\n"); sc->sc_node = aa->aa_node; + sc->sc_present = 0; mutex_init(&sc->sc_mutex, MUTEX_DEFAULT, IPL_NONE); cv_init(&sc->sc_condvar, device_xname(self)); @@ -498,6 +500,7 @@ sc->sc_sensor[ACPIBAT_VOLTAGE].value_cur = val; sc->sc_sensor[ACPIBAT_VOLTAGE].state = ACPIBAT_VAL_ISVALID(val); + sc->sc_sensor[ACPIBAT_CHARGE_STATE].state = ENVSYS_SVALID; sc->sc_sensor[ACPIBAT_CHARGE_STATE].value_cur = ENVSYS_BATTERY_CAPACITY_NORMAL; @@ -552,6 +555,8 @@ } } + sc->sc_present = rv; + mutex_exit(&sc->sc_mutex); } @@ -566,9 +571,13 @@ rv = acpibat_get_sta(dv); - if (rv > 0) + if (rv > 0) { + + if (sc->sc_present == 0) + acpibat_get_info(dv); + acpibat_get_status(dv); - else { + } else { i = (rv < 0) ? 0 : ACPIBAT_DCAPACITY; while (i < ACPIBAT_COUNT) { @@ -577,6 +586,8 @@ } } + sc->sc_present = rv; + microtime(&sc->sc_lastupdate); cv_broadcast(&sc->sc_condvar); mutex_exit(&sc->sc_mutex);