aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/olpc_battery.c9
-rw-r--r--drivers/power/power_supply_sysfs.c6
2 files changed, 15 insertions, 0 deletions
diff --git a/drivers/power/olpc_battery.c b/drivers/power/olpc_battery.c
index 58e419299cd6..3a589df09376 100644
--- a/drivers/power/olpc_battery.c
+++ b/drivers/power/olpc_battery.c
@@ -276,6 +276,14 @@ static int olpc_bat_get_property(struct power_supply *psy,
276 return ret; 276 return ret;
277 val->intval = ec_byte; 277 val->intval = ec_byte;
278 break; 278 break;
279 case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
280 if (ec_byte & BAT_STAT_FULL)
281 val->intval = POWER_SUPPLY_CAPACITY_LEVEL_FULL;
282 else if (ec_byte & BAT_STAT_LOW)
283 val->intval = POWER_SUPPLY_CAPACITY_LEVEL_LOW;
284 else
285 val->intval = POWER_SUPPLY_CAPACITY_LEVEL_NORMAL;
286 break;
279 case POWER_SUPPLY_PROP_TEMP: 287 case POWER_SUPPLY_PROP_TEMP:
280 ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2); 288 ret = olpc_ec_cmd(EC_BAT_TEMP, NULL, 0, (void *)&ec_word, 2);
281 if (ret) 289 if (ret)
@@ -321,6 +329,7 @@ static enum power_supply_property olpc_bat_props[] = {
321 POWER_SUPPLY_PROP_VOLTAGE_AVG, 329 POWER_SUPPLY_PROP_VOLTAGE_AVG,
322 POWER_SUPPLY_PROP_CURRENT_AVG, 330 POWER_SUPPLY_PROP_CURRENT_AVG,
323 POWER_SUPPLY_PROP_CAPACITY, 331 POWER_SUPPLY_PROP_CAPACITY,
332 POWER_SUPPLY_PROP_CAPACITY_LEVEL,
324 POWER_SUPPLY_PROP_TEMP, 333 POWER_SUPPLY_PROP_TEMP,
325 POWER_SUPPLY_PROP_TEMP_AMBIENT, 334 POWER_SUPPLY_PROP_TEMP_AMBIENT,
326 POWER_SUPPLY_PROP_MANUFACTURER, 335 POWER_SUPPLY_PROP_MANUFACTURER,
diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/power_supply_sysfs.c
index da73591017f9..9deabbde6fd6 100644
--- a/drivers/power/power_supply_sysfs.c
+++ b/drivers/power/power_supply_sysfs.c
@@ -51,6 +51,9 @@ static ssize_t power_supply_show_property(struct device *dev,
51 "Unknown", "NiMH", "Li-ion", "Li-poly", "LiFe", "NiCd", 51 "Unknown", "NiMH", "Li-ion", "Li-poly", "LiFe", "NiCd",
52 "LiMn" 52 "LiMn"
53 }; 53 };
54 static char *capacity_level_text[] = {
55 "Unknown", "Critical", "Low", "Normal", "High", "Full"
56 };
54 ssize_t ret; 57 ssize_t ret;
55 struct power_supply *psy = dev_get_drvdata(dev); 58 struct power_supply *psy = dev_get_drvdata(dev);
56 const ptrdiff_t off = attr - power_supply_attrs; 59 const ptrdiff_t off = attr - power_supply_attrs;
@@ -71,6 +74,8 @@ static ssize_t power_supply_show_property(struct device *dev,
71 return sprintf(buf, "%s\n", health_text[value.intval]); 74 return sprintf(buf, "%s\n", health_text[value.intval]);
72 else if (off == POWER_SUPPLY_PROP_TECHNOLOGY) 75 else if (off == POWER_SUPPLY_PROP_TECHNOLOGY)
73 return sprintf(buf, "%s\n", technology_text[value.intval]); 76 return sprintf(buf, "%s\n", technology_text[value.intval]);
77 else if (off == POWER_SUPPLY_PROP_CAPACITY_LEVEL)
78 return sprintf(buf, "%s\n", capacity_level_text[value.intval]);
74 else if (off >= POWER_SUPPLY_PROP_MODEL_NAME) 79 else if (off >= POWER_SUPPLY_PROP_MODEL_NAME)
75 return sprintf(buf, "%s\n", value.strval); 80 return sprintf(buf, "%s\n", value.strval);
76 81
@@ -109,6 +114,7 @@ static struct device_attribute power_supply_attrs[] = {
109 POWER_SUPPLY_ATTR(energy_now), 114 POWER_SUPPLY_ATTR(energy_now),
110 POWER_SUPPLY_ATTR(energy_avg), 115 POWER_SUPPLY_ATTR(energy_avg),
111 POWER_SUPPLY_ATTR(capacity), 116 POWER_SUPPLY_ATTR(capacity),
117 POWER_SUPPLY_ATTR(capacity_level),
112 POWER_SUPPLY_ATTR(temp), 118 POWER_SUPPLY_ATTR(temp),
113 POWER_SUPPLY_ATTR(temp_ambient), 119 POWER_SUPPLY_ATTR(temp_ambient),
114 POWER_SUPPLY_ATTR(time_to_empty_now), 120 POWER_SUPPLY_ATTR(time_to_empty_now),