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: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
3151dbb04a
Коммит
3138b32d5e
|
@ -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,
|
||||||
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);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче