diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index cb97b6105f528..6d71a02dcacff 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -322,6 +322,16 @@ static int acpi_battery_get_property(struct power_supply *psy, case POWER_SUPPLY_PROP_SERIAL_NUMBER: val->strval = battery->serial_number; break; + case POWER_SUPPLY_PROP_HEALTH: + val->intval = POWER_SUPPLY_HEALTH_GOOD; + if (battery->state & ACPI_BATTERY_STATE_CRITICAL) + val->intval = POWER_SUPPLY_HEALTH_GOOD; + else if (test_bit(ACPI_BATTERY_ALARM_PRESENT, &battery->flags) && + (battery->capacity_now <= battery->alarm)) + val->intval = POWER_SUPPLY_HEALTH_DEAD; + else if (acpi_battery_is_charged(battery)) + val->intval = POWER_SUPPLY_HEALTH_GOOD; + break; default: ret = -EINVAL; } @@ -344,6 +354,7 @@ static enum power_supply_property charge_battery_props[] = { POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, POWER_SUPPLY_PROP_SERIAL_NUMBER, + POWER_SUPPLY_PROP_HEALTH, }; static enum power_supply_property energy_battery_props[] = {