ACPI / SBS: Correct the value of power_now and power_avg in the sysfs
authorLan Tianyu <tianyu.lan@intel.com>
Fri, 1 Jul 2011 08:03:39 +0000 (16:03 +0800)
committerLen Brown <len.brown@intel.com>
Thu, 14 Jul 2011 04:01:34 +0000 (00:01 -0400)
https://bugzilla.kernel.org/show_bug.cgi?id=24492

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/sbs.c

index 01dad1bedd177a05e6cbf26cc4b64f687f566388..c517ec8106e9f185d818bf804d152840dfb9d426 100644 (file)
@@ -230,11 +230,17 @@ static int acpi_sbs_battery_get_property(struct power_supply *psy,
        case POWER_SUPPLY_PROP_POWER_NOW:
                val->intval = abs(battery->rate_now) *
                                acpi_battery_ipscale(battery) * 1000;
+               val->intval *= (acpi_battery_mode(battery)) ?
+                               (battery->voltage_now *
+                               acpi_battery_vscale(battery) / 1000) : 1;
                break;
        case POWER_SUPPLY_PROP_CURRENT_AVG:
        case POWER_SUPPLY_PROP_POWER_AVG:
                val->intval = abs(battery->rate_avg) *
                                acpi_battery_ipscale(battery) * 1000;
+               val->intval *= (acpi_battery_mode(battery)) ?
+                               (battery->voltage_now *
+                               acpi_battery_vscale(battery) / 1000) : 1;
                break;
        case POWER_SUPPLY_PROP_CAPACITY:
                val->intval = battery->state_of_charge;