Module Name: src
Committed By: uwe
Date: Mon Mar 30 06:17:40 UTC 2009
Modified Files:
src/sys/dev/hpc: hpcapm.c
Log Message:
Fix battery_state vs. battery_flags confusion.
Fill all fields of struct apm_power_info in hpcapm_get_powstat.
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/dev/hpc/hpcapm.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/hpc/hpcapm.c
diff -u src/sys/dev/hpc/hpcapm.c:1.13 src/sys/dev/hpc/hpcapm.c:1.14
--- src/sys/dev/hpc/hpcapm.c:1.13 Fri Oct 19 11:59:42 2007
+++ src/sys/dev/hpc/hpcapm.c Mon Mar 30 06:17:39 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: hpcapm.c,v 1.13 2007/10/19 11:59:42 ad Exp $ */
+/* $NetBSD: hpcapm.c,v 1.14 2009/03/30 06:17:39 uwe Exp $ */
/*
* Copyright (c) 2000 Takemura Shin
@@ -29,7 +29,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hpcapm.c,v 1.13 2007/10/19 11:59:42 ad Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hpcapm.c,v 1.14 2009/03/30 06:17:39 uwe Exp $");
#ifdef _KERNEL_OPT
#include "opt_hpcapm.h"
@@ -78,7 +78,7 @@
void *sc_apmdev;
volatile unsigned int events;
volatile int power_state;
- volatile int battery_state;
+ volatile int battery_flags;
volatile int ac_state;
config_hook_tag sc_standby_hook;
config_hook_tag sc_suspend_hook;
@@ -124,7 +124,7 @@
sc->events = 0;
sc->power_state = APM_SYS_READY;
- sc->battery_state = APM_BATT_FLAG_UNKNOWN;
+ sc->battery_flags = APM_BATT_FLAG_UNKNOWN;
sc->ac_state = APM_AC_UNKNOWN;
sc->battery_life = APM_BATT_LIFE_UNKNOWN;
sc->minutes_left = 0;
@@ -193,22 +193,22 @@
switch (message) {
case CONFIG_HOOK_BATT_CRITICAL:
DPRINTF(("hpcapm: battery state critical\n"));
- charge = sc->battery_state & APM_BATT_FLAG_CHARGING;
- sc->battery_state = APM_BATT_FLAG_CRITICAL;
- sc->battery_state |= charge;
+ charge = sc->battery_flags & APM_BATT_FLAG_CHARGING;
+ sc->battery_flags = APM_BATT_FLAG_CRITICAL;
+ sc->battery_flags |= charge;
sc->battery_life = 0;
break;
case CONFIG_HOOK_BATT_LOW:
DPRINTF(("hpcapm: battery state low\n"));
- charge = sc->battery_state & APM_BATT_FLAG_CHARGING;
- sc->battery_state = APM_BATT_FLAG_LOW;
- sc->battery_state |= charge;
+ charge = sc->battery_flags & APM_BATT_FLAG_CHARGING;
+ sc->battery_flags = APM_BATT_FLAG_LOW;
+ sc->battery_flags |= charge;
break;
case CONFIG_HOOK_BATT_HIGH:
DPRINTF(("hpcapm: battery state high\n"));
- charge = sc->battery_state & APM_BATT_FLAG_CHARGING;
- sc->battery_state = APM_BATT_FLAG_HIGH;
- sc->battery_state |= charge;
+ charge = sc->battery_flags & APM_BATT_FLAG_CHARGING;
+ sc->battery_flags = APM_BATT_FLAG_HIGH;
+ sc->battery_flags |= charge;
break;
case CONFIG_HOOK_BATT_10P:
DPRINTF(("hpcapm: battery life 10%%\n"));
@@ -252,12 +252,12 @@
break;
case CONFIG_HOOK_BATT_UNKNOWN:
DPRINTF(("hpcapm: battery state unknown\n"));
- sc->battery_state = APM_BATT_FLAG_UNKNOWN;
+ sc->battery_flags = APM_BATT_FLAG_UNKNOWN;
sc->battery_life = APM_BATT_LIFE_UNKNOWN;
break;
case CONFIG_HOOK_BATT_NO_SYSTEM_BATTERY:
DPRINTF(("hpcapm: battery state no system battery?\n"));
- sc->battery_state = APM_BATT_FLAG_NO_SYSTEM_BATTERY;
+ sc->battery_flags = APM_BATT_FLAG_NO_SYSTEM_BATTERY;
sc->battery_life = APM_BATT_LIFE_UNKNOWN;
break;
}
@@ -266,17 +266,17 @@
switch (message) {
case CONFIG_HOOK_AC_OFF:
DPRINTF(("hpcapm: ac not connected\n"));
- sc->battery_state &= ~APM_BATT_FLAG_CHARGING;
+ sc->battery_flags &= ~APM_BATT_FLAG_CHARGING;
sc->ac_state = APM_AC_OFF;
break;
case CONFIG_HOOK_AC_ON_CHARGE:
DPRINTF(("hpcapm: charging\n"));
- sc->battery_state |= APM_BATT_FLAG_CHARGING;
+ sc->battery_flags |= APM_BATT_FLAG_CHARGING;
sc->ac_state = APM_AC_ON;
break;
case CONFIG_HOOK_AC_ON_NOCHARGE:
DPRINTF(("hpcapm: ac connected\n"));
- sc->battery_state &= ~APM_BATT_FLAG_CHARGING;
+ sc->battery_flags &= ~APM_BATT_FLAG_CHARGING;
sc->ac_state = APM_AC_ON;
break;
case CONFIG_HOOK_AC_UNKNOWN:
@@ -374,21 +374,30 @@
sc = scx;
+ pinfo->nbattery = 0;
+ pinfo->batteryid = 0;
+ pinfo->minutes_valid = 0;
+ pinfo->minutes_left = 0;
+ pinfo->battery_state = APM_BATT_UNKNOWN; /* XXX: ignored */
+
if (config_hook_call(CONFIG_HOOK_GET,
CONFIG_HOOK_ACADAPTER, &val) != -1)
pinfo->ac_state = val;
else
pinfo->ac_state = sc->ac_state;
+
if (config_hook_call(CONFIG_HOOK_GET,
CONFIG_HOOK_CHARGE, &val) != -1)
- pinfo->battery_state = val;
+ pinfo->battery_flags = val;
else
- pinfo->battery_state = sc->battery_state;
+ pinfo->battery_flags = sc->battery_flags;
+
if (config_hook_call(CONFIG_HOOK_GET,
CONFIG_HOOK_BATTERYVAL, &val) != -1)
pinfo->battery_life = val;
else
pinfo->battery_life = sc->battery_life;
+
return (0);
}