diff options
Diffstat (limited to 'drivers/power/supply/power_supply_sysfs.c')
-rw-r--r-- | drivers/power/supply/power_supply_sysfs.c | 86 |
1 files changed, 49 insertions, 37 deletions
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c index 1350068c401a..6170ed8b6854 100644 --- a/drivers/power/supply/power_supply_sysfs.c +++ b/drivers/power/supply/power_supply_sysfs.c @@ -116,15 +116,15 @@ static ssize_t power_supply_show_usb_type(struct device *dev, 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) @@ -137,35 +137,48 @@ 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_USB_TYPE) - return power_supply_show_usb_type(dev, psy->desc->usb_types, - psy->desc->num_usb_types, - &value, buf); - 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_USB_TYPE: + ret = power_supply_show_usb_type(dev, psy->desc->usb_types, + psy->desc->num_usb_types, + &value, buf); + 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, @@ -173,11 +186,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; @@ -216,7 +228,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; |