Re: acpi battery rework patch

From: Nate Lawson <nate_at_root.org>
Date: Mon, 25 Jul 2005 09:29:03 -0700
Marcin Jessa wrote:
> On Sun, 24 Jul 2005 17:15:12 -0700
> Nate Lawson <nate_at_root.org> wrote:
>>As far as Eric's result, I'll check that on my systems as well.  I 
>>_think_ the previous behavior was more correct (-1 = unknown) so I'll 
>>commit this minor change.  The "state" variable should not have changed 
>>so please let me know for sure if it has.  "1" means "discharging" which 
>>doesn't sound right if you're on AC power.  If you just recently plugged 
>>in the laptop, try polling the status a few more times (apm(8) gives 
>>more detail) and see if it catches up.  Some systems lag reporting 
>>various values until they are sure they've restabilized after an AC line 
>>change.
>>
>>Marcin, if your system reports a valid rate of use, we can calculate 
>>time.  If you're on AC power, there is no time available (since your 
>>batteries aren't discharging at any rate).  Try a previous 
>>kernel/acpi.ko to be certain what the behavior used to be.
> 
> 
> [yazzy_at_lapdance:~]> uname -a
> FreeBSD lapdance.yazzy.net 6.0-BETA1 FreeBSD 6.0-BETA1 #4: Sat Jul 23 17:35:13 CEST 2005     root_at_lapdance.yazzy.net:/usr/obj/usr/src/sys/LAPDANCE-6.0  i386
> 
> Running on AC:
> [yazzy_at_lapdance:~]> sysctl -a | grep battery
> hw.acpi.battery.life: 23
> hw.acpi.battery.time: -1
> hw.acpi.battery.state: 2
> hw.acpi.battery.units: 1
> hw.acpi.battery.info_expire: 5
> 
> Running on battery:
> [yazzy_at_lapdance:~]> sysctl -a | grep battery
> hw.acpi.battery.life: 23
> hw.acpi.battery.time: 41
> hw.acpi.battery.state: 1
> hw.acpi.battery.units: 1
> hw.acpi.battery.info_expire: 5
> [yazzy_at_lapdance:~]>

And with a 7-current kernel, everything is the same except "time" is 
always -1 both on and off AC power?

Please try this patch with 7-current and report its output both on and 
off power.  It prints out more debugging info each time the battery is read.

-- 
Nate

Index: sys/dev/acpica/acpi_battery.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi_battery.c,v
retrieving revision 1.13
diff -u -r1.13 acpi_battery.c
--- sys/dev/acpica/acpi_battery.c	23 Jul 2005 19:35:59 -0000	1.13
+++ sys/dev/acpica/acpi_battery.c	25 Jul 2005 15:59:29 -0000
_at__at_ -161,6 +161,7 _at__at_
 	    error = ENOMEM;
 	    goto out;
 	}
+printf("batt pass1: dev %p ", batt_dev);
 
 	/* Default info for every battery is "not present". */
 	acpi_reset_battinfo(&bi[i]);
_at__at_ -174,11 +175,13 _at__at_
 	    ACPI_BATT_GET_STATUS(batt_dev, &bst[i]) != 0 ||
 	    ACPI_BATT_GET_INFO(batt_dev, bif) != 0)
 	    continue;
+printf("ok ");
 
 	/* If a battery is not installed, we sometimes get strange values. */
 	if (!acpi_battery_bst_valid(&bst[i]) ||
 	    !acpi_battery_bif_valid(bif))
 	    continue;
+printf("valid ");
 
 	/* Record state and calculate percent capacity remaining. */
 	valid_units++;
_at__at_ -204,10 +207,12 _at__at_
 	 */
 	if (bst[i].rate > 0 && (bst[i].state & ACPI_BATT_STAT_DISCHARG))
 	    valid_rate += bst[i].rate;
+printf("state %d cap %d valid_rate %d\n", bi[i].state, bi[i].cap, valid_rate);
     }
 
     /* If the caller asked for a device but we didn't find it, error. */
     if (dev != NULL && dev_idx < 0) {
+printf("batt: couldn't find dev %p\n", dev);
 	error = ENXIO;
 	goto out;
     }
_at__at_ -226,6 +231,8 _at__at_
 	    bi[i].min = 0;
 	total_min += bi[i].min;
 	total_cap += bi[i].cap;
+printf("batt pass2: min %d total_min %d total_cap %d\n", bi[i].min, total_min,
+total_cap);
     }
 
     /*
Received on Mon Jul 25 2005 - 14:29:07 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:39 UTC