|
@@ -56,6 +56,10 @@
|
|
|
/* Battery power unit: 0 means mW, 1 means mA */
|
|
|
#define ACPI_BATTERY_POWER_UNIT_MA 1
|
|
|
|
|
|
+#define ACPI_BATTERY_STATE_DISCHARGING 0x1
|
|
|
+#define ACPI_BATTERY_STATE_CHARGING 0x2
|
|
|
+#define ACPI_BATTERY_STATE_CRITICAL 0x4
|
|
|
+
|
|
|
#define _COMPONENT ACPI_BATTERY_COMPONENT
|
|
|
|
|
|
ACPI_MODULE_NAME("battery");
|
|
@@ -169,7 +173,7 @@ static int acpi_battery_get_state(struct acpi_battery *battery);
|
|
|
|
|
|
static int acpi_battery_is_charged(struct acpi_battery *battery)
|
|
|
{
|
|
|
- /* either charging or discharging */
|
|
|
+ /* charging, discharging or critical low */
|
|
|
if (battery->state != 0)
|
|
|
return 0;
|
|
|
|
|
@@ -204,9 +208,9 @@ static int acpi_battery_get_property(struct power_supply *psy,
|
|
|
return -ENODEV;
|
|
|
switch (psp) {
|
|
|
case POWER_SUPPLY_PROP_STATUS:
|
|
|
- if (battery->state & 0x01)
|
|
|
+ if (battery->state & ACPI_BATTERY_STATE_DISCHARGING)
|
|
|
val->intval = POWER_SUPPLY_STATUS_DISCHARGING;
|
|
|
- else if (battery->state & 0x02)
|
|
|
+ else if (battery->state & ACPI_BATTERY_STATE_CHARGING)
|
|
|
val->intval = POWER_SUPPLY_STATUS_CHARGING;
|
|
|
else if (acpi_battery_is_charged(battery))
|
|
|
val->intval = POWER_SUPPLY_STATUS_FULL;
|
|
@@ -269,6 +273,17 @@ static int acpi_battery_get_property(struct power_supply *psy,
|
|
|
else
|
|
|
val->intval = 0;
|
|
|
break;
|
|
|
+ case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
|
|
|
+ if (battery->state & ACPI_BATTERY_STATE_CRITICAL)
|
|
|
+ val->intval = POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL;
|
|
|
+ else if (test_bit(ACPI_BATTERY_ALARM_PRESENT, &battery->flags) &&
|
|
|
+ (battery->capacity_now <= battery->alarm))
|
|
|
+ val->intval = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
|
|
|
+ else if (acpi_battery_is_charged(battery))
|
|
|
+ val->intval = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
|
|
|
+ else
|
|
|
+ val->intval = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
|
|
|
+ break;
|
|
|
case POWER_SUPPLY_PROP_MODEL_NAME:
|
|
|
val->strval = battery->model_number;
|
|
|
break;
|
|
@@ -296,6 +311,7 @@ static enum power_supply_property charge_battery_props[] = {
|
|
|
POWER_SUPPLY_PROP_CHARGE_FULL,
|
|
|
POWER_SUPPLY_PROP_CHARGE_NOW,
|
|
|
POWER_SUPPLY_PROP_CAPACITY,
|
|
|
+ POWER_SUPPLY_PROP_CAPACITY_LEVEL,
|
|
|
POWER_SUPPLY_PROP_MODEL_NAME,
|
|
|
POWER_SUPPLY_PROP_MANUFACTURER,
|
|
|
POWER_SUPPLY_PROP_SERIAL_NUMBER,
|
|
@@ -313,6 +329,7 @@ static enum power_supply_property energy_battery_props[] = {
|
|
|
POWER_SUPPLY_PROP_ENERGY_FULL,
|
|
|
POWER_SUPPLY_PROP_ENERGY_NOW,
|
|
|
POWER_SUPPLY_PROP_CAPACITY,
|
|
|
+ POWER_SUPPLY_PROP_CAPACITY_LEVEL,
|
|
|
POWER_SUPPLY_PROP_MODEL_NAME,
|
|
|
POWER_SUPPLY_PROP_MANUFACTURER,
|
|
|
POWER_SUPPLY_PROP_SERIAL_NUMBER,
|