Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/acpi Remove the technology "sensor" (a fixed constan...



details:   https://anonhg.NetBSD.org/src/rev/00308da485dc
branches:  trunk
changeset: 753136:00308da485dc
user:      jruoho <jruoho%NetBSD.org@localhost>
date:      Wed Mar 17 09:21:50 2010 +0000

description:
Remove the technology "sensor" (a fixed constant). Report this information
in an improved output when the battery information changes (i.e. device
attachment or battery removal/insertion).

diffstat:

 sys/dev/acpi/acpi_bat.c |  97 ++++++++++++++++++++++++++----------------------
 1 files changed, 52 insertions(+), 45 deletions(-)

diffs (196 lines):

diff -r d264173cf218 -r 00308da485dc sys/dev/acpi/acpi_bat.c
--- a/sys/dev/acpi/acpi_bat.c   Wed Mar 17 08:07:27 2010 +0000
+++ b/sys/dev/acpi/acpi_bat.c   Wed Mar 17 09:21:50 2010 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: acpi_bat.c,v 1.89 2010/03/17 08:07:27 jruoho Exp $     */
+/*     $NetBSD: acpi_bat.c,v 1.90 2010/03/17 09:21:50 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.89 2010/03/17 08:07:27 jruoho Exp $");
+__KERNEL_RCSID(0, "$NetBSD: acpi_bat.c,v 1.90 2010/03/17 09:21:50 jruoho Exp $");
 
 #include <sys/param.h>
 #include <sys/condvar.h>
@@ -97,17 +97,16 @@
  */
 enum {
        ACPIBAT_PRESENT          = 0,
-       ACPIBAT_TECHNOLOGY       = 1,
-       ACPIBAT_DVOLTAGE         = 2,
-       ACPIBAT_VOLTAGE          = 3,
-       ACPIBAT_DCAPACITY        = 4,
-       ACPIBAT_LFCCAPACITY      = 5,
-       ACPIBAT_CAPACITY         = 6,
-       ACPIBAT_CHARGERATE       = 7,
-       ACPIBAT_DISCHARGERATE    = 8,
-       ACPIBAT_CHARGING         = 9,
-       ACPIBAT_CHARGE_STATE     = 10,
-       ACPIBAT_COUNT            = 11
+       ACPIBAT_DVOLTAGE         = 1,
+       ACPIBAT_VOLTAGE          = 2,
+       ACPIBAT_DCAPACITY        = 3,
+       ACPIBAT_LFCCAPACITY      = 4,
+       ACPIBAT_CAPACITY         = 5,
+       ACPIBAT_CHARGERATE       = 6,
+       ACPIBAT_DISCHARGERATE    = 7,
+       ACPIBAT_CHARGING         = 8,
+       ACPIBAT_CHARGE_STATE     = 9,
+       ACPIBAT_COUNT            = 10
 };
 
 /*
@@ -178,6 +177,7 @@
 static int          acpibat_get_sta(device_t);
 static ACPI_OBJECT *acpibat_get_object(ACPI_HANDLE, const char *, int);
 static void         acpibat_get_info(device_t);
+static void        acpibat_print_info(device_t, ACPI_OBJECT *);
 static void         acpibat_get_status(device_t);
 static void         acpibat_update_info(void *);
 static void         acpibat_update_status(void *);
@@ -349,14 +349,14 @@
 /*
  * acpibat_get_info:
  *
- *     Get, and possibly display, the battery info.
+ *     Get the battery info.
  */
 static void
 acpibat_get_info(device_t dv)
 {
        struct acpibat_softc *sc = device_private(dv);
        ACPI_HANDLE hdl = sc->sc_node->ad_handle;
-       int capunit, i, j, rateunit, val;
+       int capunit, i, rateunit, val;
        ACPI_OBJECT *elm, *obj;
        ACPI_STATUS rv = AE_OK;
 
@@ -379,26 +379,6 @@
                KDASSERT((uint64_t)elm[i].Integer.Value < INT_MAX);
        }
 
-       aprint_verbose_dev(dv, "battery info: ");
-
-       for (i = j = ACPIBAT_BIF_OEM; i > ACPIBAT_BIF_GRANULARITY2; i--) {
-
-               if (elm[i].Type != ACPI_TYPE_STRING)
-                       continue;
-
-               if (elm[i].String.Pointer == NULL)
-                       continue;
-
-               aprint_verbose("%s ", elm[i].String.Pointer);
-
-               j = 0;
-       }
-
-       if (j != 0)
-               aprint_verbose("not available");
-
-       aprint_verbose("\n");
-
        if ((elm[ACPIBAT_BIF_UNIT].Integer.Value & ACPIBAT_PWRUNIT_MA) != 0) {
                capunit = ENVSYS_SAMPHOUR;
                rateunit = ENVSYS_SAMPS;
@@ -423,11 +403,6 @@
        sc->sc_sensor[ACPIBAT_LFCCAPACITY].value_cur = val * 1000;
        sc->sc_sensor[ACPIBAT_LFCCAPACITY].state = ACPIBAT_VAL_ISVALID(val);
 
-       /* Battery technology. */
-       val = elm[ACPIBAT_BIF_TECHNOLOGY].Integer.Value;
-       sc->sc_sensor[ACPIBAT_TECHNOLOGY].value_cur = val;
-       sc->sc_sensor[ACPIBAT_TECHNOLOGY].state = ACPIBAT_VAL_ISVALID(val);
-
        /* Design voltage. */
        val = elm[ACPIBAT_BIF_DVOLTAGE].Integer.Value;
        sc->sc_sensor[ACPIBAT_DVOLTAGE].value_cur = val * 1000;
@@ -444,6 +419,8 @@
        val = sc->sc_sensor[ACPIBAT_LFCCAPACITY].value_cur;
        sc->sc_sensor[ACPIBAT_CAPACITY].value_max = val;
 
+       acpibat_print_info(dv, elm);
+
 out:
        if (obj != NULL)
                ACPI_FREE(obj);
@@ -454,9 +431,41 @@
 }
 
 /*
+ * acpibat_print_info:
+ *
+ *     Display the battery info.
+ */
+static void
+acpibat_print_info(device_t dv, ACPI_OBJECT *elm)
+{
+       const char *tech;
+       int i;
+
+       for (i = ACPIBAT_BIF_OEM; i > ACPIBAT_BIF_GRANULARITY2; i--) {
+
+               if (elm[i].Type != ACPI_TYPE_STRING)
+                       return;
+
+               if (elm[i].String.Pointer == NULL)
+                       return;
+       }
+
+       tech = (elm[ACPIBAT_BIF_TECHNOLOGY].Integer.Value != 0) ?
+           "secondary (rechargeable)" : "primary (non-rechargeable)";
+
+       aprint_normal_dev(dv, "%s %s %s battery\n", tech,
+           elm[ACPIBAT_BIF_OEM].String.Pointer,
+           elm[ACPIBAT_BIF_TYPE].String.Pointer);
+
+       aprint_verbose_dev(dv, "serial number %s, model number %s\n",
+           elm[ACPIBAT_BIF_SERIAL].String.Pointer,
+           elm[ACPIBAT_BIF_MODEL].String.Pointer);
+}
+
+/*
  * acpibat_get_status:
  *
- *     Get, and possibly display, the current battery line status.
+ *     Get the current battery status.
  */
 static void
 acpibat_get_status(device_t dv)
@@ -565,7 +574,7 @@
        if (rv > 0)
                acpibat_get_info(dv);
        else {
-               i = (rv < 0) ? 0 : ACPIBAT_TECHNOLOGY;
+               i = (rv < 0) ? 0 : ACPIBAT_DVOLTAGE;
 
                while (i < ACPIBAT_COUNT) {
                        sc->sc_sensor[i].state = ENVSYS_SINVALID;
@@ -596,7 +605,7 @@
 
                acpibat_get_status(dv);
        } else {
-               i = (rv < 0) ? 0 : ACPIBAT_TECHNOLOGY;
+               i = (rv < 0) ? 0 : ACPIBAT_DVOLTAGE;
 
                while (i < ACPIBAT_COUNT) {
                        sc->sc_sensor[i].state = ENVSYS_SINVALID;
@@ -657,7 +666,6 @@
        INITDATA(ACPIBAT_PRESENT, ENVSYS_INDICATOR, "present");
        INITDATA(ACPIBAT_DCAPACITY, ENVSYS_SWATTHOUR, "design cap");
        INITDATA(ACPIBAT_LFCCAPACITY, ENVSYS_SWATTHOUR, "last full cap");
-       INITDATA(ACPIBAT_TECHNOLOGY, ENVSYS_INTEGER, "technology");
        INITDATA(ACPIBAT_DVOLTAGE, ENVSYS_SVOLTS_DC, "design voltage");
        INITDATA(ACPIBAT_VOLTAGE, ENVSYS_SVOLTS_DC, "voltage");
        INITDATA(ACPIBAT_CHARGERATE, ENVSYS_SWATTS, "charge rate");
@@ -677,7 +685,6 @@
        sc->sc_sensor[ACPIBAT_DISCHARGERATE].flags = ENVSYS_FMONNOTSUPP;
        sc->sc_sensor[ACPIBAT_DCAPACITY].flags = ENVSYS_FMONNOTSUPP;
        sc->sc_sensor[ACPIBAT_LFCCAPACITY].flags = ENVSYS_FMONNOTSUPP;
-       sc->sc_sensor[ACPIBAT_TECHNOLOGY].flags = ENVSYS_FMONNOTSUPP;
        sc->sc_sensor[ACPIBAT_DVOLTAGE].flags = ENVSYS_FMONNOTSUPP;
 
        sc->sc_sme = sysmon_envsys_create();



Home | Main Index | Thread Index | Old Index