|
@@ -76,15 +76,15 @@ static const char * const power_supply_scope_text[] = {
|
|
|
static ssize_t power_supply_show_property(struct device *dev,
|
|
|
struct device_attribute *attr,
|
|
|
char *buf) {
|
|
|
- ssize_t ret = 0;
|
|
|
+ ssize_t ret;
|
|
|
struct power_supply *psy = dev_get_drvdata(dev);
|
|
|
- const ptrdiff_t off = attr - power_supply_attrs;
|
|
|
+ enum power_supply_property psp = attr - power_supply_attrs;
|
|
|
union power_supply_propval value;
|
|
|
|
|
|
- if (off == POWER_SUPPLY_PROP_TYPE) {
|
|
|
+ if (psp == POWER_SUPPLY_PROP_TYPE) {
|
|
|
value.intval = psy->desc->type;
|
|
|
} else {
|
|
|
- ret = power_supply_get_property(psy, off, &value);
|
|
|
+ ret = power_supply_get_property(psy, psp, &value);
|
|
|
|
|
|
if (ret < 0) {
|
|
|
if (ret == -ENODATA)
|
|
@@ -97,31 +97,43 @@ static ssize_t power_supply_show_property(struct device *dev,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (off == POWER_SUPPLY_PROP_STATUS)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_status_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_CHARGE_TYPE)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_charge_type_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_HEALTH)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_health_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_TECHNOLOGY)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_technology_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_CAPACITY_LEVEL)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_capacity_level_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_TYPE)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_type_text[value.intval]);
|
|
|
- else if (off == POWER_SUPPLY_PROP_SCOPE)
|
|
|
- return sprintf(buf, "%s\n",
|
|
|
- power_supply_scope_text[value.intval]);
|
|
|
- else if (off >= POWER_SUPPLY_PROP_MODEL_NAME)
|
|
|
- return sprintf(buf, "%s\n", value.strval);
|
|
|
-
|
|
|
- return sprintf(buf, "%d\n", value.intval);
|
|
|
+ switch (psp) {
|
|
|
+ case POWER_SUPPLY_PROP_STATUS:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_status_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_CHARGE_TYPE:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_charge_type_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_HEALTH:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_health_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_TECHNOLOGY:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_technology_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_CAPACITY_LEVEL:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_capacity_level_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_TYPE:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_type_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_SCOPE:
|
|
|
+ ret = sprintf(buf, "%s\n",
|
|
|
+ power_supply_scope_text[value.intval]);
|
|
|
+ break;
|
|
|
+ case POWER_SUPPLY_PROP_MODEL_NAME ... POWER_SUPPLY_PROP_SERIAL_NUMBER:
|
|
|
+ ret = sprintf(buf, "%s\n", value.strval);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ ret = sprintf(buf, "%d\n", value.intval);
|
|
|
+ }
|
|
|
+
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
static ssize_t power_supply_store_property(struct device *dev,
|
|
@@ -129,11 +141,10 @@ static ssize_t power_supply_store_property(struct device *dev,
|
|
|
const char *buf, size_t count) {
|
|
|
ssize_t ret;
|
|
|
struct power_supply *psy = dev_get_drvdata(dev);
|
|
|
- const ptrdiff_t off = attr - power_supply_attrs;
|
|
|
+ enum power_supply_property psp = attr - power_supply_attrs;
|
|
|
union power_supply_propval value;
|
|
|
|
|
|
- /* maybe it is a enum property? */
|
|
|
- switch (off) {
|
|
|
+ switch (psp) {
|
|
|
case POWER_SUPPLY_PROP_STATUS:
|
|
|
ret = sysfs_match_string(power_supply_status_text, buf);
|
|
|
break;
|
|
@@ -172,7 +183,7 @@ static ssize_t power_supply_store_property(struct device *dev,
|
|
|
|
|
|
value.intval = ret;
|
|
|
|
|
|
- ret = power_supply_set_property(psy, off, &value);
|
|
|
+ ret = power_supply_set_property(psy, psp, &value);
|
|
|
if (ret < 0)
|
|
|
return ret;
|
|
|
|