ACPI battery: update battery status first when querying from sysfs
PATCH 2/2 ACPI battery: update battery status first when querying from sysfs
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 the Battery status first when querying from sysfs.
--- drivers/acpi/battery.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/acpi/battery.c +3 -0
@@ -184,6 +184,9 @@ static int acpi_battery_get_property(strint ret =0 ;struct acpi_battery *battery =to_acpi_battery (psy); +if (acpi_battery_update (battery)) +return -ENODEV ; +if (acpi_battery_present (battery)) {/* run battery update only if it is present */ acpi_battery_get_state (battery);
Quoted 20 lines · Zhang Rui
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 the Battery status first when querying from sysfs.
Signed-off-by Zhang Rui <[email protected]>---
drivers/acpi/battery.c | 3 +++1 file changed, 3 insertions(+)Index:
linux-2.6/drivers/acpi/battery.c
===================================================================
drivers/acpi/battery.c static int acpi_battery_get_property(str · line 192
Quoted 9 lines
drivers/acpi/battery.c +3
-0@@ -184,6 +184,9 @@ static int acpi_battery_get_property(str int ret = 0; struct acpi_battery *battery = to_acpi_battery(psy); + if (acpi_battery_update(battery)) + return -ENODEV; + if (acpi_battery_present(battery)) { /* run battery update only if it is present */ acpi_battery_get_state(battery);
Hello Zhang,
i trying 2 times your patch and
$ make CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h LD drivers/acpi/acpi.o LD drivers/acpi/built-in.o LD [M] drivers/acpi/processor.o CC [M] drivers/acpi/battery.o drivers/acpi/battery.c: In function ‘acpi_battery_get_property’: drivers/acpi/battery.c:187:2: error: implicit declaration of function ‘acpi_battery_update’ drivers/acpi/battery.c: At top level: drivers/acpi/battery.c:611:12: error: static declaration of ‘acpi_battery_update’ follows non-static declaration drivers/acpi/battery.c:187:6: note: previous implicit declaration of ‘acpi_battery_update’ was here make[2]: *** [drivers/acpi/battery.o] Error 1 make[1]: *** [drivers/acpi] Error 2 make: *** [drivers] Error 2
i've the same error on 2.6.37-rc1 and last linus git.
Regards,
Signature · 6 lines
Sébastien Luttringer www.seblu.net -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 55 lines · Seblu
Quoted 20 lines · Zhang Rui
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 the Battery status first when querying from sysfs.
Signed-off-by Zhang Rui <[email protected]>--- drivers/acpi/battery.c | 3 +++ 1 file changed, 3 insertions(+)Index:
linux-2.6/drivers/acpi/battery.c
===================================================================drivers/acpi/battery.c static int acpi_battery_get_property(str · line 192
Quoted 9 lines
drivers/acpi/battery.c +3
-0@@ -184,6 +184,9 @@ static int acpi_battery_get_property(strint ret =0 ;struct acpi_battery *battery =to_acpi_battery (psy); +if (acpi_battery_update (battery)) +return -ENODEV ; +if (acpi_battery_present (battery)) {/* run battery update only if it is present */ acpi_battery_get_state (battery);Hello Zhang,
i trying 2 times your patch and
$ make CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h LD drivers/acpi/acpi.o LD drivers/acpi/built-in.o LD [M] drivers/acpi/processor.o CC [M] drivers/acpi/battery.o drivers/acpi/battery.c: In function ‘acpi_battery_get_property’: drivers/acpi/battery.c:187:2: error: implicit declaration of function ‘acpi_battery_update’ drivers/acpi/battery.c: At top level: drivers/acpi/battery.c:611:12: error: static declaration of ‘acpi_battery_update’ follows non-static declaration drivers/acpi/battery.c:187:6: note: previous implicit declaration of ‘acpi_battery_update’ was here make[2]: *** [drivers/acpi/battery.o] Error 1 make[1]: *** [drivers/acpi] Error 2 make: *** [drivers] Error 2
Quoted 2 lines
i've the same error on 2.6.37-rc1 and last linus git.
oops. wrong version attached.
how about this one?
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 the Battery status first when querying from sysfs.
--- drivers/acpi/battery.c | 5 +++++ 1 file changed, 5 insertions(+)
drivers/acpi/battery.c +5 -0
@@ -177,6 +177,8 @@ static int acpi_battery_is_charged(strucreturn 0 ; } +static int acpi_battery_update (struct acpi_battery *battery); +static int acpi_battery_get_property (struct power_supply *psy,enum power_supply_property psp,union power_supply_propval *val)
@@ -184,6 +186,9 @@ static int acpi_battery_get_property(strint ret =0 ;struct acpi_battery *battery =to_acpi_battery (psy); +if (acpi_battery_update (battery)) +return -ENODEV ; +if (acpi_battery_present (battery)) {/* run battery update only if it is present */ acpi_battery_get_state (battery);
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 90 lines · Zhang Rui
Quoted 55 lines · Seblu
Quoted 20 lines · Zhang Rui
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 the Battery status first when querying from sysfs.
Signed-off-by Zhang Rui <[email protected]>---
drivers/acpi/battery.c | 3 +++1 file changed, 3 insertions(+)Index:
linux-2.6/drivers/acpi/battery.c
===================================================================drivers/acpi/battery.c static int acpi_battery_get_property(str · line 192
Quoted 9 lines
drivers/acpi/battery.c +3
-0@@ -184,6 +184,9 @@ static int acpi_battery_get_property(str int ret = 0; struct acpi_battery *battery = to_acpi_battery(psy); + if (acpi_battery_update(battery)) + return -ENODEV; + if (acpi_battery_present(battery)) { /* run battery update only if it is present */ acpi_battery_get_state(battery);Hello Zhang,
i trying 2 times your patch and
$ make CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CHK include/generated/compile.h LD drivers/acpi/acpi.o LD drivers/acpi/built-in.o LD [M] drivers/acpi/processor.o CC [M] drivers/acpi/battery.o drivers/acpi/battery.c: In function ‘acpi_battery_get_property’: drivers/acpi/battery.c:187:2: error: implicit declaration of function ‘acpi_battery_update’ drivers/acpi/battery.c: At top level: drivers/acpi/battery.c:611:12: error: static declaration of ‘acpi_battery_update’ follows non-static declaration drivers/acpi/battery.c:187:6: note: previous implicit declaration of ‘acpi_battery_update’ was here make[2]: *** [drivers/acpi/battery.o] Error 1 make[1]: *** [drivers/acpi] Error 2 make: *** [drivers] Error 2Quoted 2 lines
i've the same error on 2.6.37-rc1 and last linus git.
oops. wrong version attached.
how about this one?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 the Battery status first when querying from sysfs.
Signed-off-by Zhang Rui <[email protected]>---
drivers/acpi/battery.c | 5 +++++1 file changed, 5 insertions(+)Index:
linux-2.6/drivers/acpi/battery.c
===================================================================drivers/acpi/battery.c +2
-0@@ -177,6 +177,8 @@ static int acpi_battery_is_charged(struc return 0; } +static int acpi_battery_update (struct acpi_battery *battery); + static int acpi_battery_get_property(struct power_supply *psy, enum power_supply_property psp, union power_supply_propval *val)
drivers/acpi/battery.c static int acpi_battery_get_property(str · line 194
Quoted 9 lines
drivers/acpi/battery.c +3
-0@@ -184,6 +186,9 @@ static int acpi_battery_get_property(str int ret = 0; struct acpi_battery *battery = to_acpi_battery(psy); + if (acpi_battery_update(battery)) + return -ENODEV; + if (acpi_battery_present(battery)) { /* run battery update only if it is present */ acpi_battery_get_state(battery);
I was not able to reproduce the problem with this patch. It smells good!
Signature · 6 lines
Sébastien Luttringer www.seblu.net -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html