power: supply: sysfs: Use enum to specify property
authorLadislav Michl <ladis@linux-mips.org>
Wed, 21 Mar 2018 15:54:53 +0000 (16:54 +0100)
committerSebastian Reichel <sebastian.reichel@collabora.co.uk>
Wed, 25 Apr 2018 21:53:57 +0000 (23:53 +0200)
Power supply property is in fact enum, so reflect it in code.
Also use switch statement in show property function as is done
for storing property.

Signed-off-by: Ladislav Michl <ladis@linux-mips.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk>
drivers/power/supply/power_supply_sysfs.c

index 5204f11..ca2f869 100644 (file)
@@ -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;