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);
 }
 

Reply via email to