Commit 3138b32d authored by Zhang Rui's avatar Zhang Rui Committed by Len Brown

ACPI battery: update status upon sysfs query

Sometimes the Battery driver doesn't get notifications when it's
plugged/unplugged. And this results in the incorrect Battery
status reported by the power supply sysfs I/F.

Update Battery status first when querying from sysfs.
http://marc.info/?l=linux-acpi&m=128855015826728&w=2

Tested_by: Seblu <seblu@seblu.net>
Signed-off-by: default avatarZhang Rui <rui.zhang@intel.com>
Signed-off-by: default avatarLen Brown <len.brown@intel.com>
parent 3151dbb0
...@@ -130,6 +130,8 @@ struct acpi_battery { ...@@ -130,6 +130,8 @@ struct acpi_battery {
unsigned long flags; unsigned long flags;
}; };
static int acpi_battery_update(struct acpi_battery *battery);
#define to_acpi_battery(x) container_of(x, struct acpi_battery, bat); #define to_acpi_battery(x) container_of(x, struct acpi_battery, bat);
inline int acpi_battery_present(struct acpi_battery *battery) inline int acpi_battery_present(struct acpi_battery *battery)
...@@ -184,6 +186,9 @@ static int acpi_battery_get_property(struct power_supply *psy, ...@@ -184,6 +186,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
int ret = 0; int ret = 0;
struct acpi_battery *battery = to_acpi_battery(psy); struct acpi_battery *battery = to_acpi_battery(psy);
if (acpi_battery_update(battery))
return -ENODEV;
if (acpi_battery_present(battery)) { if (acpi_battery_present(battery)) {
/* run battery update only if it is present */ /* run battery update only if it is present */
acpi_battery_get_state(battery); acpi_battery_get_state(battery);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment