* /proc/acpi/battery/BAT0/info stale when battery changed on Thinkpad X60t
@ 2008-05-14 15:05 Andy Neitzke
2008-05-14 17:10 ` Alexey Starikovskiy
0 siblings, 1 reply; 4+ messages in thread
From: Andy Neitzke @ 2008-05-14 15:05 UTC (permalink / raw)
To: linux-acpi
Hi,
I have two batteries for my Thinkpad X60 Tablet, one 6-cell and one 9-cell,
with very different capacities. If I boot up or resume from suspend with say
battery A connected, then /proc/acpi/battery/BAT0/info correctly shows
information about battery A. If I then connect the system to AC power and
remove battery A, /proc/acpi/battery/BAT0/info correctly shows that no
battery is present. If I then attach battery B,
then /proc/acpi/battery/BAT0/info incorrectly shows the information about
battery A again! (And similarly e.g. kpowersave shows the wrong capacity.)
On the other hand /proc/acpi/battery/BAT0/state always shows the correct
information. A suspend-resume cycle clears up the problem.
For example:
andy@chirality ~ $ cat /proc/acpi/battery/BAT0/state
present: yes
capacity state: ok
charging state: charged
present rate: 0 mW
remaining capacity: 61650 mWh
present voltage: 16587 mV
andy@chirality ~ $ cat /proc/acpi/battery/BAT0/info
present: yes
design capacity: 28800 mWh
last full capacity: 23550 mWh
battery technology: rechargeable
design voltage: 14400 mV
design capacity warning: 1177 mWh
design capacity low: 200 mWh
capacity granularity 1: 1 mWh
capacity granularity 2: 1 mWh
model number: 93P5031
serial number: 482
battery type: LION
OEM info: SANYO
and then after suspend-resume, the correct information:
andy@chirality ~ $ cat /proc/acpi/battery/BAT0/info
present: yes
design capacity: 66240 mWh
last full capacity: 61650 mWh
battery technology: rechargeable
design voltage: 14400 mV
design capacity warning: 3082 mWh
design capacity low: 200 mWh
capacity granularity 1: 1 mWh
capacity granularity 2: 1 mWh
model number: 42T4507
serial number: 833
battery type: LION
OEM info: SANYO
At the moment I am seeing this problem with kernel 2.6.25.3, but I believe I
have had it for a while (I was reminded of it only just now because I started
using kpowersave again).
Any ideas? I'm happy to try to debug, but don't know where to start.
Thanks, and best wishes,
-Andy
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: /proc/acpi/battery/BAT0/info stale when battery changed on Thinkpad X60t
2008-05-14 15:05 /proc/acpi/battery/BAT0/info stale when battery changed on Thinkpad X60t Andy Neitzke
@ 2008-05-14 17:10 ` Alexey Starikovskiy
2008-05-14 23:18 ` Andy Neitzke
0 siblings, 1 reply; 4+ messages in thread
From: Alexey Starikovskiy @ 2008-05-14 17:10 UTC (permalink / raw)
To: Andy Neitzke; +Cc: linux-acpi
Please check if following patch helps:
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index b1c723f..e5ca3a0 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -472,7 +472,7 @@ static void sysfs_remove_battery(struct acpi_battery
*battery)
static int acpi_battery_update(struct acpi_battery *battery)
{
- int result;
+ int result, old_present = acpi_battery_present(battery);
result = acpi_battery_get_status(battery);
if (result)
return result;
@@ -483,7 +483,8 @@ static int acpi_battery_update(struct acpi_battery
*battery)
return 0;
}
#endif
- if (!battery->update_time) {
+ if (!battery->update_time ||
+ old_present != acpi_battery_present(battery)) {
result = acpi_battery_get_info(battery);
if (result)
return result;
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: /proc/acpi/battery/BAT0/info stale when battery changed on Thinkpad X60t
2008-05-14 17:10 ` Alexey Starikovskiy
@ 2008-05-14 23:18 ` Andy Neitzke
2008-05-15 9:26 ` [PATCH] ACPI: Battery: Update info for inserted battery Alexey Starikovskiy
0 siblings, 1 reply; 4+ messages in thread
From: Andy Neitzke @ 2008-05-14 23:18 UTC (permalink / raw)
To: Alexey Starikovskiy; +Cc: linux-acpi
On Wednesday 14 May 2008 1:10:41 pm Alexey Starikovskiy wrote:
> Please check if following patch helps:
>
> diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
> index b1c723f..e5ca3a0 100644
Yes, with that patch the problem seems to have gone away.
Thanks!
-Andy
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] ACPI: Battery: Update info for inserted battery
2008-05-14 23:18 ` Andy Neitzke
@ 2008-05-15 9:26 ` Alexey Starikovskiy
0 siblings, 0 replies; 4+ messages in thread
From: Alexey Starikovskiy @ 2008-05-15 9:26 UTC (permalink / raw)
To: LenBrown; +Cc: Linux-acpi
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
Acked-by: Andy Neitzke <neitzke@ias.edu>
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
---
drivers/acpi/battery.c | 5 +++--
1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index b1c723f..e5ca3a0 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -472,7 +472,7 @@ static void sysfs_remove_battery(struct acpi_battery *battery)
static int acpi_battery_update(struct acpi_battery *battery)
{
- int result;
+ int result, old_present = acpi_battery_present(battery);
result = acpi_battery_get_status(battery);
if (result)
return result;
@@ -483,7 +483,8 @@ static int acpi_battery_update(struct acpi_battery *battery)
return 0;
}
#endif
- if (!battery->update_time) {
+ if (!battery->update_time ||
+ old_present != acpi_battery_present(battery)) {
result = acpi_battery_get_info(battery);
if (result)
return result;
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2008-05-15 9:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-14 15:05 /proc/acpi/battery/BAT0/info stale when battery changed on Thinkpad X60t Andy Neitzke
2008-05-14 17:10 ` Alexey Starikovskiy
2008-05-14 23:18 ` Andy Neitzke
2008-05-15 9:26 ` [PATCH] ACPI: Battery: Update info for inserted battery Alexey Starikovskiy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.